├── apps
├── backend
│ ├── .prettierignore
│ ├── .prettierrc
│ ├── .eslintrc
│ ├── .gitignore
│ ├── tsconfig.json
│ ├── package.json
│ ├── src
│ │ ├── store.ts
│ │ └── index.ts
│ ├── LICENSE
│ └── yarn.lock
├── example
│ ├── .prettierignore
│ ├── src
│ │ ├── routes
│ │ │ ├── +page.ts
│ │ │ └── +page.svelte
│ │ ├── app.css
│ │ ├── app.d.ts
│ │ └── app.html
│ ├── .prettierrc
│ ├── tailwind.config.cjs
│ ├── vite.config.mjs
│ ├── tsconfig.json
│ ├── postcss.config.mjs
│ ├── svelte.config.js
│ ├── .eslintrc.cjs
│ ├── package.json
│ └── .gitignore
└── frontend
│ ├── .prettierignore
│ ├── src
│ ├── routes
│ │ ├── +layout.svelte
│ │ ├── (play)
│ │ │ ├── +layout.server.ts
│ │ │ ├── +page.svelte
│ │ │ ├── +layout.svelte
│ │ │ └── Chat.svelte
│ │ └── setup
│ │ │ ├── +page.server.ts
│ │ │ └── +page@.svelte
│ ├── app.css
│ ├── app.d.ts
│ ├── app.html
│ ├── hooks.server.ts
│ └── lib
│ │ ├── stores.ts
│ │ ├── Login.svelte
│ │ ├── audio.ts
│ │ ├── socket.ts
│ │ ├── MyPlayer.svelte
│ │ └── Player.svelte
│ ├── .prettierrc
│ ├── static
│ ├── ui.png
│ ├── stack.png
│ ├── voice.png
│ ├── scoreboard.png
│ └── _app
│ │ └── immutable
│ │ ├── a.mp3
│ │ └── a.wav
│ ├── tailwind.config.cjs
│ ├── vite.config.mjs
│ ├── tsconfig.json
│ ├── postcss.config.mjs
│ ├── .eslintrc.cjs
│ ├── svelte.config.js
│ ├── package.json
│ ├── LICENSE
│ └── .gitignore
├── .env.example
├── coturn.conf
├── pnpm-workspace.yaml
├── .dockerignore
├── packages
├── eslint-config-custom
│ ├── index.js
│ └── package.json
└── common
│ ├── package.json
│ ├── tsconfig.json
│ └── src
│ └── index.ts
├── .eslintrc.js
├── turbo.json
├── .gitignore
├── nginx.conf
├── package.json
├── Dockerfile
├── README.md
└── docker-compose.yml
/apps/backend/.prettierignore:
--------------------------------------------------------------------------------
1 | node_modules
--------------------------------------------------------------------------------
/apps/example/.prettierignore:
--------------------------------------------------------------------------------
1 | node_modules
--------------------------------------------------------------------------------
/apps/frontend/.prettierignore:
--------------------------------------------------------------------------------
1 | node_modules
--------------------------------------------------------------------------------
/.env.example:
--------------------------------------------------------------------------------
1 | AUTH_TOKEN=password
2 | HOST=example.com
3 |
--------------------------------------------------------------------------------
/apps/example/src/routes/+page.ts:
--------------------------------------------------------------------------------
1 | export const ssr = false;
2 |
--------------------------------------------------------------------------------
/coturn.conf:
--------------------------------------------------------------------------------
1 | listening-ip=0.0.0.0
2 | listening-port=3478
3 |
--------------------------------------------------------------------------------
/pnpm-workspace.yaml:
--------------------------------------------------------------------------------
1 | packages:
2 | - "apps/*"
3 | - "packages/*"
4 |
--------------------------------------------------------------------------------
/.dockerignore:
--------------------------------------------------------------------------------
1 | **/node_modules
2 | **/dist
3 | **/.svelte-kit
4 | Dockerfile
5 | **/.env
6 |
--------------------------------------------------------------------------------
/apps/frontend/src/routes/+layout.svelte:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/packages/eslint-config-custom/index.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | extends: ["turbo", "prettier"],
3 | };
4 |
--------------------------------------------------------------------------------
/apps/example/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "semi": true,
3 | "singleQuote": true,
4 | "tabWidth": 2,
5 | "useTabs": true
6 | }
--------------------------------------------------------------------------------
/apps/frontend/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "semi": true,
3 | "singleQuote": true,
4 | "tabWidth": 2,
5 | "useTabs": true
6 | }
--------------------------------------------------------------------------------
/apps/frontend/static/ui.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ottomated/agnostic-proximity/HEAD/apps/frontend/static/ui.png
--------------------------------------------------------------------------------
/apps/backend/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "semi": true,
3 | "singleQuote": true,
4 | "tabWidth": 2,
5 | "useTabs": true
6 | }
--------------------------------------------------------------------------------
/apps/frontend/static/stack.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ottomated/agnostic-proximity/HEAD/apps/frontend/static/stack.png
--------------------------------------------------------------------------------
/apps/frontend/static/voice.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ottomated/agnostic-proximity/HEAD/apps/frontend/static/voice.png
--------------------------------------------------------------------------------
/apps/frontend/src/app.css:
--------------------------------------------------------------------------------
1 | @import '@fontsource/inter';
2 |
3 | @tailwind base;
4 | @tailwind components;
5 | @tailwind utilities;
--------------------------------------------------------------------------------
/apps/example/src/app.css:
--------------------------------------------------------------------------------
1 |
2 | @tailwind base;
3 | @tailwind components;
4 | @tailwind utilities;
5 |
6 | body {
7 | height: 100vh;
8 | }
--------------------------------------------------------------------------------
/apps/frontend/static/scoreboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ottomated/agnostic-proximity/HEAD/apps/frontend/static/scoreboard.png
--------------------------------------------------------------------------------
/apps/frontend/static/_app/immutable/a.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ottomated/agnostic-proximity/HEAD/apps/frontend/static/_app/immutable/a.mp3
--------------------------------------------------------------------------------
/apps/frontend/static/_app/immutable/a.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ottomated/agnostic-proximity/HEAD/apps/frontend/static/_app/immutable/a.wav
--------------------------------------------------------------------------------
/apps/frontend/src/app.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
3 | declare namespace App {
4 | interface Locals {
5 | token: string;
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/packages/common/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "common",
3 | "main": "src/index.ts",
4 | "types": "src/index.ts",
5 | "type": "module",
6 | "dependencies": {
7 | "zod": "^3.21.4"
8 | }
9 | }
--------------------------------------------------------------------------------
/apps/example/tailwind.config.cjs:
--------------------------------------------------------------------------------
1 | /** @type {import('tailwindcss').Config} */
2 | module.exports = {
3 | content: ['./src/**/*.{html,js,svelte,ts}'],
4 | theme: {
5 | extend: {},
6 | },
7 | plugins: [],
8 | };
9 |
--------------------------------------------------------------------------------
/apps/example/vite.config.mjs:
--------------------------------------------------------------------------------
1 | import { sveltekit } from '@sveltejs/kit/vite';
2 |
3 | /** @type {import('vite').UserConfig} */
4 | const config = {
5 | plugins: [sveltekit()],
6 | };
7 |
8 | export default config;
9 |
--------------------------------------------------------------------------------
/apps/frontend/tailwind.config.cjs:
--------------------------------------------------------------------------------
1 | /** @type {import('tailwindcss').Config} */
2 | module.exports = {
3 | content: ['./src/**/*.{html,js,svelte,ts}'],
4 | theme: {
5 | extend: {},
6 | },
7 | plugins: [],
8 | };
9 |
--------------------------------------------------------------------------------
/apps/frontend/vite.config.mjs:
--------------------------------------------------------------------------------
1 | import { sveltekit } from '@sveltejs/kit/vite';
2 |
3 | /** @type {import('vite').UserConfig} */
4 | const config = {
5 | plugins: [sveltekit()],
6 | };
7 |
8 | export default config;
9 |
--------------------------------------------------------------------------------
/apps/frontend/src/routes/(play)/+layout.server.ts:
--------------------------------------------------------------------------------
1 | export const ssr = false;
2 | export const prerender = false;
3 |
4 | export const load = async ({ locals }) => {
5 | return {
6 | token: locals.token,
7 | };
8 | };
9 |
--------------------------------------------------------------------------------
/apps/example/src/app.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
4 | declare namespace App {
5 | interface Platform {
6 | env: {
7 | // KV: KVNamespace;
8 | };
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/apps/example/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./.svelte-kit/tsconfig.json",
3 | "compilerOptions": {
4 | "strict": true,
5 | "alwaysStrict": true,
6 | "noUncheckedIndexedAccess": true,
7 | "allowSyntheticDefaultImports": true
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/apps/frontend/src/routes/setup/+page.server.ts:
--------------------------------------------------------------------------------
1 | export const load = async ({ locals }) => {
2 | return {
3 | token: locals.token,
4 | };
5 | };
6 |
7 | export const prerender = false;
8 | export const csr = false;
9 | export const ssr = true;
10 |
--------------------------------------------------------------------------------
/apps/frontend/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./.svelte-kit/tsconfig.json",
3 | "compilerOptions": {
4 | "strict": true,
5 | "alwaysStrict": true,
6 | "noUncheckedIndexedAccess": true,
7 | "allowSyntheticDefaultImports": true
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | // This tells ESLint to load the config from the package `eslint-config-custom`
4 | extends: ["custom"],
5 | settings: {
6 | next: {
7 | rootDir: ["apps/*/"],
8 | },
9 | },
10 | };
11 |
--------------------------------------------------------------------------------
/apps/example/postcss.config.mjs:
--------------------------------------------------------------------------------
1 | import autoprefixer from 'autoprefixer';
2 | import tailwind from 'tailwindcss';
3 |
4 | /** @type {import('postcss-load-config').Config} */
5 | const config = {
6 | plugins: [tailwind, autoprefixer],
7 | };
8 |
9 | export default config;
10 |
--------------------------------------------------------------------------------
/apps/frontend/postcss.config.mjs:
--------------------------------------------------------------------------------
1 | import autoprefixer from 'autoprefixer';
2 | import tailwind from 'tailwindcss';
3 |
4 | /** @type {import('postcss-load-config').Config} */
5 | const config = {
6 | plugins: [tailwind, autoprefixer],
7 | };
8 |
9 | export default config;
10 |
--------------------------------------------------------------------------------
/apps/backend/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "root": true,
3 | "parser": "@typescript-eslint/parser",
4 | "plugins": [
5 | "@typescript-eslint"
6 | ],
7 | "extends": [
8 | "eslint:recommended",
9 | "plugin:prettier/recommended",
10 | "plugin:@typescript-eslint/recommended"
11 | ],
12 | "ignorePatterns": "dist"
13 | }
--------------------------------------------------------------------------------
/apps/example/svelte.config.js:
--------------------------------------------------------------------------------
1 | import adapter from '@sveltejs/adapter-auto';
2 | import preprocess from 'svelte-preprocess';
3 |
4 | /** @type {import('@sveltejs/kit').Config} */
5 | const config = {
6 | preprocess: [
7 | preprocess({
8 | postcss: true,
9 | }),
10 | ],
11 |
12 | kit: {
13 | adapter: adapter(),
14 | },
15 | };
16 |
17 | export default config;
18 |
--------------------------------------------------------------------------------
/apps/backend/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 |
8 | # testing
9 | /coverage
10 |
11 | # misc
12 | .DS_Store
13 | *.pem
14 |
15 | # debug
16 | npm-debug.log*
17 | yarn-debug.log*
18 | yarn-error.log*
19 |
20 | # env files
21 | .env
22 |
23 | # output
24 | /dist
--------------------------------------------------------------------------------
/turbo.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://turbo.build/schema.json",
3 | "globalDependencies": [
4 | "**/.env.*local"
5 | ],
6 | "pipeline": {
7 | "build": {
8 | "dependsOn": [
9 | "^build"
10 | ],
11 | "outputs": [
12 | "build/**",
13 | "dist/**"
14 | ]
15 | },
16 | "lint": {
17 | "outputs": []
18 | },
19 | "dev": {
20 | "cache": false
21 | }
22 | }
23 | }
--------------------------------------------------------------------------------
/apps/example/src/app.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | %sveltekit.head%
9 |
10 |
11 |
12 |
13 | %sveltekit.body%
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/apps/frontend/src/app.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | %sveltekit.head%
9 |
10 |
11 |
12 |
13 | %sveltekit.body%
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/apps/frontend/src/routes/(play)/+page.svelte:
--------------------------------------------------------------------------------
1 |
10 |
11 | {#await peerPromise then [peer, gameState]}
12 |
13 | {/await}
14 |
--------------------------------------------------------------------------------
/packages/eslint-config-custom/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "eslint-config-custom",
3 | "version": "0.0.0",
4 | "main": "index.js",
5 | "license": "MIT",
6 | "dependencies": {
7 | "eslint": "^8.36.0",
8 | "eslint-config-prettier": "^8.7.0",
9 | "eslint-config-turbo": "^0.0.9"
10 | },
11 | "devDependencies": {
12 | "typescript": "^4.9.5"
13 | },
14 | "publishConfig": {
15 | "access": "public"
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/apps/frontend/src/hooks.server.ts:
--------------------------------------------------------------------------------
1 | import type { Handle } from '@sveltejs/kit';
2 | import { env } from '$env/dynamic/private';
3 |
4 | export const handle: Handle = async ({ event, resolve }) => {
5 | const token = event.url.searchParams.get('token');
6 | if (!token) return new Response('Missing token');
7 | if (token !== env.AUTH_TOKEN) return new Response('Invalid token');
8 |
9 | event.locals.token = token;
10 |
11 | return resolve(event);
12 | };
13 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 | .env
3 | # dependencies
4 | node_modules
5 | .pnp
6 | .pnp.js
7 |
8 | # testing
9 | coverage
10 |
11 | # next.js
12 | .next/
13 | out/
14 | build
15 |
16 | # misc
17 | .DS_Store
18 | *.pem
19 |
20 | # debug
21 | npm-debug.log*
22 | yarn-debug.log*
23 | yarn-error.log*
24 | .pnpm-debug.log*
25 |
26 | # local env files
27 | .env.local
28 | .env.development.local
29 | .env.test.local
30 | .env.production.local
31 |
32 | # turbo
33 | .turbo
34 |
--------------------------------------------------------------------------------
/nginx.conf:
--------------------------------------------------------------------------------
1 | upstream frontend {
2 | server frontend:3000;
3 | }
4 |
5 | upstream backend {
6 | server backend:9000;
7 | }
8 |
9 | server {
10 | listen 80;
11 | server_name ${SERVER_NAME};
12 |
13 | location / {
14 | proxy_pass http://frontend;
15 | }
16 | }
17 |
18 | server {
19 | listen 80;
20 |
21 | server_name backend-${SERVER_NAME};
22 |
23 | location / {
24 | proxy_http_version 1.1;
25 | proxy_set_header Upgrade $http_upgrade;
26 | proxy_set_header Connection "upgrade";
27 | proxy_read_timeout 864000;
28 |
29 | proxy_pass http://backend;
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/apps/backend/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "esnext",
4 | "lib": [
5 | "esnext"
6 | ],
7 | "allowJs": true,
8 | "baseUrl": ".",
9 | "skipLibCheck": true,
10 | "strict": true,
11 | "forceConsistentCasingInFileNames": true,
12 | "incremental": true,
13 | "esModuleInterop": true,
14 | "outDir": "dist",
15 | "module": "CommonJS",
16 | "moduleResolution": "node",
17 | "resolveJsonModule": true
18 | },
19 | "include": [
20 | "src/**/*.ts"
21 | ],
22 | "exclude": [
23 | "node_modules"
24 | ]
25 | }
--------------------------------------------------------------------------------
/packages/common/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "esnext",
4 | "lib": [
5 | "esnext"
6 | ],
7 | "allowJs": true,
8 | "baseUrl": ".",
9 | "skipLibCheck": true,
10 | "strict": true,
11 | "forceConsistentCasingInFileNames": true,
12 | "incremental": true,
13 | "esModuleInterop": true,
14 | "outDir": "dist",
15 | "module": "CommonJS",
16 | "moduleResolution": "node",
17 | "resolveJsonModule": true
18 | },
19 | "include": [
20 | "src/**/*.ts"
21 | ],
22 | "exclude": [
23 | "node_modules"
24 | ]
25 | }
--------------------------------------------------------------------------------
/apps/example/.eslintrc.cjs:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | parser: '@typescript-eslint/parser',
4 | env: {
5 | browser: true,
6 | es2017: true,
7 | node: true,
8 | },
9 | extends: ['eslint:recommended', 'plugin:prettier/recommended'],
10 | plugins: ['svelte3', '@typescript-eslint'],
11 | overrides: [
12 | {
13 | files: ['*.svelte'],
14 | processor: 'svelte3/svelte3',
15 | },
16 | {
17 | files: ['*.ts'],
18 | extends: ['plugin:@typescript-eslint/recommended'],
19 | },
20 | ],
21 | settings: {
22 | 'svelte3/typescript': () => require('typescript'),
23 | },
24 | parserOptions: {
25 | sourceType: 'module',
26 | ecmaVersion: 2020,
27 | },
28 | };
29 |
--------------------------------------------------------------------------------
/apps/frontend/.eslintrc.cjs:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | parser: '@typescript-eslint/parser',
4 | env: {
5 | browser: true,
6 | es2017: true,
7 | node: true,
8 | },
9 | extends: ['eslint:recommended', 'plugin:prettier/recommended'],
10 | plugins: ['svelte3', '@typescript-eslint'],
11 | overrides: [
12 | {
13 | files: ['*.svelte'],
14 | processor: 'svelte3/svelte3',
15 | },
16 | {
17 | files: ['*.ts'],
18 | extends: ['plugin:@typescript-eslint/recommended'],
19 | },
20 | ],
21 | settings: {
22 | 'svelte3/typescript': () => require('typescript'),
23 | },
24 | parserOptions: {
25 | sourceType: 'module',
26 | ecmaVersion: 2020,
27 | },
28 | };
29 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "agnostic-proximity",
3 | "version": "0.0.0",
4 | "private": true,
5 | "workspaces": [
6 | "apps/*",
7 | "packages/*"
8 | ],
9 | "scripts": {
10 | "build": "turbo run build",
11 | "dev": "turbo run dev",
12 | "lint": "turbo run lint",
13 | "format": "prettier --write \"**/*.{ts,tsx,svelte,md}\"",
14 | "start:backend": "cd apps/backend && pnpm start",
15 | "start:frontend": "cd apps/frontend && pnpm start"
16 | },
17 | "devDependencies": {
18 | "eslint-config-custom": "workspace:*",
19 | "prettier": "latest",
20 | "turbo": "latest"
21 | },
22 | "engines": {
23 | "node": ">=14.0.0"
24 | },
25 | "dependencies": {},
26 | "packageManager": "pnpm@7.26.3"
27 | }
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM node:18-buster-slim AS builder
2 | ARG app
3 |
4 | WORKDIR /app
5 | RUN npm i -g pnpm turbo
6 |
7 | COPY . .
8 | RUN turbo prune --scope=$app --docker
9 |
10 | FROM node:18-buster-slim AS installer
11 | ARG app
12 |
13 | WORKDIR /app
14 | RUN npm i -g pnpm
15 |
16 | COPY .gitignore .gitignore
17 | COPY --from=builder /app/out/json/ .
18 | COPY --from=builder /app/out/pnpm-lock.yaml ./pnpm-lock.yaml
19 | COPY --from=builder /app/out/pnpm-workspace.yaml ./pnpm-workspace.yaml
20 |
21 | RUN pnpm i
22 | COPY --from=builder /app/out/full/ .
23 | RUN pnpm turbo run build --filter=$app...
24 |
25 | FROM node:18-buster-slim AS runner
26 | ARG app
27 | WORKDIR /app
28 | RUN npm i -g pnpm
29 |
30 | RUN addgroup --system --gid 1001 nodejs
31 | RUN adduser --system --uid 1001 runner
32 | USER runner
33 |
34 | COPY --from=installer --chown=runner:nodejs /app ./
35 |
36 | ENV APP $app
37 | CMD pnpm start:${APP}
--------------------------------------------------------------------------------
/apps/frontend/src/lib/stores.ts:
--------------------------------------------------------------------------------
1 | import { browser } from '$app/environment';
2 | import { writable, type Writable } from 'svelte/store';
3 | import { uneval } from 'devalue';
4 |
5 | export function storedWritable(
6 | key: string,
7 | initialValue: T | (() => T)
8 | ): Writable {
9 | let initial: T | undefined;
10 |
11 | if (browser) {
12 | const stored = localStorage.getItem(key);
13 | if (stored) {
14 | console.log(key, stored);
15 | initial = (0, eval)(`(${stored})`);
16 | }
17 | }
18 |
19 | if (!initial) {
20 | if (typeof initialValue === 'function') {
21 | // eslint-disable-next-line @typescript-eslint/ban-ts-comment
22 | // @ts-ignore
23 | initial = initialValue();
24 | } else {
25 | initial = initialValue;
26 | }
27 | }
28 |
29 | const store = writable(initial);
30 |
31 | store.subscribe((value) => {
32 | if (!browser) return;
33 | localStorage.setItem(key, uneval(value));
34 | });
35 | return store;
36 | }
37 |
--------------------------------------------------------------------------------
/apps/frontend/src/routes/(play)/+layout.svelte:
--------------------------------------------------------------------------------
1 |
17 |
18 | {#if !isChrome}
19 |
22 |
23 | This probably only works on Chrome-based browsers because the others are
24 | cringe when it comes to audio.
25 |
26 |
27 | {/if}
28 |
29 | {#if $myId}
30 |
31 | {:else}
32 |
33 | {/if}
34 |
35 |
--------------------------------------------------------------------------------
/apps/frontend/svelte.config.js:
--------------------------------------------------------------------------------
1 | import adapter from '@sveltejs/adapter-node';
2 | import preprocess from 'svelte-preprocess';
3 |
4 | /** @type {import('@sveltejs/kit').Config} */
5 | const config = {
6 | preprocess: [
7 | preprocess({
8 | postcss: true,
9 | replace: [
10 | [
11 | /import\s*{\s*([^}]+?)\s*,?\s*}\s*from\s+['"]lucide-svelte['"](\s*;)?/gim,
12 | (_, /**@type {string} */ imports) => {
13 | return imports
14 | .split(/\s*,\s*/gim)
15 | .map((s) => {
16 | let icon = s.split(/\s+as\s+/);
17 | let name = icon[1] || icon[0];
18 | let file = icon[0]
19 | .replace(/[A-Z]/g, (s) => '-' + s.toLowerCase())
20 | .slice(1);
21 | return `import ${name} from 'lucide-svelte/dist/esm/icons/${file}.svelte';`;
22 | })
23 | .join('');
24 | },
25 | ],
26 | ],
27 | }),
28 | ],
29 |
30 | kit: {
31 | adapter: adapter(),
32 | },
33 | };
34 |
35 | export default config;
36 |
--------------------------------------------------------------------------------
/apps/backend/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "backend",
3 | "version": "0.1.0",
4 | "author": {
5 | "name": "Ottomated",
6 | "email": "otto@ottomated.net"
7 | },
8 | "private": true,
9 | "scripts": {
10 | "dev": "tsx watch src/index.ts",
11 | "build": "esbuild src/index.ts --bundle --platform=node --target=node18 --outfile=dist/index.js",
12 | "lint": "eslint --fix .",
13 | "start": "node dist/index.js"
14 | },
15 | "devDependencies": {
16 | "@types/node": "^18.15.0",
17 | "@types/ws": "^8.5.4",
18 | "@typescript-eslint/eslint-plugin": "^5.54.1",
19 | "@typescript-eslint/parser": "^5.54.1",
20 | "esbuild": "^0.17.11",
21 | "eslint": "^8.36.0",
22 | "eslint-config-prettier": "^8.7.0",
23 | "eslint-plugin-prettier": "^4.2.1",
24 | "prettier": "^2.8.3",
25 | "typescript": "^4.9.5"
26 | },
27 | "dependencies": {
28 | "common": "workspace:*",
29 | "peer": "^1.0.0",
30 | "tsx": "^3.12.4",
31 | "ws": "^8.13.0",
32 | "zod": "^3.21.4"
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Agnostic Proximity
2 |
3 | Voice chat built to hook into any game
4 |
5 | ## Setup
6 |
7 | 1. Set up `.env`
8 |
9 | ```env
10 | AUTH_TOKEN=password # Static authentication token used by users to connect
11 | HOST=proximity.example.com # Where your backend is hosted - i.e. proximity.example.com
12 | ```
13 |
14 | 2. Set up a VPS
15 |
16 | - Install docker and docker-compose
17 | - Clone this repo
18 | - Run `docker-compose build` and `docker-compose up`
19 |
20 | 3. Set up DNS records
21 |
22 | Use Cloudflare for automatic SSL. Set SSL mode to Flexible.
23 |
24 | If your `HOST` is set to `proximity.example.com`:
25 |
26 | 1. An `A` record on `backend-proximity.example.com` pointing to your server's IP
27 | 2. An `A` record on `proximity.example.com` pointing to your server's IP
28 | 3. An `A` record on `turn-proximity.example.com` pointing to your server's IP **NOT PROXIED THROUGH CLOUDFLARE**
29 | 4. An `AAAA` record on `turn-proximity.example.com` pointing to your server's IPv6 **NOT PROXIED THROUGH CLOUDFLARE**
30 |
--------------------------------------------------------------------------------
/apps/example/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "example",
3 | "version": "0.1.0",
4 | "author": {
5 | "name": "Ottomated"
6 | },
7 | "scripts": {
8 | "dev": "vite dev --port 9001",
9 | "lint": "eslint --fix . && svelte-check"
10 | },
11 | "dependencies": {
12 | "common": "workspace:*",
13 | "tailwindcss": "^3.2.4"
14 | },
15 | "devDependencies": {
16 | "@sveltejs/adapter-auto": "^2.0.0",
17 | "@sveltejs/kit": "^1.11.0",
18 | "@typescript-eslint/eslint-plugin": "^5.54.1",
19 | "@typescript-eslint/parser": "^5.54.1",
20 | "autoprefixer": "^10.4.14",
21 | "eslint": "^8.36.0",
22 | "eslint-config-prettier": "^8.7.0",
23 | "eslint-plugin-prettier": "^4.2.1",
24 | "eslint-plugin-svelte3": "^4.0.0",
25 | "postcss": "^8.4.21",
26 | "postcss-load-config": "^4.0.1",
27 | "prettier": "^2.8.3",
28 | "prettier-plugin-svelte": "^2.9.0",
29 | "svelte": "^3.56.0",
30 | "svelte-check": "^3.1.2",
31 | "svelte-preprocess": "^5.0.1",
32 | "tslib": "^2.5.0",
33 | "typescript": "~4.9.5",
34 | "vite": "^4.1.1"
35 | },
36 | "type": "module"
37 | }
--------------------------------------------------------------------------------
/apps/backend/src/store.ts:
--------------------------------------------------------------------------------
1 | import type { ZodSchema } from 'zod';
2 |
3 | export function writable(schema: ZodSchema, initial: T) {
4 | const subscribers: Array<(value: T) => void> = [];
5 | let value = initial;
6 | return {
7 | subscribe: (subscriber: (value: T) => void) => {
8 | subscribers.push(subscriber);
9 | subscriber(value);
10 | return () => {
11 | const index = subscribers.indexOf(subscriber);
12 | if (index !== -1) subscribers.splice(index, 1);
13 | };
14 | },
15 | set: (newValue: T) => {
16 | const res = schema.safeParse(newValue);
17 | if (!res.success) {
18 | console.warn(res.error);
19 | return;
20 | }
21 | value = res.data;
22 | subscribers.forEach((subscriber) => subscriber(value));
23 | },
24 | update: (fn: (old: T) => T) => {
25 | const res = schema.safeParse(fn(value));
26 | if (!res.success) {
27 | console.warn(res.error);
28 | return;
29 | }
30 | value = res.data;
31 | subscribers.forEach((subscriber) => subscriber(value));
32 | },
33 | get: () => value,
34 | };
35 | }
36 |
--------------------------------------------------------------------------------
/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: '3'
2 | services:
3 | frontend:
4 | build:
5 | context: .
6 | dockerfile: Dockerfile
7 | args:
8 | app: frontend
9 | environment:
10 | - AUTH_TOKEN=${AUTH_TOKEN}
11 | - PUBLIC_BACKEND_HOST=backend-${HOST}
12 | - PUBLIC_BACKEND_PORT=443
13 | - PUBLIC_TURN_HOST=turn-${HOST}
14 | - ORIGIN=https://${HOST}
15 | depends_on:
16 | - backend
17 | - turn
18 | backend:
19 | build:
20 | context: .
21 | dockerfile: Dockerfile
22 | args:
23 | app: backend
24 | environment:
25 | - AUTH_TOKEN=${AUTH_TOKEN}
26 | turn:
27 | image: ghcr.io/processone/eturnal:latest
28 | network_mode: host
29 | hostname: eturnal
30 | container_name: eturnal
31 | restart: unless-stopped
32 | environment:
33 | ETURNAL_SECRET: ${AUTH_TOKEN}
34 | nginx:
35 | image: nginx:1.23.3-alpine
36 | environment:
37 | - NGINX_ENVSUBST_TEMPLATE_SUFFIX=.conf
38 | - SERVER_NAME=${HOST}
39 | volumes:
40 | - ./nginx.conf:/etc/nginx/templates/default.conf.conf:ro
41 | - type: tmpfs
42 | target: /var/lib/coturn
43 | - /etc/letsencrypt:/etc/letsencrypt:ro
44 | ports:
45 | - 80:80
46 | - 443:443
47 | depends_on:
48 | - frontend
49 | - backend
50 |
--------------------------------------------------------------------------------
/packages/common/src/index.ts:
--------------------------------------------------------------------------------
1 | import { z } from 'zod';
2 |
3 | export const gameStateSchema = z.object({
4 | GameState: z.object({
5 | players: z.array(
6 | z.object({
7 | id: z.string(),
8 | name: z.string(),
9 | position: z.object({
10 | x: z.number(),
11 | y: z.number(),
12 | z: z.number(),
13 | }),
14 | rotation: z.object({
15 | x: z.number(),
16 | y: z.number(),
17 | z: z.number(),
18 | w: z.number(),
19 | }),
20 | volume: z.number(),
21 | })
22 | ),
23 | audioSettings: z.object({
24 | maxDistance: z.number().min(0),
25 | refDistance: z.number().min(0),
26 | rolloffFactor: z.number().min(0),
27 | coneInnerAngle: z.number().min(0).max(360),
28 | coneOuterAngle: z.number().min(0).max(360),
29 | coneOuterGain: z.number().min(0).max(1),
30 | staticGainMultiplier: z.number().min(0),
31 | }),
32 | }),
33 | });
34 | export const defaultGameState = {
35 | players: [],
36 | audioSettings: {
37 | maxDistance: 90,
38 | refDistance: 20,
39 | rolloffFactor: 1,
40 | coneInnerAngle: 360,
41 | coneOuterAngle: 0,
42 | coneOuterGain: 0,
43 | staticGainMultiplier: 1,
44 | },
45 | } satisfies GameState;
46 |
47 | export type GameState = z.infer['GameState'];
48 | export type Player = GameState['players'][number];
49 |
--------------------------------------------------------------------------------
/apps/frontend/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "frontend",
3 | "version": "0.1.0",
4 | "author": {
5 | "name": "Ottomated"
6 | },
7 | "scripts": {
8 | "dev": "vite dev",
9 | "build": "vite build",
10 | "start": "node build/index.js",
11 | "lint": "eslint --fix . && svelte-check"
12 | },
13 | "dependencies": {
14 | "@fontsource/inter": "^4.5.15",
15 | "@tanstack/svelte-query": "^4.26.1",
16 | "common": "workspace:*",
17 | "devalue": "^4.3.0",
18 | "lucide-svelte": "^0.125.0",
19 | "peerjs": "1.4.7",
20 | "tailwindcss": "^3.2.4",
21 | "webrtc-adapter": "^8.2.0"
22 | },
23 | "devDependencies": {
24 | "@sveltejs/adapter-node": "^1.2.2",
25 | "@sveltejs/kit": "^1.11.0",
26 | "@typescript-eslint/eslint-plugin": "^5.54.1",
27 | "@typescript-eslint/parser": "^5.54.1",
28 | "autoprefixer": "^10.4.14",
29 | "eslint": "^8.36.0",
30 | "eslint-config-prettier": "^8.7.0",
31 | "eslint-plugin-prettier": "^4.2.1",
32 | "eslint-plugin-svelte3": "^4.0.0",
33 | "postcss": "^8.4.21",
34 | "postcss-load-config": "^4.0.1",
35 | "prettier": "^2.8.3",
36 | "prettier-plugin-svelte": "^2.9.0",
37 | "svelte": "^3.56.0",
38 | "svelte-check": "^3.1.2",
39 | "svelte-preprocess": "^5.0.1",
40 | "tslib": "^2.5.0",
41 | "typescript": "~4.9.5",
42 | "vite": "^4.1.1"
43 | },
44 | "type": "module",
45 | "pnpm": {
46 | "patchedDependencies": {
47 | "peerjs@1.4.7": "patches/peerjs@1.4.7.patch"
48 | }
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/apps/frontend/src/routes/setup/+page@.svelte:
--------------------------------------------------------------------------------
1 |
6 |
7 |
10 | Rules
11 |
12 | Do not pick Gekko
13 |
14 | Try your best not to stack on top of each other - the person on bottom
15 | will fade out and you won't be able to hear them
16 |
17 |
18 | Expect jankiness :)
19 |
20 |
21 | Setup Instructions
22 |
23 |
1. Turn off in-game UI
24 |
25 |
2. Unbind the scoreboard button
26 |
27 |
3. Turn off in-game voice chat
28 |
29 |
30 | 4. Open the website
35 | on a Chrome-based browser
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/apps/backend/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright Ottomated (c) 2023
2 |
3 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
4 |
5 | 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
6 |
7 | 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
8 |
9 | 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
10 |
11 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
12 |
--------------------------------------------------------------------------------
/apps/frontend/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright Ottomated (c) 2023
2 |
3 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
4 |
5 | 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
6 |
7 | 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
8 |
9 | 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
10 |
11 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
12 |
--------------------------------------------------------------------------------
/apps/frontend/src/lib/Login.svelte:
--------------------------------------------------------------------------------
1 |
30 |
31 |
34 | {#if $users.isLoading}
35 | Loading users...
36 | {:else if $users.isError}
37 | Error: {$users.error}
38 | {:else if $users.data.length === 0}
39 | Waiting for game to start...
40 | {:else}
41 | Who are you?
42 | {#each $users.data as user}
43 | ($myId = user.id)}
45 | class="bg-slate-500 text-white px-2 py-1 rounded"
46 | >
47 | {user.name}
48 |
49 | {/each}
50 | {/if}
51 |
52 |
--------------------------------------------------------------------------------
/apps/frontend/src/lib/audio.ts:
--------------------------------------------------------------------------------
1 | import { readable } from 'svelte/store';
2 | import { storedWritable } from './stores';
3 |
4 | export const SMOOTHING = 0.1;
5 |
6 | export const audioSettings = storedWritable('audioSettings', () => ({
7 | muted: false,
8 | deafened: false,
9 | inputVolume: 1,
10 | }));
11 |
12 | export async function getMicrophone(context: AudioContext) {
13 | const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
14 | const node = context.createMediaStreamSource(stream);
15 | return { stream, node };
16 | }
17 |
18 | export function closeStream(stream: MediaStream | undefined) {
19 | if (!stream) return;
20 | stream.getTracks().forEach((t) => t.stop());
21 | }
22 |
23 | export function setStreamEnabled(
24 | stream: MediaStream | undefined,
25 | enabled: boolean
26 | ) {
27 | if (!stream) return;
28 | stream.getTracks().forEach((t) => (t.enabled = enabled));
29 | }
30 |
31 | function canAutoplay() {
32 | const el = document.createElement('audio');
33 | el.setAttribute('playsinline', 'playsinline');
34 | el.src = '/_app/immutable/a.mp3';
35 | return new Promise((resolve) => {
36 | const playResult = el.play();
37 | const timeout = setTimeout(() => {
38 | cleanup(false);
39 | }, 250);
40 | const cleanup = (res: boolean) => {
41 | resolve(res);
42 | clearTimeout(timeout);
43 | el.remove();
44 | };
45 | if (playResult !== undefined) {
46 | playResult.then(() => cleanup(true)).catch(() => cleanup(false));
47 | } else {
48 | cleanup(true);
49 | }
50 | });
51 | }
52 |
53 | export const audioAllowed = readable(false, (set) => {
54 | let succeeded = false;
55 | const check = async () => {
56 | const result = await canAutoplay();
57 | console.log(result);
58 | if (result) succeeded = true;
59 | set(result);
60 | if (succeeded) {
61 | clearInterval(interval);
62 | }
63 | };
64 | check();
65 |
66 | const interval = setInterval(check, 1000);
67 |
68 | window.addEventListener('click', check);
69 | });
70 |
--------------------------------------------------------------------------------
/apps/frontend/src/lib/socket.ts:
--------------------------------------------------------------------------------
1 | import { env } from '$env/dynamic/public';
2 | import type { GameState } from 'common';
3 | import Peer from 'peerjs';
4 | import { writable } from 'svelte/store';
5 | import { storedWritable } from './stores';
6 |
7 | export const myId = storedWritable('playerId', '');
8 |
9 | export async function createPeer(id: string, token: string) {
10 | const expires = Date.now() + 1000 * 60 * 60 * 24;
11 |
12 | const signature = await crypto.subtle.sign(
13 | {
14 | name: 'HMAC',
15 | hash: 'SHA-1',
16 | },
17 | await crypto.subtle.importKey(
18 | 'raw',
19 | new TextEncoder().encode(token),
20 | {
21 | name: 'HMAC',
22 | hash: 'SHA-1',
23 | },
24 | false,
25 | ['sign', 'verify']
26 | ),
27 | new TextEncoder().encode(expires.toString())
28 | );
29 |
30 | const gameState = writable({
31 | players: [],
32 | falloffDistance: 10,
33 | });
34 | // base64
35 | const signatureString = btoa(
36 | String.fromCharCode(...new Uint8Array(signature))
37 | );
38 |
39 | const peer = new Peer(id, {
40 | host: env.PUBLIC_BACKEND_HOST,
41 | port: Number(env.PUBLIC_BACKEND_PORT),
42 | key: token,
43 | path: '/proximity',
44 | config: {
45 | iceServers: [
46 | // { urls: 'stun:stun.l.google.com:19302' },
47 | {
48 | urls: `turn:${env.PUBLIC_TURN_HOST}:3478`,
49 | username: expires.toString(),
50 | credential: signatureString,
51 | },
52 | ],
53 | },
54 | });
55 |
56 | let ws: WebSocket | undefined;
57 |
58 | const onMessage = () => {
59 | // eslint-disable-next-line @typescript-eslint/no-explicit-any
60 | ws = (peer.socket as any)._socket as WebSocket | undefined;
61 | if (!ws) return;
62 | peer.socket.off('message', onMessage);
63 |
64 | ws.addEventListener('message', (event) => {
65 | try {
66 | const data = JSON.parse(event.data);
67 | if (data.GameState) {
68 | gameState.set(data.GameState);
69 | }
70 | } catch (e) {
71 | console.error(e);
72 | }
73 | });
74 | };
75 | peer.socket.on('message', onMessage);
76 | return [peer, gameState] as const;
77 | }
78 |
--------------------------------------------------------------------------------
/apps/backend/src/index.ts:
--------------------------------------------------------------------------------
1 | import { PeerServer } from 'peer';
2 | import { writable } from './store';
3 | import { defaultGameState, gameStateSchema } from 'common';
4 | import type { WebSocket } from 'ws';
5 |
6 | const authToken = process.env.AUTH_TOKEN ?? 'pass';
7 | if (!process.env.AUTH_TOKEN) {
8 | console.warn('No AUTH_TOKEN set, using "pass"');
9 | }
10 |
11 | const peerServer = PeerServer({
12 | port: 9000,
13 | path: '/proximity',
14 | alive_timeout: Infinity,
15 | key: authToken,
16 | });
17 |
18 | const state = writable(gameStateSchema, {
19 | GameState: defaultGameState,
20 | });
21 |
22 | const clients = new Set();
23 |
24 | state.subscribe((state) => {
25 | clients.forEach((client) => {
26 | client.send(JSON.stringify(state));
27 | });
28 | });
29 |
30 | peerServer.use((_, res, next) => {
31 | res.header('Access-Control-Allow-Origin', '*');
32 | res.header('Access-Control-Allow-Headers', 'Authorization');
33 | res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
34 | next();
35 | });
36 |
37 | peerServer.get('/users', (req, res) => {
38 | if (req.header('Authorization') !== authToken) {
39 | res.status(401).send('Unauthorized');
40 | return;
41 | }
42 | const { GameState } = state.get();
43 | const players = GameState.players.map((player) => ({
44 | id: player.id,
45 | name: player.name,
46 | }));
47 | //never cache
48 | res.header('Cache-Control', 'no-cache, no-store, must-revalidate');
49 | res.header('Content-Type', 'application/json');
50 | res.send(JSON.stringify(players));
51 | });
52 |
53 | peerServer.on('connection', (client) => {
54 | const ws = client.getSocket();
55 | if (!ws) return;
56 | clients.add(ws);
57 | ws.addEventListener('message', (event) => {
58 | if (typeof event.data !== 'string') return;
59 | try {
60 | const data = JSON.parse(event.data);
61 | if (data.GameState) {
62 | state.set(data);
63 | }
64 | } catch (_) {
65 | /* noop */
66 | }
67 | });
68 | ws.send(JSON.stringify(state.get()));
69 | });
70 |
71 | peerServer.on('disconnect', (client) => {
72 | const ws = client.getSocket();
73 | if (!ws) return;
74 | clients.delete(ws);
75 | });
76 |
77 | console.log('Backend listening on 0.0.0.0:9000');
78 |
--------------------------------------------------------------------------------
/apps/frontend/src/routes/(play)/Chat.svelte:
--------------------------------------------------------------------------------
1 |
37 |
38 |
41 | {#await micPromise}
42 | Waiting for microphone access...
43 | {:then mic}
44 | {#if $audioAllowed}
45 | {@const me = $gameState.players.find((p) => p.id === $myId)}
46 |
47 | {#each $gameState.players as player (player.id)}
48 | {#if player.id === $myId}
49 |
50 | {:else}
51 |
52 | {/if}
53 | {/each}
54 |
55 | {:else}
56 | Click to connect
57 | {/if}
58 | {:catch error}
59 |
60 | Microphone Error: {error.message}
61 |
62 | {/await}
63 |
64 |
65 |
66 | Mute
67 |
68 |
69 |
70 | Deafen
71 |
72 |
73 | ($myId = '')}>Change user
74 |
75 |
--------------------------------------------------------------------------------
/apps/frontend/src/lib/MyPlayer.svelte:
--------------------------------------------------------------------------------
1 |
39 |
40 |
86 |
87 |
88 |
89 | Me
90 |
91 |
--------------------------------------------------------------------------------
/apps/example/src/routes/+page.svelte:
--------------------------------------------------------------------------------
1 |
116 |
117 | {
119 | pressedKeys.add(e.key);
120 | justPressedKeys.add(e.key);
121 | }}
122 | on:keyup={(e) => pressedKeys.delete(e.key)}
123 | on:mousemove={(e) => {
124 | mousePos.x = e.clientX;
125 | mousePos.y = e.clientY;
126 | }}
127 | />
128 |
129 |
130 | {#each players as player, i}
131 |
137 |
143 |
144 | {/each}
145 |
146 |
--------------------------------------------------------------------------------
/apps/example/.gitignore:
--------------------------------------------------------------------------------
1 | # Created by https://www.toptal.com/developers/gitignore/api/macos,yarn,svelte,node
2 | # Edit at https://www.toptal.com/developers/gitignore?templates=macos,yarn,svelte,node
3 |
4 | ### macOS ###
5 | # General
6 | .DS_Store
7 | .AppleDouble
8 | .LSOverride
9 |
10 | # Icon must end with two \r
11 | Icon
12 |
13 |
14 | # Thumbnails
15 | ._*
16 |
17 | # Files that might appear in the root of a volume
18 | .DocumentRevisions-V100
19 | .fseventsd
20 | .Spotlight-V100
21 | .TemporaryItems
22 | .Trashes
23 | .VolumeIcon.icns
24 | .com.apple.timemachine.donotpresent
25 |
26 | # Directories potentially created on remote AFP share
27 | .AppleDB
28 | .AppleDesktop
29 | Network Trash Folder
30 | Temporary Items
31 | .apdisk
32 |
33 | ### macOS Patch ###
34 | # iCloud generated files
35 | *.icloud
36 |
37 | ### Node ###
38 | # Logs
39 | logs
40 | *.log
41 | npm-debug.log*
42 | yarn-debug.log*
43 | yarn-error.log*
44 | lerna-debug.log*
45 | .pnpm-debug.log*
46 |
47 | # Diagnostic reports (https://nodejs.org/api/report.html)
48 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
49 |
50 | # Runtime data
51 | pids
52 | *.pid
53 | *.seed
54 | *.pid.lock
55 |
56 | # Directory for instrumented libs generated by jscoverage/JSCover
57 | lib-cov
58 |
59 | # Coverage directory used by tools like istanbul
60 | coverage
61 | *.lcov
62 |
63 | # nyc test coverage
64 | .nyc_output
65 |
66 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
67 | .grunt
68 |
69 | # Bower dependency directory (https://bower.io/)
70 | bower_components
71 |
72 | # node-waf configuration
73 | .lock-wscript
74 |
75 | # Compiled binary addons (https://nodejs.org/api/addons.html)
76 | build/Release
77 |
78 | # Dependency directories
79 | node_modules/
80 | jspm_packages/
81 |
82 | # Snowpack dependency directory (https://snowpack.dev/)
83 | web_modules/
84 |
85 | # TypeScript cache
86 | *.tsbuildinfo
87 |
88 | # Optional npm cache directory
89 | .npm
90 |
91 | # Optional eslint cache
92 | .eslintcache
93 |
94 | # Optional stylelint cache
95 | .stylelintcache
96 |
97 | # Microbundle cache
98 | .rpt2_cache/
99 | .rts2_cache_cjs/
100 | .rts2_cache_es/
101 | .rts2_cache_umd/
102 |
103 | # Optional REPL history
104 | .node_repl_history
105 |
106 | # Output of 'npm pack'
107 | *.tgz
108 |
109 | # Yarn Integrity file
110 | .yarn-integrity
111 |
112 | # dotenv environment variable files
113 | .env
114 | .env.development.local
115 | .env.test.local
116 | .env.production.local
117 | .env.local
118 |
119 | # parcel-bundler cache (https://parceljs.org/)
120 | .cache
121 | .parcel-cache
122 |
123 | # Next.js build output
124 | .next
125 | out
126 |
127 | # Nuxt.js build / generate output
128 | .nuxt
129 | dist
130 |
131 | # Gatsby files
132 | .cache/
133 | # Comment in the public line in if your project uses Gatsby and not Next.js
134 | # https://nextjs.org/blog/next-9-1#public-directory-support
135 | # public
136 |
137 | # vuepress build output
138 | .vuepress/dist
139 |
140 | # vuepress v2.x temp and cache directory
141 | .temp
142 |
143 | # Docusaurus cache and generated files
144 | .docusaurus
145 |
146 | # Serverless directories
147 | .serverless/
148 |
149 | # FuseBox cache
150 | .fusebox/
151 |
152 | # DynamoDB Local files
153 | .dynamodb/
154 |
155 | # TernJS port file
156 | .tern-port
157 |
158 | # Stores VSCode versions used for testing VSCode extensions
159 | .vscode-test
160 |
161 | # yarn v2
162 | .yarn/cache
163 | .yarn/unplugged
164 | .yarn/build-state.yml
165 | .yarn/install-state.gz
166 | .pnp.*
167 |
168 | ### Node Patch ###
169 | # Serverless Webpack directories
170 | .webpack/
171 |
172 | # Optional stylelint cache
173 |
174 | # SvelteKit build / generate output
175 | .svelte-kit
176 |
177 | ### Svelte ###
178 | # gitignore template for the SvelteKit, frontend web component framework
179 | # website: https://kit.svelte.dev/
180 |
181 | .svelte-kit/
182 | package
183 |
184 | ### yarn ###
185 | # https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored
186 |
187 | .yarn/*
188 | !.yarn/releases
189 | !.yarn/patches
190 | !.yarn/plugins
191 | !.yarn/sdks
192 | !.yarn/versions
193 |
194 | # if you are NOT using Zero-installs, then:
195 | # comment the following lines
196 | # !.yarn/cache
197 |
198 | # and uncomment the following lines
199 | .pnp.*
200 |
201 | # End of https://www.toptal.com/developers/gitignore/api/macos,yarn,svelte,node
202 |
--------------------------------------------------------------------------------
/apps/frontend/.gitignore:
--------------------------------------------------------------------------------
1 | # Created by https://www.toptal.com/developers/gitignore/api/macos,yarn,svelte,node
2 | # Edit at https://www.toptal.com/developers/gitignore?templates=macos,yarn,svelte,node
3 |
4 | ### macOS ###
5 | # General
6 | .DS_Store
7 | .AppleDouble
8 | .LSOverride
9 |
10 | # Icon must end with two \r
11 | Icon
12 |
13 |
14 | # Thumbnails
15 | ._*
16 |
17 | # Files that might appear in the root of a volume
18 | .DocumentRevisions-V100
19 | .fseventsd
20 | .Spotlight-V100
21 | .TemporaryItems
22 | .Trashes
23 | .VolumeIcon.icns
24 | .com.apple.timemachine.donotpresent
25 |
26 | # Directories potentially created on remote AFP share
27 | .AppleDB
28 | .AppleDesktop
29 | Network Trash Folder
30 | Temporary Items
31 | .apdisk
32 |
33 | ### macOS Patch ###
34 | # iCloud generated files
35 | *.icloud
36 |
37 | ### Node ###
38 | # Logs
39 | logs
40 | *.log
41 | npm-debug.log*
42 | yarn-debug.log*
43 | yarn-error.log*
44 | lerna-debug.log*
45 | .pnpm-debug.log*
46 |
47 | # Diagnostic reports (https://nodejs.org/api/report.html)
48 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
49 |
50 | # Runtime data
51 | pids
52 | *.pid
53 | *.seed
54 | *.pid.lock
55 |
56 | # Directory for instrumented libs generated by jscoverage/JSCover
57 | lib-cov
58 |
59 | # Coverage directory used by tools like istanbul
60 | coverage
61 | *.lcov
62 |
63 | # nyc test coverage
64 | .nyc_output
65 |
66 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
67 | .grunt
68 |
69 | # Bower dependency directory (https://bower.io/)
70 | bower_components
71 |
72 | # node-waf configuration
73 | .lock-wscript
74 |
75 | # Compiled binary addons (https://nodejs.org/api/addons.html)
76 | build/Release
77 |
78 | # Dependency directories
79 | node_modules/
80 | jspm_packages/
81 |
82 | # Snowpack dependency directory (https://snowpack.dev/)
83 | web_modules/
84 |
85 | # TypeScript cache
86 | *.tsbuildinfo
87 |
88 | # Optional npm cache directory
89 | .npm
90 |
91 | # Optional eslint cache
92 | .eslintcache
93 |
94 | # Optional stylelint cache
95 | .stylelintcache
96 |
97 | # Microbundle cache
98 | .rpt2_cache/
99 | .rts2_cache_cjs/
100 | .rts2_cache_es/
101 | .rts2_cache_umd/
102 |
103 | # Optional REPL history
104 | .node_repl_history
105 |
106 | # Output of 'npm pack'
107 | *.tgz
108 |
109 | # Yarn Integrity file
110 | .yarn-integrity
111 |
112 | # dotenv environment variable files
113 | .env
114 | .env.development.local
115 | .env.test.local
116 | .env.production.local
117 | .env.local
118 |
119 | # parcel-bundler cache (https://parceljs.org/)
120 | .cache
121 | .parcel-cache
122 |
123 | # Next.js build output
124 | .next
125 | out
126 |
127 | # Nuxt.js build / generate output
128 | .nuxt
129 | dist
130 |
131 | # Gatsby files
132 | .cache/
133 | # Comment in the public line in if your project uses Gatsby and not Next.js
134 | # https://nextjs.org/blog/next-9-1#public-directory-support
135 | # public
136 |
137 | # vuepress build output
138 | .vuepress/dist
139 |
140 | # vuepress v2.x temp and cache directory
141 | .temp
142 |
143 | # Docusaurus cache and generated files
144 | .docusaurus
145 |
146 | # Serverless directories
147 | .serverless/
148 |
149 | # FuseBox cache
150 | .fusebox/
151 |
152 | # DynamoDB Local files
153 | .dynamodb/
154 |
155 | # TernJS port file
156 | .tern-port
157 |
158 | # Stores VSCode versions used for testing VSCode extensions
159 | .vscode-test
160 |
161 | # yarn v2
162 | .yarn/cache
163 | .yarn/unplugged
164 | .yarn/build-state.yml
165 | .yarn/install-state.gz
166 | .pnp.*
167 |
168 | ### Node Patch ###
169 | # Serverless Webpack directories
170 | .webpack/
171 |
172 | # Optional stylelint cache
173 |
174 | # SvelteKit build / generate output
175 | .svelte-kit
176 |
177 | ### Svelte ###
178 | # gitignore template for the SvelteKit, frontend web component framework
179 | # website: https://kit.svelte.dev/
180 |
181 | .svelte-kit/
182 | package
183 |
184 | ### yarn ###
185 | # https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored
186 |
187 | .yarn/*
188 | !.yarn/releases
189 | !.yarn/patches
190 | !.yarn/plugins
191 | !.yarn/sdks
192 | !.yarn/versions
193 |
194 | # if you are NOT using Zero-installs, then:
195 | # comment the following lines
196 | # !.yarn/cache
197 |
198 | # and uncomment the following lines
199 | .pnp.*
200 |
201 | # End of https://www.toptal.com/developers/gitignore/api/macos,yarn,svelte,node
202 |
--------------------------------------------------------------------------------
/apps/frontend/src/lib/Player.svelte:
--------------------------------------------------------------------------------
1 |
22 |
23 |
186 |
187 |
188 |
189 |
190 |
191 | {player.name}
192 |
193 |
--------------------------------------------------------------------------------
/apps/backend/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@babel/runtime-corejs3@^7.10.2":
6 | version "7.16.8"
7 | resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.16.8.tgz#ea533d96eda6fdc76b1812248e9fbd0c11d4a1a7"
8 | integrity sha512-3fKhuICS1lMz0plI5ktOE/yEtBRMVxplzRkdn6mJQ197XiY0JnrzYV0+Mxozq3JZ8SBV9Ecurmw1XsGbwOf+Sg==
9 | dependencies:
10 | core-js-pure "^3.20.2"
11 | regenerator-runtime "^0.13.4"
12 |
13 | "@babel/runtime@^7.10.2", "@babel/runtime@^7.16.3":
14 | version "7.16.7"
15 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.7.tgz#03ff99f64106588c9c403c6ecb8c3bafbbdff1fa"
16 | integrity sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==
17 | dependencies:
18 | regenerator-runtime "^0.13.4"
19 |
20 | "@eslint/eslintrc@^1.0.5":
21 | version "1.0.5"
22 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.0.5.tgz#33f1b838dbf1f923bfa517e008362b78ddbbf318"
23 | integrity sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==
24 | dependencies:
25 | ajv "^6.12.4"
26 | debug "^4.3.2"
27 | espree "^9.2.0"
28 | globals "^13.9.0"
29 | ignore "^4.0.6"
30 | import-fresh "^3.2.1"
31 | js-yaml "^4.1.0"
32 | minimatch "^3.0.4"
33 | strip-json-comments "^3.1.1"
34 |
35 | "@humanwhocodes/config-array@^0.9.2":
36 | version "0.9.2"
37 | resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.2.tgz#68be55c737023009dfc5fe245d51181bb6476914"
38 | integrity sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA==
39 | dependencies:
40 | "@humanwhocodes/object-schema" "^1.2.1"
41 | debug "^4.1.1"
42 | minimatch "^3.0.4"
43 |
44 | "@humanwhocodes/object-schema@^1.2.1":
45 | version "1.2.1"
46 | resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
47 | integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
48 |
49 | "@next/eslint-plugin-next@12.0.8":
50 | version "12.0.8"
51 | resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-12.0.8.tgz#8bb026891dd3b61053e13289efcb163f66ea3dac"
52 | integrity sha512-bf7O0Mvs1h3vIdbbi0hijG+6YG3ED/ebQfmUltrQSgGtHVKGADDoE2qQhwE+mrvxuz9BD8y3mJDOSy0PBLKGBA==
53 | dependencies:
54 | glob "7.1.7"
55 |
56 | "@nodelib/fs.scandir@2.1.5":
57 | version "2.1.5"
58 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
59 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
60 | dependencies:
61 | "@nodelib/fs.stat" "2.0.5"
62 | run-parallel "^1.1.9"
63 |
64 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
65 | version "2.0.5"
66 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
67 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
68 |
69 | "@nodelib/fs.walk@^1.2.3":
70 | version "1.2.8"
71 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
72 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
73 | dependencies:
74 | "@nodelib/fs.scandir" "2.1.5"
75 | fastq "^1.6.0"
76 |
77 | "@rushstack/eslint-patch@^1.0.8":
78 | version "1.1.0"
79 | resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.1.0.tgz#7f698254aadf921e48dda8c0a6b304026b8a9323"
80 | integrity sha512-JLo+Y592QzIE+q7Dl2pMUtt4q8SKYI5jDrZxrozEQxnGVOyYE+GWK9eLkwTaeN9DDctlaRAQ3TBmzZ1qdLE30A==
81 |
82 | "@types/json-schema@^7.0.9":
83 | version "7.0.9"
84 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d"
85 | integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==
86 |
87 | "@types/json5@^0.0.29":
88 | version "0.0.29"
89 | resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
90 | integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4=
91 |
92 | "@types/node@^17.0.18":
93 | version "17.0.18"
94 | resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.18.tgz#3b4fed5cfb58010e3a2be4b6e74615e4847f1074"
95 | integrity sha512-eKj4f/BsN/qcculZiRSujogjvp5O/k4lOW5m35NopjZM/QwLOR075a8pJW5hD+Rtdm2DaCVPENS6KtSQnUD6BA==
96 |
97 | "@typescript-eslint/eslint-plugin@^5.10.0":
98 | version "5.10.0"
99 | resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.10.0.tgz#e90afea96dff8620892ad216b0e4ccdf8ee32d3a"
100 | integrity sha512-XXVKnMsq2fuu9K2KsIxPUGqb6xAImz8MEChClbXmE3VbveFtBUU5bzM6IPVWqzyADIgdkS2Ws/6Xo7W2TeZWjQ==
101 | dependencies:
102 | "@typescript-eslint/scope-manager" "5.10.0"
103 | "@typescript-eslint/type-utils" "5.10.0"
104 | "@typescript-eslint/utils" "5.10.0"
105 | debug "^4.3.2"
106 | functional-red-black-tree "^1.0.1"
107 | ignore "^5.1.8"
108 | regexpp "^3.2.0"
109 | semver "^7.3.5"
110 | tsutils "^3.21.0"
111 |
112 | "@typescript-eslint/parser@^5.0.0":
113 | version "5.10.0"
114 | resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.10.0.tgz#8f59e036f5f1cffc178cacbd5ccdd02aeb96c91c"
115 | integrity sha512-pJB2CCeHWtwOAeIxv8CHVGJhI5FNyJAIpx5Pt72YkK3QfEzt6qAlXZuyaBmyfOdM62qU0rbxJzNToPTVeJGrQw==
116 | dependencies:
117 | "@typescript-eslint/scope-manager" "5.10.0"
118 | "@typescript-eslint/types" "5.10.0"
119 | "@typescript-eslint/typescript-estree" "5.10.0"
120 | debug "^4.3.2"
121 |
122 | "@typescript-eslint/scope-manager@5.10.0":
123 | version "5.10.0"
124 | resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.10.0.tgz#bb5d872e8b9e36203908595507fbc4d3105329cb"
125 | integrity sha512-tgNgUgb4MhqK6DoKn3RBhyZ9aJga7EQrw+2/OiDk5hKf3pTVZWyqBi7ukP+Z0iEEDMF5FDa64LqODzlfE4O/Dg==
126 | dependencies:
127 | "@typescript-eslint/types" "5.10.0"
128 | "@typescript-eslint/visitor-keys" "5.10.0"
129 |
130 | "@typescript-eslint/type-utils@5.10.0":
131 | version "5.10.0"
132 | resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.10.0.tgz#8524b9479c19c478347a7df216827e749e4a51e5"
133 | integrity sha512-TzlyTmufJO5V886N+hTJBGIfnjQDQ32rJYxPaeiyWKdjsv2Ld5l8cbS7pxim4DeNs62fKzRSt8Q14Evs4JnZyQ==
134 | dependencies:
135 | "@typescript-eslint/utils" "5.10.0"
136 | debug "^4.3.2"
137 | tsutils "^3.21.0"
138 |
139 | "@typescript-eslint/types@5.10.0":
140 | version "5.10.0"
141 | resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.10.0.tgz#beb3cb345076f5b088afe996d57bcd1dfddaa75c"
142 | integrity sha512-wUljCgkqHsMZbw60IbOqT/puLfyqqD5PquGiBo1u1IS3PLxdi3RDGlyf032IJyh+eQoGhz9kzhtZa+VC4eWTlQ==
143 |
144 | "@typescript-eslint/typescript-estree@5.10.0":
145 | version "5.10.0"
146 | resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.10.0.tgz#4be24a3dea0f930bb1397c46187d0efdd955a224"
147 | integrity sha512-x+7e5IqfwLwsxTdliHRtlIYkgdtYXzE0CkFeV6ytAqq431ZyxCFzNMNR5sr3WOlIG/ihVZr9K/y71VHTF/DUQA==
148 | dependencies:
149 | "@typescript-eslint/types" "5.10.0"
150 | "@typescript-eslint/visitor-keys" "5.10.0"
151 | debug "^4.3.2"
152 | globby "^11.0.4"
153 | is-glob "^4.0.3"
154 | semver "^7.3.5"
155 | tsutils "^3.21.0"
156 |
157 | "@typescript-eslint/utils@5.10.0":
158 | version "5.10.0"
159 | resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.10.0.tgz#c3d152a85da77c400e37281355561c72fb1b5a65"
160 | integrity sha512-IGYwlt1CVcFoE2ueW4/ioEwybR60RAdGeiJX/iDAw0t5w0wK3S7QncDwpmsM70nKgGTuVchEWB8lwZwHqPAWRg==
161 | dependencies:
162 | "@types/json-schema" "^7.0.9"
163 | "@typescript-eslint/scope-manager" "5.10.0"
164 | "@typescript-eslint/types" "5.10.0"
165 | "@typescript-eslint/typescript-estree" "5.10.0"
166 | eslint-scope "^5.1.1"
167 | eslint-utils "^3.0.0"
168 |
169 | "@typescript-eslint/visitor-keys@5.10.0":
170 | version "5.10.0"
171 | resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.10.0.tgz#770215497ad67cd15a572b52089991d5dfe06281"
172 | integrity sha512-GMxj0K1uyrFLPKASLmZzCuSddmjZVbVj3Ouy5QVuIGKZopxvOr24JsS7gruz6C3GExE01mublZ3mIBOaon9zuQ==
173 | dependencies:
174 | "@typescript-eslint/types" "5.10.0"
175 | eslint-visitor-keys "^3.0.0"
176 |
177 | acorn-jsx@^5.3.1:
178 | version "5.3.2"
179 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
180 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
181 |
182 | acorn@^8.7.0:
183 | version "8.7.0"
184 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf"
185 | integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==
186 |
187 | ajv@^6.10.0, ajv@^6.12.4:
188 | version "6.12.6"
189 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
190 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
191 | dependencies:
192 | fast-deep-equal "^3.1.1"
193 | fast-json-stable-stringify "^2.0.0"
194 | json-schema-traverse "^0.4.1"
195 | uri-js "^4.2.2"
196 |
197 | ansi-regex@^5.0.1:
198 | version "5.0.1"
199 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
200 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
201 |
202 | ansi-styles@^4.1.0:
203 | version "4.3.0"
204 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
205 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
206 | dependencies:
207 | color-convert "^2.0.1"
208 |
209 | argparse@^2.0.1:
210 | version "2.0.1"
211 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
212 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
213 |
214 | aria-query@^4.2.2:
215 | version "4.2.2"
216 | resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b"
217 | integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==
218 | dependencies:
219 | "@babel/runtime" "^7.10.2"
220 | "@babel/runtime-corejs3" "^7.10.2"
221 |
222 | array-includes@^3.1.3, array-includes@^3.1.4:
223 | version "3.1.4"
224 | resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9"
225 | integrity sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==
226 | dependencies:
227 | call-bind "^1.0.2"
228 | define-properties "^1.1.3"
229 | es-abstract "^1.19.1"
230 | get-intrinsic "^1.1.1"
231 | is-string "^1.0.7"
232 |
233 | array-union@^2.1.0:
234 | version "2.1.0"
235 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
236 | integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
237 |
238 | array.prototype.flat@^1.2.5:
239 | version "1.2.5"
240 | resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz#07e0975d84bbc7c48cd1879d609e682598d33e13"
241 | integrity sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==
242 | dependencies:
243 | call-bind "^1.0.2"
244 | define-properties "^1.1.3"
245 | es-abstract "^1.19.0"
246 |
247 | array.prototype.flatmap@^1.2.5:
248 | version "1.2.5"
249 | resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz#908dc82d8a406930fdf38598d51e7411d18d4446"
250 | integrity sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA==
251 | dependencies:
252 | call-bind "^1.0.0"
253 | define-properties "^1.1.3"
254 | es-abstract "^1.19.0"
255 |
256 | ast-types-flow@^0.0.7:
257 | version "0.0.7"
258 | resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad"
259 | integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0=
260 |
261 | axe-core@^4.3.5:
262 | version "4.3.5"
263 | resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.3.5.tgz#78d6911ba317a8262bfee292aeafcc1e04b49cc5"
264 | integrity sha512-WKTW1+xAzhMS5dJsxWkliixlO/PqC4VhmO9T4juNYcaTg9jzWiJsou6m5pxWYGfigWbwzJWeFY6z47a+4neRXA==
265 |
266 | axobject-query@^2.2.0:
267 | version "2.2.0"
268 | resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be"
269 | integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==
270 |
271 | balanced-match@^1.0.0:
272 | version "1.0.2"
273 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
274 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
275 |
276 | brace-expansion@^1.1.7:
277 | version "1.1.11"
278 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
279 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
280 | dependencies:
281 | balanced-match "^1.0.0"
282 | concat-map "0.0.1"
283 |
284 | braces@^3.0.1:
285 | version "3.0.2"
286 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
287 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
288 | dependencies:
289 | fill-range "^7.0.1"
290 |
291 | call-bind@^1.0.0, call-bind@^1.0.2:
292 | version "1.0.2"
293 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
294 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
295 | dependencies:
296 | function-bind "^1.1.1"
297 | get-intrinsic "^1.0.2"
298 |
299 | callsites@^3.0.0:
300 | version "3.1.0"
301 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
302 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
303 |
304 | chalk@^4.0.0:
305 | version "4.1.2"
306 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
307 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
308 | dependencies:
309 | ansi-styles "^4.1.0"
310 | supports-color "^7.1.0"
311 |
312 | color-convert@^2.0.1:
313 | version "2.0.1"
314 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
315 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
316 | dependencies:
317 | color-name "~1.1.4"
318 |
319 | color-name@~1.1.4:
320 | version "1.1.4"
321 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
322 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
323 |
324 | concat-map@0.0.1:
325 | version "0.0.1"
326 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
327 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
328 |
329 | core-js-pure@^3.20.2:
330 | version "3.20.3"
331 | resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.20.3.tgz#6cc4f36da06c61d95254efc54024fe4797fd5d02"
332 | integrity sha512-Q2H6tQ5MtPtcC7f3HxJ48i4Q7T9ybPKgvWyuH7JXIoNa2pm0KuBnycsET/qw1SLLZYfbsbrZQNMeIOClb+6WIA==
333 |
334 | cross-spawn@^7.0.2, cross-spawn@^7.0.3:
335 | version "7.0.3"
336 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
337 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
338 | dependencies:
339 | path-key "^3.1.0"
340 | shebang-command "^2.0.0"
341 | which "^2.0.1"
342 |
343 | damerau-levenshtein@^1.0.7:
344 | version "1.0.8"
345 | resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7"
346 | integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==
347 |
348 | debug@^2.6.9:
349 | version "2.6.9"
350 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
351 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
352 | dependencies:
353 | ms "2.0.0"
354 |
355 | debug@^3.2.7:
356 | version "3.2.7"
357 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
358 | integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
359 | dependencies:
360 | ms "^2.1.1"
361 |
362 | debug@^4.1.1, debug@^4.3.1, debug@^4.3.2:
363 | version "4.3.3"
364 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664"
365 | integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==
366 | dependencies:
367 | ms "2.1.2"
368 |
369 | deep-is@^0.1.3:
370 | version "0.1.4"
371 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
372 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
373 |
374 | define-properties@^1.1.3:
375 | version "1.1.3"
376 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
377 | integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
378 | dependencies:
379 | object-keys "^1.0.12"
380 |
381 | dir-glob@^3.0.1:
382 | version "3.0.1"
383 | resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
384 | integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
385 | dependencies:
386 | path-type "^4.0.0"
387 |
388 | doctrine@^2.1.0:
389 | version "2.1.0"
390 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
391 | integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==
392 | dependencies:
393 | esutils "^2.0.2"
394 |
395 | doctrine@^3.0.0:
396 | version "3.0.0"
397 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
398 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
399 | dependencies:
400 | esutils "^2.0.2"
401 |
402 | duplexer@~0.1.1:
403 | version "0.1.2"
404 | resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6"
405 | integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==
406 |
407 | emoji-regex@^9.2.2:
408 | version "9.2.2"
409 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72"
410 | integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
411 |
412 | es-abstract@^1.19.0, es-abstract@^1.19.1:
413 | version "1.19.1"
414 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3"
415 | integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==
416 | dependencies:
417 | call-bind "^1.0.2"
418 | es-to-primitive "^1.2.1"
419 | function-bind "^1.1.1"
420 | get-intrinsic "^1.1.1"
421 | get-symbol-description "^1.0.0"
422 | has "^1.0.3"
423 | has-symbols "^1.0.2"
424 | internal-slot "^1.0.3"
425 | is-callable "^1.2.4"
426 | is-negative-zero "^2.0.1"
427 | is-regex "^1.1.4"
428 | is-shared-array-buffer "^1.0.1"
429 | is-string "^1.0.7"
430 | is-weakref "^1.0.1"
431 | object-inspect "^1.11.0"
432 | object-keys "^1.1.1"
433 | object.assign "^4.1.2"
434 | string.prototype.trimend "^1.0.4"
435 | string.prototype.trimstart "^1.0.4"
436 | unbox-primitive "^1.0.1"
437 |
438 | es-to-primitive@^1.2.1:
439 | version "1.2.1"
440 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
441 | integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
442 | dependencies:
443 | is-callable "^1.1.4"
444 | is-date-object "^1.0.1"
445 | is-symbol "^1.0.2"
446 |
447 | escape-string-regexp@^4.0.0:
448 | version "4.0.0"
449 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
450 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
451 |
452 | eslint-config-next@^12.0.8:
453 | version "12.0.8"
454 | resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-12.0.8.tgz#7a15114230db97d1bc727fc5db2f469416b62e0f"
455 | integrity sha512-H40jvqy/yeku3r9D556ALLaM3ZmS55hj9/MTK59fWbzsqTaYlybSkUmIBG0ZFEnBazr0NnBGwrYA5cnsFYR7RQ==
456 | dependencies:
457 | "@next/eslint-plugin-next" "12.0.8"
458 | "@rushstack/eslint-patch" "^1.0.8"
459 | "@typescript-eslint/parser" "^5.0.0"
460 | eslint-import-resolver-node "^0.3.4"
461 | eslint-import-resolver-typescript "^2.4.0"
462 | eslint-plugin-import "^2.25.2"
463 | eslint-plugin-jsx-a11y "^6.5.1"
464 | eslint-plugin-react "^7.27.0"
465 | eslint-plugin-react-hooks "^4.3.0"
466 |
467 | eslint-config-prettier@^8.3.0:
468 | version "8.3.0"
469 | resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz#f7471b20b6fe8a9a9254cc684454202886a2dd7a"
470 | integrity sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==
471 |
472 | eslint-import-resolver-node@^0.3.4, eslint-import-resolver-node@^0.3.6:
473 | version "0.3.6"
474 | resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd"
475 | integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==
476 | dependencies:
477 | debug "^3.2.7"
478 | resolve "^1.20.0"
479 |
480 | eslint-import-resolver-typescript@^2.4.0:
481 | version "2.5.0"
482 | resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.5.0.tgz#07661966b272d14ba97f597b51e1a588f9722f0a"
483 | integrity sha512-qZ6e5CFr+I7K4VVhQu3M/9xGv9/YmwsEXrsm3nimw8vWaVHRDrQRp26BgCypTxBp3vUp4o5aVEJRiy0F2DFddQ==
484 | dependencies:
485 | debug "^4.3.1"
486 | glob "^7.1.7"
487 | is-glob "^4.0.1"
488 | resolve "^1.20.0"
489 | tsconfig-paths "^3.9.0"
490 |
491 | eslint-module-utils@^2.7.2:
492 | version "2.7.2"
493 | resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.2.tgz#1d0aa455dcf41052339b63cada8ab5fd57577129"
494 | integrity sha512-zquepFnWCY2ISMFwD/DqzaM++H+7PDzOpUvotJWm/y1BAFt5R4oeULgdrTejKqLkz7MA/tgstsUMNYc7wNdTrg==
495 | dependencies:
496 | debug "^3.2.7"
497 | find-up "^2.1.0"
498 |
499 | eslint-plugin-import@^2.25.2:
500 | version "2.25.4"
501 | resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz#322f3f916a4e9e991ac7af32032c25ce313209f1"
502 | integrity sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==
503 | dependencies:
504 | array-includes "^3.1.4"
505 | array.prototype.flat "^1.2.5"
506 | debug "^2.6.9"
507 | doctrine "^2.1.0"
508 | eslint-import-resolver-node "^0.3.6"
509 | eslint-module-utils "^2.7.2"
510 | has "^1.0.3"
511 | is-core-module "^2.8.0"
512 | is-glob "^4.0.3"
513 | minimatch "^3.0.4"
514 | object.values "^1.1.5"
515 | resolve "^1.20.0"
516 | tsconfig-paths "^3.12.0"
517 |
518 | eslint-plugin-jsx-a11y@^6.5.1:
519 | version "6.5.1"
520 | resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz#cdbf2df901040ca140b6ec14715c988889c2a6d8"
521 | integrity sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==
522 | dependencies:
523 | "@babel/runtime" "^7.16.3"
524 | aria-query "^4.2.2"
525 | array-includes "^3.1.4"
526 | ast-types-flow "^0.0.7"
527 | axe-core "^4.3.5"
528 | axobject-query "^2.2.0"
529 | damerau-levenshtein "^1.0.7"
530 | emoji-regex "^9.2.2"
531 | has "^1.0.3"
532 | jsx-ast-utils "^3.2.1"
533 | language-tags "^1.0.5"
534 | minimatch "^3.0.4"
535 |
536 | eslint-plugin-prettier@^4.0.0:
537 | version "4.0.0"
538 | resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz#8b99d1e4b8b24a762472b4567992023619cb98e0"
539 | integrity sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==
540 | dependencies:
541 | prettier-linter-helpers "^1.0.0"
542 |
543 | eslint-plugin-react-hooks@^4.3.0:
544 | version "4.3.0"
545 | resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.3.0.tgz#318dbf312e06fab1c835a4abef00121751ac1172"
546 | integrity sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA==
547 |
548 | eslint-plugin-react@^7.27.0:
549 | version "7.28.0"
550 | resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.28.0.tgz#8f3ff450677571a659ce76efc6d80b6a525adbdf"
551 | integrity sha512-IOlFIRHzWfEQQKcAD4iyYDndHwTQiCMcJVJjxempf203jnNLUnW34AXLrV33+nEXoifJE2ZEGmcjKPL8957eSw==
552 | dependencies:
553 | array-includes "^3.1.4"
554 | array.prototype.flatmap "^1.2.5"
555 | doctrine "^2.1.0"
556 | estraverse "^5.3.0"
557 | jsx-ast-utils "^2.4.1 || ^3.0.0"
558 | minimatch "^3.0.4"
559 | object.entries "^1.1.5"
560 | object.fromentries "^2.0.5"
561 | object.hasown "^1.1.0"
562 | object.values "^1.1.5"
563 | prop-types "^15.7.2"
564 | resolve "^2.0.0-next.3"
565 | semver "^6.3.0"
566 | string.prototype.matchall "^4.0.6"
567 |
568 | eslint-scope@^5.1.1:
569 | version "5.1.1"
570 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
571 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
572 | dependencies:
573 | esrecurse "^4.3.0"
574 | estraverse "^4.1.1"
575 |
576 | eslint-scope@^7.1.0:
577 | version "7.1.0"
578 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.0.tgz#c1f6ea30ac583031f203d65c73e723b01298f153"
579 | integrity sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==
580 | dependencies:
581 | esrecurse "^4.3.0"
582 | estraverse "^5.2.0"
583 |
584 | eslint-utils@^3.0.0:
585 | version "3.0.0"
586 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672"
587 | integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==
588 | dependencies:
589 | eslint-visitor-keys "^2.0.0"
590 |
591 | eslint-visitor-keys@^2.0.0:
592 | version "2.1.0"
593 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
594 | integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
595 |
596 | eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.1.0, eslint-visitor-keys@^3.2.0:
597 | version "3.2.0"
598 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz#6fbb166a6798ee5991358bc2daa1ba76cc1254a1"
599 | integrity sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==
600 |
601 | eslint@^8.7.0:
602 | version "8.7.0"
603 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.7.0.tgz#22e036842ee5b7cf87b03fe237731675b4d3633c"
604 | integrity sha512-ifHYzkBGrzS2iDU7KjhCAVMGCvF6M3Xfs8X8b37cgrUlDt6bWRTpRh6T/gtSXv1HJ/BUGgmjvNvOEGu85Iif7w==
605 | dependencies:
606 | "@eslint/eslintrc" "^1.0.5"
607 | "@humanwhocodes/config-array" "^0.9.2"
608 | ajv "^6.10.0"
609 | chalk "^4.0.0"
610 | cross-spawn "^7.0.2"
611 | debug "^4.3.2"
612 | doctrine "^3.0.0"
613 | escape-string-regexp "^4.0.0"
614 | eslint-scope "^7.1.0"
615 | eslint-utils "^3.0.0"
616 | eslint-visitor-keys "^3.2.0"
617 | espree "^9.3.0"
618 | esquery "^1.4.0"
619 | esutils "^2.0.2"
620 | fast-deep-equal "^3.1.3"
621 | file-entry-cache "^6.0.1"
622 | functional-red-black-tree "^1.0.1"
623 | glob-parent "^6.0.1"
624 | globals "^13.6.0"
625 | ignore "^5.2.0"
626 | import-fresh "^3.0.0"
627 | imurmurhash "^0.1.4"
628 | is-glob "^4.0.0"
629 | js-yaml "^4.1.0"
630 | json-stable-stringify-without-jsonify "^1.0.1"
631 | levn "^0.4.1"
632 | lodash.merge "^4.6.2"
633 | minimatch "^3.0.4"
634 | natural-compare "^1.4.0"
635 | optionator "^0.9.1"
636 | regexpp "^3.2.0"
637 | strip-ansi "^6.0.1"
638 | strip-json-comments "^3.1.0"
639 | text-table "^0.2.0"
640 | v8-compile-cache "^2.0.3"
641 |
642 | espree@^9.2.0, espree@^9.3.0:
643 | version "9.3.0"
644 | resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.0.tgz#c1240d79183b72aaee6ccfa5a90bc9111df085a8"
645 | integrity sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ==
646 | dependencies:
647 | acorn "^8.7.0"
648 | acorn-jsx "^5.3.1"
649 | eslint-visitor-keys "^3.1.0"
650 |
651 | esquery@^1.4.0:
652 | version "1.4.0"
653 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5"
654 | integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==
655 | dependencies:
656 | estraverse "^5.1.0"
657 |
658 | esrecurse@^4.3.0:
659 | version "4.3.0"
660 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
661 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
662 | dependencies:
663 | estraverse "^5.2.0"
664 |
665 | estraverse@^4.1.1:
666 | version "4.3.0"
667 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
668 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
669 |
670 | estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0:
671 | version "5.3.0"
672 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
673 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
674 |
675 | esutils@^2.0.2:
676 | version "2.0.3"
677 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
678 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
679 |
680 | event-stream@=3.3.4:
681 | version "3.3.4"
682 | resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571"
683 | integrity sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=
684 | dependencies:
685 | duplexer "~0.1.1"
686 | from "~0"
687 | map-stream "~0.1.0"
688 | pause-stream "0.0.11"
689 | split "0.3"
690 | stream-combiner "~0.0.4"
691 | through "~2.3.1"
692 |
693 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
694 | version "3.1.3"
695 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
696 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
697 |
698 | fast-diff@^1.1.2:
699 | version "1.2.0"
700 | resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03"
701 | integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==
702 |
703 | fast-glob@^3.2.9:
704 | version "3.2.11"
705 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9"
706 | integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==
707 | dependencies:
708 | "@nodelib/fs.stat" "^2.0.2"
709 | "@nodelib/fs.walk" "^1.2.3"
710 | glob-parent "^5.1.2"
711 | merge2 "^1.3.0"
712 | micromatch "^4.0.4"
713 |
714 | fast-json-stable-stringify@^2.0.0:
715 | version "2.1.0"
716 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
717 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
718 |
719 | fast-levenshtein@^2.0.6:
720 | version "2.0.6"
721 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
722 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
723 |
724 | fastq@^1.6.0:
725 | version "1.13.0"
726 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c"
727 | integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==
728 | dependencies:
729 | reusify "^1.0.4"
730 |
731 | file-entry-cache@^6.0.1:
732 | version "6.0.1"
733 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027"
734 | integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==
735 | dependencies:
736 | flat-cache "^3.0.4"
737 |
738 | fill-range@^7.0.1:
739 | version "7.0.1"
740 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
741 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
742 | dependencies:
743 | to-regex-range "^5.0.1"
744 |
745 | find-up@^2.1.0:
746 | version "2.1.0"
747 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
748 | integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c=
749 | dependencies:
750 | locate-path "^2.0.0"
751 |
752 | flat-cache@^3.0.4:
753 | version "3.0.4"
754 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11"
755 | integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==
756 | dependencies:
757 | flatted "^3.1.0"
758 | rimraf "^3.0.2"
759 |
760 | flatted@^3.1.0:
761 | version "3.2.4"
762 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.4.tgz#28d9969ea90661b5134259f312ab6aa7929ac5e2"
763 | integrity sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==
764 |
765 | from@~0:
766 | version "0.1.7"
767 | resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe"
768 | integrity sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=
769 |
770 | fs.realpath@^1.0.0:
771 | version "1.0.0"
772 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
773 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
774 |
775 | function-bind@^1.1.1:
776 | version "1.1.1"
777 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
778 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
779 |
780 | functional-red-black-tree@^1.0.1:
781 | version "1.0.1"
782 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
783 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
784 |
785 | get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1:
786 | version "1.1.1"
787 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6"
788 | integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==
789 | dependencies:
790 | function-bind "^1.1.1"
791 | has "^1.0.3"
792 | has-symbols "^1.0.1"
793 |
794 | get-symbol-description@^1.0.0:
795 | version "1.0.0"
796 | resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6"
797 | integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==
798 | dependencies:
799 | call-bind "^1.0.2"
800 | get-intrinsic "^1.1.1"
801 |
802 | glob-parent@^5.1.2:
803 | version "5.1.2"
804 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
805 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
806 | dependencies:
807 | is-glob "^4.0.1"
808 |
809 | glob-parent@^6.0.1:
810 | version "6.0.2"
811 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
812 | integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
813 | dependencies:
814 | is-glob "^4.0.3"
815 |
816 | glob@7.1.7:
817 | version "7.1.7"
818 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90"
819 | integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==
820 | dependencies:
821 | fs.realpath "^1.0.0"
822 | inflight "^1.0.4"
823 | inherits "2"
824 | minimatch "^3.0.4"
825 | once "^1.3.0"
826 | path-is-absolute "^1.0.0"
827 |
828 | glob@^7.1.3, glob@^7.1.7:
829 | version "7.2.0"
830 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
831 | integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==
832 | dependencies:
833 | fs.realpath "^1.0.0"
834 | inflight "^1.0.4"
835 | inherits "2"
836 | minimatch "^3.0.4"
837 | once "^1.3.0"
838 | path-is-absolute "^1.0.0"
839 |
840 | globals@^13.6.0, globals@^13.9.0:
841 | version "13.12.0"
842 | resolved "https://registry.yarnpkg.com/globals/-/globals-13.12.0.tgz#4d733760304230a0082ed96e21e5c565f898089e"
843 | integrity sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==
844 | dependencies:
845 | type-fest "^0.20.2"
846 |
847 | globby@^11.0.4:
848 | version "11.1.0"
849 | resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
850 | integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
851 | dependencies:
852 | array-union "^2.1.0"
853 | dir-glob "^3.0.1"
854 | fast-glob "^3.2.9"
855 | ignore "^5.2.0"
856 | merge2 "^1.4.1"
857 | slash "^3.0.0"
858 |
859 | has-bigints@^1.0.1:
860 | version "1.0.1"
861 | resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113"
862 | integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==
863 |
864 | has-flag@^4.0.0:
865 | version "4.0.0"
866 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
867 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
868 |
869 | has-symbols@^1.0.1, has-symbols@^1.0.2:
870 | version "1.0.2"
871 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423"
872 | integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==
873 |
874 | has-tostringtag@^1.0.0:
875 | version "1.0.0"
876 | resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25"
877 | integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==
878 | dependencies:
879 | has-symbols "^1.0.2"
880 |
881 | has@^1.0.3:
882 | version "1.0.3"
883 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
884 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
885 | dependencies:
886 | function-bind "^1.1.1"
887 |
888 | ignore@^4.0.6:
889 | version "4.0.6"
890 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
891 | integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
892 |
893 | ignore@^5.1.8, ignore@^5.2.0:
894 | version "5.2.0"
895 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
896 | integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
897 |
898 | import-fresh@^3.0.0, import-fresh@^3.2.1:
899 | version "3.3.0"
900 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
901 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
902 | dependencies:
903 | parent-module "^1.0.0"
904 | resolve-from "^4.0.0"
905 |
906 | imurmurhash@^0.1.4:
907 | version "0.1.4"
908 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
909 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
910 |
911 | inflight@^1.0.4:
912 | version "1.0.6"
913 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
914 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
915 | dependencies:
916 | once "^1.3.0"
917 | wrappy "1"
918 |
919 | inherits@2:
920 | version "2.0.4"
921 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
922 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
923 |
924 | internal-slot@^1.0.3:
925 | version "1.0.3"
926 | resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c"
927 | integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==
928 | dependencies:
929 | get-intrinsic "^1.1.0"
930 | has "^1.0.3"
931 | side-channel "^1.0.4"
932 |
933 | is-bigint@^1.0.1:
934 | version "1.0.4"
935 | resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3"
936 | integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==
937 | dependencies:
938 | has-bigints "^1.0.1"
939 |
940 | is-boolean-object@^1.1.0:
941 | version "1.1.2"
942 | resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719"
943 | integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==
944 | dependencies:
945 | call-bind "^1.0.2"
946 | has-tostringtag "^1.0.0"
947 |
948 | is-callable@^1.1.4, is-callable@^1.2.4:
949 | version "1.2.4"
950 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945"
951 | integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==
952 |
953 | is-core-module@^2.2.0, is-core-module@^2.8.0:
954 | version "2.8.1"
955 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211"
956 | integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==
957 | dependencies:
958 | has "^1.0.3"
959 |
960 | is-date-object@^1.0.1:
961 | version "1.0.5"
962 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f"
963 | integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==
964 | dependencies:
965 | has-tostringtag "^1.0.0"
966 |
967 | is-extglob@^2.1.1:
968 | version "2.1.1"
969 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
970 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
971 |
972 | is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3:
973 | version "4.0.3"
974 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
975 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
976 | dependencies:
977 | is-extglob "^2.1.1"
978 |
979 | is-negative-zero@^2.0.1:
980 | version "2.0.2"
981 | resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150"
982 | integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==
983 |
984 | is-number-object@^1.0.4:
985 | version "1.0.6"
986 | resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0"
987 | integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==
988 | dependencies:
989 | has-tostringtag "^1.0.0"
990 |
991 | is-number@^7.0.0:
992 | version "7.0.0"
993 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
994 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
995 |
996 | is-regex@^1.1.4:
997 | version "1.1.4"
998 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
999 | integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==
1000 | dependencies:
1001 | call-bind "^1.0.2"
1002 | has-tostringtag "^1.0.0"
1003 |
1004 | is-shared-array-buffer@^1.0.1:
1005 | version "1.0.1"
1006 | resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6"
1007 | integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==
1008 |
1009 | is-string@^1.0.5, is-string@^1.0.7:
1010 | version "1.0.7"
1011 | resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd"
1012 | integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==
1013 | dependencies:
1014 | has-tostringtag "^1.0.0"
1015 |
1016 | is-symbol@^1.0.2, is-symbol@^1.0.3:
1017 | version "1.0.4"
1018 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c"
1019 | integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==
1020 | dependencies:
1021 | has-symbols "^1.0.2"
1022 |
1023 | is-weakref@^1.0.1:
1024 | version "1.0.2"
1025 | resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2"
1026 | integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==
1027 | dependencies:
1028 | call-bind "^1.0.2"
1029 |
1030 | isexe@^2.0.0:
1031 | version "2.0.0"
1032 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
1033 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
1034 |
1035 | "js-tokens@^3.0.0 || ^4.0.0":
1036 | version "4.0.0"
1037 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
1038 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
1039 |
1040 | js-yaml@^4.1.0:
1041 | version "4.1.0"
1042 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
1043 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
1044 | dependencies:
1045 | argparse "^2.0.1"
1046 |
1047 | json-schema-traverse@^0.4.1:
1048 | version "0.4.1"
1049 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
1050 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
1051 |
1052 | json-stable-stringify-without-jsonify@^1.0.1:
1053 | version "1.0.1"
1054 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
1055 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
1056 |
1057 | json5@^1.0.1:
1058 | version "1.0.1"
1059 | resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
1060 | integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
1061 | dependencies:
1062 | minimist "^1.2.0"
1063 |
1064 | "jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.2.1:
1065 | version "3.2.1"
1066 | resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz#720b97bfe7d901b927d87c3773637ae8ea48781b"
1067 | integrity sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA==
1068 | dependencies:
1069 | array-includes "^3.1.3"
1070 | object.assign "^4.1.2"
1071 |
1072 | language-subtag-registry@~0.3.2:
1073 | version "0.3.21"
1074 | resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a"
1075 | integrity sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==
1076 |
1077 | language-tags@^1.0.5:
1078 | version "1.0.5"
1079 | resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a"
1080 | integrity sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=
1081 | dependencies:
1082 | language-subtag-registry "~0.3.2"
1083 |
1084 | levn@^0.4.1:
1085 | version "0.4.1"
1086 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
1087 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
1088 | dependencies:
1089 | prelude-ls "^1.2.1"
1090 | type-check "~0.4.0"
1091 |
1092 | locate-path@^2.0.0:
1093 | version "2.0.0"
1094 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
1095 | integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=
1096 | dependencies:
1097 | p-locate "^2.0.0"
1098 | path-exists "^3.0.0"
1099 |
1100 | lodash.merge@^4.6.2:
1101 | version "4.6.2"
1102 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
1103 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
1104 |
1105 | loose-envify@^1.4.0:
1106 | version "1.4.0"
1107 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
1108 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
1109 | dependencies:
1110 | js-tokens "^3.0.0 || ^4.0.0"
1111 |
1112 | lru-cache@^6.0.0:
1113 | version "6.0.0"
1114 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
1115 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
1116 | dependencies:
1117 | yallist "^4.0.0"
1118 |
1119 | map-stream@~0.1.0:
1120 | version "0.1.0"
1121 | resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194"
1122 | integrity sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=
1123 |
1124 | merge2@^1.3.0, merge2@^1.4.1:
1125 | version "1.4.1"
1126 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
1127 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
1128 |
1129 | micromatch@^4.0.4:
1130 | version "4.0.4"
1131 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9"
1132 | integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==
1133 | dependencies:
1134 | braces "^3.0.1"
1135 | picomatch "^2.2.3"
1136 |
1137 | minimatch@^3.0.4:
1138 | version "3.0.4"
1139 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
1140 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
1141 | dependencies:
1142 | brace-expansion "^1.1.7"
1143 |
1144 | minimist@^1.2.0:
1145 | version "1.2.5"
1146 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
1147 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
1148 |
1149 | ms@2.0.0:
1150 | version "2.0.0"
1151 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
1152 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
1153 |
1154 | ms@2.1.2:
1155 | version "2.1.2"
1156 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
1157 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
1158 |
1159 | ms@^2.1.1:
1160 | version "2.1.3"
1161 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
1162 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
1163 |
1164 | natural-compare@^1.4.0:
1165 | version "1.4.0"
1166 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
1167 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
1168 |
1169 | node-cleanup@^2.1.2:
1170 | version "2.1.2"
1171 | resolved "https://registry.yarnpkg.com/node-cleanup/-/node-cleanup-2.1.2.tgz#7ac19abd297e09a7f72a71545d951b517e4dde2c"
1172 | integrity sha1-esGavSl+Caf3KnFUXZUbUX5N3iw=
1173 |
1174 | object-assign@^4.1.1:
1175 | version "4.1.1"
1176 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
1177 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
1178 |
1179 | object-inspect@^1.11.0, object-inspect@^1.9.0:
1180 | version "1.12.0"
1181 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0"
1182 | integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==
1183 |
1184 | object-keys@^1.0.12, object-keys@^1.1.1:
1185 | version "1.1.1"
1186 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
1187 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
1188 |
1189 | object.assign@^4.1.2:
1190 | version "4.1.2"
1191 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940"
1192 | integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==
1193 | dependencies:
1194 | call-bind "^1.0.0"
1195 | define-properties "^1.1.3"
1196 | has-symbols "^1.0.1"
1197 | object-keys "^1.1.1"
1198 |
1199 | object.entries@^1.1.5:
1200 | version "1.1.5"
1201 | resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.5.tgz#e1acdd17c4de2cd96d5a08487cfb9db84d881861"
1202 | integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==
1203 | dependencies:
1204 | call-bind "^1.0.2"
1205 | define-properties "^1.1.3"
1206 | es-abstract "^1.19.1"
1207 |
1208 | object.fromentries@^2.0.5:
1209 | version "2.0.5"
1210 | resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.5.tgz#7b37b205109c21e741e605727fe8b0ad5fa08251"
1211 | integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==
1212 | dependencies:
1213 | call-bind "^1.0.2"
1214 | define-properties "^1.1.3"
1215 | es-abstract "^1.19.1"
1216 |
1217 | object.hasown@^1.1.0:
1218 | version "1.1.0"
1219 | resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.0.tgz#7232ed266f34d197d15cac5880232f7a4790afe5"
1220 | integrity sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==
1221 | dependencies:
1222 | define-properties "^1.1.3"
1223 | es-abstract "^1.19.1"
1224 |
1225 | object.values@^1.1.5:
1226 | version "1.1.5"
1227 | resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac"
1228 | integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==
1229 | dependencies:
1230 | call-bind "^1.0.2"
1231 | define-properties "^1.1.3"
1232 | es-abstract "^1.19.1"
1233 |
1234 | once@^1.3.0:
1235 | version "1.4.0"
1236 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
1237 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
1238 | dependencies:
1239 | wrappy "1"
1240 |
1241 | optionator@^0.9.1:
1242 | version "0.9.1"
1243 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499"
1244 | integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==
1245 | dependencies:
1246 | deep-is "^0.1.3"
1247 | fast-levenshtein "^2.0.6"
1248 | levn "^0.4.1"
1249 | prelude-ls "^1.2.1"
1250 | type-check "^0.4.0"
1251 | word-wrap "^1.2.3"
1252 |
1253 | p-limit@^1.1.0:
1254 | version "1.3.0"
1255 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
1256 | integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==
1257 | dependencies:
1258 | p-try "^1.0.0"
1259 |
1260 | p-locate@^2.0.0:
1261 | version "2.0.0"
1262 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
1263 | integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=
1264 | dependencies:
1265 | p-limit "^1.1.0"
1266 |
1267 | p-try@^1.0.0:
1268 | version "1.0.0"
1269 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
1270 | integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=
1271 |
1272 | parent-module@^1.0.0:
1273 | version "1.0.1"
1274 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
1275 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
1276 | dependencies:
1277 | callsites "^3.0.0"
1278 |
1279 | path-exists@^3.0.0:
1280 | version "3.0.0"
1281 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
1282 | integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
1283 |
1284 | path-is-absolute@^1.0.0:
1285 | version "1.0.1"
1286 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
1287 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
1288 |
1289 | path-key@^3.1.0:
1290 | version "3.1.1"
1291 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
1292 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
1293 |
1294 | path-parse@^1.0.6, path-parse@^1.0.7:
1295 | version "1.0.7"
1296 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
1297 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
1298 |
1299 | path-type@^4.0.0:
1300 | version "4.0.0"
1301 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
1302 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
1303 |
1304 | pause-stream@0.0.11:
1305 | version "0.0.11"
1306 | resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445"
1307 | integrity sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=
1308 | dependencies:
1309 | through "~2.3"
1310 |
1311 | picomatch@^2.2.3:
1312 | version "2.3.1"
1313 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
1314 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
1315 |
1316 | prelude-ls@^1.2.1:
1317 | version "1.2.1"
1318 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
1319 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
1320 |
1321 | prettier-linter-helpers@^1.0.0:
1322 | version "1.0.0"
1323 | resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b"
1324 | integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==
1325 | dependencies:
1326 | fast-diff "^1.1.2"
1327 |
1328 | prettier@^2.5.1:
1329 | version "2.5.1"
1330 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.5.1.tgz#fff75fa9d519c54cf0fce328c1017d94546bc56a"
1331 | integrity sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==
1332 |
1333 | prop-types@^15.7.2:
1334 | version "15.8.1"
1335 | resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
1336 | integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
1337 | dependencies:
1338 | loose-envify "^1.4.0"
1339 | object-assign "^4.1.1"
1340 | react-is "^16.13.1"
1341 |
1342 | ps-tree@^1.2.0:
1343 | version "1.2.0"
1344 | resolved "https://registry.yarnpkg.com/ps-tree/-/ps-tree-1.2.0.tgz#5e7425b89508736cdd4f2224d028f7bb3f722ebd"
1345 | integrity sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==
1346 | dependencies:
1347 | event-stream "=3.3.4"
1348 |
1349 | punycode@^2.1.0:
1350 | version "2.1.1"
1351 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
1352 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
1353 |
1354 | queue-microtask@^1.2.2:
1355 | version "1.2.3"
1356 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
1357 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
1358 |
1359 | react-is@^16.13.1:
1360 | version "16.13.1"
1361 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
1362 | integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
1363 |
1364 | regenerator-runtime@^0.13.4:
1365 | version "0.13.9"
1366 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52"
1367 | integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==
1368 |
1369 | regexp.prototype.flags@^1.3.1:
1370 | version "1.4.1"
1371 | resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz#b3f4c0059af9e47eca9f3f660e51d81307e72307"
1372 | integrity sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==
1373 | dependencies:
1374 | call-bind "^1.0.2"
1375 | define-properties "^1.1.3"
1376 |
1377 | regexpp@^3.2.0:
1378 | version "3.2.0"
1379 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
1380 | integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==
1381 |
1382 | resolve-from@^4.0.0:
1383 | version "4.0.0"
1384 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
1385 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
1386 |
1387 | resolve@^1.20.0:
1388 | version "1.21.0"
1389 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.21.0.tgz#b51adc97f3472e6a5cf4444d34bc9d6b9037591f"
1390 | integrity sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA==
1391 | dependencies:
1392 | is-core-module "^2.8.0"
1393 | path-parse "^1.0.7"
1394 | supports-preserve-symlinks-flag "^1.0.0"
1395 |
1396 | resolve@^2.0.0-next.3:
1397 | version "2.0.0-next.3"
1398 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.3.tgz#d41016293d4a8586a39ca5d9b5f15cbea1f55e46"
1399 | integrity sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==
1400 | dependencies:
1401 | is-core-module "^2.2.0"
1402 | path-parse "^1.0.6"
1403 |
1404 | reusify@^1.0.4:
1405 | version "1.0.4"
1406 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
1407 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
1408 |
1409 | rimraf@^3.0.2:
1410 | version "3.0.2"
1411 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
1412 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
1413 | dependencies:
1414 | glob "^7.1.3"
1415 |
1416 | run-parallel@^1.1.9:
1417 | version "1.2.0"
1418 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
1419 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
1420 | dependencies:
1421 | queue-microtask "^1.2.2"
1422 |
1423 | semver@^6.3.0:
1424 | version "6.3.0"
1425 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
1426 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
1427 |
1428 | semver@^7.3.5:
1429 | version "7.3.5"
1430 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7"
1431 | integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==
1432 | dependencies:
1433 | lru-cache "^6.0.0"
1434 |
1435 | shebang-command@^2.0.0:
1436 | version "2.0.0"
1437 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
1438 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
1439 | dependencies:
1440 | shebang-regex "^3.0.0"
1441 |
1442 | shebang-regex@^3.0.0:
1443 | version "3.0.0"
1444 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
1445 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
1446 |
1447 | side-channel@^1.0.4:
1448 | version "1.0.4"
1449 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
1450 | integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
1451 | dependencies:
1452 | call-bind "^1.0.0"
1453 | get-intrinsic "^1.0.2"
1454 | object-inspect "^1.9.0"
1455 |
1456 | slash@^3.0.0:
1457 | version "3.0.0"
1458 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
1459 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
1460 |
1461 | split@0.3:
1462 | version "0.3.3"
1463 | resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f"
1464 | integrity sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=
1465 | dependencies:
1466 | through "2"
1467 |
1468 | stream-combiner@~0.0.4:
1469 | version "0.0.4"
1470 | resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14"
1471 | integrity sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=
1472 | dependencies:
1473 | duplexer "~0.1.1"
1474 |
1475 | string-argv@^0.1.1:
1476 | version "0.1.2"
1477 | resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.1.2.tgz#c5b7bc03fb2b11983ba3a72333dd0559e77e4738"
1478 | integrity sha512-mBqPGEOMNJKXRo7z0keX0wlAhbBAjilUdPW13nN0PecVryZxdHIeM7TqbsSUA7VYuS00HGC6mojP7DlQzfa9ZA==
1479 |
1480 | string.prototype.matchall@^4.0.6:
1481 | version "4.0.6"
1482 | resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz#5abb5dabc94c7b0ea2380f65ba610b3a544b15fa"
1483 | integrity sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg==
1484 | dependencies:
1485 | call-bind "^1.0.2"
1486 | define-properties "^1.1.3"
1487 | es-abstract "^1.19.1"
1488 | get-intrinsic "^1.1.1"
1489 | has-symbols "^1.0.2"
1490 | internal-slot "^1.0.3"
1491 | regexp.prototype.flags "^1.3.1"
1492 | side-channel "^1.0.4"
1493 |
1494 | string.prototype.trimend@^1.0.4:
1495 | version "1.0.4"
1496 | resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80"
1497 | integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==
1498 | dependencies:
1499 | call-bind "^1.0.2"
1500 | define-properties "^1.1.3"
1501 |
1502 | string.prototype.trimstart@^1.0.4:
1503 | version "1.0.4"
1504 | resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed"
1505 | integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==
1506 | dependencies:
1507 | call-bind "^1.0.2"
1508 | define-properties "^1.1.3"
1509 |
1510 | strip-ansi@^6.0.0, strip-ansi@^6.0.1:
1511 | version "6.0.1"
1512 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
1513 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
1514 | dependencies:
1515 | ansi-regex "^5.0.1"
1516 |
1517 | strip-bom@^3.0.0:
1518 | version "3.0.0"
1519 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
1520 | integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=
1521 |
1522 | strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
1523 | version "3.1.1"
1524 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
1525 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
1526 |
1527 | supports-color@^7.1.0:
1528 | version "7.2.0"
1529 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
1530 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
1531 | dependencies:
1532 | has-flag "^4.0.0"
1533 |
1534 | supports-preserve-symlinks-flag@^1.0.0:
1535 | version "1.0.0"
1536 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
1537 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
1538 |
1539 | text-table@^0.2.0:
1540 | version "0.2.0"
1541 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
1542 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
1543 |
1544 | through@2, through@~2.3, through@~2.3.1:
1545 | version "2.3.8"
1546 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
1547 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
1548 |
1549 | to-regex-range@^5.0.1:
1550 | version "5.0.1"
1551 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
1552 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
1553 | dependencies:
1554 | is-number "^7.0.0"
1555 |
1556 | tsc-watch@^4.6.0:
1557 | version "4.6.0"
1558 | resolved "https://registry.yarnpkg.com/tsc-watch/-/tsc-watch-4.6.0.tgz#a0eba1300cbe3048ab6d3a3e06de47141b613beb"
1559 | integrity sha512-DRMADjFe44EDWb+YMIOj4b83UrU6le27L3/o0/9FlmA01ikFd5Dl9RD5h1hpeh0mQdIqXvwfHZszCcjhH3bAmQ==
1560 | dependencies:
1561 | cross-spawn "^7.0.3"
1562 | node-cleanup "^2.1.2"
1563 | ps-tree "^1.2.0"
1564 | string-argv "^0.1.1"
1565 | strip-ansi "^6.0.0"
1566 |
1567 | tsconfig-paths@^3.12.0, tsconfig-paths@^3.9.0:
1568 | version "3.12.0"
1569 | resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz#19769aca6ee8f6a1a341e38c8fa45dd9fb18899b"
1570 | integrity sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==
1571 | dependencies:
1572 | "@types/json5" "^0.0.29"
1573 | json5 "^1.0.1"
1574 | minimist "^1.2.0"
1575 | strip-bom "^3.0.0"
1576 |
1577 | tslib@^1.8.1:
1578 | version "1.14.1"
1579 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
1580 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
1581 |
1582 | tsutils@^3.21.0:
1583 | version "3.21.0"
1584 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
1585 | integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==
1586 | dependencies:
1587 | tslib "^1.8.1"
1588 |
1589 | type-check@^0.4.0, type-check@~0.4.0:
1590 | version "0.4.0"
1591 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
1592 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
1593 | dependencies:
1594 | prelude-ls "^1.2.1"
1595 |
1596 | type-fest@^0.20.2:
1597 | version "0.20.2"
1598 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
1599 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
1600 |
1601 | typescript@^4.5.4:
1602 | version "4.5.4"
1603 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.4.tgz#a17d3a0263bf5c8723b9c52f43c5084edf13c2e8"
1604 | integrity sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==
1605 |
1606 | unbox-primitive@^1.0.1:
1607 | version "1.0.1"
1608 | resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471"
1609 | integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==
1610 | dependencies:
1611 | function-bind "^1.1.1"
1612 | has-bigints "^1.0.1"
1613 | has-symbols "^1.0.2"
1614 | which-boxed-primitive "^1.0.2"
1615 |
1616 | uri-js@^4.2.2:
1617 | version "4.4.1"
1618 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
1619 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
1620 | dependencies:
1621 | punycode "^2.1.0"
1622 |
1623 | v8-compile-cache@^2.0.3:
1624 | version "2.3.0"
1625 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"
1626 | integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==
1627 |
1628 | which-boxed-primitive@^1.0.2:
1629 | version "1.0.2"
1630 | resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6"
1631 | integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==
1632 | dependencies:
1633 | is-bigint "^1.0.1"
1634 | is-boolean-object "^1.1.0"
1635 | is-number-object "^1.0.4"
1636 | is-string "^1.0.5"
1637 | is-symbol "^1.0.3"
1638 |
1639 | which@^2.0.1:
1640 | version "2.0.2"
1641 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
1642 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
1643 | dependencies:
1644 | isexe "^2.0.0"
1645 |
1646 | word-wrap@^1.2.3:
1647 | version "1.2.3"
1648 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
1649 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
1650 |
1651 | wrappy@1:
1652 | version "1.0.2"
1653 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
1654 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
1655 |
1656 | yallist@^4.0.0:
1657 | version "4.0.0"
1658 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
1659 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
1660 |
--------------------------------------------------------------------------------