diff --git a/README.md b/README.md
index 8eba69b..eb3b78c 100644
--- a/README.md
+++ b/README.md
@@ -41,8 +41,8 @@ This is the fastest way to start. You must be using MacOS or Linux (WSL2 is ok!)
- Setup `.env` using [`.env.example`][envexample] as a template and guide.
- When setting up your Discord Application, be sure to set `http://localhost:6609/login-callback` as the OAuth2 callback URL.
- Run: `yarn install`
-- Run both: `yarn ui` and `yarn worker`
- - This starts the UI and API servers in hot-reload dev/emulation mode. All changes to TS/TSX files should be properly captured and reloaded for you!
+- Run both: `yarn start`
+ - This starts the Web UI, Storybook, and API servers in hot-reload dev/emulation mode. All changes to TS/TSX files should be properly captured and reloaded for you!
- Develop you a Roleypoly!
#### Option 3 🐄🤠: Wrangler (No emulation)
@@ -80,8 +80,8 @@ This is probably extremely painful and requires you to have a Cloudflare account
- Setup `.env` using [`.env.example`][envexample] as a template and guide.
- Run `yarn install`
-- Run both `wrangler dev -e dev` and `yarn ui`
- - This starts the UI and API servers in hot-reload dev mode. All changes to TS/TSX files should be properly captured and reloaded for you!
+- Run both `wrangler dev -e dev` and `yarn start:web`
+ - This starts the Web UI and API servers in hot-reload dev mode. All changes to TS/TSX files should be properly captured and reloaded for you!
- Develop you a Roleypoly
- And get a beer or heated plant because oh no.
@@ -92,7 +92,7 @@ For working with the [Roleypoly Design System](https://ui.roleypoly.com), use th
Run:
- `yarn` to install deps
-- `yarn storybook` to open storybook
+- `yarn start:design-system` to open storybook
- `yarn test` to test
### Developing Web UI
@@ -102,7 +102,7 @@ For working with the Next.js frontend components, use the below steps as referen
Run:
- `yarn` to install deps
-- `yarn ui` to run Next.js dev server
+- `yarn start:web` to run Next.js dev server
- `yarn test` to test
### Developing API Components
@@ -112,7 +112,7 @@ For working with the API, use the below steps as reference. Code lives in `src/b
Run:
- `yarn` to install deps
-- `yarn worker` to start an emulated worker
+- `yarn start:api` to start an emulated worker
- `yarn test` to test
[envexample]: .env.example
diff --git a/docker-compose.yaml b/docker-compose.yaml
index 3b032a7..2385ad6 100644
--- a/docker-compose.yaml
+++ b/docker-compose.yaml
@@ -2,20 +2,13 @@
version: '3.8'
services:
- worker:
+ dev:
image: node:14
volumes:
- '.:/src'
ports:
- 6609:6609
- working_dir: /src
- command: yarn worker
-
- ui:
- image: node:14
- volumes:
- - '.:/src'
- ports:
- 6601:6601
+ - 6006:6006
working_dir: /src
- command: yarn ui
+ command: yarn start
diff --git a/package.json b/package.json
index ab7e6e6..7ca0a52 100644
--- a/package.json
+++ b/package.json
@@ -27,15 +27,12 @@
"lint:stylelint": "cross-env stylelint '**/*.{ts,tsx}'",
"lint:terraform": "terraform fmt -recursive -check ./terraform",
"lint:types": "tsc --noEmit",
- "now-build": "run-s storybook:build",
"postinstall": "is-ci || husky install",
- "storybook": "start-storybook -p 6006",
- "storybook:build": "build-storybook",
- "test": "jest",
- "ui": "next dev -p 6601",
- "ui:build": "next build",
- "ui:prod": "cross-env next start -p ${PORT:-3000}",
- "worker": "node src/backend-emulator/main.js"
+ "start": "run-p -c start:*",
+ "start:design-system": "yarn workspace @roleypoly/design-system start",
+ "start:web": "yarn workspace @roleypoly/web start",
+ "start:worker": "yarn workspace @roleypoly/api start",
+ "test": "jest"
},
"devDependencies": {
"@types/enzyme": "^3.10.8",
diff --git a/src/backend-worker/.gitignore b/packages/api/.gitignore
similarity index 100%
rename from src/backend-worker/.gitignore
rename to packages/api/.gitignore
diff --git a/src/backend-worker/bindings.d.ts b/packages/api/bindings.d.ts
similarity index 100%
rename from src/backend-worker/bindings.d.ts
rename to packages/api/bindings.d.ts
diff --git a/src/backend-worker/handlers/bot-join.ts b/packages/api/handlers/bot-join.ts
similarity index 100%
rename from src/backend-worker/handlers/bot-join.ts
rename to packages/api/handlers/bot-join.ts
diff --git a/src/backend-worker/handlers/create-roleypoly-data.ts b/packages/api/handlers/create-roleypoly-data.ts
similarity index 96%
rename from src/backend-worker/handlers/create-roleypoly-data.ts
rename to packages/api/handlers/create-roleypoly-data.ts
index 1d32409..8ea89df 100644
--- a/src/backend-worker/handlers/create-roleypoly-data.ts
+++ b/packages/api/handlers/create-roleypoly-data.ts
@@ -1,5 +1,9 @@
import KSUID from 'ksuid';
-import { CategoryType, Features, GuildData as GuildDataT } from 'roleypoly/common/types';
+import {
+ CategoryType,
+ Features,
+ GuildData as GuildDataT,
+} from '../../../src/common/types';
import { onlyRootUsers, respond } from '../utils/api-tools';
import { GuildData } from '../utils/kv';
diff --git a/src/backend-worker/handlers/get-picker-data.ts b/packages/api/handlers/get-picker-data.ts
similarity index 98%
rename from src/backend-worker/handlers/get-picker-data.ts
rename to packages/api/handlers/get-picker-data.ts
index 469d27e..29101cc 100644
--- a/src/backend-worker/handlers/get-picker-data.ts
+++ b/packages/api/handlers/get-picker-data.ts
@@ -3,7 +3,7 @@ import {
GuildSlug,
PresentableGuild,
SessionData,
-} from 'roleypoly/common/types';
+} from '../../../src/common/types';
import { respond, withSession } from '../utils/api-tools';
import { getGuild, getGuildData, getGuildMemberRoles } from '../utils/guild';
diff --git a/src/backend-worker/handlers/get-session.ts b/packages/api/handlers/get-session.ts
similarity index 83%
rename from src/backend-worker/handlers/get-session.ts
rename to packages/api/handlers/get-session.ts
index c7af7c3..abe99c9 100644
--- a/src/backend-worker/handlers/get-session.ts
+++ b/packages/api/handlers/get-session.ts
@@ -1,4 +1,4 @@
-import { SessionData } from 'roleypoly/common/types';
+import { SessionData } from '../../../src/common/types';
import { respond, withSession } from '../utils/api-tools';
export const GetSession = withSession((session?: SessionData) => (): Response => {
diff --git a/src/backend-worker/handlers/get-slug.ts b/packages/api/handlers/get-slug.ts
similarity index 94%
rename from src/backend-worker/handlers/get-slug.ts
rename to packages/api/handlers/get-slug.ts
index 1a44c56..4cd6244 100644
--- a/src/backend-worker/handlers/get-slug.ts
+++ b/packages/api/handlers/get-slug.ts
@@ -1,4 +1,4 @@
-import { GuildSlug } from 'roleypoly/common/types';
+import { GuildSlug } from '../../../src/common/types';
import { respond } from '../utils/api-tools';
import { getGuild } from '../utils/guild';
diff --git a/src/backend-worker/handlers/login-bounce.ts b/packages/api/handlers/login-bounce.ts
similarity index 100%
rename from src/backend-worker/handlers/login-bounce.ts
rename to packages/api/handlers/login-bounce.ts
diff --git a/src/backend-worker/handlers/login-callback.ts b/packages/api/handlers/login-callback.ts
similarity index 99%
rename from src/backend-worker/handlers/login-callback.ts
rename to packages/api/handlers/login-callback.ts
index 75abe7d..58194d8 100644
--- a/src/backend-worker/handlers/login-callback.ts
+++ b/packages/api/handlers/login-callback.ts
@@ -4,7 +4,7 @@ import {
DiscordUser,
GuildSlug,
SessionData,
-} from '../../common/types';
+} from '../../../src/common/types';
import {
AuthType,
discordFetch,
diff --git a/src/backend-worker/handlers/revoke-session.ts b/packages/api/handlers/revoke-session.ts
similarity index 93%
rename from src/backend-worker/handlers/revoke-session.ts
rename to packages/api/handlers/revoke-session.ts
index 4e8504b..60a8418 100644
--- a/src/backend-worker/handlers/revoke-session.ts
+++ b/packages/api/handlers/revoke-session.ts
@@ -1,4 +1,4 @@
-import { SessionData } from 'roleypoly/common/types';
+import { SessionData } from '../../../src/common/types';
import { formData, respond, userAgent, withSession } from '../utils/api-tools';
import { botClientID, botClientSecret } from '../utils/config';
import { Sessions } from '../utils/kv';
diff --git a/src/backend-worker/handlers/update-roles.ts b/packages/api/handlers/update-roles.ts
similarity index 99%
rename from src/backend-worker/handlers/update-roles.ts
rename to packages/api/handlers/update-roles.ts
index 9a9c94b..ae84d42 100644
--- a/src/backend-worker/handlers/update-roles.ts
+++ b/packages/api/handlers/update-roles.ts
@@ -8,7 +8,7 @@ import {
RoleUpdate,
SessionData,
TransactionType,
-} from 'roleypoly/common/types';
+} from '../../../src/common/types';
import { AuthType, discordFetch, respond, withSession } from '../utils/api-tools';
import { botToken } from '../utils/config';
import {
diff --git a/src/backend-worker/index.ts b/packages/api/index.ts
similarity index 100%
rename from src/backend-worker/index.ts
rename to packages/api/index.ts
diff --git a/packages/api/package.json b/packages/api/package.json
new file mode 100644
index 0000000..8c07826
--- /dev/null
+++ b/packages/api/package.json
@@ -0,0 +1,15 @@
+{
+ "name": "@roleypoly/api",
+ "version": "0.1.0",
+ "scripts": {
+ "build": "yarn workspace @roleypoly/worker-emulator build --basePath `pwd`",
+ "start": "yarn workspace @roleypoly/worker-emulator start --basePath `pwd`"
+ },
+ "devDependencies": {
+ "@roleypoly/worker-emulator": "*",
+ "ksuid": "^2.0.0",
+ "lodash": "^4.17.21",
+ "ts-loader": "^8.0.18",
+ "tsconfig-paths-webpack-plugin": "^3.3.0"
+ }
+}
diff --git a/src/backend-worker/router.ts b/packages/api/router.ts
similarity index 100%
rename from src/backend-worker/router.ts
rename to packages/api/router.ts
diff --git a/src/backend-worker/tsconfig.json b/packages/api/tsconfig.json
similarity index 100%
rename from src/backend-worker/tsconfig.json
rename to packages/api/tsconfig.json
diff --git a/src/backend-worker/utils/api-tools.ts b/packages/api/utils/api-tools.ts
similarity index 97%
rename from src/backend-worker/utils/api-tools.ts
rename to packages/api/utils/api-tools.ts
index d87d398..8387e58 100644
--- a/src/backend-worker/utils/api-tools.ts
+++ b/packages/api/utils/api-tools.ts
@@ -1,8 +1,8 @@
-import { SessionData, UserGuildPermissions } from '../../common/types';
+import { SessionData, UserGuildPermissions } from '../../../src/common/types';
import {
evaluatePermission,
permissions as Permissions,
-} from '../../common/utils/hasPermission';
+} from '../../../src/common/utils/hasPermission';
import { Handler } from '../router';
import { rootUsers, uiPublicURI } from './config';
import { Sessions, WrappedKVNamespace } from './kv';
diff --git a/src/backend-worker/utils/bounce.ts b/packages/api/utils/bounce.ts
similarity index 100%
rename from src/backend-worker/utils/bounce.ts
rename to packages/api/utils/bounce.ts
diff --git a/src/backend-worker/utils/config.ts b/packages/api/utils/config.ts
similarity index 100%
rename from src/backend-worker/utils/config.ts
rename to packages/api/utils/config.ts
diff --git a/src/backend-worker/utils/guild.ts b/packages/api/utils/guild.ts
similarity index 96%
rename from src/backend-worker/utils/guild.ts
rename to packages/api/utils/guild.ts
index 70f57bb..921fb53 100644
--- a/src/backend-worker/utils/guild.ts
+++ b/packages/api/utils/guild.ts
@@ -5,8 +5,8 @@ import {
OwnRoleInfo,
Role,
RoleSafety,
-} from 'roleypoly/common/types';
-import { evaluatePermission, permissions } from 'roleypoly/common/utils/hasPermission';
+} from '../../../src/common/types';
+import { evaluatePermission, permissions } from '../../../src/common/utils/hasPermission';
import { AuthType, cacheLayer, discordFetch } from './api-tools';
import { botClientID, botToken } from './config';
import { GuildData, Guilds } from './kv';
diff --git a/src/backend-worker/utils/kv.ts b/packages/api/utils/kv.ts
similarity index 100%
rename from src/backend-worker/utils/kv.ts
rename to packages/api/utils/kv.ts
diff --git a/src/backend-worker/webpack.config.js b/packages/api/webpack.config.js
similarity index 100%
rename from src/backend-worker/webpack.config.js
rename to packages/api/webpack.config.js
diff --git a/src/backend-worker/roleypoly.config.js b/packages/api/worker.config.js
similarity index 100%
rename from src/backend-worker/roleypoly.config.js
rename to packages/api/worker.config.js
diff --git a/src/backend-emulator/kv.js b/packages/backend-emulator/kv.js
similarity index 100%
rename from src/backend-emulator/kv.js
rename to packages/backend-emulator/kv.js
diff --git a/src/backend-emulator/main.js b/packages/backend-emulator/main.js
similarity index 89%
rename from src/backend-emulator/main.js
rename to packages/backend-emulator/main.js
index 360f4f4..8bb7777 100644
--- a/src/backend-emulator/main.js
+++ b/packages/backend-emulator/main.js
@@ -1,22 +1,29 @@
-require('dotenv').config();
+const path = require('path');
+require('dotenv').config({ path: path.resolve(__dirname, '../../.env') });
const vm = require('vm');
const http = require('http');
const fs = require('fs');
-const path = require('path');
const chokidar = require('chokidar');
const webpack = require('webpack');
const { Crypto } = require('@peculiar/webcrypto');
-const roleypolyConfig = require('../backend-worker/roleypoly.config');
const { KVShim } = require('./kv');
const crypto = new Crypto();
const fetch = require('node-fetch');
+const args = require('minimist')(process.argv.slice(2));
+
+const basePath = args.basePath;
+if (!basePath) {
+ throw new Error('--basePath is not set.');
+}
+
+const workerConfig = require(`${basePath}/worker.config.js`);
const getKVs = (namespaces = []) =>
namespaces.reduce((acc, ns) => ({ ...acc, [ns]: new KVShim(ns) }), {});
const workerShims = {
- ...roleypolyConfig.environment,
- ...getKVs(roleypolyConfig.kv),
+ ...workerConfig.environment,
+ ...getKVs(workerConfig.kv),
};
let listeners = [];
@@ -133,7 +140,7 @@ const reload = () => {
// Fork and re-run
fork(async () =>
vm.runInContext(
- fs.readFileSync(path.resolve(__dirname, '../backend-worker/dist/worker.js')),
+ fs.readFileSync(path.resolve(__dirname, `${basePath}/dist/worker.js`)),
context(),
{
displayErrors: true,
@@ -145,7 +152,7 @@ const reload = () => {
const rebuild = () =>
new Promise((resolve, reject) => {
- const webpackConfig = require('../backend-worker/webpack.config.js');
+ const webpackConfig = require(`${basePath}/webpack.config.js`);
webpackConfig.output.filename = 'worker.js';
webpack(webpackConfig).run((err, stats) => {
if (err) {
@@ -163,7 +170,7 @@ const rebuild = () =>
});
});
-const watcher = chokidar.watch(path.resolve(__dirname, '../backend-worker'), {
+const watcher = chokidar.watch(path.resolve(__dirname, basePath), {
ignoreInitial: true,
ignore: '**/dist',
});
diff --git a/packages/backend-emulator/package.json b/packages/backend-emulator/package.json
new file mode 100644
index 0000000..3d5b6bc
--- /dev/null
+++ b/packages/backend-emulator/package.json
@@ -0,0 +1,17 @@
+{
+ "name": "@roleypoly/worker-emulator",
+ "version": "0.1.0",
+ "scripts": {
+ "build": "node main.js --build",
+ "start": "node main.js"
+ },
+ "devDependencies": {
+ "@peculiar/webcrypto": "^1.1.6",
+ "chokidar": "^3.5.1",
+ "dotenv": "^8.2.0",
+ "level": "^6.0.1",
+ "minimist": "^1.2.5",
+ "node-fetch": "^2.6.1",
+ "webpack": "^4.x"
+ }
+}
diff --git a/packages/design-system/atoms/fonts/fonts.tsx b/packages/design-system/atoms/fonts/fonts.tsx
index 31966ed..fe15b8d 100644
--- a/packages/design-system/atoms/fonts/fonts.tsx
+++ b/packages/design-system/atoms/fonts/fonts.tsx
@@ -1,23 +1,5 @@
-import * as React from 'react';
import styled, { css } from 'styled-components';
-export const InjectTypekitFont = () => {
- React.useEffect(() => {
- (window as any).Typekit.load();
- }, []);
- return (
- <>
-
-
- >
- );
-};
-
export const fontCSS = css`
font-family: 'source-han-sans-japanese', 'Source Sans Pro', sans-serif,
'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol' !important;
diff --git a/packages/design-system/package.json b/packages/design-system/package.json
index 289ed50..77c315c 100644
--- a/packages/design-system/package.json
+++ b/packages/design-system/package.json
@@ -13,6 +13,7 @@
"react": "^17.0.1",
"react-custom-scrollbars": "^4.2.1",
"react-dom": "^17.0.1",
+ "react-helmet": "^6.1.0",
"react-icons": "^4.1.0",
"react-is": "^17.0.1",
"react-tooltip": "^4.2.15",
@@ -32,6 +33,7 @@
"@types/react": "^17.0.0",
"@types/react-custom-scrollbars": "^4.0.7",
"@types/react-dom": "^17.0.0",
+ "@types/react-helmet": "^6.1.0",
"@types/styled-components": "^5.1.7",
"babel-loader": "8.1.0",
"babel-plugin-styled-components": "^1.12.0",
diff --git a/packages/web/craco.config.js b/packages/web/craco.config.js
new file mode 100644
index 0000000..5b88753
--- /dev/null
+++ b/packages/web/craco.config.js
@@ -0,0 +1,27 @@
+const path = require('path');
+const { getLoader, loaderByName } = require('@craco/craco');
+
+const includePaths = [
+ path.join(__dirname, '../design-system'),
+ path.join(__dirname, '../../src/common'),
+];
+
+module.exports = {
+ webpack: {
+ alias: {},
+ plugins: [],
+ configure: (webpackConfig, { env, paths }) => {
+ const { isFound, match } = getLoader(
+ webpackConfig,
+ loaderByName('babel-loader')
+ );
+ if (isFound) {
+ const include = Array.isArray(match.loader.include)
+ ? match.loader.include
+ : [match.loader.include];
+ match.loader.include = [...include, ...includePaths];
+ }
+ return webpackConfig;
+ },
+ },
+};
diff --git a/packages/web/package.json b/packages/web/package.json
index f3ed07e..62abc1b 100644
--- a/packages/web/package.json
+++ b/packages/web/package.json
@@ -3,12 +3,13 @@
"version": "0.1.0",
"private": true,
"scripts": {
- "build": "cross-env BUILD_PATH=../../dist react-scripts build",
- "eject": "react-scripts eject",
- "start": "react-scripts start",
- "test": "react-scripts test"
+ "build": "cross-env BUILD_PATH=../../dist craco build",
+ "start": "cross-env PORT=6601 craco start",
+ "test": "craco test"
},
"dependencies": {
+ "@reach/router": "^1.3.4",
+ "@roleypoly/design-system": "*",
"@testing-library/jest-dom": "^5.11.9",
"@testing-library/react": "^11.2.5",
"@testing-library/user-event": "^12.8.3",
@@ -18,13 +19,17 @@
"@types/react-dom": "^17.0.2",
"react": "^17.0.1",
"react-dom": "^17.0.1",
+ "react-helmet": "^6.1.0",
"react-scripts": "4.0.3",
"typescript": "^4.2.3",
"web-vitals": "^1.1.0"
},
"devDependencies": {
+ "@craco/craco": "^6.1.1",
+ "@types/react-helmet": "^6.1.0",
"babel-loader": "8.1.0",
"cross-env": "7.0.3",
+ "ts-loader": "^8.0.18",
"webpack": "4.44.2"
},
"browserslist": {
diff --git a/packages/web/public/index.html b/packages/web/public/index.html
index ce6d2bc..12354fe 100644
--- a/packages/web/public/index.html
+++ b/packages/web/public/index.html
@@ -22,6 +22,37 @@
Learn how to configure a non-root public URL by running `npm run build`.
-->
React App
+
diff --git a/packages/web/src/App.css b/packages/web/src/App.css
deleted file mode 100644
index 78b8850..0000000
--- a/packages/web/src/App.css
+++ /dev/null
@@ -1,38 +0,0 @@
-.App {
- text-align: center;
-}
-
-.App-logo {
- height: 40vmin;
- pointer-events: none;
-}
-
-@media (prefers-reduced-motion: no-preference) {
- .App-logo {
- animation: App-logo-spin infinite 20s linear;
- }
-}
-
-.App-header {
- background-color: #282c34;
- min-height: 100vh;
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- font-size: calc(10px + 2vmin);
- color: white;
-}
-
-.App-link {
- color: #61dafb;
-}
-
-@keyframes App-logo-spin {
- from {
- transform: rotate(0deg);
- }
- to {
- transform: rotate(360deg);
- }
-}
diff --git a/packages/web/src/App.tsx b/packages/web/src/App.tsx
deleted file mode 100644
index b52c446..0000000
--- a/packages/web/src/App.tsx
+++ /dev/null
@@ -1,23 +0,0 @@
-import React from 'react';
-
-function App() {
- return (
-
- );
-}
-
-export default App;
diff --git a/packages/web/src/app-router/AppRouter.tsx b/packages/web/src/app-router/AppRouter.tsx
new file mode 100644
index 0000000..f79e6f1
--- /dev/null
+++ b/packages/web/src/app-router/AppRouter.tsx
@@ -0,0 +1,22 @@
+import { Router } from '@reach/router';
+import * as React from 'react';
+
+const LandingPage = React.lazy(() => import('../pages/landing'));
+
+const RouteWrapper = (props: {
+ component: React.LazyExoticComponent>;
+ path?: string;
+ default?: boolean;
+}) => (
+ Loading...}>
+
+
+);
+
+export const AppRouter = () => {
+ return (
+
+
+
+ );
+};
diff --git a/packages/web/src/app-router/index.ts b/packages/web/src/app-router/index.ts
new file mode 100644
index 0000000..fda706f
--- /dev/null
+++ b/packages/web/src/app-router/index.ts
@@ -0,0 +1 @@
+export * from './AppRouter';
diff --git a/packages/web/src/index.css b/packages/web/src/index.css
deleted file mode 100644
index b723e92..0000000
--- a/packages/web/src/index.css
+++ /dev/null
@@ -1,11 +0,0 @@
-body {
- margin: 0;
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
- 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-
-code {
- font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace;
-}
diff --git a/packages/web/src/index.tsx b/packages/web/src/index.tsx
index 0d99529..f506f86 100644
--- a/packages/web/src/index.tsx
+++ b/packages/web/src/index.tsx
@@ -1,17 +1,10 @@
import React from 'react';
import ReactDOM from 'react-dom';
-import App from './App';
-import './index.css';
-import reportWebVitals from './reportWebVitals';
+import { AppRouter } from './app-router';
ReactDOM.render(
-
+
,
document.getElementById('root')
);
-
-// If you want to start measuring performance in your app, pass a function
-// to log results (for example: reportWebVitals(console.log))
-// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
-reportWebVitals();
diff --git a/packages/web/src/logo.svg b/packages/web/src/logo.svg
deleted file mode 100644
index 9dfc1c0..0000000
--- a/packages/web/src/logo.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/packages/web/src/pages/landing.tsx b/packages/web/src/pages/landing.tsx
new file mode 100644
index 0000000..659f5c6
--- /dev/null
+++ b/packages/web/src/pages/landing.tsx
@@ -0,0 +1,8 @@
+import { LandingTemplate } from '@roleypoly/design-system/templates/landing';
+import * as React from 'react';
+
+const Landing = () => {
+ return ;
+};
+
+export default Landing;
diff --git a/packages/web/src/reportWebVitals.ts b/packages/web/src/reportWebVitals.ts
deleted file mode 100644
index d95c0a6..0000000
--- a/packages/web/src/reportWebVitals.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import { ReportHandler } from 'web-vitals';
-
-const reportWebVitals = (onPerfEntry?: ReportHandler) => {
- if (onPerfEntry && onPerfEntry instanceof Function) {
- import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
- getCLS(onPerfEntry);
- getFID(onPerfEntry);
- getFCP(onPerfEntry);
- getLCP(onPerfEntry);
- getTTFB(onPerfEntry);
- });
- }
-};
-
-export default reportWebVitals;
diff --git a/yarn.lock b/yarn.lock
index b421038..1192683 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1262,6 +1262,16 @@
exec-sh "^0.3.2"
minimist "^1.2.0"
+"@craco/craco@^6.1.1":
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/@craco/craco/-/craco-6.1.1.tgz#0233b28d6896b6560379f64b608d3c888874e9fa"
+ integrity sha512-4irfOM8RgYNhFJzAXyIuM8CZLju2Jh9GdOem8uqM2/cI2xPulQSxZKU/9q3uiSbFUJfQLi3pomVKii6KzWLu3Q==
+ dependencies:
+ cross-spawn "^7.0.0"
+ lodash "^4.17.15"
+ semver "^7.3.2"
+ webpack-merge "^4.2.2"
+
"@csstools/convert-colors@^1.4.0":
version "1.4.0"
resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7"
@@ -1780,6 +1790,34 @@
dependencies:
mkdirp "^1.0.4"
+"@peculiar/asn1-schema@^2.0.27":
+ version "2.0.27"
+ resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.0.27.tgz#1ee3b2b869ff3200bcc8ec60e6c87bd5a6f03fe0"
+ integrity sha512-1tIx7iL3Ma3HtnNS93nB7nhyI0soUJypElj9owd4tpMrRDmeJ8eZubsdq1sb0KSaCs5RqZNoABCP6m5WtnlVhQ==
+ dependencies:
+ "@types/asn1js" "^2.0.0"
+ asn1js "^2.0.26"
+ pvtsutils "^1.1.1"
+ tslib "^2.0.3"
+
+"@peculiar/json-schema@^1.1.12":
+ version "1.1.12"
+ resolved "https://registry.yarnpkg.com/@peculiar/json-schema/-/json-schema-1.1.12.tgz#fe61e85259e3b5ba5ad566cb62ca75b3d3cd5339"
+ integrity sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==
+ dependencies:
+ tslib "^2.0.0"
+
+"@peculiar/webcrypto@^1.1.6":
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/@peculiar/webcrypto/-/webcrypto-1.1.6.tgz#484bb58be07149e19e873861b585b0d5e4f83b7b"
+ integrity sha512-xcTjouis4Y117mcsJslWAGypwhxtXslkVdRp7e3tHwtuw0/xCp1te8RuMMv/ia5TsvxomcyX/T+qTbRZGLLvyA==
+ dependencies:
+ "@peculiar/asn1-schema" "^2.0.27"
+ "@peculiar/json-schema" "^1.1.12"
+ pvtsutils "^1.1.2"
+ tslib "^2.1.0"
+ webcrypto-core "^1.2.0"
+
"@pmmmwh/react-refresh-webpack-plugin@0.4.3", "@pmmmwh/react-refresh-webpack-plugin@^0.4.2":
version "0.4.3"
resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.3.tgz#1eec460596d200c0236bf195b078a5d1df89b766"
@@ -1797,7 +1835,7 @@
resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.5.4.tgz#de25b5da9f727985a3757fd59b5d028aba75841a"
integrity sha512-ZpKr+WTb8zsajqgDkvCEWgp6d5eJT6Q63Ng2neTbzBO76Lbe91vX/iVIW9dikq+Fs3yEo+ls4cxeXABD2LtcbQ==
-"@reach/router@^1.3.3":
+"@reach/router@^1.3.3", "@reach/router@^1.3.4":
version "1.3.4"
resolved "https://registry.yarnpkg.com/@reach/router/-/router-1.3.4.tgz#d2574b19370a70c80480ed91f3da840136d10f8c"
integrity sha512-+mtn9wjlB9NN2CNnnC/BRYtwdKBfSyyasPYraNAyvaV1occr/5NnB4CVzjEZipNHwYebQwcndGUmpFzxAUoqSA==
@@ -2570,6 +2608,11 @@
resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.1.tgz#78b5433344e2f92e8b306c06a5622c50c245bf6b"
integrity sha512-S6oPal772qJZHoRZLFc/XoZW2gFvwXusYUmXPXkgxJLuEk2vOt7jc4Yo6z/vtI0EBkbPBVrJJ0B+prLIKiWqHg==
+"@types/asn1js@^2.0.0":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/@types/asn1js/-/asn1js-2.0.0.tgz#10ca75692575744d0117098148a8dc84cbee6682"
+ integrity sha512-Jjzp5EqU0hNpADctc/UqhiFbY1y2MqIxBVa2S4dBlbnZHTLPMuggoL5q43X63LpsOIINRDirBjP56DUUKIUWIA==
+
"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7":
version "7.1.12"
resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.12.tgz#4d8e9e51eb265552a7e4f1ff2219ab6133bdfb2d"
@@ -2865,6 +2908,13 @@
dependencies:
"@types/react" "*"
+"@types/react-helmet@^6.1.0":
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/@types/react-helmet/-/react-helmet-6.1.0.tgz#af586ed685f4905e2adc7462d1d65ace52beee7a"
+ integrity sha512-PYRoU1XJFOzQ3BHvWL1T8iDNbRjdMDJMT5hFmZKGbsq09kbSqJy61uwEpTrbTNWDopVphUT34zUSVLK9pjsgYQ==
+ dependencies:
+ "@types/react" "*"
+
"@types/react-syntax-highlighter@11.0.4":
version "11.0.4"
resolved "https://registry.yarnpkg.com/@types/react-syntax-highlighter/-/react-syntax-highlighter-11.0.4.tgz#d86d17697db62f98046874f62fdb3e53a0bbc4cd"
@@ -3287,6 +3337,28 @@ abab@^2.0.0, abab@^2.0.3:
resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a"
integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==
+abstract-leveldown@^6.2.1:
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.3.0.tgz#d25221d1e6612f820c35963ba4bd739928f6026a"
+ integrity sha512-TU5nlYgta8YrBMNpc9FwQzRbiXsj49gsALsXadbGHt9CROPzX5fB0rWDR5mtdpOOKa5XqRFpbj1QroPAoPzVjQ==
+ dependencies:
+ buffer "^5.5.0"
+ immediate "^3.2.3"
+ level-concat-iterator "~2.0.0"
+ level-supports "~1.0.0"
+ xtend "~4.0.0"
+
+abstract-leveldown@~6.2.1, abstract-leveldown@~6.2.3:
+ version "6.2.3"
+ resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz#036543d87e3710f2528e47040bc3261b77a9a8eb"
+ integrity sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ==
+ dependencies:
+ buffer "^5.5.0"
+ immediate "^3.2.3"
+ level-concat-iterator "~2.0.0"
+ level-supports "~1.0.0"
+ xtend "~4.0.0"
+
accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7:
version "1.3.7"
resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
@@ -3707,6 +3779,13 @@ asn1@~0.2.3:
dependencies:
safer-buffer "~2.1.0"
+asn1js@^2.0.26:
+ version "2.0.26"
+ resolved "https://registry.yarnpkg.com/asn1js/-/asn1js-2.0.26.tgz#0a6d435000f556a96c6012969d9704d981b71251"
+ integrity sha512-yG89F0j9B4B0MKIcFyWWxnpZPLaNTjCj4tkE3fjbAoo0qmpGw0PYYqSbX/4ebnd9Icn8ZgK4K1fvDyEtW1JYtQ==
+ dependencies:
+ pvutils latest
+
assert-plus@1.0.0, assert-plus@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
@@ -4303,7 +4382,7 @@ base-convert-int-array@^1.0.1:
resolved "https://registry.yarnpkg.com/base-convert-int-array/-/base-convert-int-array-1.0.1.tgz#5b4ddbfa72d2d3b5f75dd86cd32fe3dc8e7e81fe"
integrity sha512-NWqzaoXx8L/SS32R+WmKqnQkVXVYl2PwNJ68QV3RAlRRL1uV+yxJT66abXI1cAvqCXQTyXr7/9NN4Af90/zDVw==
-base64-js@^1.0.2:
+base64-js@^1.0.2, base64-js@^1.3.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
@@ -4610,6 +4689,14 @@ buffer@^4.3.0:
ieee754 "^1.1.4"
isarray "^1.0.0"
+buffer@^5.5.0, buffer@^5.6.0:
+ version "5.7.1"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
+ integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
+ dependencies:
+ base64-js "^1.3.1"
+ ieee754 "^1.1.13"
+
builtin-modules@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
@@ -4914,7 +5001,7 @@ chokidar@^2.1.8:
optionalDependencies:
fsevents "^1.2.7"
-chokidar@^3.3.0, chokidar@^3.4.1:
+chokidar@^3.3.0, chokidar@^3.4.1, 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==
@@ -5975,6 +6062,14 @@ default-gateway@^4.2.0:
execa "^1.0.0"
ip-regex "^2.1.0"
+deferred-leveldown@~5.3.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz#27a997ad95408b61161aa69bd489b86c71b78058"
+ integrity sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw==
+ dependencies:
+ abstract-leveldown "~6.2.1"
+ inherits "^2.0.3"
+
define-properties@^1.1.2, define-properties@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
@@ -6316,7 +6411,7 @@ dotenv-webpack@^1.7.0:
dependencies:
dotenv-defaults "^1.0.2"
-dotenv@8.2.0, dotenv@^8.0.0:
+dotenv@8.2.0, dotenv@^8.0.0, dotenv@^8.2.0:
version "8.2.0"
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a"
integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==
@@ -6450,6 +6545,16 @@ encodeurl@~1.0.2:
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
+encoding-down@^6.3.0:
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/encoding-down/-/encoding-down-6.3.0.tgz#b1c4eb0e1728c146ecaef8e32963c549e76d082b"
+ integrity sha512-QKrV0iKR6MZVJV08QY0wp1e7vF6QbhnbQhb07bwpEyuz4uZiZgPlEGdkCROuFkUwdxlFaiPIhjyarH1ee/3vhw==
+ dependencies:
+ abstract-leveldown "^6.2.1"
+ inherits "^2.0.3"
+ level-codec "^9.0.0"
+ level-errors "^2.0.0"
+
end-of-stream@^1.0.0, end-of-stream@^1.1.0:
version "1.4.4"
resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
@@ -6580,6 +6685,13 @@ errno@^0.1.3, errno@~0.1.7:
dependencies:
prr "~1.0.1"
+errno@~0.1.1:
+ version "0.1.8"
+ resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f"
+ integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==
+ dependencies:
+ prr "~1.0.1"
+
error-ex@^1.2.0, error-ex@^1.3.1:
version "1.3.2"
resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
@@ -8359,7 +8471,7 @@ identity-obj-proxy@3.0.0:
dependencies:
harmony-reflect "^1.4.6"
-ieee754@^1.1.4:
+ieee754@^1.1.13, ieee754@^1.1.4:
version "1.2.1"
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
@@ -8384,6 +8496,11 @@ ignore@^5.1.4, ignore@^5.1.8:
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57"
integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==
+immediate@^3.2.3:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.3.0.tgz#1aef225517836bcdf7f2a2de2600c79ff0269266"
+ integrity sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==
+
immer@1.10.0:
version "1.10.0"
resolved "https://registry.yarnpkg.com/immer/-/immer-1.10.0.tgz#bad67605ba9c810275d91e1c2a47d4582e98286d"
@@ -10018,6 +10135,88 @@ left-pad@^1.3.0:
resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e"
integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==
+level-codec@^9.0.0:
+ version "9.0.2"
+ resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-9.0.2.tgz#fd60df8c64786a80d44e63423096ffead63d8cbc"
+ integrity sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ==
+ dependencies:
+ buffer "^5.6.0"
+
+level-concat-iterator@~2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz#1d1009cf108340252cb38c51f9727311193e6263"
+ integrity sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw==
+
+level-errors@^2.0.0, level-errors@~2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-2.0.1.tgz#2132a677bf4e679ce029f517c2f17432800c05c8"
+ integrity sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw==
+ dependencies:
+ errno "~0.1.1"
+
+level-iterator-stream@~4.0.0:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz#7ceba69b713b0d7e22fcc0d1f128ccdc8a24f79c"
+ integrity sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q==
+ dependencies:
+ inherits "^2.0.4"
+ readable-stream "^3.4.0"
+ xtend "^4.0.2"
+
+level-js@^5.0.0:
+ version "5.0.2"
+ resolved "https://registry.yarnpkg.com/level-js/-/level-js-5.0.2.tgz#5e280b8f93abd9ef3a305b13faf0b5397c969b55"
+ integrity sha512-SnBIDo2pdO5VXh02ZmtAyPP6/+6YTJg2ibLtl9C34pWvmtMEmRTWpra+qO/hifkUtBTOtfx6S9vLDjBsBK4gRg==
+ dependencies:
+ abstract-leveldown "~6.2.3"
+ buffer "^5.5.0"
+ inherits "^2.0.3"
+ ltgt "^2.1.2"
+
+level-packager@^5.1.0:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/level-packager/-/level-packager-5.1.1.tgz#323ec842d6babe7336f70299c14df2e329c18939"
+ integrity sha512-HMwMaQPlTC1IlcwT3+swhqf/NUO+ZhXVz6TY1zZIIZlIR0YSn8GtAAWmIvKjNY16ZkEg/JcpAuQskxsXqC0yOQ==
+ dependencies:
+ encoding-down "^6.3.0"
+ levelup "^4.3.2"
+
+level-supports@~1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-1.0.1.tgz#2f530a596834c7301622521988e2c36bb77d122d"
+ integrity sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==
+ dependencies:
+ xtend "^4.0.2"
+
+level@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/level/-/level-6.0.1.tgz#dc34c5edb81846a6de5079eac15706334b0d7cd6"
+ integrity sha512-psRSqJZCsC/irNhfHzrVZbmPYXDcEYhA5TVNwr+V92jF44rbf86hqGp8fiT702FyiArScYIlPSBTDUASCVNSpw==
+ dependencies:
+ level-js "^5.0.0"
+ level-packager "^5.1.0"
+ leveldown "^5.4.0"
+
+leveldown@^5.4.0:
+ version "5.6.0"
+ resolved "https://registry.yarnpkg.com/leveldown/-/leveldown-5.6.0.tgz#16ba937bb2991c6094e13ac5a6898ee66d3eee98"
+ integrity sha512-iB8O/7Db9lPaITU1aA2txU/cBEXAt4vWwKQRrrWuS6XDgbP4QZGj9BL2aNbwb002atoQ/lIotJkfyzz+ygQnUQ==
+ dependencies:
+ abstract-leveldown "~6.2.1"
+ napi-macros "~2.0.0"
+ node-gyp-build "~4.1.0"
+
+levelup@^4.3.2:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/levelup/-/levelup-4.4.0.tgz#f89da3a228c38deb49c48f88a70fb71f01cafed6"
+ integrity sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ==
+ dependencies:
+ deferred-leveldown "~5.3.0"
+ level-errors "~2.0.0"
+ level-iterator-stream "~4.0.0"
+ level-supports "~1.0.0"
+ xtend "~4.0.0"
+
leven@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
@@ -10348,6 +10547,11 @@ lru-cache@^6.0.0:
dependencies:
yallist "^4.0.0"
+ltgt@^2.1.2:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5"
+ integrity sha1-81ypHEk/e3PaDgdJUwTxezH4fuU=
+
lz-string@^1.4.4:
version "1.4.4"
resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26"
@@ -10631,7 +10835,7 @@ micromatch@^3.1.10, micromatch@^3.1.4:
snapdragon "^0.8.1"
to-regex "^3.0.2"
-micromatch@^4.0.2:
+micromatch@^4.0.0, micromatch@^4.0.2:
version "4.0.2"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259"
integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==
@@ -10881,6 +11085,11 @@ nanomatch@^1.2.9:
snapdragon "^0.8.1"
to-regex "^3.0.1"
+napi-macros@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.0.0.tgz#2b6bae421e7b96eb687aa6c77a7858640670001b"
+ integrity sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg==
+
native-url@^0.2.6:
version "0.2.6"
resolved "https://registry.yarnpkg.com/native-url/-/native-url-0.2.6.tgz#ca1258f5ace169c716ff44eccbddb674e10399ae"
@@ -10953,6 +11162,11 @@ node-forge@^0.10.0:
resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3"
integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==
+node-gyp-build@~4.1.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.1.1.tgz#d7270b5d86717068d114cc57fff352f96d745feb"
+ integrity sha512-dSq1xmcPDKPZ2EED2S6zw/b9NKsqzXRE6dVr8TVQnI3FJOTteUMuqF3Qqs6LZg+mLGYJWqQzMbIjMtJqTv87nQ==
+
node-int64@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
@@ -12759,6 +12973,18 @@ punycode@^2.1.0, punycode@^2.1.1:
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
+pvtsutils@^1.1.1, pvtsutils@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/pvtsutils/-/pvtsutils-1.1.2.tgz#483d72f4baa5e354466e68ff783ce8a9e2810030"
+ integrity sha512-Yfm9Dsk1zfEpOWCaJaHfqtNXAFWNNHMFSCLN6jTnhuCCBCC2nqge4sAgo7UrkRBoAAYIL8TN/6LlLoNfZD/b5A==
+ dependencies:
+ tslib "^2.1.0"
+
+pvutils@latest:
+ version "1.0.17"
+ resolved "https://registry.yarnpkg.com/pvutils/-/pvutils-1.0.17.tgz#ade3c74dfe7178944fe44806626bd2e249d996bf"
+ integrity sha512-wLHYUQxWaXVQvKnwIDWFVKDJku9XDCvyhhxoq8dc5MFdIlRenyPI9eSfEtcvgHgD7FlvCyGAlWgOzRnZD99GZQ==
+
q@^1.1.2:
version "1.5.1"
resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
@@ -13034,7 +13260,7 @@ react-error-overlay@^6.0.7, 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@^3.0.1, react-fast-compare@^3.2.0:
+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"
integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==
@@ -13050,6 +13276,16 @@ react-helmet-async@^1.0.2:
react-fast-compare "^3.2.0"
shallowequal "^1.1.0"
+react-helmet@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/react-helmet/-/react-helmet-6.1.0.tgz#a750d5165cb13cf213e44747502652e794468726"
+ integrity sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==
+ dependencies:
+ object-assign "^4.1.1"
+ prop-types "^15.7.2"
+ react-fast-compare "^3.1.1"
+ react-side-effect "^2.1.0"
+
react-hotkeys@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/react-hotkeys/-/react-hotkeys-2.0.0.tgz#a7719c7340cbba888b0e9184f806a9ec0ac2c53f"
@@ -13182,6 +13418,11 @@ react-shallow-renderer@^16.13.1:
object-assign "^4.1.1"
react-is "^16.12.0 || ^17.0.0"
+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"
+ integrity sha512-2FoTQzRNTncBVtnzxFOk2mCpcfxQpenBMbk5kSVBg5UcPqV9fRbgY2zhb7GTWWOlpFmAxhClBDlIq8Rsubz1yQ==
+
react-sizeme@^2.6.7:
version "2.6.12"
resolved "https://registry.yarnpkg.com/react-sizeme/-/react-sizeme-2.6.12.tgz#ed207be5476f4a85bf364e92042520499455453e"
@@ -13330,7 +13571,7 @@ read-pkg@^5.2.0:
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
-readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.6.0:
+readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.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==
@@ -14022,7 +14263,7 @@ semver@7.3.2:
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938"
integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==
-semver@7.x, semver@^7.2.1, semver@^7.3.2:
+semver@7.x, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4:
version "7.3.4"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97"
integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==
@@ -15337,6 +15578,17 @@ ts-jest@^26.5.3:
semver "7.x"
yargs-parser "20.x"
+ts-loader@^8.0.18:
+ version "8.0.18"
+ resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-8.0.18.tgz#b2385cbe81c34ad9f997915129cdde3ad92a61ea"
+ integrity sha512-hRZzkydPX30XkLaQwJTDcWDoxZHK6IrEMDQpNd7tgcakFruFkeUp/aY+9hBb7BUGb+ZWKI0jiOGMo0MckwzdDQ==
+ dependencies:
+ chalk "^4.1.0"
+ enhanced-resolve "^4.0.0"
+ loader-utils "^2.0.0"
+ micromatch "^4.0.0"
+ semver "^7.3.4"
+
ts-pnp@1.2.0, ts-pnp@^1.1.6:
version "1.2.0"
resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92"
@@ -15371,6 +15623,11 @@ tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.3.tgz#8e0741ac45fc0c226e58a17bfc3e64b9bc6ca61c"
integrity sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==
+tslib@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a"
+ integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==
+
tslint@^6.1.3:
version "6.1.3"
resolved "https://registry.yarnpkg.com/tslint/-/tslint-6.1.3.tgz#5c23b2eccc32487d5523bd3a470e9aa31789d904"
@@ -15964,6 +16221,17 @@ web-vitals@^1.1.0:
resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-1.1.0.tgz#7f410d9a1f7a1cd5d952806b45776204b47dc274"
integrity sha512-1cx54eRxY/+M0KNKdNpNnuXAXG+vJEvwScV4DiV9rOYDguHoeDIzm09ghBohOPtkqPO5OtPC14FWkNva3SDisg==
+webcrypto-core@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/webcrypto-core/-/webcrypto-core-1.2.0.tgz#44fda3f9315ed6effe9a1e47466e0935327733b5"
+ integrity sha512-p76Z/YLuE4CHCRdc49FB/ETaM4bzM3roqWNJeGs+QNY1fOTzKTOVnhmudW1fuO+5EZg6/4LG9NJ6gaAyxTk9XQ==
+ dependencies:
+ "@peculiar/asn1-schema" "^2.0.27"
+ "@peculiar/json-schema" "^1.1.12"
+ asn1js "^2.0.26"
+ pvtsutils "^1.1.2"
+ tslib "^2.1.0"
+
webidl-conversions@^4.0.2:
version "4.0.2"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"
@@ -16072,6 +16340,13 @@ webpack-manifest-plugin@2.2.0:
object.entries "^1.1.0"
tapable "^1.0.0"
+webpack-merge@^4.2.2:
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d"
+ integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==
+ dependencies:
+ lodash "^4.17.15"
+
webpack-sources@^1.1.0, webpack-sources@^1.3.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3:
version "1.4.3"
resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933"
@@ -16116,7 +16391,7 @@ webpack@4.44.2:
watchpack "^1.7.4"
webpack-sources "^1.4.1"
-webpack@^4.44.2:
+webpack@^4.44.2, webpack@^4.x:
version "4.46.0"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542"
integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==
@@ -16490,7 +16765,7 @@ xmlchars@^2.2.0:
resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb"
integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==
-xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1:
+xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.0, xtend@~4.0.1:
version "4.0.2"
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==