├── server ├── src │ ├── entities │ │ ├── index.ts │ │ └── Todo.ts │ ├── resolvers │ │ ├── index.ts │ │ └── todo.ts │ ├── constants.ts │ ├── types.d.ts │ ├── migrations │ │ └── Migration20210811024335.ts │ ├── mikro-orm.config.ts │ └── server.ts ├── .env ├── .gitignore ├── .env.development ├── tsconfig.json └── package.json ├── client-static ├── src │ ├── vite-env.d.ts │ ├── main.tsx │ ├── index.css │ ├── favicon.svg │ ├── utils │ │ └── AppStore.ts │ └── App.tsx ├── .gitignore ├── postcss.config.js ├── vite.config.ts ├── tailwind.config.js ├── tsconfig.json ├── package.json ├── index.html ├── dist │ ├── index.html │ └── assets │ │ ├── favicon.17e50649.svg │ │ ├── index.0a08352d.js │ │ └── index.db50cc7d.css └── yarn.lock ├── assets ├── sc.png └── graphql.png └── README.md /server/src/entities/index.ts: -------------------------------------------------------------------------------- 1 | export { Todo } from "./Todo"; 2 | -------------------------------------------------------------------------------- /client-static/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /server/src/resolvers/index.ts: -------------------------------------------------------------------------------- 1 | export { TodoResolver } from "./todo"; 2 | -------------------------------------------------------------------------------- /assets/sc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/princejoogie/pern-todo-list/HEAD/assets/sc.png -------------------------------------------------------------------------------- /client-static/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store 3 | dist 4 | dist-ssr 5 | *.local 6 | -------------------------------------------------------------------------------- /server/.env: -------------------------------------------------------------------------------- 1 | DB_NAME=lireddit 2 | DB_USER=postgres 3 | DB_PASSWORD=pgadmin 4 | PORT=5000 -------------------------------------------------------------------------------- /server/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | temp 3 | .DS_Store 4 | dist 5 | dist-ssr 6 | *.local 7 | -------------------------------------------------------------------------------- /server/src/constants.ts: -------------------------------------------------------------------------------- 1 | export const __prod__ = process.env.NODE_ENV === "production"; 2 | -------------------------------------------------------------------------------- /assets/graphql.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/princejoogie/pern-todo-list/HEAD/assets/graphql.png -------------------------------------------------------------------------------- /server/.env.development: -------------------------------------------------------------------------------- 1 | DB_NAME=lireddit_dev 2 | DB_USER=postgres 3 | DB_PASSWORD=pgadmin 4 | PORT=5000 -------------------------------------------------------------------------------- /client-static/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /server/src/types.d.ts: -------------------------------------------------------------------------------- 1 | import { EntityManager, IDatabaseDriver, Connection } from "@mikro-orm/core"; 2 | 3 | export type MyContext = { 4 | em: EntityManager>; 5 | }; 6 | -------------------------------------------------------------------------------- /client-static/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "vite"; 2 | import reactRefresh from "@vitejs/plugin-react-refresh"; 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | base: "/pern-todo-list/", 7 | plugins: [reactRefresh()], 8 | }); 9 | -------------------------------------------------------------------------------- /client-static/src/main.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import ReactDOM from "react-dom"; 3 | import "./index.css"; 4 | import App from "./App"; 5 | 6 | ReactDOM.render( 7 | 8 | 9 | , 10 | document.getElementById("root") 11 | ); 12 | -------------------------------------------------------------------------------- /client-static/tailwind.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | purge: ["./index.html", "./src/**/*.{vue,js,ts,jsx,tsx}"], 3 | mode: "jit", 4 | darkMode: false, // or 'media' or 'class' 5 | theme: { 6 | extend: {}, 7 | }, 8 | variants: { 9 | extend: {}, 10 | }, 11 | plugins: [], 12 | }; 13 | -------------------------------------------------------------------------------- /client-static/src/index.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | body { 6 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", 7 | "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", 8 | sans-serif; 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | } 12 | -------------------------------------------------------------------------------- /client-static/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ESNext", 4 | "lib": ["DOM", "DOM.Iterable", "ESNext"], 5 | "allowJs": false, 6 | "skipLibCheck": false, 7 | "esModuleInterop": false, 8 | "allowSyntheticDefaultImports": true, 9 | "strict": true, 10 | "forceConsistentCasingInFileNames": true, 11 | "module": "ESNext", 12 | "moduleResolution": "Node", 13 | "resolveJsonModule": true, 14 | "isolatedModules": true, 15 | "noEmit": true, 16 | "jsx": "react" 17 | }, 18 | "include": ["./src"] 19 | } 20 | -------------------------------------------------------------------------------- /server/src/migrations/Migration20210811024335.ts: -------------------------------------------------------------------------------- 1 | import { Migration } from '@mikro-orm/migrations'; 2 | 3 | export class Migration20210811024335 extends Migration { 4 | 5 | async up(): Promise { 6 | this.addSql('create table "todo" ("id" uuid not null default uuid_generate_v4(), "created_at" timestamptz(0) not null, "updated_at" timestamptz(0) not null, "title" text not null, "finished" bool not null);'); 7 | this.addSql('alter table "todo" add constraint "todo_pkey" primary key ("id");'); 8 | 9 | this.addSql('drop table if exists "post" cascade;'); 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /server/src/entities/Todo.ts: -------------------------------------------------------------------------------- 1 | import { Entity, PrimaryKey, Property } from "@mikro-orm/core"; 2 | import { Field, ObjectType } from "type-graphql"; 3 | 4 | @ObjectType() 5 | @Entity() 6 | export class Todo { 7 | @Field(() => String) 8 | @PrimaryKey({ type: "uuid", defaultRaw: "uuid_generate_v4()" }) 9 | id!: string; 10 | 11 | @Field(() => String) 12 | @Property() 13 | createdAt: Date = new Date(); 14 | 15 | @Field(() => String) 16 | @Property({ onUpdate: () => new Date() }) 17 | updatedAt: Date = new Date(); 18 | 19 | @Field(() => String) 20 | @Property({ type: "text" }) 21 | title!: string; 22 | 23 | @Field(() => Boolean) 24 | @Property() 25 | finished!: boolean; 26 | } 27 | -------------------------------------------------------------------------------- /server/src/mikro-orm.config.ts: -------------------------------------------------------------------------------- 1 | import { TsMorphMetadataProvider } from "@mikro-orm/reflection"; 2 | import { MikroORM } from "@mikro-orm/core"; 3 | import path from "path"; 4 | 5 | import { __prod__ } from "./constants"; 6 | import { Todo } from "./entities"; 7 | 8 | export default { 9 | migrations: { 10 | path: path.join(__dirname, "./migrations"), 11 | pattern: /^[\w-]+\d+\.[tj]s$/, 12 | transactional: true, 13 | disableForeignKeys: true, 14 | allOrNothing: true, 15 | dropTables: true, 16 | safe: false, 17 | emit: "ts", 18 | }, 19 | entities: [Todo], 20 | debug: !__prod__, 21 | metadataProvider: TsMorphMetadataProvider, 22 | type: "postgresql", 23 | dbName: process.env.DB_NAME, 24 | user: process.env.DB_USER, 25 | password: process.env.DB_PASSWORD, 26 | } as Parameters[0]; 27 | -------------------------------------------------------------------------------- /client-static/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "client", 3 | "version": "0.0.0", 4 | "license": "MIT", 5 | "scripts": { 6 | "dev": "vite", 7 | "build": "rimraf dist && tsc && vite build", 8 | "serve": "vite preview" 9 | }, 10 | "dependencies": { 11 | "mobx": "^6.3.2", 12 | "mobx-persist-store": "^1.0.3", 13 | "mobx-react-lite": "^3.2.0", 14 | "react": "^17.0.0", 15 | "react-dom": "^17.0.0", 16 | "react-icons": "^4.2.0", 17 | "rimraf": "^3.0.2", 18 | "uuid": "^8.3.2" 19 | }, 20 | "devDependencies": { 21 | "@types/react": "^17.0.0", 22 | "@types/react-dom": "^17.0.0", 23 | "@types/uuid": "^8.3.1", 24 | "@vitejs/plugin-react-refresh": "^1.3.1", 25 | "autoprefixer": "^10.3.1", 26 | "postcss": "^8.3.6", 27 | "tailwindcss": "^2.2.7", 28 | "typescript": "^4.3.2", 29 | "vite": "^2.4.4" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /server/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "esnext", 4 | "module": "commonjs", 5 | "lib": ["dom", "es6", "es2017", "esnext.asynciterable"], 6 | "skipLibCheck": true, 7 | "sourceMap": true, 8 | "outDir": "./dist", 9 | "moduleResolution": "node", 10 | "removeComments": true, 11 | "noImplicitAny": true, 12 | "strictNullChecks": true, 13 | "strictFunctionTypes": true, 14 | "noImplicitThis": true, 15 | "noUnusedLocals": true, 16 | "noUnusedParameters": true, 17 | "noImplicitReturns": true, 18 | "noFallthroughCasesInSwitch": true, 19 | "allowSyntheticDefaultImports": true, 20 | "esModuleInterop": true, 21 | "emitDecoratorMetadata": true, 22 | "experimentalDecorators": true, 23 | "declaration": true, 24 | "resolveJsonModule": true, 25 | "baseUrl": "." 26 | }, 27 | "include": ["src/types.d.ts", "**/*.ts"], 28 | "exclude": ["node_modules"] 29 | } 30 | -------------------------------------------------------------------------------- /client-static/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 13 | 17 | 18 | 19 | 23 | 27 | 28 | 29 | PERN Todo 30 | 31 | 32 |
33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /server/src/server.ts: -------------------------------------------------------------------------------- 1 | import "reflect-metadata"; 2 | import { MikroORM } from "@mikro-orm/core"; 3 | import { ApolloServer } from "apollo-server-express"; 4 | import { buildSchema } from "type-graphql"; 5 | import { __prod__ } from "./constants"; 6 | import express from "express"; 7 | import colors from "colors"; 8 | import dotenv from "dotenv"; 9 | dotenv.config({ path: __prod__ ? ".env" : ".env.development" }); 10 | 11 | import { TodoResolver } from "./resolvers"; 12 | import mikroConfig from "./mikro-orm.config"; 13 | 14 | const main = async () => { 15 | const orm = await MikroORM.init(mikroConfig); 16 | await orm.getMigrator().up(); 17 | 18 | const app = express(); 19 | const PORT = process.env.PORT || 5000; 20 | 21 | const apolloServer = new ApolloServer({ 22 | schema: await buildSchema({ 23 | resolvers: [TodoResolver], 24 | validate: false, 25 | }), 26 | context: () => ({ em: orm.em }), 27 | introspection: true, 28 | }); 29 | 30 | apolloServer.applyMiddleware({ app }); 31 | 32 | app.get("/", (_, res) => { 33 | res.send("Database Connected"); 34 | }); 35 | 36 | app.listen(PORT, () => { 37 | console.clear(); 38 | console.log(`Connected to DB: ${process.env.DB_NAME}`); 39 | console.log( 40 | colors.green(`ready - started server on`), 41 | colors.blue(`http://localhost:${PORT}`) 42 | ); 43 | }); 44 | }; 45 | 46 | main().catch((err) => { 47 | console.log(err); 48 | }); 49 | -------------------------------------------------------------------------------- /client-static/dist/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 13 | 17 | 18 | 19 | 23 | 27 | 28 | 29 | PERN Todo 30 | 31 | 32 | 33 | 34 | 35 |
36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # PERN Todo List 2 | 3 | 🚧 `WORK IN PROGRESS` 🚧 4 | 5 | A very straight-forward and simple todo-list with the PERN Stack (Postgres, Express, React, Node). 6 | 7 | > Practicing MobX as a the state-management for the client-side with persistence. 8 | 9 | > Serves as a boilerplate for crud functionality 10 | 11 | --- 12 | 13 | ## Project Structure 14 | 15 | ```bash 16 | ├ 📁client # WIP: connected to postgres server 17 | ├ 📁client-static # no connection to postgres server 18 | | └ 📁src 19 | | ├ 📁utils 20 | | | └ AppStore.ts # MobX store and context hook 21 | | └ App.tsx # Main interface 22 | └ 📁server 23 | └ 📁src 24 | ├ 📁entities 25 | | └ *.ts # Models for Postgres and GraphQL 26 | ├ 📁migrations 27 | | └ AppStore.ts # Postgres commands for migration 28 | | # more in package.json `migration:*` 29 | ├ 📁resolvers 30 | | └ *.ts # GraphQL resolvers (CRUD logic) 31 | ├ server.ts # Entry point of server 32 | | # (contains resolver array) 33 | └ mikro-orm.config.ts # Config for database connection 34 | # (contains entities array) 35 | 36 | 37 | 38 | ``` 39 | 40 | --- 41 | 42 | ## Client-Static Preview 43 | 44 |
45 | client preview 46 |
47 |
48 | 49 | ## GraphQL Preview 50 | 51 |
52 | client preview 53 |
54 |
55 | -------------------------------------------------------------------------------- /client-static/src/favicon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /client-static/dist/assets/favicon.17e50649.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /server/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "server", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "start": "cross-env NODE_ENV=production node dist/server.js", 8 | "dev": "cross-env NODE_ENV=development nodemon --exec ts-node src/server.ts", 9 | "build": "rimraf dist && tsc", 10 | "migration:create": "mikro-orm migration:create", 11 | "migration:up": "mikro-orm migration:up", 12 | "migration:down": "mikro-orm migration:down", 13 | "migration:list": "mikro-orm migration:list", 14 | "migration:pending": "mikro-orm migration:pending" 15 | }, 16 | "devDependencies": { 17 | "@types/node": "^16.4.13", 18 | "@types/uuid": "^8.3.1", 19 | "class-validator": "^0.13.1", 20 | "cross-env": "^7.0.3", 21 | "nodemon": "^2.0.12", 22 | "reflect-metadata": "^0.1.13", 23 | "rimraf": "^3.0.2", 24 | "ts-morph": "^11.0.3", 25 | "ts-node": "^10.2.0", 26 | "typescript": "^4.3.5" 27 | }, 28 | "dependencies": { 29 | "@mikro-orm/cli": "^4.5.7", 30 | "@mikro-orm/core": "^4.5.7", 31 | "@mikro-orm/migrations": "^4.5.7", 32 | "@mikro-orm/postgresql": "^4.5.7", 33 | "@mikro-orm/reflection": "^4.5.7", 34 | "apollo-server-express": "^2", 35 | "colors": "^1.4.0", 36 | "dotenv": "^10.0.0", 37 | "express": "^4.17.1", 38 | "graphql": "^15.5.1", 39 | "pg": "^8.7.1", 40 | "type-graphql": "^1.1.1", 41 | "uuid": "^8.3.2" 42 | }, 43 | "mikro-orm": { 44 | "useTsNode": true, 45 | "configPaths": [ 46 | "./src/mikro-orm.config.ts", 47 | "./dist/mikro-orm.config.js" 48 | ] 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /client-static/src/utils/AppStore.ts: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { makeAutoObservable } from "mobx"; 3 | import { 4 | makePersistable, 5 | clearPersistedStore, 6 | isHydrated, 7 | isPersisting, 8 | } from "mobx-persist-store"; 9 | 10 | export interface ITodo { 11 | id: string; 12 | title: string; 13 | finished: boolean; 14 | dateAdded: number; 15 | } 16 | 17 | export class AppStore { 18 | todos: ITodo[] = []; 19 | 20 | constructor() { 21 | makeAutoObservable(this); 22 | 23 | makePersistable( 24 | this, 25 | { 26 | name: "AppStore", 27 | properties: ["todos"], 28 | storage: window.localStorage, 29 | stringify: true, 30 | debugMode: false, 31 | }, 32 | { delay: 0 } 33 | ); 34 | } 35 | 36 | get isHydrated() { 37 | return isHydrated(this); 38 | } 39 | 40 | get isPersisting() { 41 | return isPersisting(this); 42 | } 43 | 44 | async clearPersistedData(): Promise { 45 | await clearPersistedStore(this); 46 | } 47 | 48 | addTodo(todo: ITodo) { 49 | const old = JSON.parse(JSON.stringify(this.todos)); 50 | this.todos = [...old, todo]; 51 | } 52 | 53 | updateTodo(id: string, todo: ITodo) { 54 | this.todos = this.todos.filter((e) => e.id !== id); 55 | this.addTodo(todo); 56 | } 57 | 58 | deleteTodo(id: string) { 59 | this.todos = this.todos.filter((e) => e.id !== id); 60 | } 61 | } 62 | 63 | export const appStore = new AppStore(); 64 | export const AppStoreContext = React.createContext(appStore); 65 | export const useAppStore = (): AppStore => React.useContext(AppStoreContext); 66 | -------------------------------------------------------------------------------- /server/src/resolvers/todo.ts: -------------------------------------------------------------------------------- 1 | import { Todo } from "../entities/"; 2 | import { MyContext } from "../types"; 3 | import { Arg, Ctx, Mutation, Query, Resolver } from "type-graphql"; 4 | 5 | @Resolver() 6 | export class TodoResolver { 7 | @Query(() => [Todo]) 8 | async todos(@Ctx() { em }: MyContext): Promise { 9 | return await em.find(Todo, {}); 10 | } 11 | 12 | @Query(() => Todo, { nullable: true }) 13 | async todo( 14 | @Arg("id", () => String) id: string, 15 | @Ctx() { em }: MyContext 16 | ): Promise { 17 | return await em.findOne(Todo, { id }); 18 | } 19 | 20 | @Mutation(() => Todo) 21 | async createTodo( 22 | @Arg("title", () => String) title: string, 23 | @Ctx() { em }: MyContext 24 | ): Promise { 25 | const post = await em.create(Todo, { title, finished: false }); 26 | await em.persistAndFlush(post); 27 | return post; 28 | } 29 | 30 | @Mutation(() => Todo, { nullable: true }) 31 | async updateTodo( 32 | @Arg("id", () => String) id: string, 33 | @Arg("title", () => String) title: string, 34 | @Arg("finished", () => Boolean) finished: boolean, 35 | @Ctx() { em }: MyContext 36 | ): Promise { 37 | const post = await em.findOne(Todo, { id }); 38 | if (!post) { 39 | return null; 40 | } 41 | 42 | if (!!title) { 43 | post.title = title; 44 | post.finished = finished; 45 | await em.persistAndFlush(post); 46 | } 47 | return post; 48 | } 49 | 50 | @Mutation(() => Boolean) 51 | async deleteTodo( 52 | @Arg("id", () => String) id: string, 53 | @Ctx() { em }: MyContext 54 | ): Promise { 55 | try { 56 | await em.nativeDelete(Todo, { id }); 57 | return true; 58 | } catch (_) { 59 | return false; 60 | } 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /client-static/dist/assets/index.0a08352d.js: -------------------------------------------------------------------------------- 1 | var e=Object.defineProperty,t=Object.getOwnPropertySymbols,a=Object.prototype.hasOwnProperty,o=Object.prototype.propertyIsEnumerable,r=(t,a,o)=>a in t?e(t,a,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[a]=o,n=(e,n)=>{for(var s in n||(n={}))a.call(n,s)&&r(e,s,n[s]);if(t)for(var s of t(n))o.call(n,s)&&r(e,s,n[s]);return e};import{R as s,m as l,a as d,i,b as c,c as m,o as u,C as p,H as f,d as h,e as b,f as g,g as x,v as y,h as E}from"./vendor.a045db00.js";const N=new class{constructor(){this.todos=[],l(this),d(this,{name:"AppStore",properties:["todos"],storage:window.localStorage,stringify:!0,debugMode:!1},{delay:0})}get isHydrated(){return i(this)}get isPersisting(){return c(this)}async clearPersistedData(){await m(this)}addTodo(e){const t=JSON.parse(JSON.stringify(this.todos));this.todos=[...t,e]}updateTodo(e,t){this.todos=this.todos.filter((t=>t.id!==e)),this.addTodo(t)}deleteTodo(e){this.todos=this.todos.filter((t=>t.id!==e))}},v=s.createContext(N),C=()=>s.useContext(v),w=u((()=>{const[e,t]=p.exports.useState(""),a=C(),o=a.todos.filter((e=>!e.finished)).sort(((e,t)=>t.dateAdded-e.dateAdded)),r=a.todos.filter((e=>e.finished)).sort(((e,t)=>t.dateAdded-e.dateAdded));return s.createElement("div",{className:"max-w-3xl px-4 mx-auto"},s.createElement("div",{className:"flex items-center justify-between my-8"},s.createElement("div",{className:"flex items-center space-x-4"},s.createElement("button",{className:"p-2 bg-gray-800 rounded-2xl"},s.createElement(f,{className:"text-2xl"})),s.createElement("h1",{className:"text-3xl font-bold"},"PERN Todo")),s.createElement("button",null,s.createElement(h,null))),s.createElement("form",{onSubmit:o=>{if(o.preventDefault(),e){const o={id:y(),finished:!1,title:e.trim(),dateAdded:(new Date).getTime()};a.addTodo(o),t("")}},className:"flex items-center p-2 my-8 space-x-4 border-2 border-gray-800 focus-within:border-blue-500 rounded-2xl "},s.createElement("button",{type:"submit",className:"p-1 bg-[#FC76A1] rounded-xl hover:opacity-70 transition-opacity"},s.createElement(b,{className:"text-2xl text-gray-900"})),s.createElement("input",{autoComplete:"off",value:e,onChange:e=>t(e.target.value),className:"flex-1 pr-2 font-semibold bg-transparent border-none outline-none text",placeholder:"Add a task",type:"text",name:"todo-input",id:"todo-input"})),o.length>0&&s.createElement("div",null,s.createElement("h2",null,"Tasks - ",o.length),s.createElement("div",{className:"flex flex-col mt-4 space-y-3"},o.map((e=>s.createElement(A,{key:e.id,todo:e}))))),r.length>0&&s.createElement("div",{className:"mt-5"},s.createElement("h2",null,"Completed- ",r.length),s.createElement("div",{className:"flex flex-col mt-4 space-y-3"},r.map((e=>s.createElement(A,{key:e.id,todo:e}))))))})),A=({todo:e})=>{const t=e.title,[a,o]=p.exports.useState(!1),[r,l]=p.exports.useState(e.title),d=C(),i=()=>{const t=n({},e);t.finished=!t.finished,d.updateTodo(e.id,t)};return s.createElement("div",{className:"flex items-center p-3 space-x-3 bg-gray-800 group rounded-xl focus-within:ring-2 focus-within:ring-blue-500"},e.finished?s.createElement("button",{onClick:i,className:"relative w-5 h-5 rounded-lg bg-[#FC76A1] border-2 border-[#FC76A1]"},s.createElement(g,{className:"text-gray-900"})):s.createElement("button",{onClick:i,className:"relative w-5 h-5 rounded-lg border-2 border-[#FC76A1]"}),a?s.createElement("input",{autoFocus:!0,onBlur:()=>{o(!1),(()=>{if(r.trim()){const t=n({},e);t.title=r.trim(),d.updateTodo(e.id,t)}else l(t)})()},className:"flex-1 bg-transparent border-none outline-none",value:r,onChange:e=>l(e.target.value),type:"text",name:"todo-input",id:"todo-input",autoComplete:"off"}):s.createElement("p",{className:`flex-1 ${e.finished&&"line-through"}`,onClick:()=>o(!0)},e.title),s.createElement("button",{onClick:()=>{d.deleteTodo(e.id)},className:"transition-opacity duration-150 opacity-0 group-hover:opacity-100"},s.createElement(x,{className:"text-red-500"})))};E.render(s.createElement(s.StrictMode,null,s.createElement(w,null)),document.getElementById("root")); 2 | -------------------------------------------------------------------------------- /client-static/src/App.tsx: -------------------------------------------------------------------------------- 1 | import React, { useState } from "react"; 2 | import { 3 | HiOutlineDotsHorizontal, 4 | HiChevronLeft, 5 | HiPlus, 6 | HiCheck, 7 | HiOutlineTrash, 8 | } from "react-icons/hi"; 9 | import { ITodo, useAppStore } from "./utils/AppStore"; 10 | import { v4 } from "uuid"; 11 | import { observer } from "mobx-react-lite"; 12 | 13 | const App: React.FC = observer(() => { 14 | const [input, setInput] = useState(""); 15 | const appStore = useAppStore(); 16 | const tasks = appStore.todos 17 | .filter((e) => !e.finished) 18 | .sort((a, b) => b.dateAdded - a.dateAdded); 19 | const compelted = appStore.todos 20 | .filter((e) => e.finished) 21 | .sort((a, b) => b.dateAdded - a.dateAdded); 22 | 23 | const onSubmit: React.FormEventHandler = (e) => { 24 | e.preventDefault(); 25 | if (!!input) { 26 | const todo: ITodo = { 27 | id: v4(), 28 | finished: false, 29 | title: input.trim(), 30 | dateAdded: new Date().getTime(), 31 | }; 32 | appStore.addTodo(todo); 33 | setInput(""); 34 | } 35 | }; 36 | 37 | return ( 38 |
39 |
40 |
41 | 44 |

PERN Todo

45 |
46 | 47 | 50 |
51 | 52 |
56 | 62 | 63 | setInput(e.target.value)} 67 | className="flex-1 pr-2 font-semibold bg-transparent border-none outline-none text" 68 | placeholder="Add a task" 69 | type="text" 70 | name="todo-input" 71 | id="todo-input" 72 | /> 73 |
74 | 75 | {tasks.length > 0 && ( 76 |
77 |

Tasks - {tasks.length}

78 | 79 |
80 | {tasks.map((todo) => ( 81 | 82 | ))} 83 |
84 |
85 | )} 86 | 87 | {compelted.length > 0 && ( 88 |
89 |

Completed- {compelted.length}

90 | 91 |
92 | {compelted.map((todo) => ( 93 | 94 | ))} 95 |
96 |
97 | )} 98 |
99 | ); 100 | }); 101 | 102 | interface TodoItemProps { 103 | todo: ITodo; 104 | } 105 | 106 | const TodoItem: React.FC = ({ todo }) => { 107 | const og = todo.title; 108 | const [isEditing, setIsEditing] = useState(false); 109 | const [input, setInput] = useState(todo.title); 110 | const appStore = useAppStore(); 111 | 112 | const handleToggle = () => { 113 | const copy = { ...todo }; 114 | copy.finished = !copy.finished; 115 | appStore.updateTodo(todo.id, copy); 116 | }; 117 | 118 | const handleEdit = () => { 119 | if (!!input.trim()) { 120 | const copy = { ...todo }; 121 | copy.title = input.trim(); 122 | appStore.updateTodo(todo.id, copy); 123 | } else { 124 | setInput(og); 125 | } 126 | }; 127 | 128 | const handleDelete = () => { 129 | appStore.deleteTodo(todo.id); 130 | }; 131 | 132 | return ( 133 |
134 | {todo.finished ? ( 135 | 141 | ) : ( 142 | 178 |
179 | ); 180 | }; 181 | 182 | export default App; 183 | -------------------------------------------------------------------------------- /client-static/dist/assets/index.db50cc7d.css: -------------------------------------------------------------------------------- 1 | /*! tailwindcss v2.2.7 | MIT License | https://tailwindcss.com *//*! modern-normalize v1.1.0 | MIT License | https://github.com/sindresorhus/modern-normalize */*,::after,::before{box-sizing:border-box}html{-moz-tab-size:4;-o-tab-size:4;tab-size:4}html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}body{font-family:system-ui,-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji'}hr{height:0;color:inherit}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Consolas,'Liberation Mono',Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}::-moz-focus-inner{border-style:none;padding:0}:-moz-focusring{outline:1px dotted ButtonText}:-moz-ui-invalid{box-shadow:none}legend{padding:0}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:transparent;background-image:none}fieldset{margin:0;padding:0}ol,ul{list-style:none;margin:0;padding:0}html{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";line-height:1.5}body{font-family:inherit;line-height:inherit}*,::after,::before{box-sizing:border-box;border-width:0;border-style:solid;border-color:currentColor}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input:-ms-input-placeholder,textarea:-ms-input-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,::after,::before{--tw-border-opacity:1;border-color:rgba(229,231,235,var(--tw-border-opacity));--tw-ring-inset:var(--tw-empty, );/*!*//*!*/--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-blur:var(--tw-empty, );/*!*//*!*/--tw-brightness:var(--tw-empty, );/*!*//*!*/--tw-contrast:var(--tw-empty, );/*!*//*!*/--tw-grayscale:var(--tw-empty, );/*!*//*!*/--tw-hue-rotate:var(--tw-empty, );/*!*//*!*/--tw-invert:var(--tw-empty, );/*!*//*!*/--tw-saturate:var(--tw-empty, );/*!*//*!*/--tw-sepia:var(--tw-empty, );/*!*//*!*/--tw-drop-shadow:var(--tw-empty, );/*!*//*!*/--tw-filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.relative{position:relative}.mx-auto{margin-left:auto;margin-right:auto}.my-8{margin-top:2rem;margin-bottom:2rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.flex{display:flex}.h-5{height:1.25rem}.w-5{width:1.25rem}.max-w-3xl{max-width:48rem}.flex-1{flex:1 1 0%}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem * var(--tw-space-x-reverse));margin-left:calc(.75rem * calc(1 - var(--tw-space-x-reverse)))}.rounded-2xl{border-radius:1rem}.rounded-xl{border-radius:.75rem}.rounded-lg{border-radius:.5rem}.border-2{border-width:2px}.border-none{border-style:none}.border-gray-800{--tw-border-opacity:1;border-color:rgba(31,41,55,var(--tw-border-opacity))}.border-\[\#FC76A1\]{--tw-border-opacity:1;border-color:rgba(252,118,161,var(--tw-border-opacity))}.bg-gray-900{--tw-bg-opacity:1;background-color:rgba(17,24,39,var(--tw-bg-opacity))}.bg-gray-800{--tw-bg-opacity:1;background-color:rgba(31,41,55,var(--tw-bg-opacity))}.bg-\[\#FC76A1\]{--tw-bg-opacity:1;background-color:rgba(252,118,161,var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.p-2{padding:.5rem}.p-1{padding:.25rem}.p-3{padding:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.pr-2{padding-right:.5rem}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.font-bold{font-weight:700}.font-semibold{font-weight:600}.text-white{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgba(17,24,39,var(--tw-text-opacity))}.text-red-500{--tw-text-opacity:1;color:rgba(239,68,68,var(--tw-text-opacity))}.line-through{text-decoration:line-through}.opacity-0{opacity:0}.outline-none{outline:2px solid transparent;outline-offset:2px}.filter{filter:var(--tw-filter)}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(0.4,0,0.2,1);transition-duration:150ms}.duration-150{transition-duration:150ms}body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.focus-within\:border-blue-500:focus-within{--tw-border-opacity:1;border-color:rgba(59,130,246,var(--tw-border-opacity))}.focus-within\:ring-2:focus-within{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-within\:ring-blue-500:focus-within{--tw-ring-opacity:1;--tw-ring-color:rgba(59, 130, 246, var(--tw-ring-opacity))}.hover\:opacity-70:hover{opacity:.7}.group:hover .group-hover\:opacity-100{opacity:1} -------------------------------------------------------------------------------- /client-static/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.14.5": 6 | version "7.14.5" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" 8 | integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== 9 | dependencies: 10 | "@babel/highlight" "^7.14.5" 11 | 12 | "@babel/compat-data@^7.15.0": 13 | version "7.15.0" 14 | resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.15.0.tgz#2dbaf8b85334796cafbb0f5793a90a2fc010b176" 15 | integrity sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA== 16 | 17 | "@babel/core@^7.14.8": 18 | version "7.15.0" 19 | resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.15.0.tgz#749e57c68778b73ad8082775561f67f5196aafa8" 20 | integrity sha512-tXtmTminrze5HEUPn/a0JtOzzfp0nk+UEXQ/tqIJo3WDGypl/2OFQEMll/zSFU8f/lfmfLXvTaORHF3cfXIQMw== 21 | dependencies: 22 | "@babel/code-frame" "^7.14.5" 23 | "@babel/generator" "^7.15.0" 24 | "@babel/helper-compilation-targets" "^7.15.0" 25 | "@babel/helper-module-transforms" "^7.15.0" 26 | "@babel/helpers" "^7.14.8" 27 | "@babel/parser" "^7.15.0" 28 | "@babel/template" "^7.14.5" 29 | "@babel/traverse" "^7.15.0" 30 | "@babel/types" "^7.15.0" 31 | convert-source-map "^1.7.0" 32 | debug "^4.1.0" 33 | gensync "^1.0.0-beta.2" 34 | json5 "^2.1.2" 35 | semver "^6.3.0" 36 | source-map "^0.5.0" 37 | 38 | "@babel/generator@^7.15.0": 39 | version "7.15.0" 40 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.0.tgz#a7d0c172e0d814974bad5aa77ace543b97917f15" 41 | integrity sha512-eKl4XdMrbpYvuB505KTta4AV9g+wWzmVBW69tX0H2NwKVKd2YJbKgyK6M8j/rgLbmHOYJn6rUklV677nOyJrEQ== 42 | dependencies: 43 | "@babel/types" "^7.15.0" 44 | jsesc "^2.5.1" 45 | source-map "^0.5.0" 46 | 47 | "@babel/helper-compilation-targets@^7.15.0": 48 | version "7.15.0" 49 | resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.0.tgz#973df8cbd025515f3ff25db0c05efc704fa79818" 50 | integrity sha512-h+/9t0ncd4jfZ8wsdAsoIxSa61qhBYlycXiHWqJaQBCXAhDCMbPRSMTGnZIkkmt1u4ag+UQmuqcILwqKzZ4N2A== 51 | dependencies: 52 | "@babel/compat-data" "^7.15.0" 53 | "@babel/helper-validator-option" "^7.14.5" 54 | browserslist "^4.16.6" 55 | semver "^6.3.0" 56 | 57 | "@babel/helper-function-name@^7.14.5": 58 | version "7.14.5" 59 | resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz#89e2c474972f15d8e233b52ee8c480e2cfcd50c4" 60 | integrity sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ== 61 | dependencies: 62 | "@babel/helper-get-function-arity" "^7.14.5" 63 | "@babel/template" "^7.14.5" 64 | "@babel/types" "^7.14.5" 65 | 66 | "@babel/helper-get-function-arity@^7.14.5": 67 | version "7.14.5" 68 | resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz#25fbfa579b0937eee1f3b805ece4ce398c431815" 69 | integrity sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg== 70 | dependencies: 71 | "@babel/types" "^7.14.5" 72 | 73 | "@babel/helper-hoist-variables@^7.14.5": 74 | version "7.14.5" 75 | resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz#e0dd27c33a78e577d7c8884916a3e7ef1f7c7f8d" 76 | integrity sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ== 77 | dependencies: 78 | "@babel/types" "^7.14.5" 79 | 80 | "@babel/helper-member-expression-to-functions@^7.15.0": 81 | version "7.15.0" 82 | resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.0.tgz#0ddaf5299c8179f27f37327936553e9bba60990b" 83 | integrity sha512-Jq8H8U2kYiafuj2xMTPQwkTBnEEdGKpT35lJEQsRRjnG0LW3neucsaMWLgKcwu3OHKNeYugfw+Z20BXBSEs2Lg== 84 | dependencies: 85 | "@babel/types" "^7.15.0" 86 | 87 | "@babel/helper-module-imports@^7.14.5": 88 | version "7.14.5" 89 | resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz#6d1a44df6a38c957aa7c312da076429f11b422f3" 90 | integrity sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ== 91 | dependencies: 92 | "@babel/types" "^7.14.5" 93 | 94 | "@babel/helper-module-transforms@^7.15.0": 95 | version "7.15.0" 96 | resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.0.tgz#679275581ea056373eddbe360e1419ef23783b08" 97 | integrity sha512-RkGiW5Rer7fpXv9m1B3iHIFDZdItnO2/BLfWVW/9q7+KqQSDY5kUfQEbzdXM1MVhJGcugKV7kRrNVzNxmk7NBg== 98 | dependencies: 99 | "@babel/helper-module-imports" "^7.14.5" 100 | "@babel/helper-replace-supers" "^7.15.0" 101 | "@babel/helper-simple-access" "^7.14.8" 102 | "@babel/helper-split-export-declaration" "^7.14.5" 103 | "@babel/helper-validator-identifier" "^7.14.9" 104 | "@babel/template" "^7.14.5" 105 | "@babel/traverse" "^7.15.0" 106 | "@babel/types" "^7.15.0" 107 | 108 | "@babel/helper-optimise-call-expression@^7.14.5": 109 | version "7.14.5" 110 | resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz#f27395a8619e0665b3f0364cddb41c25d71b499c" 111 | integrity sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA== 112 | dependencies: 113 | "@babel/types" "^7.14.5" 114 | 115 | "@babel/helper-plugin-utils@^7.14.5": 116 | version "7.14.5" 117 | resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" 118 | integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== 119 | 120 | "@babel/helper-replace-supers@^7.15.0": 121 | version "7.15.0" 122 | resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.15.0.tgz#ace07708f5bf746bf2e6ba99572cce79b5d4e7f4" 123 | integrity sha512-6O+eWrhx+HEra/uJnifCwhwMd6Bp5+ZfZeJwbqUTuqkhIT6YcRhiZCOOFChRypOIe0cV46kFrRBlm+t5vHCEaA== 124 | dependencies: 125 | "@babel/helper-member-expression-to-functions" "^7.15.0" 126 | "@babel/helper-optimise-call-expression" "^7.14.5" 127 | "@babel/traverse" "^7.15.0" 128 | "@babel/types" "^7.15.0" 129 | 130 | "@babel/helper-simple-access@^7.14.8": 131 | version "7.14.8" 132 | resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz#82e1fec0644a7e775c74d305f212c39f8fe73924" 133 | integrity sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg== 134 | dependencies: 135 | "@babel/types" "^7.14.8" 136 | 137 | "@babel/helper-split-export-declaration@^7.14.5": 138 | version "7.14.5" 139 | resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz#22b23a54ef51c2b7605d851930c1976dd0bc693a" 140 | integrity sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA== 141 | dependencies: 142 | "@babel/types" "^7.14.5" 143 | 144 | "@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.9": 145 | version "7.14.9" 146 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz#6654d171b2024f6d8ee151bf2509699919131d48" 147 | integrity sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g== 148 | 149 | "@babel/helper-validator-option@^7.14.5": 150 | version "7.14.5" 151 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" 152 | integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== 153 | 154 | "@babel/helpers@^7.14.8": 155 | version "7.14.8" 156 | resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.14.8.tgz#839f88f463025886cff7f85a35297007e2da1b77" 157 | integrity sha512-ZRDmI56pnV+p1dH6d+UN6GINGz7Krps3+270qqI9UJ4wxYThfAIcI5i7j5vXC4FJ3Wap+S9qcebxeYiqn87DZw== 158 | dependencies: 159 | "@babel/template" "^7.14.5" 160 | "@babel/traverse" "^7.14.8" 161 | "@babel/types" "^7.14.8" 162 | 163 | "@babel/highlight@^7.14.5": 164 | version "7.14.5" 165 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" 166 | integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== 167 | dependencies: 168 | "@babel/helper-validator-identifier" "^7.14.5" 169 | chalk "^2.0.0" 170 | js-tokens "^4.0.0" 171 | 172 | "@babel/parser@^7.14.5", "@babel/parser@^7.15.0": 173 | version "7.15.2" 174 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.2.tgz#08d4ffcf90d211bf77e7cc7154c6f02d468d2b1d" 175 | integrity sha512-bMJXql1Ss8lFnvr11TZDH4ArtwlAS5NG9qBmdiFW2UHHm6MVoR+GDc5XE2b9K938cyjc9O6/+vjjcffLDtfuDg== 176 | 177 | "@babel/plugin-transform-react-jsx-self@^7.14.5": 178 | version "7.14.9" 179 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.14.9.tgz#33041e665453391eb6ee54a2ecf3ba1d46bd30f4" 180 | integrity sha512-Fqqu0f8zv9W+RyOnx29BX/RlEsBRANbOf5xs5oxb2aHP4FKbLXxIaVPUiCti56LAR1IixMH4EyaixhUsKqoBHw== 181 | dependencies: 182 | "@babel/helper-plugin-utils" "^7.14.5" 183 | 184 | "@babel/plugin-transform-react-jsx-source@^7.14.5": 185 | version "7.14.5" 186 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.14.5.tgz#79f728e60e6dbd31a2b860b0bf6c9765918acf1d" 187 | integrity sha512-1TpSDnD9XR/rQ2tzunBVPThF5poaYT9GqP+of8fAtguYuI/dm2RkrMBDemsxtY0XBzvW7nXjYM0hRyKX9QYj7Q== 188 | dependencies: 189 | "@babel/helper-plugin-utils" "^7.14.5" 190 | 191 | "@babel/template@^7.14.5": 192 | version "7.14.5" 193 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.14.5.tgz#a9bc9d8b33354ff6e55a9c60d1109200a68974f4" 194 | integrity sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g== 195 | dependencies: 196 | "@babel/code-frame" "^7.14.5" 197 | "@babel/parser" "^7.14.5" 198 | "@babel/types" "^7.14.5" 199 | 200 | "@babel/traverse@^7.14.8", "@babel/traverse@^7.15.0": 201 | version "7.15.0" 202 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.15.0.tgz#4cca838fd1b2a03283c1f38e141f639d60b3fc98" 203 | integrity sha512-392d8BN0C9eVxVWd8H6x9WfipgVH5IaIoLp23334Sc1vbKKWINnvwRpb4us0xtPaCumlwbTtIYNA0Dv/32sVFw== 204 | dependencies: 205 | "@babel/code-frame" "^7.14.5" 206 | "@babel/generator" "^7.15.0" 207 | "@babel/helper-function-name" "^7.14.5" 208 | "@babel/helper-hoist-variables" "^7.14.5" 209 | "@babel/helper-split-export-declaration" "^7.14.5" 210 | "@babel/parser" "^7.15.0" 211 | "@babel/types" "^7.15.0" 212 | debug "^4.1.0" 213 | globals "^11.1.0" 214 | 215 | "@babel/types@^7.14.5", "@babel/types@^7.14.8", "@babel/types@^7.15.0": 216 | version "7.15.0" 217 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.0.tgz#61af11f2286c4e9c69ca8deb5f4375a73c72dcbd" 218 | integrity sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ== 219 | dependencies: 220 | "@babel/helper-validator-identifier" "^7.14.9" 221 | to-fast-properties "^2.0.0" 222 | 223 | "@nodelib/fs.scandir@2.1.5": 224 | version "2.1.5" 225 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" 226 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== 227 | dependencies: 228 | "@nodelib/fs.stat" "2.0.5" 229 | run-parallel "^1.1.9" 230 | 231 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": 232 | version "2.0.5" 233 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" 234 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== 235 | 236 | "@nodelib/fs.walk@^1.2.3": 237 | version "1.2.8" 238 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" 239 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== 240 | dependencies: 241 | "@nodelib/fs.scandir" "2.1.5" 242 | fastq "^1.6.0" 243 | 244 | "@rollup/pluginutils@^4.1.1": 245 | version "4.1.1" 246 | resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.1.1.tgz#1d4da86dd4eded15656a57d933fda2b9a08d47ec" 247 | integrity sha512-clDjivHqWGXi7u+0d2r2sBi4Ie6VLEAzWMIkvJLnDmxoOhBYOTfzGbOQBA32THHm11/LiJbd01tJUpJsbshSWQ== 248 | dependencies: 249 | estree-walker "^2.0.1" 250 | picomatch "^2.2.2" 251 | 252 | "@types/parse-json@^4.0.0": 253 | version "4.0.0" 254 | resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" 255 | integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== 256 | 257 | "@types/prop-types@*": 258 | version "15.7.4" 259 | resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" 260 | integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== 261 | 262 | "@types/react-dom@^17.0.0": 263 | version "17.0.9" 264 | resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.9.tgz#441a981da9d7be117042e1a6fd3dac4b30f55add" 265 | integrity sha512-wIvGxLfgpVDSAMH5utdL9Ngm5Owu0VsGmldro3ORLXV8CShrL8awVj06NuEXFQ5xyaYfdca7Sgbk/50Ri1GdPg== 266 | dependencies: 267 | "@types/react" "*" 268 | 269 | "@types/react@*", "@types/react@^17.0.0": 270 | version "17.0.16" 271 | resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.16.tgz#056f40c45645761527baeb7d89d842a6abdf285a" 272 | integrity sha512-3kCUiOOlQTwUUvjNFkbBTWMTxdTGybz/PfjCw9JmaRGcEDBQh+nGMg7/E9P2rklhJuYVd25IYLNcvqgSPCPksg== 273 | dependencies: 274 | "@types/prop-types" "*" 275 | "@types/scheduler" "*" 276 | csstype "^3.0.2" 277 | 278 | "@types/scheduler@*": 279 | version "0.16.2" 280 | resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" 281 | integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== 282 | 283 | "@types/uuid@^8.3.1": 284 | version "8.3.1" 285 | resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.1.tgz#1a32969cf8f0364b3d8c8af9cc3555b7805df14f" 286 | integrity sha512-Y2mHTRAbqfFkpjldbkHGY8JIzRN6XqYRliG8/24FcHm2D2PwW24fl5xMRTVGdrb7iMrwCaIEbLWerGIkXuFWVg== 287 | 288 | "@vitejs/plugin-react-refresh@^1.3.1": 289 | version "1.3.6" 290 | resolved "https://registry.yarnpkg.com/@vitejs/plugin-react-refresh/-/plugin-react-refresh-1.3.6.tgz#19818392db01e81746cfeb04e096ab3010e79fe3" 291 | integrity sha512-iNR/UqhUOmFFxiezt0em9CgmiJBdWR+5jGxB2FihaoJfqGt76kiwaKoVOJVU5NYcDWMdN06LbyN2VIGIoYdsEA== 292 | dependencies: 293 | "@babel/core" "^7.14.8" 294 | "@babel/plugin-transform-react-jsx-self" "^7.14.5" 295 | "@babel/plugin-transform-react-jsx-source" "^7.14.5" 296 | "@rollup/pluginutils" "^4.1.1" 297 | react-refresh "^0.10.0" 298 | 299 | acorn-node@^1.6.1: 300 | version "1.8.2" 301 | resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" 302 | integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== 303 | dependencies: 304 | acorn "^7.0.0" 305 | acorn-walk "^7.0.0" 306 | xtend "^4.0.2" 307 | 308 | acorn-walk@^7.0.0: 309 | version "7.2.0" 310 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" 311 | integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== 312 | 313 | acorn@^7.0.0: 314 | version "7.4.1" 315 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" 316 | integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== 317 | 318 | ansi-styles@^3.2.1: 319 | version "3.2.1" 320 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 321 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 322 | dependencies: 323 | color-convert "^1.9.0" 324 | 325 | ansi-styles@^4.1.0: 326 | version "4.3.0" 327 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 328 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 329 | dependencies: 330 | color-convert "^2.0.1" 331 | 332 | anymatch@~3.1.2: 333 | version "3.1.2" 334 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" 335 | integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== 336 | dependencies: 337 | normalize-path "^3.0.0" 338 | picomatch "^2.0.4" 339 | 340 | arg@^5.0.0: 341 | version "5.0.0" 342 | resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.0.tgz#a20e2bb5710e82950a516b3f933fee5ed478be90" 343 | integrity sha512-4P8Zm2H+BRS+c/xX1LrHw0qKpEhdlZjLCgWy+d78T9vqa2Z2SiD2wMrYuWIAFy5IZUD7nnNXroRttz+0RzlrzQ== 344 | 345 | autoprefixer@^10.3.1: 346 | version "10.3.1" 347 | resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.3.1.tgz#954214821d3aa06692406c6a0a9e9d401eafbed2" 348 | integrity sha512-L8AmtKzdiRyYg7BUXJTzigmhbQRCXFKz6SA1Lqo0+AR2FBbQ4aTAPFSDlOutnFkjhiz8my4agGXog1xlMjPJ6A== 349 | dependencies: 350 | browserslist "^4.16.6" 351 | caniuse-lite "^1.0.30001243" 352 | colorette "^1.2.2" 353 | fraction.js "^4.1.1" 354 | normalize-range "^0.1.2" 355 | postcss-value-parser "^4.1.0" 356 | 357 | balanced-match@^1.0.0: 358 | version "1.0.2" 359 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 360 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 361 | 362 | binary-extensions@^2.0.0: 363 | version "2.2.0" 364 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 365 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 366 | 367 | brace-expansion@^1.1.7: 368 | version "1.1.11" 369 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 370 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 371 | dependencies: 372 | balanced-match "^1.0.0" 373 | concat-map "0.0.1" 374 | 375 | braces@^3.0.1, braces@~3.0.2: 376 | version "3.0.2" 377 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 378 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 379 | dependencies: 380 | fill-range "^7.0.1" 381 | 382 | browserslist@^4.16.6: 383 | version "4.16.7" 384 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.7.tgz#108b0d1ef33c4af1b587c54f390e7041178e4335" 385 | integrity sha512-7I4qVwqZltJ7j37wObBe3SoTz+nS8APaNcrBOlgoirb6/HbEU2XxW/LpUDTCngM6iauwFqmRTuOMfyKnFGY5JA== 386 | dependencies: 387 | caniuse-lite "^1.0.30001248" 388 | colorette "^1.2.2" 389 | electron-to-chromium "^1.3.793" 390 | escalade "^3.1.1" 391 | node-releases "^1.1.73" 392 | 393 | bytes@^3.0.0: 394 | version "3.1.0" 395 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" 396 | integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== 397 | 398 | callsites@^3.0.0: 399 | version "3.1.0" 400 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 401 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 402 | 403 | camelcase-css@^2.0.1: 404 | version "2.0.1" 405 | resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" 406 | integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== 407 | 408 | caniuse-lite@^1.0.30001243, caniuse-lite@^1.0.30001248: 409 | version "1.0.30001249" 410 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001249.tgz#90a330057f8ff75bfe97a94d047d5e14fabb2ee8" 411 | integrity sha512-vcX4U8lwVXPdqzPWi6cAJ3FnQaqXbBqy/GZseKNQzRj37J7qZdGcBtxq/QLFNLLlfsoXLUdHw8Iwenri86Tagw== 412 | 413 | chalk@^2.0.0: 414 | version "2.4.2" 415 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 416 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 417 | dependencies: 418 | ansi-styles "^3.2.1" 419 | escape-string-regexp "^1.0.5" 420 | supports-color "^5.3.0" 421 | 422 | chalk@^4.1.1: 423 | version "4.1.2" 424 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 425 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 426 | dependencies: 427 | ansi-styles "^4.1.0" 428 | supports-color "^7.1.0" 429 | 430 | chokidar@^3.5.2: 431 | version "3.5.2" 432 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" 433 | integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== 434 | dependencies: 435 | anymatch "~3.1.2" 436 | braces "~3.0.2" 437 | glob-parent "~5.1.2" 438 | is-binary-path "~2.1.0" 439 | is-glob "~4.0.1" 440 | normalize-path "~3.0.0" 441 | readdirp "~3.6.0" 442 | optionalDependencies: 443 | fsevents "~2.3.2" 444 | 445 | color-convert@^1.9.0, color-convert@^1.9.3: 446 | version "1.9.3" 447 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 448 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 449 | dependencies: 450 | color-name "1.1.3" 451 | 452 | color-convert@^2.0.1: 453 | version "2.0.1" 454 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 455 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 456 | dependencies: 457 | color-name "~1.1.4" 458 | 459 | color-name@1.1.3: 460 | version "1.1.3" 461 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 462 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 463 | 464 | color-name@^1.0.0, color-name@~1.1.4: 465 | version "1.1.4" 466 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 467 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 468 | 469 | color-string@^1.6.0: 470 | version "1.6.0" 471 | resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.6.0.tgz#c3915f61fe267672cb7e1e064c9d692219f6c312" 472 | integrity sha512-c/hGS+kRWJutUBEngKKmk4iH3sD59MBkoxVapS/0wgpCz2u7XsNloxknyvBhzwEs1IbV36D9PwqLPJ2DTu3vMA== 473 | dependencies: 474 | color-name "^1.0.0" 475 | simple-swizzle "^0.2.2" 476 | 477 | color@^3.2.0: 478 | version "3.2.1" 479 | resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" 480 | integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== 481 | dependencies: 482 | color-convert "^1.9.3" 483 | color-string "^1.6.0" 484 | 485 | colorette@^1.2.2: 486 | version "1.2.2" 487 | resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" 488 | integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== 489 | 490 | commander@^6.0.0: 491 | version "6.2.1" 492 | resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" 493 | integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== 494 | 495 | concat-map@0.0.1: 496 | version "0.0.1" 497 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 498 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 499 | 500 | convert-source-map@^1.7.0: 501 | version "1.8.0" 502 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" 503 | integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== 504 | dependencies: 505 | safe-buffer "~5.1.1" 506 | 507 | cosmiconfig@^7.0.0: 508 | version "7.0.0" 509 | resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" 510 | integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== 511 | dependencies: 512 | "@types/parse-json" "^4.0.0" 513 | import-fresh "^3.2.1" 514 | parse-json "^5.0.0" 515 | path-type "^4.0.0" 516 | yaml "^1.10.0" 517 | 518 | css-unit-converter@^1.1.1: 519 | version "1.1.2" 520 | resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.2.tgz#4c77f5a1954e6dbff60695ecb214e3270436ab21" 521 | integrity sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA== 522 | 523 | cssesc@^3.0.0: 524 | version "3.0.0" 525 | resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" 526 | integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== 527 | 528 | csstype@^3.0.2: 529 | version "3.0.8" 530 | resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.8.tgz#d2266a792729fb227cd216fb572f43728e1ad340" 531 | integrity sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw== 532 | 533 | debug@^4.1.0: 534 | version "4.3.2" 535 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" 536 | integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== 537 | dependencies: 538 | ms "2.1.2" 539 | 540 | defined@^1.0.0: 541 | version "1.0.0" 542 | resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" 543 | integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= 544 | 545 | detective@^5.2.0: 546 | version "5.2.0" 547 | resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.0.tgz#feb2a77e85b904ecdea459ad897cc90a99bd2a7b" 548 | integrity sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg== 549 | dependencies: 550 | acorn-node "^1.6.1" 551 | defined "^1.0.0" 552 | minimist "^1.1.1" 553 | 554 | didyoumean@^1.2.2: 555 | version "1.2.2" 556 | resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" 557 | integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== 558 | 559 | dlv@^1.1.3: 560 | version "1.1.3" 561 | resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" 562 | integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== 563 | 564 | electron-to-chromium@^1.3.793: 565 | version "1.3.799" 566 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.799.tgz#6e9911b25e7ecd5aa1e54dcb68f82a3e02d00f09" 567 | integrity sha512-V2rbYWdGvSqrg+95KjkVuSi41bGfrhrOzjl1tSi2VLnm0mRe3FsSvhiqidSiSll9WiMhrQAhpDcW/wcqK3c+Yw== 568 | 569 | error-ex@^1.3.1: 570 | version "1.3.2" 571 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 572 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 573 | dependencies: 574 | is-arrayish "^0.2.1" 575 | 576 | esbuild@^0.12.8: 577 | version "0.12.19" 578 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.12.19.tgz#ab849766705a5093df5acd8ec2f6ba2159a38a6c" 579 | integrity sha512-5NuT1G6THW7l3fsSCDkcPepn24R0XtyPjKoqKHD8LfhqMXzCdz0mrS9HgO6hIhzVT7zt0T+JGbzCqF5AH8hS9w== 580 | 581 | escalade@^3.1.1: 582 | version "3.1.1" 583 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 584 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 585 | 586 | escape-string-regexp@^1.0.5: 587 | version "1.0.5" 588 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 589 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 590 | 591 | estree-walker@^2.0.1: 592 | version "2.0.2" 593 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" 594 | integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== 595 | 596 | fast-glob@^3.2.7: 597 | version "3.2.7" 598 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" 599 | integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== 600 | dependencies: 601 | "@nodelib/fs.stat" "^2.0.2" 602 | "@nodelib/fs.walk" "^1.2.3" 603 | glob-parent "^5.1.2" 604 | merge2 "^1.3.0" 605 | micromatch "^4.0.4" 606 | 607 | fastq@^1.6.0: 608 | version "1.11.1" 609 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.1.tgz#5d8175aae17db61947f8b162cfc7f63264d22807" 610 | integrity sha512-HOnr8Mc60eNYl1gzwp6r5RoUyAn5/glBolUzP/Ez6IFVPMPirxn/9phgL6zhOtaTy7ISwPvQ+wT+hfcRZh/bzw== 611 | dependencies: 612 | reusify "^1.0.4" 613 | 614 | fill-range@^7.0.1: 615 | version "7.0.1" 616 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 617 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 618 | dependencies: 619 | to-regex-range "^5.0.1" 620 | 621 | fraction.js@^4.1.1: 622 | version "4.1.1" 623 | resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.1.1.tgz#ac4e520473dae67012d618aab91eda09bcb400ff" 624 | integrity sha512-MHOhvvxHTfRFpF1geTK9czMIZ6xclsEor2wkIGYYq+PxcQqT7vStJqjhe6S1TenZrMZzo+wlqOufBDVepUEgPg== 625 | 626 | fs-extra@^10.0.0: 627 | version "10.0.0" 628 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1" 629 | integrity sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ== 630 | dependencies: 631 | graceful-fs "^4.2.0" 632 | jsonfile "^6.0.1" 633 | universalify "^2.0.0" 634 | 635 | fs.realpath@^1.0.0: 636 | version "1.0.0" 637 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 638 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 639 | 640 | fsevents@~2.3.2: 641 | version "2.3.2" 642 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 643 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 644 | 645 | function-bind@^1.1.1: 646 | version "1.1.1" 647 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 648 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 649 | 650 | gensync@^1.0.0-beta.2: 651 | version "1.0.0-beta.2" 652 | resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" 653 | integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== 654 | 655 | glob-parent@^5.1.2, glob-parent@~5.1.2: 656 | version "5.1.2" 657 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 658 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 659 | dependencies: 660 | is-glob "^4.0.1" 661 | 662 | glob-parent@^6.0.0: 663 | version "6.0.1" 664 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.1.tgz#42054f685eb6a44e7a7d189a96efa40a54971aa7" 665 | integrity sha512-kEVjS71mQazDBHKcsq4E9u/vUzaLcw1A8EtUeydawvIWQCJM0qQ08G1H7/XTjFUulla6XQiDOG6MXSaG0HDKog== 666 | dependencies: 667 | is-glob "^4.0.1" 668 | 669 | glob@^7.0.0, glob@^7.1.3: 670 | version "7.1.7" 671 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" 672 | integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== 673 | dependencies: 674 | fs.realpath "^1.0.0" 675 | inflight "^1.0.4" 676 | inherits "2" 677 | minimatch "^3.0.4" 678 | once "^1.3.0" 679 | path-is-absolute "^1.0.0" 680 | 681 | globals@^11.1.0: 682 | version "11.12.0" 683 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" 684 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== 685 | 686 | graceful-fs@^4.1.6, graceful-fs@^4.2.0: 687 | version "4.2.8" 688 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" 689 | integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== 690 | 691 | has-flag@^3.0.0: 692 | version "3.0.0" 693 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 694 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 695 | 696 | has-flag@^4.0.0: 697 | version "4.0.0" 698 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 699 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 700 | 701 | has@^1.0.3: 702 | version "1.0.3" 703 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 704 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 705 | dependencies: 706 | function-bind "^1.1.1" 707 | 708 | html-tags@^3.1.0: 709 | version "3.1.0" 710 | resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140" 711 | integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg== 712 | 713 | import-cwd@^3.0.0: 714 | version "3.0.0" 715 | resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-3.0.0.tgz#20845547718015126ea9b3676b7592fb8bd4cf92" 716 | integrity sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg== 717 | dependencies: 718 | import-from "^3.0.0" 719 | 720 | import-fresh@^3.2.1: 721 | version "3.3.0" 722 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 723 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 724 | dependencies: 725 | parent-module "^1.0.0" 726 | resolve-from "^4.0.0" 727 | 728 | import-from@^3.0.0: 729 | version "3.0.0" 730 | resolved "https://registry.yarnpkg.com/import-from/-/import-from-3.0.0.tgz#055cfec38cd5a27d8057ca51376d7d3bf0891966" 731 | integrity sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ== 732 | dependencies: 733 | resolve-from "^5.0.0" 734 | 735 | inflight@^1.0.4: 736 | version "1.0.6" 737 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 738 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 739 | dependencies: 740 | once "^1.3.0" 741 | wrappy "1" 742 | 743 | inherits@2: 744 | version "2.0.4" 745 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 746 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 747 | 748 | is-arrayish@^0.2.1: 749 | version "0.2.1" 750 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 751 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= 752 | 753 | is-arrayish@^0.3.1: 754 | version "0.3.2" 755 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" 756 | integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== 757 | 758 | is-binary-path@~2.1.0: 759 | version "2.1.0" 760 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 761 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 762 | dependencies: 763 | binary-extensions "^2.0.0" 764 | 765 | is-core-module@^2.2.0: 766 | version "2.5.0" 767 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.5.0.tgz#f754843617c70bfd29b7bd87327400cda5c18491" 768 | integrity sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg== 769 | dependencies: 770 | has "^1.0.3" 771 | 772 | is-extglob@^2.1.1: 773 | version "2.1.1" 774 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 775 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 776 | 777 | is-glob@^4.0.1, is-glob@~4.0.1: 778 | version "4.0.1" 779 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 780 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 781 | dependencies: 782 | is-extglob "^2.1.1" 783 | 784 | is-number@^7.0.0: 785 | version "7.0.0" 786 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 787 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 788 | 789 | "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: 790 | version "4.0.0" 791 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 792 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 793 | 794 | jsesc@^2.5.1: 795 | version "2.5.2" 796 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" 797 | integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== 798 | 799 | json-parse-even-better-errors@^2.3.0: 800 | version "2.3.1" 801 | resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" 802 | integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== 803 | 804 | json5@^2.1.2: 805 | version "2.2.0" 806 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" 807 | integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== 808 | dependencies: 809 | minimist "^1.2.5" 810 | 811 | jsonfile@^6.0.1: 812 | version "6.1.0" 813 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" 814 | integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== 815 | dependencies: 816 | universalify "^2.0.0" 817 | optionalDependencies: 818 | graceful-fs "^4.1.6" 819 | 820 | lilconfig@^2.0.3: 821 | version "2.0.3" 822 | resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.3.tgz#68f3005e921dafbd2a2afb48379986aa6d2579fd" 823 | integrity sha512-EHKqr/+ZvdKCifpNrJCKxBTgk5XupZA3y/aCPY9mxfgBzmgh93Mt/WqjjQ38oMxXuvDokaKiM3lAgvSH2sjtHg== 824 | 825 | lines-and-columns@^1.1.6: 826 | version "1.1.6" 827 | resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" 828 | integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= 829 | 830 | lodash.toarray@^4.4.0: 831 | version "4.4.0" 832 | resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" 833 | integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE= 834 | 835 | lodash.topath@^4.5.2: 836 | version "4.5.2" 837 | resolved "https://registry.yarnpkg.com/lodash.topath/-/lodash.topath-4.5.2.tgz#3616351f3bba61994a0931989660bd03254fd009" 838 | integrity sha1-NhY1Hzu6YZlKCTGYlmC9AyVP0Ak= 839 | 840 | lodash@^4.17.21: 841 | version "4.17.21" 842 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 843 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 844 | 845 | loose-envify@^1.1.0: 846 | version "1.4.0" 847 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" 848 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== 849 | dependencies: 850 | js-tokens "^3.0.0 || ^4.0.0" 851 | 852 | merge2@^1.3.0: 853 | version "1.4.1" 854 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" 855 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 856 | 857 | micromatch@^4.0.4: 858 | version "4.0.4" 859 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" 860 | integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== 861 | dependencies: 862 | braces "^3.0.1" 863 | picomatch "^2.2.3" 864 | 865 | minimatch@^3.0.4: 866 | version "3.0.4" 867 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 868 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 869 | dependencies: 870 | brace-expansion "^1.1.7" 871 | 872 | minimist@^1.1.1, minimist@^1.2.5: 873 | version "1.2.5" 874 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 875 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 876 | 877 | mobx-persist-store@^1.0.3: 878 | version "1.0.3" 879 | resolved "https://registry.yarnpkg.com/mobx-persist-store/-/mobx-persist-store-1.0.3.tgz#7965576b0c3c9a05d123d3853401b5b465f77176" 880 | integrity sha512-R6GWCtA77O2mbwKRn0iJqecNHhEMDnUv7P60SCFntz+qRtfutsTWcP56Xz9Q29nefgo1E4JnBaoqcWejMdkvNQ== 881 | 882 | mobx-react-lite@^3.2.0: 883 | version "3.2.0" 884 | resolved "https://registry.yarnpkg.com/mobx-react-lite/-/mobx-react-lite-3.2.0.tgz#331d7365a6b053378dfe9c087315b4e41c5df69f" 885 | integrity sha512-q5+UHIqYCOpBoFm/PElDuOhbcatvTllgRp3M1s+Hp5j0Z6XNgDbgqxawJ0ZAUEyKM8X1zs70PCuhAIzX1f4Q/g== 886 | 887 | mobx@^6.3.2: 888 | version "6.3.2" 889 | resolved "https://registry.yarnpkg.com/mobx/-/mobx-6.3.2.tgz#125590961f702a572c139ab69392bea416d2e51b" 890 | integrity sha512-xGPM9dIE1qkK9Nrhevp0gzpsmELKU4MFUJRORW/jqxVFIHHWIoQrjDjL8vkwoJYY3C2CeVJqgvl38hgKTalTWg== 891 | 892 | modern-normalize@^1.1.0: 893 | version "1.1.0" 894 | resolved "https://registry.yarnpkg.com/modern-normalize/-/modern-normalize-1.1.0.tgz#da8e80140d9221426bd4f725c6e11283d34f90b7" 895 | integrity sha512-2lMlY1Yc1+CUy0gw4H95uNN7vjbpoED7NNRSBHE25nWfLBdmMzFCsPshlzbxHz+gYMcBEUN8V4pU16prcdPSgA== 896 | 897 | ms@2.1.2: 898 | version "2.1.2" 899 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 900 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 901 | 902 | nanoid@^3.1.23: 903 | version "3.1.23" 904 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81" 905 | integrity sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw== 906 | 907 | node-emoji@^1.8.1: 908 | version "1.10.0" 909 | resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.10.0.tgz#8886abd25d9c7bb61802a658523d1f8d2a89b2da" 910 | integrity sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw== 911 | dependencies: 912 | lodash.toarray "^4.4.0" 913 | 914 | node-releases@^1.1.73: 915 | version "1.1.73" 916 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.73.tgz#dd4e81ddd5277ff846b80b52bb40c49edf7a7b20" 917 | integrity sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg== 918 | 919 | normalize-path@^3.0.0, normalize-path@~3.0.0: 920 | version "3.0.0" 921 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 922 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 923 | 924 | normalize-range@^0.1.2: 925 | version "0.1.2" 926 | resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" 927 | integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= 928 | 929 | object-assign@^4.1.1: 930 | version "4.1.1" 931 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 932 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 933 | 934 | object-hash@^2.2.0: 935 | version "2.2.0" 936 | resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.2.0.tgz#5ad518581eefc443bd763472b8ff2e9c2c0d54a5" 937 | integrity sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw== 938 | 939 | once@^1.3.0: 940 | version "1.4.0" 941 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 942 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 943 | dependencies: 944 | wrappy "1" 945 | 946 | parent-module@^1.0.0: 947 | version "1.0.1" 948 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 949 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 950 | dependencies: 951 | callsites "^3.0.0" 952 | 953 | parse-json@^5.0.0: 954 | version "5.2.0" 955 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" 956 | integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== 957 | dependencies: 958 | "@babel/code-frame" "^7.0.0" 959 | error-ex "^1.3.1" 960 | json-parse-even-better-errors "^2.3.0" 961 | lines-and-columns "^1.1.6" 962 | 963 | path-is-absolute@^1.0.0: 964 | version "1.0.1" 965 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 966 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 967 | 968 | path-parse@^1.0.6: 969 | version "1.0.7" 970 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 971 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 972 | 973 | path-type@^4.0.0: 974 | version "4.0.0" 975 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 976 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 977 | 978 | picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3: 979 | version "2.3.0" 980 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" 981 | integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== 982 | 983 | postcss-js@^3.0.3: 984 | version "3.0.3" 985 | resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-3.0.3.tgz#2f0bd370a2e8599d45439f6970403b5873abda33" 986 | integrity sha512-gWnoWQXKFw65Hk/mi2+WTQTHdPD5UJdDXZmX073EY/B3BWnYjO4F4t0VneTCnCGQ5E5GsCdMkzPaTXwl3r5dJw== 987 | dependencies: 988 | camelcase-css "^2.0.1" 989 | postcss "^8.1.6" 990 | 991 | postcss-load-config@^3.1.0: 992 | version "3.1.0" 993 | resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.0.tgz#d39c47091c4aec37f50272373a6a648ef5e97829" 994 | integrity sha512-ipM8Ds01ZUophjDTQYSVP70slFSYg3T0/zyfII5vzhN6V57YSxMgG5syXuwi5VtS8wSf3iL30v0uBdoIVx4Q0g== 995 | dependencies: 996 | import-cwd "^3.0.0" 997 | lilconfig "^2.0.3" 998 | yaml "^1.10.2" 999 | 1000 | postcss-nested@5.0.5: 1001 | version "5.0.5" 1002 | resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-5.0.5.tgz#f0a107d33a9fab11d7637205f5321e27223e3603" 1003 | integrity sha512-GSRXYz5bccobpTzLQZXOnSOfKl6TwVr5CyAQJUPub4nuRJSOECK5AqurxVgmtxP48p0Kc/ndY/YyS1yqldX0Ew== 1004 | dependencies: 1005 | postcss-selector-parser "^6.0.4" 1006 | 1007 | postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.6: 1008 | version "6.0.6" 1009 | resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz#2c5bba8174ac2f6981ab631a42ab0ee54af332ea" 1010 | integrity sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg== 1011 | dependencies: 1012 | cssesc "^3.0.0" 1013 | util-deprecate "^1.0.2" 1014 | 1015 | postcss-value-parser@^3.3.0: 1016 | version "3.3.1" 1017 | resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" 1018 | integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== 1019 | 1020 | postcss-value-parser@^4.1.0: 1021 | version "4.1.0" 1022 | resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" 1023 | integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== 1024 | 1025 | postcss@^8.1.6, postcss@^8.2.1, postcss@^8.3.6: 1026 | version "8.3.6" 1027 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.6.tgz#2730dd76a97969f37f53b9a6096197be311cc4ea" 1028 | integrity sha512-wG1cc/JhRgdqB6WHEuyLTedf3KIRuD0hG6ldkFEZNCjRxiC+3i6kkWUUbiJQayP28iwG35cEmAbe98585BYV0A== 1029 | dependencies: 1030 | colorette "^1.2.2" 1031 | nanoid "^3.1.23" 1032 | source-map-js "^0.6.2" 1033 | 1034 | pretty-hrtime@^1.0.3: 1035 | version "1.0.3" 1036 | resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" 1037 | integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= 1038 | 1039 | purgecss@^4.0.3: 1040 | version "4.0.3" 1041 | resolved "https://registry.yarnpkg.com/purgecss/-/purgecss-4.0.3.tgz#8147b429f9c09db719e05d64908ea8b672913742" 1042 | integrity sha512-PYOIn5ibRIP34PBU9zohUcCI09c7drPJJtTDAc0Q6QlRz2/CHQ8ywGLdE7ZhxU2VTqB7p5wkvj5Qcm05Rz3Jmw== 1043 | dependencies: 1044 | commander "^6.0.0" 1045 | glob "^7.0.0" 1046 | postcss "^8.2.1" 1047 | postcss-selector-parser "^6.0.2" 1048 | 1049 | queue-microtask@^1.2.2: 1050 | version "1.2.3" 1051 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" 1052 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== 1053 | 1054 | quick-lru@^5.1.1: 1055 | version "5.1.1" 1056 | resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" 1057 | integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== 1058 | 1059 | react-dom@^17.0.0: 1060 | version "17.0.2" 1061 | resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" 1062 | integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== 1063 | dependencies: 1064 | loose-envify "^1.1.0" 1065 | object-assign "^4.1.1" 1066 | scheduler "^0.20.2" 1067 | 1068 | react-icons@^4.2.0: 1069 | version "4.2.0" 1070 | resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-4.2.0.tgz#6dda80c8a8f338ff96a1851424d63083282630d0" 1071 | integrity sha512-rmzEDFt+AVXRzD7zDE21gcxyBizD/3NqjbX6cmViAgdqfJ2UiLer8927/QhhrXQV7dEj/1EGuOTPp7JnLYVJKQ== 1072 | 1073 | react-refresh@^0.10.0: 1074 | version "0.10.0" 1075 | resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.10.0.tgz#2f536c9660c0b9b1d500684d9e52a65e7404f7e3" 1076 | integrity sha512-PgidR3wST3dDYKr6b4pJoqQFpPGNKDSCDx4cZoshjXipw3LzO7mG1My2pwEzz2JVkF+inx3xRpDeQLFQGH/hsQ== 1077 | 1078 | react@^17.0.0: 1079 | version "17.0.2" 1080 | resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" 1081 | integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== 1082 | dependencies: 1083 | loose-envify "^1.1.0" 1084 | object-assign "^4.1.1" 1085 | 1086 | readdirp@~3.6.0: 1087 | version "3.6.0" 1088 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 1089 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 1090 | dependencies: 1091 | picomatch "^2.2.1" 1092 | 1093 | reduce-css-calc@^2.1.8: 1094 | version "2.1.8" 1095 | resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-2.1.8.tgz#7ef8761a28d614980dc0c982f772c93f7a99de03" 1096 | integrity sha512-8liAVezDmUcH+tdzoEGrhfbGcP7nOV4NkGE3a74+qqvE7nt9i4sKLGBuZNOnpI4WiGksiNPklZxva80061QiPg== 1097 | dependencies: 1098 | css-unit-converter "^1.1.1" 1099 | postcss-value-parser "^3.3.0" 1100 | 1101 | resolve-from@^4.0.0: 1102 | version "4.0.0" 1103 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 1104 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 1105 | 1106 | resolve-from@^5.0.0: 1107 | version "5.0.0" 1108 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" 1109 | integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== 1110 | 1111 | resolve@^1.20.0: 1112 | version "1.20.0" 1113 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" 1114 | integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== 1115 | dependencies: 1116 | is-core-module "^2.2.0" 1117 | path-parse "^1.0.6" 1118 | 1119 | reusify@^1.0.4: 1120 | version "1.0.4" 1121 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" 1122 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 1123 | 1124 | rimraf@^3.0.0, rimraf@^3.0.2: 1125 | version "3.0.2" 1126 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 1127 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 1128 | dependencies: 1129 | glob "^7.1.3" 1130 | 1131 | rollup@^2.38.5: 1132 | version "2.56.1" 1133 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.56.1.tgz#f29dbc04a5d532dfa904f76b62395f359506211e" 1134 | integrity sha512-KkrsNjeiTfGJMUFBi/PNfj3fnt70akqdoNXOjlzwo98uA1qrlkmgt6SGaK5OwhyDYCVnJb6jb2Xa2wbI47P4Nw== 1135 | optionalDependencies: 1136 | fsevents "~2.3.2" 1137 | 1138 | run-parallel@^1.1.9: 1139 | version "1.2.0" 1140 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" 1141 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 1142 | dependencies: 1143 | queue-microtask "^1.2.2" 1144 | 1145 | safe-buffer@~5.1.1: 1146 | version "5.1.2" 1147 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 1148 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 1149 | 1150 | scheduler@^0.20.2: 1151 | version "0.20.2" 1152 | resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" 1153 | integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== 1154 | dependencies: 1155 | loose-envify "^1.1.0" 1156 | object-assign "^4.1.1" 1157 | 1158 | semver@^6.3.0: 1159 | version "6.3.0" 1160 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 1161 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 1162 | 1163 | simple-swizzle@^0.2.2: 1164 | version "0.2.2" 1165 | resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" 1166 | integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= 1167 | dependencies: 1168 | is-arrayish "^0.3.1" 1169 | 1170 | source-map-js@^0.6.2: 1171 | version "0.6.2" 1172 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e" 1173 | integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug== 1174 | 1175 | source-map@^0.5.0: 1176 | version "0.5.7" 1177 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 1178 | integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= 1179 | 1180 | supports-color@^5.3.0: 1181 | version "5.5.0" 1182 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1183 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1184 | dependencies: 1185 | has-flag "^3.0.0" 1186 | 1187 | supports-color@^7.1.0: 1188 | version "7.2.0" 1189 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1190 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1191 | dependencies: 1192 | has-flag "^4.0.0" 1193 | 1194 | tailwindcss@^2.2.7: 1195 | version "2.2.7" 1196 | resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-2.2.7.tgz#795d07a14ef46c2dc4a1610f7f906f697daaf731" 1197 | integrity sha512-jv35rugP5j8PpzbXnsria7ZAry7Evh0KtQ4MZqNd+PhF+oIKPwJTVwe/rmfRx9cZw3W7iPZyzBmeoAoNwfJ1yg== 1198 | dependencies: 1199 | arg "^5.0.0" 1200 | bytes "^3.0.0" 1201 | chalk "^4.1.1" 1202 | chokidar "^3.5.2" 1203 | color "^3.2.0" 1204 | cosmiconfig "^7.0.0" 1205 | detective "^5.2.0" 1206 | didyoumean "^1.2.2" 1207 | dlv "^1.1.3" 1208 | fast-glob "^3.2.7" 1209 | fs-extra "^10.0.0" 1210 | glob-parent "^6.0.0" 1211 | html-tags "^3.1.0" 1212 | is-glob "^4.0.1" 1213 | lodash "^4.17.21" 1214 | lodash.topath "^4.5.2" 1215 | modern-normalize "^1.1.0" 1216 | node-emoji "^1.8.1" 1217 | normalize-path "^3.0.0" 1218 | object-hash "^2.2.0" 1219 | postcss-js "^3.0.3" 1220 | postcss-load-config "^3.1.0" 1221 | postcss-nested "5.0.5" 1222 | postcss-selector-parser "^6.0.6" 1223 | postcss-value-parser "^4.1.0" 1224 | pretty-hrtime "^1.0.3" 1225 | purgecss "^4.0.3" 1226 | quick-lru "^5.1.1" 1227 | reduce-css-calc "^2.1.8" 1228 | resolve "^1.20.0" 1229 | tmp "^0.2.1" 1230 | 1231 | tmp@^0.2.1: 1232 | version "0.2.1" 1233 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" 1234 | integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== 1235 | dependencies: 1236 | rimraf "^3.0.0" 1237 | 1238 | to-fast-properties@^2.0.0: 1239 | version "2.0.0" 1240 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 1241 | integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= 1242 | 1243 | to-regex-range@^5.0.1: 1244 | version "5.0.1" 1245 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1246 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1247 | dependencies: 1248 | is-number "^7.0.0" 1249 | 1250 | typescript@^4.3.2: 1251 | version "4.3.5" 1252 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4" 1253 | integrity sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA== 1254 | 1255 | universalify@^2.0.0: 1256 | version "2.0.0" 1257 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" 1258 | integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== 1259 | 1260 | util-deprecate@^1.0.2: 1261 | version "1.0.2" 1262 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1263 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 1264 | 1265 | uuid@^8.3.2: 1266 | version "8.3.2" 1267 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" 1268 | integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== 1269 | 1270 | vite@^2.4.4: 1271 | version "2.4.4" 1272 | resolved "https://registry.yarnpkg.com/vite/-/vite-2.4.4.tgz#8c402a07ad45f168f6eb5428bead38f3e4363e47" 1273 | integrity sha512-m1wK6pFJKmaYA6AeZIUXyiAgUAAJzVXhIMYCdZUpCaFMGps0v0IlNJtbmPvkUhVEyautalajmnW5X6NboUPsnw== 1274 | dependencies: 1275 | esbuild "^0.12.8" 1276 | postcss "^8.3.6" 1277 | resolve "^1.20.0" 1278 | rollup "^2.38.5" 1279 | optionalDependencies: 1280 | fsevents "~2.3.2" 1281 | 1282 | wrappy@1: 1283 | version "1.0.2" 1284 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1285 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1286 | 1287 | xtend@^4.0.2: 1288 | version "4.0.2" 1289 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" 1290 | integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== 1291 | 1292 | yaml@^1.10.0, yaml@^1.10.2: 1293 | version "1.10.2" 1294 | resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" 1295 | integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== 1296 | --------------------------------------------------------------------------------