diff --git a/package.json b/package.json index 4c5ebd7..a9de9e0 100644 --- a/package.json +++ b/package.json @@ -14,26 +14,29 @@ "dev": "run-p dev:*", "dev:backend": "yarn workspace backend dev", "dev:frontend": "yarn workspace frontend dev", - "build": "run-s build:common build:schema build:domain-model build:backend build:frontend", + "dev:auth-local": "yarn workspace auth-local dev", + "build": "run-s build:common build:schema build:domain-model build:backend build:frontend build:auth-local", "build:common": "yarn workspace common build", "build:schema": "yarn workspace schema build", "build:domain-model": "yarn workspace domain-model build", "build:backend": "yarn workspace backend build", "build:frontend": "yarn workspace frontend build", - "rebuild": "run-s rebuild:common rebuild:schema rebuild:domain-model rebuild:backend rebuild:frontend", + "build:auth-local": "yarn workspace auth-local build", + "rebuild": "run-s rebuild:common rebuild:schema rebuild:domain-model rebuild:backend rebuild:frontend rebuild:auth-local", "rebuild:common": "yarn workspace common rebuild", "rebuild:schema": "yarn workspace schema rebuild", "rebuild:domain-model": "yarn workspace domain-model rebuild", "rebuild:backend": "yarn workspace backend rebuild", "rebuild:frontend": "yarn workspace frontend rebuild", - "reset:backend": "run-s rebuild:common rebuild:schema rebuild:domain-model rebuild:backend", - "clean": "run-s clean:frontend clean:backend clean:schema clean:domain-model clean:common clean:modules", + "rebuild:auth-local": "yarn workspace auth-local rebuild", + "clean": "run-s clean:auth-local clean:frontend clean:backend clean:schema clean:domain-model clean:common clean:modules", "clean:modules": "rimraf node_modules", "clean:common": "yarn workspace common clean", "clean:schema": "yarn workspace schema clean", "clean:domain-model": "yarn workspace domain-model clean", "clean:backend": "yarn workspace backend clean", "clean:frontend": "yarn workspace frontend clean", + "clean:auth-local": "yarn workspace auth-local clean", "start": "run-p start:*", "start:backend": "yarn workspace backend start", "start:frontend": "yarn workspace frontend start", @@ -42,24 +45,32 @@ "lint": "eslint --fix ./src", "format": "prettier --write -l \"./src/**/*.{js,ts,graphql}\"", "test": "run-s test:*", + "test:common": "yarn workspace common test", "test:domain": "yarn workspace domain-model test", "test:backend": "yarn workspace backend test", + "test:auth-local": "yarn workspace auth-local test", "codegen": "run-s codegen:schema codegen:frontend", "codegen:schema": "yarn workspace schema codegen", "codegen:frontend": "yarn workspace frontend codegen", + "codegen:auth-local": "yarn workspace auth-local codegen", "docker:upd": "run-p docker:upd:*", "docker:upd:backend": "yarn workspace backend docker:upd", + "docker:upd:auth-local": "yarn workspace auth-local docker:upd", "docker:down": "run-p docker:down:*", "docker:down:backend": "yarn workspace backend docker:down", + "docker:down:auth-local": "yarn workspace auth-local docker:down", "db:migrate": "yarn workspace backend db:migrate", - "db:migration:generate": "yarn workspace backend db:migration:generate", - "db:seed": "yarn workspace backend db:seed", + "db:migration:generate:backend": "yarn workspace backend db:migration:generate", + "db:migration:generate:auth-local": "yarn workspace auth-local db:migration:generate", + "db:seed:backend": "yarn workspace backend db:seed", + "db:seed:auth-local": "yarn workspace auth-local db:seed", "setup": "run-s rebuild setup:domain-model setup:backend", "setup:domain-model": "yarn workspace domain-model setup", "setup:backend": "yarn workspace backend setup", "setup:env": "run-p setup:env:domain-model setup:env:backend", "setup:env:domain-model": "yarn workspace domain-model setup:env", - "setup:env:backend": "yarn workspace backend setup:env" + "setup:env:backend": "yarn workspace backend setup:env", + "setup:env:auth-local": "yarn workspace auth-local setup:env" }, "devDependencies": { "@graphql-codegen/cli": "^1.17.7", diff --git a/src/auth-local/.env.default b/src/auth-local/.env.default new file mode 100644 index 0000000..9df5cd2 --- /dev/null +++ b/src/auth-local/.env.default @@ -0,0 +1,2 @@ +JWT_SECRET="YourSecretPhrase" +JWT_EXPIRES_IN="2d" diff --git a/src/auth-local/.gitignore b/src/auth-local/.gitignore new file mode 100644 index 0000000..39e89ee --- /dev/null +++ b/src/auth-local/.gitignore @@ -0,0 +1,5 @@ +build/ +docker/db/data +.env +tsconfig.tsbuildinfo +test_db/ diff --git a/src/auth-local/codegen.yml b/src/auth-local/codegen.yml new file mode 100644 index 0000000..fcd3752 --- /dev/null +++ b/src/auth-local/codegen.yml @@ -0,0 +1,15 @@ +overwrite: true +schema: 'schema/**/*.graphql' +generates: + src/generated/resolver-types.ts: + plugins: + - typescript + - typescript-resolvers + config: + useIndexSignature: true + src/generated/schema.graphql: + plugins: + - schema-ast +config: + scalars: + DateTime: Date diff --git a/src/auth-local/docker-compose.yml b/src/auth-local/docker-compose.yml new file mode 100644 index 0000000..130a3d3 --- /dev/null +++ b/src/auth-local/docker-compose.yml @@ -0,0 +1,24 @@ +version: '3.1' + +services: + # MySQL + db: + image: mysql:5.7 + container_name: graphql_clean_dev_mysql_host_auth_local + environment: + MYSQL_ROOT_PASSWORD: root + MYSQL_DATABASE: graphql_clean_dev_auth_local + MYSQL_USER: docker + MYSQL_PASSWORD: docker + TZ: 'Asia/Tokyo' + command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci + volumes: + - mysql-data:/var/lib/mysql + - ./docker/db/my.cnf:/etc/mysql/conf.d/my.cnf + - ./docker/db/sql:/docker-entrypoint-initdb.d + ports: + - 3306:3306 + +volumes: + mysql-data: + driver: local diff --git a/src/auth-local/docker/db/my.cnf b/src/auth-local/docker/db/my.cnf new file mode 100644 index 0000000..a3d52d7 --- /dev/null +++ b/src/auth-local/docker/db/my.cnf @@ -0,0 +1,6 @@ +[mysqld] +character-set-server=utf8mb4 +collation-server=utf8mb4_unicode_ci + +[client] +default-character-set=utf8mb4 diff --git a/src/auth-local/docker/wait-mysql.ts b/src/auth-local/docker/wait-mysql.ts new file mode 100644 index 0000000..3b64f92 --- /dev/null +++ b/src/auth-local/docker/wait-mysql.ts @@ -0,0 +1,44 @@ +import 'reflect-metadata'; +import { Connection, createConnection } from 'typeorm'; + +const sleep = async (ms: number) => + new Promise((resolve) => { + setTimeout(() => { + resolve(); + }, ms); + }); + +const createDbConnection = async () => { + return createConnection({ + type: 'mysql', + host: '127.0.0.1', + port: 3306, + username: 'docker', + password: 'docker', + database: 'graphql_clean_dev_auth_local', + synchronize: false, + logging: false, + }); +}; + +const waitConnection = async () => { + let count = 30; + let dbConnection: Connection | undefined; + + while (count > 0) { + --count; + try { + dbConnection = await createDbConnection(); + } catch (e) { + await sleep(1000); + continue; + } + + if (dbConnection?.isConnected) break; + await sleep(1000); + } + + process.exit(); +}; + +waitConnection(); diff --git a/src/auth-local/jest.config.js b/src/auth-local/jest.config.js new file mode 100644 index 0000000..5459067 --- /dev/null +++ b/src/auth-local/jest.config.js @@ -0,0 +1,12 @@ +module.exports = { + moduleFileExtensions: ['ts', 'tsx', 'js'], + transform: { + '^.+\\.(ts|tsx)$': 'ts-jest', + }, + globals: { + 'ts-jest': { + tsConfig: 'tsconfig.json', + }, + }, + testMatch: ['**/__tests__/*.+(ts|tsx|js)'], +}; diff --git a/src/auth-local/ormconfig.json b/src/auth-local/ormconfig.json new file mode 100644 index 0000000..8b79cc8 --- /dev/null +++ b/src/auth-local/ormconfig.json @@ -0,0 +1,16 @@ +{ + "type": "mysql", + "host": "127.0.0.1", + "port": 3306, + "username": "docker", + "password": "docker", + "database": "graphql_clean_dev_auth_local", + "synchronize": false, + "logging": false, + "entities": ["src/repository/typeorm/**/entity/*.ts"], + "migrations": ["src/infrastructure/typeorm/migration/**/*.ts"], + "subscribers": ["src/infrastructure/typeorm/subscriber/**/*.ts"], + "cli": { + "migrationsDir": "src/infrastructure/typeorm/migration" + } +} diff --git a/src/auth-local/package.json b/src/auth-local/package.json new file mode 100644 index 0000000..616463d --- /dev/null +++ b/src/auth-local/package.json @@ -0,0 +1,66 @@ +{ + "name": "auth-local", + "version": "1.0.0", + "main": "index.js", + "author": "suzukalight ", + "license": "MIT", + "scripts": { + "dev": "ts-node-dev ./src/index.ts", + "build": "tsc -b", + "rebuild": "run-s clean reinstall build", + "clean": "run-p clean:*", + "clean:build": "rimraf build", + "clean:modules": "rimraf node_modules", + "clean:test_db": "rimraf test_db", + "reinstall": "yarn install", + "start": "node build/index.js", + "test": "env-cmd -f .env.default jest", + "test:watch": "yarn test --watch", + "test:cov": "run-s test:cov:run test:cov:open", + "test:cov:run": "yarn test --coverage", + "test:cov:open": "npx http-server -o ./coverage/lcov-report", + "test:cov:watch": "yarn test --coverage --watch", + "docker:up": "docker-compose up", + "docker:upd": "docker-compose up -d", + "docker:down": "docker-compose down", + "docker:down:rmi": "docker-compose down --rmi all --volumes --remove-orphans", + "typeorm": "node --require ts-node/register ../../node_modules/typeorm/cli.js", + "db:migrate": "yarn typeorm migration:run", + "db:migrate:revert": "yarn typeorm migration:revert", + "db:migration:generate": "yarn typeorm migration:generate -n", + "db:seed": "ts-node ./src/infrastructure/typeorm/seeder/index.ts", + "setup": "run-s setup:env docker:upd setup:wait:mysql db:migrate db:seed", + "setup:env": "node -e \"require('fs').copyFileSync('./.env.default', './.env')\"", + "setup:wait:mysql": "node --require ts-node/register ./docker/wait-mysql.ts", + "codegen": "graphql-codegen --config codegen.yml" + }, + "dependencies": { + "@graphql-tools/graphql-file-loader": "^6.0.16", + "@graphql-tools/load": "^6.0.16", + "@graphql-tools/schema": "^6.0.16", + "apollo-server": "^2.18.2", + "apollo-server-express": "^2.18.2", + "common": "file:../common", + "cors": "^2.8.5", + "date-fns": "^2.16.1", + "dotenv": "^8.2.0", + "express": "^4.17.1", + "graphql": "^15.3.0", + "graphql-scalars": "^1.2.6", + "mysql2": "^2.1.0", + "reflect-metadata": "^0.1.13", + "sqlite3": "^5.0.0", + "typeorm": "^0.2.25", + "uuid": "^8.3.1" + }, + "devDependencies": { + "@types/bluebird": "^3.5.32", + "@types/graphql-resolvers": "^0.3.0", + "@types/node": "^14.0.27", + "@types/uuid": "^8.3.0", + "apollo-server-testing": "^2.18.2", + "ts-node": "^8.10.2", + "ts-node-dev": "^1.0.0-pre.56", + "typescript": "^3.9.7" + } +} diff --git a/src/domain-model/src/entity/auth/AuthEmailPasswordDto.ts b/src/auth-local/src/entity/auth/AuthEmailPasswordDto.ts similarity index 76% rename from src/domain-model/src/entity/auth/AuthEmailPasswordDto.ts rename to src/auth-local/src/entity/auth/AuthEmailPasswordDto.ts index 2ad1255..d5b3937 100644 --- a/src/domain-model/src/entity/auth/AuthEmailPasswordDto.ts +++ b/src/auth-local/src/entity/auth/AuthEmailPasswordDto.ts @@ -1,7 +1,5 @@ -import { PropertyRequiredError } from 'common'; +import { PropertyRequiredError, denyIllegalEmail, denyIllegalPassword } from 'common'; -import { denyIllegalEmail } from '../common/Email'; -import { denyIllegalPassword } from '../common/Password'; import { TimeStampTypes, denyDoesNotHaveRequiredProperties } from '../utils'; export type AuthEmailPasswordDto = { diff --git a/src/domain-model/src/entity/auth/AuthEmailPasswordEntity.ts b/src/auth-local/src/entity/auth/AuthEmailPasswordEntity.ts similarity index 83% rename from src/domain-model/src/entity/auth/AuthEmailPasswordEntity.ts rename to src/auth-local/src/entity/auth/AuthEmailPasswordEntity.ts index 22d84cf..3401ac8 100644 --- a/src/domain-model/src/entity/auth/AuthEmailPasswordEntity.ts +++ b/src/auth-local/src/entity/auth/AuthEmailPasswordEntity.ts @@ -1,7 +1,6 @@ +import { Email, Password, ID } from 'common'; + import { AuthEmailPasswordDto, denyIllegalAuthEmailPasswordDto } from './AuthEmailPasswordDto'; -import { Email } from '../common/Email'; -import { Password } from '../common/Password'; -import { ID } from '../common/ID'; export class AuthEmailPasswordEntity { private email: Email; diff --git a/src/domain-model/src/entity/auth/__tests__/index.ts b/src/auth-local/src/entity/auth/__tests__/AuthEmailPasswordEntity.ts similarity index 94% rename from src/domain-model/src/entity/auth/__tests__/index.ts rename to src/auth-local/src/entity/auth/__tests__/AuthEmailPasswordEntity.ts index b98bbaa..8e2d2e0 100644 --- a/src/domain-model/src/entity/auth/__tests__/index.ts +++ b/src/auth-local/src/entity/auth/__tests__/AuthEmailPasswordEntity.ts @@ -1,8 +1,7 @@ -import { IllegalArgumentError, PropertyRequiredError } from 'common'; +import { IllegalArgumentError, PropertyRequiredError, encryptPassword } from 'common'; import { AuthEmailPasswordDto } from '../AuthEmailPasswordDto'; import { AuthEmailPasswordEntity } from '../AuthEmailPasswordEntity'; -import { encryptPassword } from '../../common/Password'; describe('AuthEmailPasswordEntity', () => { const password = 'pass1234'; diff --git a/src/domain-model/src/entity/auth/index.ts b/src/auth-local/src/entity/auth/index.ts similarity index 100% rename from src/domain-model/src/entity/auth/index.ts rename to src/auth-local/src/entity/auth/index.ts diff --git a/src/auth-local/src/entity/utils.ts b/src/auth-local/src/entity/utils.ts new file mode 100644 index 0000000..7449693 --- /dev/null +++ b/src/auth-local/src/entity/utils.ts @@ -0,0 +1,14 @@ +import { PropertyRequiredError } from 'common'; + +export type TimeStampTypes = { + createdAt?: Date | null; + updatedAt?: Date | null; + deletedAt?: Date | null; +}; + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export const denyDoesNotHaveRequiredProperties = (entity: any, properties: string[]) => { + properties.forEach((prop) => { + if (!(prop in entity)) throw new PropertyRequiredError(prop); + }); +}; diff --git a/src/auth-local/src/generated/resolver-types.ts b/src/auth-local/src/generated/resolver-types.ts new file mode 100644 index 0000000..9c75535 --- /dev/null +++ b/src/auth-local/src/generated/resolver-types.ts @@ -0,0 +1,221 @@ +import { GraphQLResolveInfo, GraphQLScalarType, GraphQLScalarTypeConfig } from 'graphql'; +export type Maybe = T | null; +export type Exact = { [K in keyof T]: T[K] }; +export type RequireFields = { [X in Exclude]?: T[X] } & { [P in K]-?: NonNullable }; +/** All built-in and custom scalars, mapped to their actual values */ +export type Scalars = { + ID: string; + String: string; + Boolean: boolean; + Int: number; + Float: number; + DateTime: Date; +}; + + +export type SignUpEmailPasswordRequest = { + email: Scalars['String']; + password: Scalars['String']; +}; + +export type SignUpEmailPasswordResponse = { + __typename?: 'SignUpEmailPasswordResponse'; + userId?: Maybe; + token: Scalars['String']; +}; + +export type SignInEmailPasswordRequest = { + email: Scalars['String']; + password: Scalars['String']; +}; + +export type SignInEmailPasswordResponse = { + __typename?: 'SignInEmailPasswordResponse'; + userId: Scalars['String']; + token: Scalars['String']; +}; + +export type Mutation = { + __typename?: 'Mutation'; + signUpEmailPassword?: Maybe; + signInEmailPassword?: Maybe; +}; + + +export type MutationSignUpEmailPasswordArgs = { + input?: Maybe; +}; + + +export type MutationSignInEmailPasswordArgs = { + input?: Maybe; +}; + +export enum OrderBy { + Asc = 'ASC', + Desc = 'DESC' +} + +export type PagingInput = { + cursor?: Maybe; + skip?: Maybe; + take?: Maybe; +}; + +export type PageInfo = { + __typename?: 'PageInfo'; + totalCount?: Maybe; + hasNextPage?: Maybe; + endCursor?: Maybe; +}; + +export type WithIndex = TObject & Record; +export type ResolversObject = WithIndex; + +export type ResolverTypeWrapper = Promise | T; + + +export type LegacyStitchingResolver = { + fragment: string; + resolve: ResolverFn; +}; + +export type NewStitchingResolver = { + selectionSet: string; + resolve: ResolverFn; +}; +export type StitchingResolver = LegacyStitchingResolver | NewStitchingResolver; +export type Resolver = + | ResolverFn + | StitchingResolver; + +export type ResolverFn = ( + parent: TParent, + args: TArgs, + context: TContext, + info: GraphQLResolveInfo +) => Promise | TResult; + +export type SubscriptionSubscribeFn = ( + parent: TParent, + args: TArgs, + context: TContext, + info: GraphQLResolveInfo +) => AsyncIterator | Promise>; + +export type SubscriptionResolveFn = ( + parent: TParent, + args: TArgs, + context: TContext, + info: GraphQLResolveInfo +) => TResult | Promise; + +export interface SubscriptionSubscriberObject { + subscribe: SubscriptionSubscribeFn<{ [key in TKey]: TResult }, TParent, TContext, TArgs>; + resolve?: SubscriptionResolveFn; +} + +export interface SubscriptionResolverObject { + subscribe: SubscriptionSubscribeFn; + resolve: SubscriptionResolveFn; +} + +export type SubscriptionObject = + | SubscriptionSubscriberObject + | SubscriptionResolverObject; + +export type SubscriptionResolver = + | ((...args: any[]) => SubscriptionObject) + | SubscriptionObject; + +export type TypeResolveFn = ( + parent: TParent, + context: TContext, + info: GraphQLResolveInfo +) => Maybe | Promise>; + +export type IsTypeOfResolverFn = (obj: T, info: GraphQLResolveInfo) => boolean | Promise; + +export type NextResolverFn = () => Promise; + +export type DirectiveResolverFn = ( + next: NextResolverFn, + parent: TParent, + args: TArgs, + context: TContext, + info: GraphQLResolveInfo +) => TResult | Promise; + +/** Mapping between all available schema types and the resolvers types */ +export type ResolversTypes = ResolversObject<{ + DateTime: ResolverTypeWrapper; + SignUpEmailPasswordRequest: SignUpEmailPasswordRequest; + String: ResolverTypeWrapper; + SignUpEmailPasswordResponse: ResolverTypeWrapper; + SignInEmailPasswordRequest: SignInEmailPasswordRequest; + SignInEmailPasswordResponse: ResolverTypeWrapper; + Mutation: ResolverTypeWrapper<{}>; + OrderBy: OrderBy; + PagingInput: PagingInput; + Int: ResolverTypeWrapper; + PageInfo: ResolverTypeWrapper; + Boolean: ResolverTypeWrapper; +}>; + +/** Mapping between all available schema types and the resolvers parents */ +export type ResolversParentTypes = ResolversObject<{ + DateTime: Scalars['DateTime']; + SignUpEmailPasswordRequest: SignUpEmailPasswordRequest; + String: Scalars['String']; + SignUpEmailPasswordResponse: SignUpEmailPasswordResponse; + SignInEmailPasswordRequest: SignInEmailPasswordRequest; + SignInEmailPasswordResponse: SignInEmailPasswordResponse; + Mutation: {}; + PagingInput: PagingInput; + Int: Scalars['Int']; + PageInfo: PageInfo; + Boolean: Scalars['Boolean']; +}>; + +export interface DateTimeScalarConfig extends GraphQLScalarTypeConfig { + name: 'DateTime'; +} + +export type SignUpEmailPasswordResponseResolvers = ResolversObject<{ + userId?: Resolver, ParentType, ContextType>; + token?: Resolver; + __isTypeOf?: IsTypeOfResolverFn; +}>; + +export type SignInEmailPasswordResponseResolvers = ResolversObject<{ + userId?: Resolver; + token?: Resolver; + __isTypeOf?: IsTypeOfResolverFn; +}>; + +export type MutationResolvers = ResolversObject<{ + signUpEmailPassword?: Resolver, ParentType, ContextType, RequireFields>; + signInEmailPassword?: Resolver, ParentType, ContextType, RequireFields>; +}>; + +export type PageInfoResolvers = ResolversObject<{ + totalCount?: Resolver, ParentType, ContextType>; + hasNextPage?: Resolver, ParentType, ContextType>; + endCursor?: Resolver, ParentType, ContextType>; + __isTypeOf?: IsTypeOfResolverFn; +}>; + +export type Resolvers = ResolversObject<{ + DateTime?: GraphQLScalarType; + SignUpEmailPasswordResponse?: SignUpEmailPasswordResponseResolvers; + SignInEmailPasswordResponse?: SignInEmailPasswordResponseResolvers; + Mutation?: MutationResolvers; + PageInfo?: PageInfoResolvers; +}>; + + +/** + * @deprecated + * Use "Resolvers" root object instead. If you wish to get "IResolvers", add "typesPrefix: I" to your config. + */ +export type IResolvers = Resolvers; diff --git a/src/auth-local/src/generated/schema.graphql b/src/auth-local/src/generated/schema.graphql new file mode 100644 index 0000000..fc867c9 --- /dev/null +++ b/src/auth-local/src/generated/schema.graphql @@ -0,0 +1,43 @@ +scalar DateTime + +input SignUpEmailPasswordRequest { + email: String! + password: String! +} + +type SignUpEmailPasswordResponse { + userId: String + token: String! +} + +input SignInEmailPasswordRequest { + email: String! + password: String! +} + +type SignInEmailPasswordResponse { + userId: String! + token: String! +} + +type Mutation { + signUpEmailPassword(input: SignUpEmailPasswordRequest): SignUpEmailPasswordResponse + signInEmailPassword(input: SignInEmailPasswordRequest): SignInEmailPasswordResponse +} + +enum OrderBy { + ASC + DESC +} + +input PagingInput { + cursor: String + skip: Int + take: Int +} + +type PageInfo { + totalCount: Int + hasNextPage: Boolean + endCursor: String +} diff --git a/src/auth-local/src/infrastructure/apollo-server/index.ts b/src/auth-local/src/infrastructure/apollo-server/index.ts new file mode 100644 index 0000000..735df86 --- /dev/null +++ b/src/auth-local/src/infrastructure/apollo-server/index.ts @@ -0,0 +1,55 @@ +import dotenv from 'dotenv'; +import { Express, Request } from 'express'; +import path from 'path'; +import { Server } from 'http'; +import { ApolloServer } from 'apollo-server-express'; +import { loadSchemaSync } from '@graphql-tools/load'; +import { GraphQLFileLoader } from '@graphql-tools/graphql-file-loader'; +import { addResolversToSchema } from '@graphql-tools/schema'; +import { Connection } from 'typeorm'; + +import { ApolloServerContext } from './types'; +import { resolvers } from './resolvers'; + +dotenv.config(); + +/** + * リクエストごとのコンテキスト情報を生成 + * @param req Express Request + * @param dbConnection TypeORM Connection + */ +const getContext = async ( + _req: Request, + dbConnection: Connection, +): Promise => ({ dbConnection }); + +/** + * サーバをセットアップ + * @param dbConnection TypeORM Connection + * @param expressApp Express app instance + * @param httpServer http.Server instance + */ +export const createApolloServer = async ( + dbConnection: Connection, + expressApp: Express, + httpServer: Server, +): Promise => { + // Configure GraphQL Server + const schema = loadSchemaSync(path.join(__dirname, '../../../../schema/schema.graphql'), { + loaders: [new GraphQLFileLoader()], + }); + const schemaWithResolvers = addResolversToSchema({ + schema, + resolvers, + }); + + // Create GraphQL Server and Apply to Express + const server = new ApolloServer({ + schema: schemaWithResolvers, + context: ({ req }) => getContext(req, dbConnection), + }); + server.applyMiddleware({ app: expressApp, path: '/graphql' }); + server.installSubscriptionHandlers(httpServer); + + return server; +}; diff --git a/src/auth-local/src/infrastructure/apollo-server/resolvers/index.ts b/src/auth-local/src/infrastructure/apollo-server/resolvers/index.ts new file mode 100644 index 0000000..41215a8 --- /dev/null +++ b/src/auth-local/src/infrastructure/apollo-server/resolvers/index.ts @@ -0,0 +1,13 @@ +import { DateTimeResolver } from 'graphql-scalars'; + +import { Resolvers } from '../../../generated/resolver-types'; +// import * as Entities from './entity'; +// import { Query } from './query'; +import { Mutation } from './mutation'; + +export const resolvers: Resolvers = { + DateTime: DateTimeResolver, + // ...Entities, + // Query, + Mutation, +}; diff --git a/src/backend/src/infrastructure/apollo-server/resolvers/mutation/Auth/index.ts b/src/auth-local/src/infrastructure/apollo-server/resolvers/mutation/Auth/index.ts similarity index 79% rename from src/backend/src/infrastructure/apollo-server/resolvers/mutation/Auth/index.ts rename to src/auth-local/src/infrastructure/apollo-server/resolvers/mutation/Auth/index.ts index 94bd363..e8bdbd5 100644 --- a/src/backend/src/infrastructure/apollo-server/resolvers/mutation/Auth/index.ts +++ b/src/auth-local/src/infrastructure/apollo-server/resolvers/mutation/Auth/index.ts @@ -1,5 +1,4 @@ -import { MutationResolvers } from 'schema'; - +import { MutationResolvers } from '../../../../../generated/resolver-types'; import { ApolloServerContext } from '../../../types'; import { signInEmailPassword } from './signInEmailPassword'; import { signUpEmailPassword } from './signUpEmailPassword'; diff --git a/src/backend/src/infrastructure/apollo-server/resolvers/mutation/Auth/signInEmailPassword.ts b/src/auth-local/src/infrastructure/apollo-server/resolvers/mutation/Auth/signInEmailPassword.ts similarity index 70% rename from src/backend/src/infrastructure/apollo-server/resolvers/mutation/Auth/signInEmailPassword.ts rename to src/auth-local/src/infrastructure/apollo-server/resolvers/mutation/Auth/signInEmailPassword.ts index 62f4532..c92a9f7 100644 --- a/src/backend/src/infrastructure/apollo-server/resolvers/mutation/Auth/signInEmailPassword.ts +++ b/src/auth-local/src/infrastructure/apollo-server/resolvers/mutation/Auth/signInEmailPassword.ts @@ -1,17 +1,14 @@ -import { MutationResolvers } from 'schema'; -import { SignInEmailPasswordInteractor } from 'domain-model'; - +import { MutationResolvers } from '../../../../../generated/resolver-types'; +import { SignInEmailPasswordInteractor } from '../../../../../usecase/auth/SignInEmailPassword'; import { ApolloServerContext } from '../../../types'; -import { GqlUserRepository } from '../../../../../repository/typeorm/user/repository/User'; import { GqlAuthEmailPasswordRepository } from '../../../../../repository/typeorm/auth/repository/AuthEmailPassword'; import { GqlSignInEmailPasswordPresenter } from '../../../../../presenter/auth/SignInEmailPassword'; export const signInEmailPassword: MutationResolvers = { signInEmailPassword: async (_parent, args, { dbConnection }) => { - const userRepository = new GqlUserRepository(dbConnection); const authRepository = new GqlAuthEmailPasswordRepository(dbConnection); const presenter = new GqlSignInEmailPasswordPresenter(); - const usecase = new SignInEmailPasswordInteractor(authRepository, userRepository, presenter); + const usecase = new SignInEmailPasswordInteractor(authRepository, presenter); await usecase.handle(args.input!); diff --git a/src/backend/src/infrastructure/apollo-server/resolvers/mutation/Auth/signUpEmailPassword.ts b/src/auth-local/src/infrastructure/apollo-server/resolvers/mutation/Auth/signUpEmailPassword.ts similarity index 70% rename from src/backend/src/infrastructure/apollo-server/resolvers/mutation/Auth/signUpEmailPassword.ts rename to src/auth-local/src/infrastructure/apollo-server/resolvers/mutation/Auth/signUpEmailPassword.ts index 51e3e7e..c847eae 100644 --- a/src/backend/src/infrastructure/apollo-server/resolvers/mutation/Auth/signUpEmailPassword.ts +++ b/src/auth-local/src/infrastructure/apollo-server/resolvers/mutation/Auth/signUpEmailPassword.ts @@ -1,17 +1,14 @@ -import { MutationResolvers } from 'schema'; -import { SignUpEmailPasswordInteractor } from 'domain-model'; - +import { MutationResolvers } from '../../../../../generated/resolver-types'; +import { SignUpEmailPasswordInteractor } from '../../../../../usecase/auth/SignUpEmailPassword'; import { ApolloServerContext } from '../../../types'; -import { GqlUserRepository } from '../../../../../repository/typeorm/user/repository/User'; import { GqlAuthEmailPasswordRepository } from '../../../../../repository/typeorm/auth/repository/AuthEmailPassword'; import { GqlSignUpEmailPasswordPresenter } from '../../../../../presenter/auth/SignUpEmailPassword'; export const signUpEmailPassword: MutationResolvers = { signUpEmailPassword: async (_parent, args, { dbConnection }) => { - const userRepository = new GqlUserRepository(dbConnection); const authRepository = new GqlAuthEmailPasswordRepository(dbConnection); const presenter = new GqlSignUpEmailPasswordPresenter(); - const usecase = new SignUpEmailPasswordInteractor(authRepository, userRepository, presenter); + const usecase = new SignUpEmailPasswordInteractor(authRepository, presenter); await usecase.handle(args.input!); return presenter.getResponse(); diff --git a/src/auth-local/src/infrastructure/apollo-server/resolvers/mutation/index.ts b/src/auth-local/src/infrastructure/apollo-server/resolvers/mutation/index.ts new file mode 100644 index 0000000..e6556ea --- /dev/null +++ b/src/auth-local/src/infrastructure/apollo-server/resolvers/mutation/index.ts @@ -0,0 +1,6 @@ +import { MutationResolvers } from '../../../../generated/resolver-types'; +import { Auth } from './Auth'; + +export const Mutation: MutationResolvers = { + ...Auth, +}; diff --git a/src/auth-local/src/infrastructure/apollo-server/types.ts b/src/auth-local/src/infrastructure/apollo-server/types.ts new file mode 100644 index 0000000..1b04f25 --- /dev/null +++ b/src/auth-local/src/infrastructure/apollo-server/types.ts @@ -0,0 +1,5 @@ +import { Connection } from 'typeorm'; + +export interface ApolloServerContext { + dbConnection: Connection; +} diff --git a/src/auth-local/src/infrastructure/express/index.ts b/src/auth-local/src/infrastructure/express/index.ts new file mode 100644 index 0000000..3e676e2 --- /dev/null +++ b/src/auth-local/src/infrastructure/express/index.ts @@ -0,0 +1,28 @@ +import express, { Express } from 'express'; +import cors from 'cors'; +import http from 'http'; + +export const createExpressApp = (): Express => { + // Create Express app instance + const app = express(); + + // Configure Express App + app.use(cors()); + + return app; +}; + +export const createHttpServer = (app: Express): http.Server => { + // Create HTTP Server + const httpServer = http.createServer(app); + + return httpServer; +}; + +export const runHttpServer = (httpServer: http.Server) => { + // Run server and listen http request + const port = 3010; + httpServer.listen({ port }, () => { + console.log(`Apollo Server on http://localhost:${port}/graphql`); + }); +}; diff --git a/src/auth-local/src/infrastructure/typeorm/connection.ts b/src/auth-local/src/infrastructure/typeorm/connection.ts new file mode 100644 index 0000000..16748fd --- /dev/null +++ b/src/auth-local/src/infrastructure/typeorm/connection.ts @@ -0,0 +1,18 @@ +import 'reflect-metadata'; +import { createConnection } from 'typeorm'; + +import { AuthEmailPassword } from '../../repository/typeorm/auth/entity/AuthEmailPassword'; + +export const createDbConnection = async () => { + return createConnection({ + type: 'mysql', + host: '127.0.0.1', + port: 3306, + username: 'docker', + password: 'docker', + database: 'graphql_clean_dev_auth_local', + entities: [AuthEmailPassword], + synchronize: false, + logging: false, + }); +}; diff --git a/src/backend/src/infrastructure/typeorm/seeder/Auth.ts b/src/auth-local/src/infrastructure/typeorm/seeder/Auth.ts similarity index 67% rename from src/backend/src/infrastructure/typeorm/seeder/Auth.ts rename to src/auth-local/src/infrastructure/typeorm/seeder/Auth.ts index 2b47003..5cb1043 100644 --- a/src/backend/src/infrastructure/typeorm/seeder/Auth.ts +++ b/src/auth-local/src/infrastructure/typeorm/seeder/Auth.ts @@ -1,5 +1,5 @@ import { Connection } from 'typeorm'; -import { UserEntity, encryptPassword } from 'domain-model'; +import { encryptPassword } from 'common'; import { GqlAuthEmailPasswordRepository } from '../../../repository/typeorm/auth/repository/AuthEmailPassword'; @@ -8,12 +8,12 @@ import { GqlAuthEmailPasswordRepository } from '../../../repository/typeorm/auth * @param dbConnection * @param user */ -export const seedAuth = async (dbConnection: Connection, user: UserEntity) => { +export const seedAuth = async (dbConnection: Connection, userId: string, email: string) => { const repository = new GqlAuthEmailPasswordRepository(dbConnection); const auth = { - userId: user.getId().toString(), - email: user.getEmail().toString(), + userId, + email, passwordEncrypted: await encryptPassword('password1234'), }; return repository.create(auth); diff --git a/src/auth-local/src/infrastructure/typeorm/seeder/index.ts b/src/auth-local/src/infrastructure/typeorm/seeder/index.ts new file mode 100644 index 0000000..f631fb1 --- /dev/null +++ b/src/auth-local/src/infrastructure/typeorm/seeder/index.ts @@ -0,0 +1,13 @@ +import { seedAll } from './seedAll'; + +import { createDbConnection } from '../connection'; + +const runSeedAll = async () => { + const dbConnection = await createDbConnection(); + + await seedAll(dbConnection); + + process.exit(); +}; + +runSeedAll(); diff --git a/src/auth-local/src/infrastructure/typeorm/seeder/seedAll.ts b/src/auth-local/src/infrastructure/typeorm/seeder/seedAll.ts new file mode 100644 index 0000000..383e70c --- /dev/null +++ b/src/auth-local/src/infrastructure/typeorm/seeder/seedAll.ts @@ -0,0 +1,9 @@ +import { Connection } from 'typeorm'; + +import { seedAuth } from './Auth'; + +export const seedAll = async (dbConnection: Connection) => { + await seedAuth(dbConnection, '1', 'admin@email.com'); + await seedAuth(dbConnection, '2', 'member@email.com'); + await seedAuth(dbConnection, '3', 'anonymous@email.com'); +}; diff --git a/src/backend/src/repository/typeorm/auth/entity/AuthEmailPassword.ts b/src/auth-local/src/repository/typeorm/auth/entity/AuthEmailPassword.ts similarity index 84% rename from src/backend/src/repository/typeorm/auth/entity/AuthEmailPassword.ts rename to src/auth-local/src/repository/typeorm/auth/entity/AuthEmailPassword.ts index 7615806..8b118ee 100644 --- a/src/backend/src/repository/typeorm/auth/entity/AuthEmailPassword.ts +++ b/src/auth-local/src/repository/typeorm/auth/entity/AuthEmailPassword.ts @@ -4,11 +4,10 @@ import { PrimaryGeneratedColumn, CreateDateColumn, UpdateDateColumn, - JoinColumn, } from 'typeorm'; -import { AuthEmailPasswordEntity, AuthEmailPasswordDto } from 'domain-model'; -import { User } from '../../user/entity/User'; +import { AuthEmailPasswordDto } from '../../../../entity/auth/AuthEmailPasswordDto'; +import { AuthEmailPasswordEntity } from '../../../../entity/auth/AuthEmailPasswordEntity'; @Entity('authEmailPasswords') export class AuthEmailPassword { @@ -18,9 +17,6 @@ export class AuthEmailPassword { @Column() userId: number; - @JoinColumn({ name: 'userId' }) - user?: User; - @Column() email: string; diff --git a/src/backend/src/repository/typeorm/auth/repository/AuthEmailPassword.ts b/src/auth-local/src/repository/typeorm/auth/repository/AuthEmailPassword.ts similarity index 85% rename from src/backend/src/repository/typeorm/auth/repository/AuthEmailPassword.ts rename to src/auth-local/src/repository/typeorm/auth/repository/AuthEmailPassword.ts index 27d180f..b18d86e 100644 --- a/src/backend/src/repository/typeorm/auth/repository/AuthEmailPassword.ts +++ b/src/auth-local/src/repository/typeorm/auth/repository/AuthEmailPassword.ts @@ -1,6 +1,7 @@ import { Connection, Repository } from 'typeorm'; -import { AuthEmailPasswordRepository, AuthEmailPasswordDto } from 'domain-model'; +import { AuthEmailPasswordDto } from '../../../../entity/auth/AuthEmailPasswordDto'; +import { AuthEmailPasswordRepository } from '../../../../usecase/auth/interface/repository'; import { AuthEmailPassword as OrmAuthEmailPassword, OrmAuthEmailPasswordFactory, diff --git a/src/domain-model/src/usecase/auth/SignInEmailPassword.ts b/src/auth-local/src/usecase/auth/SignInEmailPassword.ts similarity index 74% rename from src/domain-model/src/usecase/auth/SignInEmailPassword.ts rename to src/auth-local/src/usecase/auth/SignInEmailPassword.ts index db01abc..3e3901f 100644 --- a/src/domain-model/src/usecase/auth/SignInEmailPassword.ts +++ b/src/auth-local/src/usecase/auth/SignInEmailPassword.ts @@ -5,49 +5,38 @@ import { NotFoundError, AuthenticationFailedError } from 'common'; import { AuthEmailPasswordRepository } from './interface/repository'; import { SignInEmailPasswordInputData, SignInEmailPasswordUseCase } from './interface/usecase'; import { SignInEmailPasswordOutputData, SignInEmailPasswordPresenter } from './interface/presenter'; -import { UserRepository } from '../user/interface/repository'; dotenv.config(); export class SignInEmailPasswordInteractor implements SignInEmailPasswordUseCase { private authRepository: AuthEmailPasswordRepository; - private userRepository: UserRepository; private presenter: SignInEmailPasswordPresenter; constructor( authRepository: AuthEmailPasswordRepository, - userRepository: UserRepository, presenter: SignInEmailPasswordPresenter, ) { this.authRepository = authRepository; - this.userRepository = userRepository; this.presenter = presenter; } public async handle(request: SignInEmailPasswordInputData) { const authEntity = await this.authRepository.getByEmail(request.email); if (!authEntity) throw new NotFoundError('そのメールアドレスは登録されていません'); + const userId = authEntity.getUserId().toString(); // パスワードがマッチしているか const passwordMatched = await authEntity.getPassword().compareWith(request.password); if (!passwordMatched) throw new AuthenticationFailedError(); - // 対応する user エンティティを取得 - const userId = authEntity.getUserId().toString(); - const userEntity = await this.userRepository.getById(userId); - if (!userEntity) throw new NotFoundError('認証結果に対応するユーザが見つかりません'); - // JWT トークンを生成 - const tokenPayload = { - id: userId, - roles: userEntity.getRoles().map((role) => role.toString()), - }; + const tokenPayload = { userId }; const { JWT_SECRET, JWT_EXPIRES_IN } = process.env; const token = jwt.sign(tokenPayload, JWT_SECRET!, { expiresIn: JWT_EXPIRES_IN }); const outputData: SignInEmailPasswordOutputData = { token, - user: userEntity.toDto(), + userId, }; this.presenter.output(outputData); } diff --git a/src/domain-model/src/usecase/auth/SignUpEmailPassword.ts b/src/auth-local/src/usecase/auth/SignUpEmailPassword.ts similarity index 82% rename from src/domain-model/src/usecase/auth/SignUpEmailPassword.ts rename to src/auth-local/src/usecase/auth/SignUpEmailPassword.ts index 36c9b58..352014f 100644 --- a/src/domain-model/src/usecase/auth/SignUpEmailPassword.ts +++ b/src/auth-local/src/usecase/auth/SignUpEmailPassword.ts @@ -5,23 +5,19 @@ import { ConflictError } from 'common'; import { AuthEmailPasswordRepository } from './interface/repository'; import { SignUpEmailPasswordInputData, SignUpEmailPasswordUseCase } from './interface/usecase'; import { SignUpEmailPasswordOutputData, SignUpEmailPasswordPresenter } from './interface/presenter'; -import { UserRepository } from '../user/interface/repository'; import { encryptPassword } from '../../entity/common/Password'; dotenv.config(); export class SignUpEmailPasswordInteractor implements SignUpEmailPasswordUseCase { private authRepository: AuthEmailPasswordRepository; - private userRepository: UserRepository; private presenter: SignUpEmailPasswordPresenter; constructor( authRepository: AuthEmailPasswordRepository, - userRepository: UserRepository, presenter: SignUpEmailPasswordPresenter, ) { this.authRepository = authRepository; - this.userRepository = userRepository; this.presenter = presenter; } @@ -29,13 +25,7 @@ export class SignUpEmailPasswordInteractor implements SignUpEmailPasswordUseCase // すでに登録されているメールアドレスでは登録できない const existedAuthEntity = await this.authRepository.getByEmail(request.email); if (existedAuthEntity) throw new ConflictError('そのメールアドレスはすでに登録されています'); - - // TODO: トランザクション - - // user エンティティを生成 - const userEntity = await this.userRepository.create({ email: request.email }); - const userId = userEntity.getId().toString(); - + // auth エンティティを生成 const passwordEncrypted = await encryptPassword(request.password); await this.authRepository.create({ diff --git a/src/domain-model/src/usecase/auth/__tests__/SignInEmailPassword.ts b/src/auth-local/src/usecase/auth/__tests__/SignInEmailPassword.ts similarity index 95% rename from src/domain-model/src/usecase/auth/__tests__/SignInEmailPassword.ts rename to src/auth-local/src/usecase/auth/__tests__/SignInEmailPassword.ts index 2e1b4a3..7c076d6 100644 --- a/src/domain-model/src/usecase/auth/__tests__/SignInEmailPassword.ts +++ b/src/auth-local/src/usecase/auth/__tests__/SignInEmailPassword.ts @@ -12,7 +12,7 @@ import { MockSignInEmailPasswordPresenter } from '../_mocks/MockAuthPresenter'; const setup = async () => { // user repository const userRepository = new MockUserRepository(); - const userEntity = await userRepository.create({ email: 'target@email.com' }); + const userEntity = await userRepository.create({}); const userId = userEntity.getId().toString(); // auth repository @@ -38,7 +38,6 @@ describe('SignInEmailPasswordInteractor', () => { // response として request で指定したデータが得られた const response = presenter.getResponse(); - expect(response?.user?.email).toEqual(request.email); expect(response?.token).toBeDefined(); }); diff --git a/src/domain-model/src/usecase/auth/__tests__/SignUpEmailPassword.ts b/src/auth-local/src/usecase/auth/__tests__/SignUpEmailPassword.ts similarity index 95% rename from src/domain-model/src/usecase/auth/__tests__/SignUpEmailPassword.ts rename to src/auth-local/src/usecase/auth/__tests__/SignUpEmailPassword.ts index 381349b..454c495 100644 --- a/src/domain-model/src/usecase/auth/__tests__/SignUpEmailPassword.ts +++ b/src/auth-local/src/usecase/auth/__tests__/SignUpEmailPassword.ts @@ -12,7 +12,7 @@ import { MockSignUpEmailPasswordPresenter } from '../_mocks/MockAuthPresenter'; const setup = async () => { // user repository const userRepository = new MockUserRepository(); - const userEntity = await userRepository.create({ email: 'existed@email.com' }); + const userEntity = await userRepository.create({}); const userId = userEntity.getId().toString(); // auth repository @@ -38,7 +38,6 @@ describe('SignUpEmailPasswordInteractor', () => { // response として request で指定したデータが得られた const response = presenter.getResponse(); - expect(response?.user?.email).toEqual(request.email); expect(response?.token).toBeDefined(); }); diff --git a/src/domain-model/src/usecase/auth/_mocks/MockAuthEmailPasswordRepository.ts b/src/auth-local/src/usecase/auth/_mocks/MockAuthEmailPasswordRepository.ts similarity index 100% rename from src/domain-model/src/usecase/auth/_mocks/MockAuthEmailPasswordRepository.ts rename to src/auth-local/src/usecase/auth/_mocks/MockAuthEmailPasswordRepository.ts diff --git a/src/domain-model/src/usecase/auth/_mocks/MockAuthPresenter.ts b/src/auth-local/src/usecase/auth/_mocks/MockAuthPresenter.ts similarity index 100% rename from src/domain-model/src/usecase/auth/_mocks/MockAuthPresenter.ts rename to src/auth-local/src/usecase/auth/_mocks/MockAuthPresenter.ts diff --git a/src/domain-model/src/usecase/auth/index.ts b/src/auth-local/src/usecase/auth/index.ts similarity index 100% rename from src/domain-model/src/usecase/auth/index.ts rename to src/auth-local/src/usecase/auth/index.ts diff --git a/src/domain-model/src/usecase/auth/interface/presenter.ts b/src/auth-local/src/usecase/auth/interface/presenter.ts similarity index 77% rename from src/domain-model/src/usecase/auth/interface/presenter.ts rename to src/auth-local/src/usecase/auth/interface/presenter.ts index bccfcde..5778a6d 100644 --- a/src/domain-model/src/usecase/auth/interface/presenter.ts +++ b/src/auth-local/src/usecase/auth/interface/presenter.ts @@ -1,7 +1,5 @@ -import { UserDto } from '../../../entity/user/UserDto'; - export type SignInEmailPasswordOutputData = { - user: UserDto | null; + userId: string | null; token: string | null; }; @@ -10,7 +8,7 @@ export interface SignInEmailPasswordPresenter { } export type SignUpEmailPasswordOutputData = { - user: UserDto | null; + userId: string | null; token: string | null; }; diff --git a/src/domain-model/src/usecase/auth/interface/repository.ts b/src/auth-local/src/usecase/auth/interface/repository.ts similarity index 100% rename from src/domain-model/src/usecase/auth/interface/repository.ts rename to src/auth-local/src/usecase/auth/interface/repository.ts diff --git a/src/domain-model/src/usecase/auth/interface/usecase.ts b/src/auth-local/src/usecase/auth/interface/usecase.ts similarity index 100% rename from src/domain-model/src/usecase/auth/interface/usecase.ts rename to src/auth-local/src/usecase/auth/interface/usecase.ts diff --git a/src/backend/tests/integration/Auth/__tests__/signInEmailPassword.ts b/src/auth-local/tests/integration/Auth/__tests__/signInEmailPassword.ts similarity index 97% rename from src/backend/tests/integration/Auth/__tests__/signInEmailPassword.ts rename to src/auth-local/tests/integration/Auth/__tests__/signInEmailPassword.ts index 5aa8e79..2882568 100644 --- a/src/backend/tests/integration/Auth/__tests__/signInEmailPassword.ts +++ b/src/auth-local/tests/integration/Auth/__tests__/signInEmailPassword.ts @@ -9,7 +9,6 @@ const SIGN_IN_EMAIL_PASSWORD = gql` signInEmailPassword(input: $input) { user { id - email roles } token @@ -44,7 +43,7 @@ describe('signInEmailPassword', () => { }); const { user, token } = result?.data?.signInEmailPassword ?? {}; - expect(user?.email).toBe('admin@email.com'); + expect(user).toBeDefined(); expect(token).toBeDefined(); }); diff --git a/src/backend/tests/integration/Auth/__tests__/signUpEmailPassword.ts b/src/auth-local/tests/integration/Auth/__tests__/signUpEmailPassword.ts similarity index 98% rename from src/backend/tests/integration/Auth/__tests__/signUpEmailPassword.ts rename to src/auth-local/tests/integration/Auth/__tests__/signUpEmailPassword.ts index ccc3ef8..5bae04c 100644 --- a/src/backend/tests/integration/Auth/__tests__/signUpEmailPassword.ts +++ b/src/auth-local/tests/integration/Auth/__tests__/signUpEmailPassword.ts @@ -9,7 +9,6 @@ const SIGN_UP_EMAIL_PASSWORD = gql` signUpEmailPassword(input: $input) { user { id - email roles } token @@ -44,7 +43,7 @@ describe('signUpEmailPassword', () => { }); const { user, token } = result?.data?.signUpEmailPassword ?? {}; - expect(user?.email).toBe('new_member@email.com'); + expect(user).toBeDefined(); expect(token).toBeDefined(); }); diff --git a/src/auth-local/tests/integration/setup/apollo-server.ts b/src/auth-local/tests/integration/setup/apollo-server.ts new file mode 100644 index 0000000..02b5dc7 --- /dev/null +++ b/src/auth-local/tests/integration/setup/apollo-server.ts @@ -0,0 +1,37 @@ +import dotenv from 'dotenv'; +import path from 'path'; +import { loadSchemaSync } from '@graphql-tools/load'; +import { GraphQLFileLoader } from '@graphql-tools/graphql-file-loader'; +import { addResolversToSchema } from '@graphql-tools/schema'; +import { ApolloServer } from 'apollo-server-express'; +import { createTestClient, ApolloServerTestClient } from 'apollo-server-testing'; +import { Connection } from 'typeorm'; + +import { resolvers } from '../../../src/infrastructure/apollo-server/resolvers'; + +dotenv.config(); + +const getContext = async (dbConnection: Connection) => ({ dbConnection }); + +export const createApolloServerForTesting = async ( + dbConnection: Connection, +): Promise => { + // Configure GraphQL Server + const schema = loadSchemaSync(path.join(__dirname, '../../../../schema/schema.graphql'), { + loaders: [new GraphQLFileLoader()], + }); + const schemaWithResolvers = addResolversToSchema({ + schema, + resolvers, + }); + + // Create GraphQL Server and Apply to Express + const server = new ApolloServer({ + schema: schemaWithResolvers, + context: () => getContext(dbConnection), + }); + + // Create GraphQL Client for Testing + const testClient = createTestClient(server); + return testClient; +}; diff --git a/src/auth-local/tests/integration/setup/database.ts b/src/auth-local/tests/integration/setup/database.ts new file mode 100644 index 0000000..16fb1af --- /dev/null +++ b/src/auth-local/tests/integration/setup/database.ts @@ -0,0 +1,65 @@ +import 'reflect-metadata'; +import { Connection, createConnection } from 'typeorm'; +import { v4 as uuidv4 } from 'uuid'; +import fs from 'fs'; + +import { AuthEmailPassword } from '../../../src/repository/typeorm/auth/entity/AuthEmailPassword'; +import { seedAll } from '../../../src/infrastructure/typeorm/seeder/seedAll'; + +export const getRandomDbPath = () => `./test_db/${uuidv4()}.sqlite`; + +export const createDbConnection = async (randomDbPath: string) => + createConnection({ + type: 'sqlite', + name: randomDbPath, + database: randomDbPath, + entities: [AuthEmailPassword], + synchronize: true, + logging: false, + }); + +export const deleteDbFile = (dbPath: string) => { + fs.unlinkSync(dbPath); +}; + +export class SqliteDbConnection { + private path: string; + private connection: Connection | null; + + constructor(path?: string) { + this.path = path ?? getRandomDbPath(); + } + + getDbPath() { + return this.path; + } + + getConnection() { + return this.connection; + } + + setDbPath(path: string) { + this.path = path; + } + + async connect() { + this.connection = await createDbConnection(this.path); + if (!this.connection) throw new Error('SQLite DB への接続に失敗しました'); + + return this.connection!; + } + + async disconnect() { + this.connection?.close(); + } + + async dispose() { + await this.disconnect(); + if (this.path !== ':memory:') deleteDbFile(this.path); + } + + async seedAll() { + if (!this.connection) return; + await seedAll(this.connection); + } +} diff --git a/src/auth-local/tsconfig.json b/src/auth-local/tsconfig.json new file mode 100644 index 0000000..1144ff6 --- /dev/null +++ b/src/auth-local/tsconfig.json @@ -0,0 +1,33 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig.json to read more about this file */ + + /* Basic Options */ + "target": "ES2019", + "module": "commonjs", + "allowJs": true, + // "checkJs": true, + // "sourceMap": true, + "outDir": "./build", + + /* Strict Type-Checking Options */ + "strict": true, + + /* Module Resolution Options */ + "moduleResolution": "node", + "allowSyntheticDefaultImports": true, + "esModuleInterop": true, + + /* Advanced Options */ + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + + /* TypeORM */ + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "strictPropertyInitialization": false + }, + "include": ["src/**/*"], + "exclude": ["**/_mocks/*", "**/__tests__/*"], + "references": [{ "path": "../common" }, { "path": "../domain-model" }] +} diff --git a/src/backend/.sequelizerc b/src/backend/.sequelizerc deleted file mode 100644 index d7566f5..0000000 --- a/src/backend/.sequelizerc +++ /dev/null @@ -1,8 +0,0 @@ -const path = require('path'); - -module.exports = { - config: path.resolve('src/infrastructure/sequelize', 'config.json'), - 'models-path': path.resolve('src/infrastructure/sequelize', 'models'), - 'seeders-path': path.resolve('src/infrastructure/sequelize', 'seeders'), - 'migrations-path': path.resolve('src/infrastructure/sequelize', 'migrations'), -}; diff --git a/src/backend/src/infrastructure/apollo-server/index.ts b/src/backend/src/infrastructure/apollo-server/index.ts index cd6a195..b98fbd3 100644 --- a/src/backend/src/infrastructure/apollo-server/index.ts +++ b/src/backend/src/infrastructure/apollo-server/index.ts @@ -8,7 +8,7 @@ import { loadSchemaSync } from '@graphql-tools/load'; import { GraphQLFileLoader } from '@graphql-tools/graphql-file-loader'; import { addResolversToSchema } from '@graphql-tools/schema'; import { Connection } from 'typeorm'; -import { User } from 'schema'; +import { User } from 'schema/lib/app/types'; import { ApolloServerContext } from './types'; import { resolvers } from './resolvers'; diff --git a/src/backend/src/infrastructure/apollo-server/resolvers/entity/Todo.ts b/src/backend/src/infrastructure/apollo-server/resolvers/entity/Todo.ts index b91c0ec..7206ae4 100644 --- a/src/backend/src/infrastructure/apollo-server/resolvers/entity/Todo.ts +++ b/src/backend/src/infrastructure/apollo-server/resolvers/entity/Todo.ts @@ -1,4 +1,4 @@ -import { TodoResolvers } from 'schema'; +import { TodoResolvers } from 'schema/lib/app/types'; import { allowOnlyWhenActorHasMemberRole, GetUserByIdInteractor } from 'domain-model'; import { ApolloServerContext } from '../../types'; diff --git a/src/backend/src/infrastructure/apollo-server/resolvers/entity/User.ts b/src/backend/src/infrastructure/apollo-server/resolvers/entity/User.ts index 719a6de..5ce49fb 100644 --- a/src/backend/src/infrastructure/apollo-server/resolvers/entity/User.ts +++ b/src/backend/src/infrastructure/apollo-server/resolvers/entity/User.ts @@ -1,4 +1,4 @@ -import { UserResolvers } from 'schema'; +import { UserResolvers } from 'schema/lib/app/types'; import { ApolloServerContext } from '../../types'; import { GqlTodoQueryService } from '../../../../repository/typeorm/todo/queryService/Todo'; diff --git a/src/backend/src/infrastructure/apollo-server/resolvers/index.ts b/src/backend/src/infrastructure/apollo-server/resolvers/index.ts index 4d04253..548a833 100644 --- a/src/backend/src/infrastructure/apollo-server/resolvers/index.ts +++ b/src/backend/src/infrastructure/apollo-server/resolvers/index.ts @@ -1,5 +1,5 @@ import { DateTimeResolver } from 'graphql-scalars'; -import { Resolvers } from 'schema'; +import { Resolvers } from 'schema/lib/app/types'; import * as Entities from './entity'; import { Query } from './query'; diff --git a/src/backend/src/infrastructure/apollo-server/resolvers/mutation/Todo/createTodo.ts b/src/backend/src/infrastructure/apollo-server/resolvers/mutation/Todo/createTodo.ts index 6d4bad5..15743d5 100644 --- a/src/backend/src/infrastructure/apollo-server/resolvers/mutation/Todo/createTodo.ts +++ b/src/backend/src/infrastructure/apollo-server/resolvers/mutation/Todo/createTodo.ts @@ -1,4 +1,4 @@ -import { MutationResolvers } from 'schema'; +import { MutationResolvers } from 'schema/lib/app/types'; import { CreateTodoInteractor, allowOnlyWhenActorHasMemberRole } from 'domain-model'; import { ApolloServerContext } from '../../../types'; diff --git a/src/backend/src/infrastructure/apollo-server/resolvers/mutation/Todo/deleteTodo.ts b/src/backend/src/infrastructure/apollo-server/resolvers/mutation/Todo/deleteTodo.ts index ef9242f..c435288 100644 --- a/src/backend/src/infrastructure/apollo-server/resolvers/mutation/Todo/deleteTodo.ts +++ b/src/backend/src/infrastructure/apollo-server/resolvers/mutation/Todo/deleteTodo.ts @@ -1,4 +1,4 @@ -import { MutationResolvers } from 'schema'; +import { MutationResolvers } from 'schema/lib/app/types'; import { DeleteTodoInteractor, allowOnlyWhenActorHasMemberRole } from 'domain-model'; import { ApolloServerContext } from '../../../types'; diff --git a/src/backend/src/infrastructure/apollo-server/resolvers/mutation/Todo/doneTodo.ts b/src/backend/src/infrastructure/apollo-server/resolvers/mutation/Todo/doneTodo.ts index d0ac0a6..ec8b39d 100644 --- a/src/backend/src/infrastructure/apollo-server/resolvers/mutation/Todo/doneTodo.ts +++ b/src/backend/src/infrastructure/apollo-server/resolvers/mutation/Todo/doneTodo.ts @@ -1,4 +1,4 @@ -import { MutationResolvers } from 'schema'; +import { MutationResolvers } from 'schema/lib/app/types'; import { DoneTodoInteractor, allowOnlyWhenActorHasMemberRole } from 'domain-model'; import { ApolloServerContext } from '../../../types'; diff --git a/src/backend/src/infrastructure/apollo-server/resolvers/mutation/Todo/index.ts b/src/backend/src/infrastructure/apollo-server/resolvers/mutation/Todo/index.ts index 3bb9f09..3d8a5c6 100644 --- a/src/backend/src/infrastructure/apollo-server/resolvers/mutation/Todo/index.ts +++ b/src/backend/src/infrastructure/apollo-server/resolvers/mutation/Todo/index.ts @@ -1,4 +1,4 @@ -import { MutationResolvers } from 'schema'; +import { MutationResolvers } from 'schema/lib/app/types'; import { ApolloServerContext } from '../../../types'; import { createTodo } from './createTodo'; diff --git a/src/backend/src/infrastructure/apollo-server/resolvers/mutation/Todo/undoneTodo.ts b/src/backend/src/infrastructure/apollo-server/resolvers/mutation/Todo/undoneTodo.ts index c15a3f8..4e5d559 100644 --- a/src/backend/src/infrastructure/apollo-server/resolvers/mutation/Todo/undoneTodo.ts +++ b/src/backend/src/infrastructure/apollo-server/resolvers/mutation/Todo/undoneTodo.ts @@ -1,4 +1,4 @@ -import { MutationResolvers } from 'schema'; +import { MutationResolvers } from 'schema/lib/app/types'; import { UndoneTodoInteractor, allowOnlyWhenActorHasMemberRole } from 'domain-model'; import { ApolloServerContext } from '../../../types'; diff --git a/src/backend/src/infrastructure/apollo-server/resolvers/mutation/User/createUser.ts b/src/backend/src/infrastructure/apollo-server/resolvers/mutation/User/createUser.ts index c07ad3b..25df8ec 100644 --- a/src/backend/src/infrastructure/apollo-server/resolvers/mutation/User/createUser.ts +++ b/src/backend/src/infrastructure/apollo-server/resolvers/mutation/User/createUser.ts @@ -1,4 +1,4 @@ -import { MutationResolvers } from 'schema'; +import { MutationResolvers } from 'schema/lib/app/types'; import { CreateUserInteractor } from 'domain-model'; import { ApolloServerContext } from '../../../types'; @@ -6,12 +6,12 @@ import { GqlUserRepository } from '../../../../../repository/typeorm/user/reposi import { GqlCreateUserPresenter } from '../../../../../presenter/user/CreateUser'; export const createUser: MutationResolvers = { - createUser: async (_parent, args, { dbConnection }) => { + createUser: async (_parent, _args, { dbConnection }) => { const repository = new GqlUserRepository(dbConnection); const presenter = new GqlCreateUserPresenter(); const usecase = new CreateUserInteractor(repository, presenter); - await usecase.handle(args.input!); + await usecase.handle({}); return presenter.getResponse(); }, diff --git a/src/backend/src/infrastructure/apollo-server/resolvers/mutation/User/deleteUser.ts b/src/backend/src/infrastructure/apollo-server/resolvers/mutation/User/deleteUser.ts index 3654b1f..3b4560d 100644 --- a/src/backend/src/infrastructure/apollo-server/resolvers/mutation/User/deleteUser.ts +++ b/src/backend/src/infrastructure/apollo-server/resolvers/mutation/User/deleteUser.ts @@ -1,4 +1,4 @@ -import { MutationResolvers } from 'schema'; +import { MutationResolvers } from 'schema/lib/app/types'; import { DeleteUserInteractor, allowOnlyWhenActorHasAdminOrMemberRole } from 'domain-model'; import { ApolloServerContext } from '../../../types'; diff --git a/src/backend/src/infrastructure/apollo-server/resolvers/mutation/User/index.ts b/src/backend/src/infrastructure/apollo-server/resolvers/mutation/User/index.ts index 8e92297..460cd87 100644 --- a/src/backend/src/infrastructure/apollo-server/resolvers/mutation/User/index.ts +++ b/src/backend/src/infrastructure/apollo-server/resolvers/mutation/User/index.ts @@ -1,4 +1,4 @@ -import { MutationResolvers } from 'schema'; +import { MutationResolvers } from 'schema/lib/app/types'; import { ApolloServerContext } from '../../../types'; import { createUser } from './createUser'; diff --git a/src/backend/src/infrastructure/apollo-server/resolvers/mutation/User/updateUserRoles.ts b/src/backend/src/infrastructure/apollo-server/resolvers/mutation/User/updateUserRoles.ts index 8c07f48..0d8de51 100644 --- a/src/backend/src/infrastructure/apollo-server/resolvers/mutation/User/updateUserRoles.ts +++ b/src/backend/src/infrastructure/apollo-server/resolvers/mutation/User/updateUserRoles.ts @@ -1,4 +1,4 @@ -import { MutationResolvers } from 'schema'; +import { MutationResolvers } from 'schema/lib/app/types'; import { UpdateUserRolesInteractor, allowOnlyWhenActorHasMemberRole } from 'domain-model'; import { ApolloServerContext } from '../../../types'; diff --git a/src/backend/src/infrastructure/apollo-server/resolvers/mutation/index.ts b/src/backend/src/infrastructure/apollo-server/resolvers/mutation/index.ts index dc90bb4..fa095e7 100644 --- a/src/backend/src/infrastructure/apollo-server/resolvers/mutation/index.ts +++ b/src/backend/src/infrastructure/apollo-server/resolvers/mutation/index.ts @@ -1,11 +1,9 @@ -import { MutationResolvers } from 'schema'; +import { MutationResolvers } from 'schema/lib/app/types'; import { User } from './User'; import { Todo } from './Todo'; -import { Auth } from './Auth'; export const Mutation: MutationResolvers = { ...User, ...Todo, - ...Auth, }; diff --git a/src/backend/src/infrastructure/apollo-server/resolvers/query/Todo/allTodosWithDeadlineApproaching.ts b/src/backend/src/infrastructure/apollo-server/resolvers/query/Todo/allTodosWithDeadlineApproaching.ts index 079fcaa..fe014ba 100644 --- a/src/backend/src/infrastructure/apollo-server/resolvers/query/Todo/allTodosWithDeadlineApproaching.ts +++ b/src/backend/src/infrastructure/apollo-server/resolvers/query/Todo/allTodosWithDeadlineApproaching.ts @@ -1,4 +1,4 @@ -import { QueryResolvers } from 'schema'; +import { QueryResolvers } from 'schema/lib/app/types'; import { AllTodosWithDeadlineApproachingInteractor, allowOnlyWhenActorHasMemberRole, diff --git a/src/backend/src/infrastructure/apollo-server/resolvers/query/Todo/index.ts b/src/backend/src/infrastructure/apollo-server/resolvers/query/Todo/index.ts index e12f225..8de821b 100644 --- a/src/backend/src/infrastructure/apollo-server/resolvers/query/Todo/index.ts +++ b/src/backend/src/infrastructure/apollo-server/resolvers/query/Todo/index.ts @@ -1,4 +1,4 @@ -import { QueryResolvers } from 'schema'; +import { QueryResolvers } from 'schema/lib/app/types'; import { ApolloServerContext } from '../../../types'; import { todo } from './todo'; diff --git a/src/backend/src/infrastructure/apollo-server/resolvers/query/Todo/todo.ts b/src/backend/src/infrastructure/apollo-server/resolvers/query/Todo/todo.ts index 4ffca2c..2113ec6 100644 --- a/src/backend/src/infrastructure/apollo-server/resolvers/query/Todo/todo.ts +++ b/src/backend/src/infrastructure/apollo-server/resolvers/query/Todo/todo.ts @@ -1,4 +1,4 @@ -import { QueryResolvers } from 'schema'; +import { QueryResolvers } from 'schema/lib/app/types'; import { GetTodoInteractor, allowOnlyWhenActorHasMemberRole } from 'domain-model'; import { ApolloServerContext } from '../../../types'; diff --git a/src/backend/src/infrastructure/apollo-server/resolvers/query/User/index.ts b/src/backend/src/infrastructure/apollo-server/resolvers/query/User/index.ts index 4e9a8a9..dda461d 100644 --- a/src/backend/src/infrastructure/apollo-server/resolvers/query/User/index.ts +++ b/src/backend/src/infrastructure/apollo-server/resolvers/query/User/index.ts @@ -1,4 +1,4 @@ -import { QueryResolvers } from 'schema'; +import { QueryResolvers } from 'schema/lib/app/types'; import { ApolloServerContext } from '../../../types'; import { user } from './user'; diff --git a/src/backend/src/infrastructure/apollo-server/resolvers/query/User/user.ts b/src/backend/src/infrastructure/apollo-server/resolvers/query/User/user.ts index 4ca0052..3993154 100644 --- a/src/backend/src/infrastructure/apollo-server/resolvers/query/User/user.ts +++ b/src/backend/src/infrastructure/apollo-server/resolvers/query/User/user.ts @@ -1,4 +1,4 @@ -import { QueryResolvers } from 'schema'; +import { QueryResolvers } from 'schema/lib/app/types'; import { GetUserByIdInteractor, allowOnlyWhenActorHasMemberRole, denyIfNotSet } from 'domain-model'; import { ApolloServerContext } from '../../../types'; diff --git a/src/backend/src/infrastructure/apollo-server/resolvers/query/index.ts b/src/backend/src/infrastructure/apollo-server/resolvers/query/index.ts index b086c73..7ec13c5 100644 --- a/src/backend/src/infrastructure/apollo-server/resolvers/query/index.ts +++ b/src/backend/src/infrastructure/apollo-server/resolvers/query/index.ts @@ -1,4 +1,4 @@ -import { QueryResolvers } from 'schema'; +import { QueryResolvers } from 'schema/lib/app/types'; import { User } from './User'; import { Todo } from './Todo'; diff --git a/src/backend/src/infrastructure/apollo-server/types.ts b/src/backend/src/infrastructure/apollo-server/types.ts index 6f18153..d35eb99 100644 --- a/src/backend/src/infrastructure/apollo-server/types.ts +++ b/src/backend/src/infrastructure/apollo-server/types.ts @@ -1,5 +1,5 @@ import { Connection } from 'typeorm'; -import { Maybe } from 'schema'; +import { Maybe } from 'schema/lib/app/types'; import { UserEntity } from 'domain-model'; export interface ApolloServerContext { diff --git a/src/backend/src/infrastructure/typeorm/connection.ts b/src/backend/src/infrastructure/typeorm/connection.ts index bf983e9..35737e5 100644 --- a/src/backend/src/infrastructure/typeorm/connection.ts +++ b/src/backend/src/infrastructure/typeorm/connection.ts @@ -3,7 +3,6 @@ import { createConnection } from 'typeorm'; import { User } from '../../repository/typeorm/user/entity/User'; import { Todo } from '../../repository/typeorm/todo/entity/Todo'; -import { AuthEmailPassword } from '../../repository/typeorm/auth/entity/AuthEmailPassword'; export const createDbConnection = async () => { return createConnection({ @@ -13,7 +12,7 @@ export const createDbConnection = async () => { username: 'docker', password: 'docker', database: 'graphql_clean_dev', - entities: [User, Todo, AuthEmailPassword], + entities: [User, Todo], synchronize: false, logging: false, }); diff --git a/src/backend/src/infrastructure/typeorm/migration/1604329927608-AddAuthAuth0.ts b/src/backend/src/infrastructure/typeorm/migration/1604329927608-AddAuthAuth0.ts new file mode 100644 index 0000000..cab8ac4 --- /dev/null +++ b/src/backend/src/infrastructure/typeorm/migration/1604329927608-AddAuthAuth0.ts @@ -0,0 +1,20 @@ +import {MigrationInterface, QueryRunner} from "typeorm"; + +export class AddAuthAuth01604329927608 implements MigrationInterface { + name = 'AddAuthAuth01604329927608' + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query("DROP INDEX `FK_22bdab086670818a4d01d82a55e` ON `authEmailPasswords`"); + await queryRunner.query("CREATE TABLE `authAuth0s` (`id` int NOT NULL AUTO_INCREMENT, `userId` int NOT NULL, `auth0UserId` varchar(255) NOT NULL, `createdAt` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), `updatedAt` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), PRIMARY KEY (`id`)) ENGINE=InnoDB"); + await queryRunner.query("ALTER TABLE `users` DROP COLUMN `email`"); + await queryRunner.query("ALTER TABLE `todos` CHANGE `dueDate` `dueDate` datetime NULL DEFAULT NULL"); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query("ALTER TABLE `todos` CHANGE `dueDate` `dueDate` datetime NULL"); + await queryRunner.query("ALTER TABLE `users` ADD `email` varchar(255) NOT NULL"); + await queryRunner.query("DROP TABLE `authAuth0s`"); + await queryRunner.query("CREATE INDEX `FK_22bdab086670818a4d01d82a55e` ON `authEmailPasswords` (`userId`)"); + } + +} diff --git a/src/backend/src/infrastructure/typeorm/seeder/User.ts b/src/backend/src/infrastructure/typeorm/seeder/User.ts index 896f571..38dd24a 100644 --- a/src/backend/src/infrastructure/typeorm/seeder/User.ts +++ b/src/backend/src/infrastructure/typeorm/seeder/User.ts @@ -1,10 +1,11 @@ import { Connection } from 'typeorm'; -import { RoleTypes, Role, UserRepository, RoleType } from 'domain-model'; +import { RoleTypes, Role, RoleType } from 'common'; +import { UserRepository } from 'domain-model'; import { GqlUserRepository } from '../../../repository/typeorm/user/repository/User'; -export const seedUser = async (repository: UserRepository, email: string, roles: RoleType[]) => { - const user = { email }; +export const seedUser = async (repository: UserRepository, roles: RoleType[]) => { + const user = {}; const userEntity = await repository.create(user); userEntity.updateRoles(roles.map((role) => new Role(role))); await repository.update(userEntity); @@ -15,12 +16,9 @@ export const seedUser = async (repository: UserRepository, email: string, roles: export const seedUsers = async (dbConnection: Connection) => { const repository = new GqlUserRepository(dbConnection); - const adminEntity = await seedUser(repository, 'admin@email.com', [ - RoleTypes.Admin, - RoleTypes.Member, - ]); - const memberEntity = await seedUser(repository, 'member@email.com', [RoleTypes.Member]); - const anonymousEntity = await seedUser(repository, 'anonymous@email.com', [RoleTypes.Anonymous]); + const adminEntity = await seedUser(repository, [RoleTypes.Admin, RoleTypes.Member]); + const memberEntity = await seedUser(repository, [RoleTypes.Member]); + const anonymousEntity = await seedUser(repository, [RoleTypes.Anonymous]); return [adminEntity, memberEntity, anonymousEntity]; }; diff --git a/src/backend/src/infrastructure/typeorm/seeder/seedAll.ts b/src/backend/src/infrastructure/typeorm/seeder/seedAll.ts index 64a1e60..fcfed72 100644 --- a/src/backend/src/infrastructure/typeorm/seeder/seedAll.ts +++ b/src/backend/src/infrastructure/typeorm/seeder/seedAll.ts @@ -1,16 +1,11 @@ import { Connection } from 'typeorm'; import { seedUsers } from './User'; -import { seedAuth } from './Auth'; import { seedTodo } from './Todo'; export const seedAll = async (dbConnection: Connection) => { const [admin, member, anonymous] = await seedUsers(dbConnection); - await seedAuth(dbConnection, admin); - await seedAuth(dbConnection, member); - await seedAuth(dbConnection, anonymous); - await seedTodo(dbConnection, admin, 'todo #1'); await seedTodo(dbConnection, admin, 'todo #2'); await seedTodo(dbConnection, member, 'todo #3'); diff --git a/src/backend/src/presenter/auth/SignInEmailPassword.ts b/src/backend/src/presenter/auth/SignInEmailPassword.ts deleted file mode 100644 index a470afb..0000000 --- a/src/backend/src/presenter/auth/SignInEmailPassword.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { SignInEmailPasswordResponse } from 'schema'; -import { SignInEmailPasswordPresenter, SignInEmailPasswordOutputData } from 'domain-model'; - -import { toGqlUser } from '../utils/converter/user'; - -export class GqlSignInEmailPasswordPresenter implements SignInEmailPasswordPresenter { - private response: SignInEmailPasswordResponse | null = null; - - public getResponse() { - return this.response; - } - - public async output(response: SignInEmailPasswordOutputData) { - this.response = { - token: response.token!, - user: toGqlUser(response.user), - }; - } -} diff --git a/src/backend/src/presenter/auth/SignUpEmailPassword.ts b/src/backend/src/presenter/auth/SignUpEmailPassword.ts deleted file mode 100644 index d4f6045..0000000 --- a/src/backend/src/presenter/auth/SignUpEmailPassword.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { SignUpEmailPasswordResponse } from 'schema'; -import { SignUpEmailPasswordPresenter, SignUpEmailPasswordOutputData } from 'domain-model'; - -import { toGqlUser } from '../utils/converter/user'; - -export class GqlSignUpEmailPasswordPresenter implements SignUpEmailPasswordPresenter { - private response: SignUpEmailPasswordResponse | null = null; - - public getResponse() { - return this.response; - } - - public async output(response: SignUpEmailPasswordOutputData) { - this.response = { - token: response.token!, - user: toGqlUser(response.user), - }; - } -} diff --git a/src/backend/src/presenter/todo/AllTodosWithDeadlineApproaching.ts b/src/backend/src/presenter/todo/AllTodosWithDeadlineApproaching.ts index 5741ce6..9805f4c 100644 --- a/src/backend/src/presenter/todo/AllTodosWithDeadlineApproaching.ts +++ b/src/backend/src/presenter/todo/AllTodosWithDeadlineApproaching.ts @@ -1,4 +1,4 @@ -import { AllTodosWithDeadlineApproachingResponse } from 'schema'; +import { AllTodosWithDeadlineApproachingResponse } from 'schema/lib/app/types'; import { AllTodosWithDeadlineApproachingPresenter, AllTodosWithDeadlineApproachingOutputData, diff --git a/src/backend/src/presenter/todo/CreateTodo.ts b/src/backend/src/presenter/todo/CreateTodo.ts index f4c66f5..a16ccd9 100644 --- a/src/backend/src/presenter/todo/CreateTodo.ts +++ b/src/backend/src/presenter/todo/CreateTodo.ts @@ -1,4 +1,4 @@ -import { CreateTodoResponse } from 'schema'; +import { CreateTodoResponse } from 'schema/lib/app/types'; import { CreateTodoPresenter, CreateTodoOutputData } from 'domain-model'; import { toGqlTodo } from '../utils/converter/todo'; diff --git a/src/backend/src/presenter/todo/DeleteTodo.ts b/src/backend/src/presenter/todo/DeleteTodo.ts index 33ac927..e7bcc49 100644 --- a/src/backend/src/presenter/todo/DeleteTodo.ts +++ b/src/backend/src/presenter/todo/DeleteTodo.ts @@ -1,4 +1,4 @@ -import { DeleteTodoResponse } from 'schema'; +import { DeleteTodoResponse } from 'schema/lib/app/types'; import { DeleteTodoPresenter, DeleteTodoOutputData } from 'domain-model'; import { toGqlTodo } from '../utils/converter/todo'; diff --git a/src/backend/src/presenter/todo/DoneTodo.ts b/src/backend/src/presenter/todo/DoneTodo.ts index 4137272..f3d4766 100644 --- a/src/backend/src/presenter/todo/DoneTodo.ts +++ b/src/backend/src/presenter/todo/DoneTodo.ts @@ -1,4 +1,4 @@ -import { DoneTodoResponse } from 'schema'; +import { DoneTodoResponse } from 'schema/lib/app/types'; import { DoneTodoPresenter, DoneTodoOutputData } from 'domain-model'; import { toGqlTodo } from '../utils/converter/todo'; diff --git a/src/backend/src/presenter/todo/GetTodo.ts b/src/backend/src/presenter/todo/GetTodo.ts index fcac21d..6c5d383 100644 --- a/src/backend/src/presenter/todo/GetTodo.ts +++ b/src/backend/src/presenter/todo/GetTodo.ts @@ -1,4 +1,4 @@ -import { Todo } from 'schema'; +import { Todo } from 'schema/lib/app/types'; import { GetTodoPresenter, GetTodoOutputData } from 'domain-model'; import { toGqlTodo } from '../utils/converter/todo'; diff --git a/src/backend/src/presenter/todo/UndoneTodo.ts b/src/backend/src/presenter/todo/UndoneTodo.ts index f4b7fb2..1db602a 100644 --- a/src/backend/src/presenter/todo/UndoneTodo.ts +++ b/src/backend/src/presenter/todo/UndoneTodo.ts @@ -1,4 +1,4 @@ -import { UndoneTodoResponse } from 'schema'; +import { UndoneTodoResponse } from 'schema/lib/app/types'; import { UndoneTodoOutputData, UndoneTodoPresenter } from 'domain-model'; import { toGqlTodo } from '../utils/converter/todo'; diff --git a/src/backend/src/presenter/user/CreateUser.ts b/src/backend/src/presenter/user/CreateUser.ts index d424007..9038f4f 100644 --- a/src/backend/src/presenter/user/CreateUser.ts +++ b/src/backend/src/presenter/user/CreateUser.ts @@ -1,4 +1,4 @@ -import { CreateUserResponse } from 'schema'; +import { CreateUserResponse } from 'schema/lib/app/types'; import { CreateUserPresenter, CreateUserOutputData } from 'domain-model'; import { toGqlUser } from '../utils/converter/user'; diff --git a/src/backend/src/presenter/user/DeleteUser.ts b/src/backend/src/presenter/user/DeleteUser.ts index a3037ce..38ffeb1 100644 --- a/src/backend/src/presenter/user/DeleteUser.ts +++ b/src/backend/src/presenter/user/DeleteUser.ts @@ -1,4 +1,4 @@ -import { DeleteUserResponse } from 'schema'; +import { DeleteUserResponse } from 'schema/lib/app/types'; import { DeleteUserPresenter, DeleteUserOutputData } from 'domain-model'; import { toGqlUser } from '../utils/converter/user'; diff --git a/src/backend/src/presenter/user/GetUser.ts b/src/backend/src/presenter/user/GetUser.ts index 69d9fe8..3285fa0 100644 --- a/src/backend/src/presenter/user/GetUser.ts +++ b/src/backend/src/presenter/user/GetUser.ts @@ -1,4 +1,4 @@ -import { User } from 'schema'; +import { User } from 'schema/lib/app/types'; import { GetUserPresenter, GetUserOutputData } from 'domain-model'; import { toGqlUser } from '../utils/converter/user'; diff --git a/src/backend/src/presenter/user/GetUserById.ts b/src/backend/src/presenter/user/GetUserById.ts index b11f011..0a533f9 100644 --- a/src/backend/src/presenter/user/GetUserById.ts +++ b/src/backend/src/presenter/user/GetUserById.ts @@ -1,4 +1,4 @@ -import { User } from 'schema'; +import { User } from 'schema/lib/app/types'; import { GetUserByIdPresenter, GetUserByIdOutputData } from 'domain-model'; import { toGqlUser } from '../utils/converter/user'; diff --git a/src/backend/src/presenter/user/UpdateUserRoles.ts b/src/backend/src/presenter/user/UpdateUserRoles.ts index fa18eab..85a8094 100644 --- a/src/backend/src/presenter/user/UpdateUserRoles.ts +++ b/src/backend/src/presenter/user/UpdateUserRoles.ts @@ -1,4 +1,4 @@ -import { UpdateUserRolesResponse } from 'schema'; +import { UpdateUserRolesResponse } from 'schema/lib/app/types'; import { UpdateUserRolesPresenter, UpdateUserRolesOutputData } from 'domain-model'; import { toGqlUser } from '../utils/converter/user'; diff --git a/src/backend/src/presenter/utils/converter/todo.ts b/src/backend/src/presenter/utils/converter/todo.ts index d578216..58a1ba9 100644 --- a/src/backend/src/presenter/utils/converter/todo.ts +++ b/src/backend/src/presenter/utils/converter/todo.ts @@ -1,4 +1,4 @@ -import { Todo } from 'schema'; +import { Todo } from 'schema/lib/app/types'; import { TodoDto } from 'domain-model'; export const toGqlTodo = (todo: TodoDto | null | undefined): Todo | null => { diff --git a/src/backend/src/presenter/utils/converter/user.ts b/src/backend/src/presenter/utils/converter/user.ts index 6d27a2d..a820cbe 100644 --- a/src/backend/src/presenter/utils/converter/user.ts +++ b/src/backend/src/presenter/utils/converter/user.ts @@ -1,11 +1,10 @@ -import { Role, User } from 'schema'; +import { Role, User } from 'schema/lib/app/types'; import { UserDto } from 'domain-model'; export const toGqlUser = (user: UserDto | null | undefined): User | null => { if (!user) return null; return { id: user.id, - email: user.email, roles: (user.roles as unknown) as Role[], }; }; diff --git a/src/backend/src/repository/typeorm/_testutils/connection.ts b/src/backend/src/repository/typeorm/_testutils/connection.ts index 3b51ec5..cc56b9b 100644 --- a/src/backend/src/repository/typeorm/_testutils/connection.ts +++ b/src/backend/src/repository/typeorm/_testutils/connection.ts @@ -5,7 +5,6 @@ import fs from 'fs'; import { User } from '../user/entity/User'; import { Todo } from '../todo/entity/Todo'; -import { AuthEmailPassword } from '../auth/entity/AuthEmailPassword'; export class SqliteDbConnection { private path: string; @@ -32,7 +31,7 @@ export class SqliteDbConnection { type: 'sqlite', name: this.path, database: this.path, - entities: [User, Todo, AuthEmailPassword], + entities: [User, Todo], synchronize: true, logging: false, // logging: true, diff --git a/src/backend/src/repository/typeorm/todo/queryService/__tests__/allTodosByOwnerId.ts b/src/backend/src/repository/typeorm/todo/queryService/__tests__/allTodosByOwnerId.ts index 4fa2da8..76fd127 100644 --- a/src/backend/src/repository/typeorm/todo/queryService/__tests__/allTodosByOwnerId.ts +++ b/src/backend/src/repository/typeorm/todo/queryService/__tests__/allTodosByOwnerId.ts @@ -1,20 +1,19 @@ -import { Role } from 'domain-model'; import { Connection } from 'typeorm'; +import { Role, RoleTypes } from 'common'; import { GqlTodoRepository } from '../../repository/Todo'; import { GqlUserRepository } from '../../../user/repository/User'; import { SqliteDbConnection } from '../../../_testutils/connection'; -import { RoleTypes } from '../../../../../../../domain-model/lib'; import { GqlTodoQueryService } from '../Todo'; const seedAll = async (connection: Connection) => { const userRepository = new GqlUserRepository(connection); const todoRepository = new GqlTodoRepository(connection); - const actor = await userRepository.create({ email: 'user1@email.com' }); - await userRepository.create({ email: 'user2@email.com' }); - await userRepository.create({ email: 'user3@email.com' }); - await userRepository.create({ email: 'user4@email.com' }); + const actor = await userRepository.create({}); + await userRepository.create({}); + await userRepository.create({}); + await userRepository.create({}); actor.addRole(new Role(RoleTypes.Member)); const creators = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].map(async (value) => { diff --git a/src/backend/src/repository/typeorm/todo/queryService/__tests__/allTodosWithDeadlineApproaching.ts b/src/backend/src/repository/typeorm/todo/queryService/__tests__/allTodosWithDeadlineApproaching.ts index 8d1f398..3e2585c 100644 --- a/src/backend/src/repository/typeorm/todo/queryService/__tests__/allTodosWithDeadlineApproaching.ts +++ b/src/backend/src/repository/typeorm/todo/queryService/__tests__/allTodosWithDeadlineApproaching.ts @@ -1,18 +1,17 @@ -import { Role } from 'domain-model'; +import { Connection } from 'typeorm'; import addDays from 'date-fns/addDays'; +import { Role, RoleTypes } from 'common'; import { GqlTodoRepository } from '../../repository/Todo'; import { GqlUserRepository } from '../../../user/repository/User'; import { SqliteDbConnection } from '../../../_testutils/connection'; -import { RoleTypes } from '../../../../../../../domain-model/lib'; import { GqlTodoQueryService } from '../Todo'; -import { Connection } from 'typeorm'; const seedAll = async (connection: Connection, startingPointDueDate: Date) => { const userRepository = new GqlUserRepository(connection); const todoRepository = new GqlTodoRepository(connection); - const actor = await userRepository.create({ email: 'aaa@bb.com' }); + const actor = await userRepository.create({}); actor.addRole(new Role(RoleTypes.Member)); const creators = [1, 2, 3].map(async (value) => { diff --git a/src/backend/src/repository/typeorm/user/entity/User.ts b/src/backend/src/repository/typeorm/user/entity/User.ts index 48a6ce2..474176f 100644 --- a/src/backend/src/repository/typeorm/user/entity/User.ts +++ b/src/backend/src/repository/typeorm/user/entity/User.ts @@ -7,7 +7,8 @@ import { UpdateDateColumn, DeleteDateColumn, } from 'typeorm'; -import { RoleType, UserDto, UserEntity } from 'domain-model'; +import { RoleType } from 'common'; +import { UserDto, UserEntity } from 'domain-model'; import { Todo } from '../../todo/entity/Todo'; @@ -16,9 +17,6 @@ export class User { @PrimaryGeneratedColumn() id?: number; - @Column() - email: string; - @Column('simple-array') roles: RoleType[]; @@ -34,8 +32,7 @@ export class User { @DeleteDateColumn() readonly deletedAt?: Date; - constructor(email: string, roles: RoleType[]) { - this.email = email; + constructor(roles: RoleType[]) { this.roles = roles; } } @@ -44,7 +41,6 @@ export class OrmUserFactory { public static fromDto(user: UserDto): User { return { id: +user.id, - email: user.email, roles: user.roles, createdAt: user.createdAt ?? undefined, updatedAt: user.updatedAt ?? undefined, @@ -59,7 +55,6 @@ export class OrmUserFactory { public static toDto(user: User): UserDto { return { id: `${user.id}`, - email: user.email, roles: user.roles, createdAt: user.createdAt, updatedAt: user.updatedAt, diff --git a/src/backend/src/repository/typeorm/user/queryService/__tests__/getUserById.ts b/src/backend/src/repository/typeorm/user/queryService/__tests__/getUserById.ts index 504f387..75b20ba 100644 --- a/src/backend/src/repository/typeorm/user/queryService/__tests__/getUserById.ts +++ b/src/backend/src/repository/typeorm/user/queryService/__tests__/getUserById.ts @@ -6,10 +6,8 @@ import { SqliteDbConnection } from '../../../_testutils/connection'; const seedAll = async (connection: Connection) => { const userRepository = new GqlUserRepository(connection); - const users = [1, 2, 3].map(async (id) => { - await userRepository.create({ - email: `user${id}@email.com`, - }); + const users = [1, 2, 3].map(async () => { + await userRepository.create({}); }); await Promise.all(users); }; diff --git a/src/backend/src/repository/typeorm/user/repository/User.ts b/src/backend/src/repository/typeorm/user/repository/User.ts index 6428ae4..ea2d39d 100644 --- a/src/backend/src/repository/typeorm/user/repository/User.ts +++ b/src/backend/src/repository/typeorm/user/repository/User.ts @@ -1,6 +1,6 @@ import { Connection, Repository } from 'typeorm'; -import { NotFoundError } from 'common'; -import { UserEntity, RoleTypes, UserRepository, CreateUserInputData } from 'domain-model'; +import { NotFoundError, RoleTypes } from 'common'; +import { UserEntity, UserRepository, CreateUserInputData } from 'domain-model'; import { User as OrmUser, OrmUserFactory } from '../entity/User'; @@ -20,8 +20,8 @@ export class GqlUserRepository implements UserRepository { return OrmUserFactory.toEntity(result); } - public async create(request: CreateUserInputData) { - const user = new OrmUser(request.email, [RoleTypes.Anonymous]); + public async create(_request: CreateUserInputData) { + const user = new OrmUser([RoleTypes.Anonymous]); const repository = this.dbConnection.getRepository(OrmUser); const result = await repository.save(user); diff --git a/src/backend/tests/integration/User/__tests__/deleteUser.ts b/src/backend/tests/integration/User/__tests__/deleteUser.ts index d7258fb..7072ab6 100644 --- a/src/backend/tests/integration/User/__tests__/deleteUser.ts +++ b/src/backend/tests/integration/User/__tests__/deleteUser.ts @@ -1,9 +1,9 @@ import { ApolloServerTestClient } from 'apollo-server-testing'; import { gql } from 'apollo-server-express'; +import { RoleTypes } from 'common'; import { SqliteDbConnection } from '../../setup/database'; import { createApolloServerForTesting } from '../../setup/apollo-server'; -import { RoleTypes } from 'domain-model'; const DELETE_USER = gql` # Write your query or mutation here @@ -11,7 +11,6 @@ const DELETE_USER = gql` deleteUser(input: $input) { user { id - email } } } @@ -44,7 +43,7 @@ describe('deleteUser', () => { }); const { user } = result?.data?.deleteUser ?? {}; - expect(user?.email).toBe('anonymous@email.com'); + expect(user).toBeDefined(); }); test('NG: 存在しないIDを指定した', async () => { @@ -104,7 +103,7 @@ describe('deleteUser', () => { }); const { user } = result?.data?.deleteUser ?? {}; - expect(user?.email).toBe('member@email.com'); + expect(user).toBeDefined(); }); test('NG: 失敗:Adminロールでないactorが操作した', async () => { diff --git a/src/backend/tests/integration/setup/database.ts b/src/backend/tests/integration/setup/database.ts index fcac597..5a96ca0 100644 --- a/src/backend/tests/integration/setup/database.ts +++ b/src/backend/tests/integration/setup/database.ts @@ -5,7 +5,6 @@ import fs from 'fs'; import { User } from '../../../src/repository/typeorm/user/entity/User'; import { Todo } from '../../../src/repository/typeorm/todo/entity/Todo'; -import { AuthEmailPassword } from '../../../src/repository/typeorm/auth/entity/AuthEmailPassword'; import { seedAll } from '../../../src/infrastructure/typeorm/seeder/seedAll'; export const getRandomDbPath = () => `./test_db/${uuidv4()}.sqlite`; @@ -15,7 +14,7 @@ export const createDbConnection = async (randomDbPath: string) => type: 'sqlite', name: randomDbPath, database: randomDbPath, - entities: [User, Todo, AuthEmailPassword], + entities: [User, Todo], synchronize: true, logging: false, }); diff --git a/src/common/jest.config.js b/src/common/jest.config.js new file mode 100644 index 0000000..dccc917 --- /dev/null +++ b/src/common/jest.config.js @@ -0,0 +1,6 @@ +module.exports = { + preset: 'ts-jest', + testMatch: ['**/__tests__/*.+(ts|tsx|js)'], + moduleFileExtensions: ['ts', 'tsx', 'js'], + testEnvironment: 'node', +}; diff --git a/src/common/package.json b/src/common/package.json index b5a75c8..695766e 100644 --- a/src/common/package.json +++ b/src/common/package.json @@ -11,6 +11,13 @@ "clean": "run-p clean:*", "clean:lib": "rimraf lib *.tsbuildinfo", "clean:modules": "rimraf node_modules", - "reinstall": "yarn install" + "clean:coverage": "rimraf coverage", + "reinstall": "yarn install", + "test": "jest", + "test:watch": "yarn test --watch", + "test:cov": "run-s test:cov:run test:cov:open", + "test:cov:run": "yarn test --coverage", + "test:cov:open": "npx http-server -o ./coverage/lcov-report", + "test:cov:watch": "yarn test --coverage --watch" } } diff --git a/src/common/src/index.ts b/src/common/src/index.ts index 93ae819..e5b8992 100644 --- a/src/common/src/index.ts +++ b/src/common/src/index.ts @@ -1 +1,2 @@ export * from './error'; +export * from './value-object'; diff --git a/src/domain-model/src/entity/common/Email/__tests__/index.ts b/src/common/src/value-object/Email/__tests__/index.ts similarity index 96% rename from src/domain-model/src/entity/common/Email/__tests__/index.ts rename to src/common/src/value-object/Email/__tests__/index.ts index ea325de..b729b12 100644 --- a/src/domain-model/src/entity/common/Email/__tests__/index.ts +++ b/src/common/src/value-object/Email/__tests__/index.ts @@ -1,4 +1,4 @@ -import { IllegalArgumentError, PropertyRequiredError } from 'common'; +import { IllegalArgumentError, PropertyRequiredError } from '../../../error'; import { Email, denyIllegalEmail } from '../'; describe('EmailEntity', () => { diff --git a/src/domain-model/src/entity/common/Email/index.ts b/src/common/src/value-object/Email/index.ts similarity index 91% rename from src/domain-model/src/entity/common/Email/index.ts rename to src/common/src/value-object/Email/index.ts index f9798f6..0c64954 100644 --- a/src/domain-model/src/entity/common/Email/index.ts +++ b/src/common/src/value-object/Email/index.ts @@ -1,4 +1,4 @@ -import { PropertyRequiredError, IllegalArgumentError } from 'common'; +import { PropertyRequiredError, IllegalArgumentError } from '../../error'; const regex = /[^\s]+@[^\s]+/; diff --git a/src/domain-model/src/entity/common/ID.ts b/src/common/src/value-object/ID.ts similarity index 89% rename from src/domain-model/src/entity/common/ID.ts rename to src/common/src/value-object/ID.ts index 46cfb69..62a1f48 100644 --- a/src/domain-model/src/entity/common/ID.ts +++ b/src/common/src/value-object/ID.ts @@ -1,4 +1,4 @@ -import { PropertyRequiredError, IllegalArgumentError } from 'common'; +import { PropertyRequiredError, IllegalArgumentError } from '../error'; export const denyIllegalId = (id: string) => { if (!id) throw new PropertyRequiredError('id'); diff --git a/src/domain-model/src/entity/common/Password/__tests__/encrypt.ts b/src/common/src/value-object/Password/__tests__/encrypt.ts similarity index 93% rename from src/domain-model/src/entity/common/Password/__tests__/encrypt.ts rename to src/common/src/value-object/Password/__tests__/encrypt.ts index 732f947..a50cc03 100644 --- a/src/domain-model/src/entity/common/Password/__tests__/encrypt.ts +++ b/src/common/src/value-object/Password/__tests__/encrypt.ts @@ -1,4 +1,4 @@ -import { IllegalArgumentError, PropertyRequiredError } from 'common'; +import { IllegalArgumentError, PropertyRequiredError } from '../../../error'; import { encryptPassword } from '../encrypt'; describe('PasswordEntityEncrypt', () => { diff --git a/src/domain-model/src/entity/common/Password/__tests__/entity.ts b/src/common/src/value-object/Password/__tests__/entity.ts similarity index 96% rename from src/domain-model/src/entity/common/Password/__tests__/entity.ts rename to src/common/src/value-object/Password/__tests__/entity.ts index ab50136..e48b2a0 100644 --- a/src/domain-model/src/entity/common/Password/__tests__/entity.ts +++ b/src/common/src/value-object/Password/__tests__/entity.ts @@ -1,4 +1,4 @@ -import { IllegalArgumentError, PropertyRequiredError } from 'common'; +import { IllegalArgumentError, PropertyRequiredError } from '../../../error'; import { encryptPassword } from '../encrypt'; import { Password } from '../entity'; diff --git a/src/domain-model/src/entity/common/Password/encrypt.ts b/src/common/src/value-object/Password/encrypt.ts similarity index 89% rename from src/domain-model/src/entity/common/Password/encrypt.ts rename to src/common/src/value-object/Password/encrypt.ts index e6673ec..447f8fa 100644 --- a/src/domain-model/src/entity/common/Password/encrypt.ts +++ b/src/common/src/value-object/Password/encrypt.ts @@ -1,5 +1,6 @@ import { hash } from 'bcrypt'; -import { PropertyRequiredError, IllegalArgumentError } from 'common'; + +import { PropertyRequiredError, IllegalArgumentError } from '../../error'; const regex = /^(?=.*?[a-z])(?=.*?\d)[a-z\d]{8,100}$/i; diff --git a/src/domain-model/src/entity/common/Password/entity.ts b/src/common/src/value-object/Password/entity.ts similarity index 93% rename from src/domain-model/src/entity/common/Password/entity.ts rename to src/common/src/value-object/Password/entity.ts index 159c1fa..706c966 100644 --- a/src/domain-model/src/entity/common/Password/entity.ts +++ b/src/common/src/value-object/Password/entity.ts @@ -1,5 +1,6 @@ import { compare } from 'bcrypt'; -import { PropertyRequiredError, IllegalArgumentError } from 'common'; + +import { PropertyRequiredError, IllegalArgumentError } from '../../error'; export const denyIllegalPassword = (passwordEncrypted: string) => { if (!passwordEncrypted) throw new PropertyRequiredError('passwordEncrypted'); diff --git a/src/domain-model/src/entity/common/Password/index.ts b/src/common/src/value-object/Password/index.ts similarity index 100% rename from src/domain-model/src/entity/common/Password/index.ts rename to src/common/src/value-object/Password/index.ts diff --git a/src/common/src/value-object/Role/__tests__/index.ts b/src/common/src/value-object/Role/__tests__/index.ts new file mode 100644 index 0000000..b8df199 --- /dev/null +++ b/src/common/src/value-object/Role/__tests__/index.ts @@ -0,0 +1,55 @@ +import { IllegalArgumentError, PropertyRequiredError } from '../../../error'; +import { Role, RoleTypes, denyIllegalRole } from '../'; + +describe('RoleEntity', () => { + describe('denyIllegalRole', () => { + test('OK: Roleエンティティを生成できる文字列である', () => { + expect(() => denyIllegalRole(RoleTypes.Member)).not.toThrow(); + }); + test('NG: roleが空文字', () => { + expect(() => denyIllegalRole('')).toThrow(PropertyRequiredError); + }); + test('NG: roleが不正', () => { + expect(() => denyIllegalRole('unknownRoleName')).toThrow(IllegalArgumentError); + }); + }); + + describe('constructor', () => { + test('OK: Roleエンティティを生成できた', () => { + expect(new Role(RoleTypes.Member)).toBeDefined(); + }); + }); + + describe('getters', () => { + const roleString = RoleTypes.Member; + const roleEntity = new Role(roleString); + + test('OK: getRole', () => { + expect(roleEntity.getRole()).toBe(roleString); + }); + test('OK: toString', () => { + expect(roleEntity.toString()).toBe(roleString); + }); + test('OK: isEqual(string)', () => { + expect(roleEntity.isEqual(roleString)).toBeTruthy(); + }); + test('OK: isEqual(Role)', () => { + expect(roleEntity.isEqual(new Role(roleString))).toBeTruthy(); + }); + test('OK: isEqual(RoleTypes)', () => { + expect(roleEntity.isEqual(RoleTypes.Member)).toBeTruthy(); + }); + test('NG: !== isEqual(string)', () => { + expect(roleEntity.isEqual('unknownRoleName')).toBeFalsy(); + }); + test('NG: !== isEqual(Role)', () => { + expect(roleEntity.isEqual(new Role(RoleTypes.Anonymous))).toBeFalsy(); + }); + test('NG: !== isEqual(RoleTypes)', () => { + expect(roleEntity.isEqual(RoleTypes.Anonymous)).toBeFalsy(); + }); + test('NG: !== isEqual(unknown)', () => { + expect(() => roleEntity.isEqual({} as any)).toThrow(IllegalArgumentError); // eslint-disable-line @typescript-eslint/no-explicit-any + }); + }); +}); diff --git a/src/domain-model/src/entity/common/Role.ts b/src/common/src/value-object/Role/index.ts similarity index 69% rename from src/domain-model/src/entity/common/Role.ts rename to src/common/src/value-object/Role/index.ts index fc66a4b..8995415 100644 --- a/src/domain-model/src/entity/common/Role.ts +++ b/src/common/src/value-object/Role/index.ts @@ -1,4 +1,4 @@ -import { PropertyRequiredError, IllegalArgumentError } from 'common'; +import { PropertyRequiredError, IllegalArgumentError } from '../../error'; export enum RoleEnum { Anonymous = 'ANONYMOUS', @@ -10,7 +10,7 @@ export const RoleTypes = RoleEnum; const RoleStrings = Object.values(RoleEnum) as string[]; -const denyIllegalRole = (role: string) => { +export const denyIllegalRole = (role: string) => { if (!role) throw new PropertyRequiredError('role'); if (!RoleStrings.includes(role)) throw new IllegalArgumentError(`${role} はロールではありません`); }; @@ -32,10 +32,18 @@ export class Role { } isEqual(role: Role): boolean; + isEqual(role: RoleType): boolean; isEqual(role: string): boolean; isEqual(role: unknown): boolean { if (role instanceof Role) return this.role === role.toString(); if (typeof role === 'string') return this.role === role; + if (typeof role === 'object') { + const targetRoleString = (role as object).toString(); + if (RoleStrings.some((roleString) => roleString === targetRoleString)) { + return this.role === targetRoleString; + } + } + throw new IllegalArgumentError('比較可能なroleではありません'); } } diff --git a/src/domain-model/src/entity/common/index.ts b/src/common/src/value-object/index.ts similarity index 100% rename from src/domain-model/src/entity/common/index.ts rename to src/common/src/value-object/index.ts diff --git a/src/domain-model/src/entity/index.ts b/src/domain-model/src/entity/index.ts index 260425d..7438ea8 100644 --- a/src/domain-model/src/entity/index.ts +++ b/src/domain-model/src/entity/index.ts @@ -1,4 +1,2 @@ -export * from './auth'; -export * from './common'; export * from './todo'; export * from './user'; diff --git a/src/domain-model/src/entity/todo/TodoEntity.ts b/src/domain-model/src/entity/todo/TodoEntity.ts index e73c49b..072df6a 100644 --- a/src/domain-model/src/entity/todo/TodoEntity.ts +++ b/src/domain-model/src/entity/todo/TodoEntity.ts @@ -1,7 +1,6 @@ -import { ConflictError } from 'common'; +import { ConflictError, ID } from 'common'; import { TodoDto, TodoStatus, denyIllegalTodoDto } from './TodoDto'; -import { ID } from '../common/ID'; export class TodoEntity { private id: ID; diff --git a/src/domain-model/src/entity/todo/__tests__/index.ts b/src/domain-model/src/entity/todo/__tests__/index.ts index 74b7313..fbc5a99 100644 --- a/src/domain-model/src/entity/todo/__tests__/index.ts +++ b/src/domain-model/src/entity/todo/__tests__/index.ts @@ -1,8 +1,7 @@ -import { PropertyRequiredError, ConflictError } from 'common'; +import { PropertyRequiredError, ConflictError, ID } from 'common'; import { TodoDto, TodoStatus } from '../TodoDto'; import { TodoEntity } from '../TodoEntity'; -import { ID } from '../../common/ID'; describe('TodoEntity', () => { describe('constructor', () => { diff --git a/src/domain-model/src/entity/user/UserDto.ts b/src/domain-model/src/entity/user/UserDto.ts index 9b9a6fa..a9a2e59 100644 --- a/src/domain-model/src/entity/user/UserDto.ts +++ b/src/domain-model/src/entity/user/UserDto.ts @@ -1,11 +1,9 @@ -import { PropertyRequiredError, IllegalArgumentError } from 'common'; +import { PropertyRequiredError, IllegalArgumentError, Role, RoleType } from 'common'; -import { Role, RoleType } from '../common/Role'; import { TimeStampTypes, denyDoesNotHaveRequiredProperties } from '../utils'; export type UserDto = { id: string; - email: string; roles: RoleType[]; } & TimeStampTypes; @@ -17,6 +15,6 @@ export const denyIllegalRoles = (roles: string[]) => { export const denyIllegalUserDto = (user: UserDto) => { if (!user) throw new PropertyRequiredError('user'); - denyDoesNotHaveRequiredProperties(user, ['id', 'email', 'roles']); + denyDoesNotHaveRequiredProperties(user, ['id', 'roles']); denyIllegalRoles(user.roles); }; diff --git a/src/domain-model/src/entity/user/UserEntity.ts b/src/domain-model/src/entity/user/UserEntity.ts index c8c883c..6dc272c 100644 --- a/src/domain-model/src/entity/user/UserEntity.ts +++ b/src/domain-model/src/entity/user/UserEntity.ts @@ -1,19 +1,14 @@ -import { ValidationError, ConflictError } from 'common'; +import { ValidationError, ConflictError, ID, Role, RoleTypes, RoleType } from 'common'; import { UserDto, denyIllegalUserDto } from './UserDto'; -import { ID } from '../common/ID'; -import { Email } from '../common/Email'; -import { Role, RoleTypes, RoleType } from '../common/Role'; export class UserEntity { private id: ID; - private email: Email; private roles: Role[] = [new Role(RoleTypes.Anonymous)]; constructor(user: UserDto) { denyIllegalUserDto(user); this.id = new ID(user.id); - this.email = new Email(user.email); this.roles = user.roles.map((role) => new Role(role as RoleType)); } @@ -21,10 +16,6 @@ export class UserEntity { return this.id; } - getEmail() { - return this.email; - } - getRoles() { return this.roles; } @@ -34,11 +25,6 @@ export class UserEntity { this.isValid(); } - setEmail(email: Email) { - this.email = email; - this.isValid(); - } - updateRoles(newRoles: Role[]) { this.roles = newRoles; this.isValid(); @@ -68,7 +54,6 @@ export class UserEntity { toDto(): UserDto { return { id: this.id.toString(), - email: this.email.toString(), roles: this.roles.map((role) => role.toString()), }; } diff --git a/src/domain-model/src/entity/user/__tests__/index.ts b/src/domain-model/src/entity/user/__tests__/index.ts index 55b7932..d82dd95 100644 --- a/src/domain-model/src/entity/user/__tests__/index.ts +++ b/src/domain-model/src/entity/user/__tests__/index.ts @@ -1,15 +1,7 @@ -import { - PropertyRequiredError, - IllegalArgumentError, - ConflictError, - ValidationError, -} from 'common'; +import { PropertyRequiredError, ConflictError, ValidationError, Role, RoleTypes, ID } from 'common'; import { UserDto } from '../UserDto'; import { UserEntity } from '../UserEntity'; -import { Role, RoleTypes } from '../../common/Role'; -import { ID } from '../../common/ID'; -import { Email } from '../../common/Email'; describe('UserEntity', () => { describe('constructor', () => { @@ -17,7 +9,6 @@ describe('UserEntity', () => { const user = { id: '1', email: 'aaa@bbb.com', roles: [RoleTypes.Member] }; const user1 = new UserEntity(user); expect(user1.getId().isEqual(user.id)).toBeTruthy(); - expect(user1.getEmail().isEqual(user.email)).toBeTruthy(); }); test('NG: idが不足しているため、失敗した', () => { @@ -25,20 +16,10 @@ describe('UserEntity', () => { expect(() => new UserEntity((user as unknown) as UserDto)).toThrow(PropertyRequiredError); }); - test('NG: emailが不足しているため、失敗した', () => { - const user = { id: '1', roles: [RoleTypes.Member] }; - expect(() => new UserEntity((user as unknown) as UserDto)).toThrow(PropertyRequiredError); - }); - test('NG: rolesが不足しているため、失敗した', () => { const user = { id: '1', email: 'aaa@bbb.com' }; expect(() => new UserEntity((user as unknown) as UserDto)).toThrow(PropertyRequiredError); }); - - test('NG: 不正なメールアドレスを指定したため、失敗した', () => { - const user = { id: '1', email: 'aaaaaaaa', roles: [RoleTypes.Member] }; - expect(() => new UserEntity((user as unknown) as UserDto)).toThrow(IllegalArgumentError); - }); }); describe('getter/setter', () => { @@ -53,15 +34,6 @@ describe('UserEntity', () => { expect(user.getId().isEqual(newId)).toBeTruthy(); }); - test('OK: Email', () => { - const user = new UserEntity(userDto); - expect(user.getEmail().isEqual(userDto.email)).toBeTruthy(); - - const newEmail = new Email('new_email@bbb.com'); - user.setEmail(newEmail); - expect(user.getEmail().isEqual(newEmail)).toBeTruthy(); - }); - test('OK: Roles', () => { const user = new UserEntity(userDto); expect(user.getRoles()?.[0].isEqual(RoleTypes.Member)).toBeTruthy(); diff --git a/src/domain-model/src/policy/decision/__tests__/common.ts b/src/domain-model/src/policy/decision/__tests__/common.ts index 90bcc2f..4ff4ad1 100644 --- a/src/domain-model/src/policy/decision/__tests__/common.ts +++ b/src/domain-model/src/policy/decision/__tests__/common.ts @@ -1,7 +1,5 @@ -import { AuthenticationFailedError, UnauthorizedError } from 'common'; +import { AuthenticationFailedError, UnauthorizedError, RoleTypes, ID } from 'common'; -import { RoleTypes } from '../../../entity/common/Role'; -import { ID } from '../../../entity/common/ID'; import { UserEntity } from '../../../entity/user/UserEntity'; import { denyUnauthenticated, @@ -13,7 +11,7 @@ import { describe('PolicyDecisionCommon', () => { describe('denyUnauthenticated', () => { test('成功:actorが設定されている', () => { - const actor = new UserEntity({ id: '1', email: 'aaa@bb.com', roles: [RoleTypes.Member] }); + const actor = new UserEntity({ id: '1', roles: [RoleTypes.Member] }); denyUnauthenticated(actor); }); @@ -30,21 +28,20 @@ describe('PolicyDecisionCommon', () => { describe('denyWhenActorHasOnlyAnonymousRole', () => { test('成功:Memberロールが設定されている', () => { - const actor = new UserEntity({ id: '1', email: 'aaa@bb.com', roles: [RoleTypes.Member] }); + const actor = new UserEntity({ id: '1', roles: [RoleTypes.Member] }); denyWhenActorHasOnlyAnonymousRole(actor); }); test('成功:Anonymous+Member', () => { const actor = new UserEntity({ id: '1', - email: 'aaa@bb.com', roles: [RoleTypes.Anonymous, RoleTypes.Member], }); denyWhenActorHasOnlyAnonymousRole(actor); }); test('失敗:Anonymousロールしか持っていない', () => { - const actor = new UserEntity({ id: '1', email: 'aaa@bb.com', roles: [RoleTypes.Anonymous] }); + const actor = new UserEntity({ id: '1', roles: [RoleTypes.Anonymous] }); expect(() => denyWhenActorHasOnlyAnonymousRole(actor)).toThrow(UnauthorizedError); }); @@ -61,33 +58,31 @@ describe('PolicyDecisionCommon', () => { describe('allowOnlyWhenActorHasMemberRole', () => { test('成功:Memberロールが設定されている', () => { - const actor = new UserEntity({ id: '1', email: 'aaa@bb.com', roles: [RoleTypes.Member] }); + const actor = new UserEntity({ id: '1', roles: [RoleTypes.Member] }); allowOnlyWhenActorHasMemberRole(actor); }); test('成功:Anonymous+Member', () => { const actor = new UserEntity({ id: '1', - email: 'aaa@bb.com', roles: [RoleTypes.Anonymous, RoleTypes.Member], }); denyWhenActorHasOnlyAnonymousRole(actor); }); test('失敗:Anonymousロールしか持っていない', () => { - const actor = new UserEntity({ id: '1', email: 'aaa@bb.com', roles: [RoleTypes.Anonymous] }); + const actor = new UserEntity({ id: '1', roles: [RoleTypes.Anonymous] }); expect(() => allowOnlyWhenActorHasMemberRole(actor)).toThrow(UnauthorizedError); }); test('失敗:Adminロールしか持っていない', () => { - const actor = new UserEntity({ id: '1', email: 'aaa@bb.com', roles: [RoleTypes.Admin] }); + const actor = new UserEntity({ id: '1', roles: [RoleTypes.Admin] }); expect(() => allowOnlyWhenActorHasMemberRole(actor)).toThrow(UnauthorizedError); }); test('失敗:Anonymous+Admin', () => { const actor = new UserEntity({ id: '1', - email: 'aaa@bb.com', roles: [RoleTypes.Anonymous, RoleTypes.Admin], }); expect(() => allowOnlyWhenActorHasMemberRole(actor)).toThrow(UnauthorizedError); @@ -109,7 +104,6 @@ describe('PolicyDecisionCommon', () => { const ownerId = new ID('1'); const actor = new UserEntity({ id: ownerId.getId(), - email: 'aaa@bb.com', roles: [RoleTypes.Member], }); allowOnlyWhenActorIsOwner(ownerId, actor); @@ -117,7 +111,7 @@ describe('PolicyDecisionCommon', () => { test('失敗:異なるownerId', () => { const ownerId = new ID('1'); - const actor = new UserEntity({ id: '2', email: 'aaa@bb.com', roles: [RoleTypes.Member] }); + const actor = new UserEntity({ id: '2', roles: [RoleTypes.Member] }); expect(() => allowOnlyWhenActorIsOwner(ownerId, actor)).toThrow(UnauthorizedError); }); diff --git a/src/domain-model/src/policy/decision/common.ts b/src/domain-model/src/policy/decision/common.ts index 5dbcf19..b4ff478 100644 --- a/src/domain-model/src/policy/decision/common.ts +++ b/src/domain-model/src/policy/decision/common.ts @@ -3,10 +3,10 @@ import { IllegalArgumentError, PropertyRequiredError, UnauthorizedError, + ID, + RoleTypes, } from 'common'; -import { ID } from '../../entity/common/ID'; -import { RoleTypes } from '../../entity/common/Role'; import { UserEntity } from '../../entity/user/UserEntity'; export const denyIfNotSet = ( diff --git a/src/domain-model/src/query/todo/__tests__/AllTodosByOwnerId.ts b/src/domain-model/src/query/todo/__tests__/AllTodosByOwnerId.ts index 11d2714..cf48847 100644 --- a/src/domain-model/src/query/todo/__tests__/AllTodosByOwnerId.ts +++ b/src/domain-model/src/query/todo/__tests__/AllTodosByOwnerId.ts @@ -1,9 +1,10 @@ +import { RoleTypes } from 'common'; + import { AllTodosByOwnerIdInteractor } from '../AllTodosByOwnerId'; import { MockTodoQueryService } from '../_mocks/MockTodoQueryService'; import { MockAllTodosByOwnerIdPresenter } from '../_mocks/MockTodoPresenter'; import { TodoDto, TodoStatus } from '../../../entity/todo/TodoDto'; import { UserEntity } from '../../../entity/user/UserEntity'; -import { RoleTypes } from '../../../entity/common/Role'; /** * TODOを3つ作成しておく @@ -12,7 +13,6 @@ const setup = async () => { // user repository const actor = new UserEntity({ id: '1', - email: 'target@email.com', roles: [RoleTypes.Member], }); diff --git a/src/domain-model/src/query/todo/__tests__/AllTodosWithDeadlineApproaching.ts b/src/domain-model/src/query/todo/__tests__/AllTodosWithDeadlineApproaching.ts index 7bb7393..d852053 100644 --- a/src/domain-model/src/query/todo/__tests__/AllTodosWithDeadlineApproaching.ts +++ b/src/domain-model/src/query/todo/__tests__/AllTodosWithDeadlineApproaching.ts @@ -1,9 +1,10 @@ +import { RoleTypes } from 'common'; + import { AllTodosWithDeadlineApproachingInteractor } from '../AllTodosWithDeadlineApproaching'; import { MockTodoQueryService } from '../_mocks/MockTodoQueryService'; import { MockAllTodosWithDeadlineApproachingPresenter } from '../_mocks/MockTodoPresenter'; import { TodoDto, TodoStatus } from '../../../entity/todo/TodoDto'; import { UserEntity } from '../../../entity/user/UserEntity'; -import { RoleTypes } from '../../../entity/common/Role'; /** * TODOを3つ作成しておく @@ -12,7 +13,6 @@ const setup = async () => { // user repository const actor = new UserEntity({ id: '1', - email: 'target@email.com', roles: [RoleTypes.Member], }); diff --git a/src/domain-model/src/query/user/__tests__/GetUserById.ts b/src/domain-model/src/query/user/__tests__/GetUserById.ts index a763203..707a12a 100644 --- a/src/domain-model/src/query/user/__tests__/GetUserById.ts +++ b/src/domain-model/src/query/user/__tests__/GetUserById.ts @@ -1,9 +1,10 @@ +import { RoleTypes } from 'common'; + import { GetUserByIdInteractor } from '../GetUserById'; import { MockUserQueryService } from '../_mocks/MockUserQueryService'; import { MockGetUserByIdPresenter } from '../_mocks/MockUserPresenter'; import { UserDto } from '../../../entity/user/UserDto'; import { UserEntity } from '../../../entity/user/UserEntity'; -import { RoleTypes } from '../../../entity/common/Role'; /** * TODOを3つ作成しておく diff --git a/src/domain-model/src/usecase/index.ts b/src/domain-model/src/usecase/index.ts index 6717360..7438ea8 100644 --- a/src/domain-model/src/usecase/index.ts +++ b/src/domain-model/src/usecase/index.ts @@ -1,3 +1,2 @@ -export * from './auth'; export * from './todo'; export * from './user'; diff --git a/src/domain-model/src/usecase/todo/__tests__/CreateTodo.ts b/src/domain-model/src/usecase/todo/__tests__/CreateTodo.ts index 2cad913..7c9e277 100644 --- a/src/domain-model/src/usecase/todo/__tests__/CreateTodo.ts +++ b/src/domain-model/src/usecase/todo/__tests__/CreateTodo.ts @@ -11,7 +11,7 @@ import { MockUserRepository } from '../../user/_mocks/MockUserRepository'; const setup = async () => { // user repository const userRepository = new MockUserRepository(); - const userEntity = await userRepository.create({ email: 'target@email.com' }); + const userEntity = await userRepository.create({}); const ownerId = userEntity.getId().toString(); // todo interactor diff --git a/src/domain-model/src/usecase/todo/__tests__/DeleteTodo.ts b/src/domain-model/src/usecase/todo/__tests__/DeleteTodo.ts index 52b7c57..0e770e9 100644 --- a/src/domain-model/src/usecase/todo/__tests__/DeleteTodo.ts +++ b/src/domain-model/src/usecase/todo/__tests__/DeleteTodo.ts @@ -1,10 +1,9 @@ -import { NotFoundError, UnauthorizedError } from 'common'; +import { NotFoundError, UnauthorizedError, ID } from 'common'; import { DeleteTodoInteractor } from '../DeleteTodo'; import { MockTodoRepository } from '../_mocks/MockTodoRepository'; import { MockDeleteTodoPresenter } from '../_mocks/MockTodoPresenter'; import { MockUserRepository } from '../../user/_mocks/MockUserRepository'; -import { ID } from '../../../entity/common/ID'; import { UserEntity } from '../../../entity/user/UserEntity'; /** @@ -13,7 +12,7 @@ import { UserEntity } from '../../../entity/user/UserEntity'; const setup = async () => { // user repository const userRepository = new MockUserRepository(); - const actor = await userRepository.create({ email: 'target@email.com' }); + const actor = await userRepository.create({}); // create todo const repository = new MockTodoRepository(); diff --git a/src/domain-model/src/usecase/todo/__tests__/DoneTodo.ts b/src/domain-model/src/usecase/todo/__tests__/DoneTodo.ts index 773e7d8..c42b2f1 100644 --- a/src/domain-model/src/usecase/todo/__tests__/DoneTodo.ts +++ b/src/domain-model/src/usecase/todo/__tests__/DoneTodo.ts @@ -1,10 +1,9 @@ -import { NotFoundError, ConflictError, UnauthorizedError } from 'common'; +import { NotFoundError, ConflictError, UnauthorizedError, ID } from 'common'; import { DoneTodoInteractor } from '../DoneTodo'; import { MockTodoRepository } from '../_mocks/MockTodoRepository'; import { MockDoneTodoPresenter } from '../_mocks/MockTodoPresenter'; import { MockUserRepository } from '../../user/_mocks/MockUserRepository'; -import { ID } from '../../../entity/common/ID'; import { UserEntity } from '../../../entity/user/UserEntity'; import { TodoStatus } from '../../../entity/todo/TodoDto'; @@ -14,7 +13,7 @@ import { TodoStatus } from '../../../entity/todo/TodoDto'; const setup = async () => { // user repository const userRepository = new MockUserRepository(); - const actor = await userRepository.create({ email: 'target@email.com' }); + const actor = await userRepository.create({}); // create todo const repository = new MockTodoRepository(); diff --git a/src/domain-model/src/usecase/todo/__tests__/GetTodo.ts b/src/domain-model/src/usecase/todo/__tests__/GetTodo.ts index 34a85c6..430ae99 100644 --- a/src/domain-model/src/usecase/todo/__tests__/GetTodo.ts +++ b/src/domain-model/src/usecase/todo/__tests__/GetTodo.ts @@ -9,7 +9,7 @@ import { MockUserRepository } from '../../user/_mocks/MockUserRepository'; const setup = async () => { // user repository const userRepository = new MockUserRepository(); - const userEntity = await userRepository.create({ email: 'target@email.com' }); + const userEntity = await userRepository.create({}); const ownerId = userEntity.getId().toString(); // create todo diff --git a/src/domain-model/src/usecase/todo/__tests__/UndoneTodo.ts b/src/domain-model/src/usecase/todo/__tests__/UndoneTodo.ts index 43779f1..73b39d6 100644 --- a/src/domain-model/src/usecase/todo/__tests__/UndoneTodo.ts +++ b/src/domain-model/src/usecase/todo/__tests__/UndoneTodo.ts @@ -1,11 +1,10 @@ -import { NotFoundError, ConflictError, UnauthorizedError } from 'common'; +import { NotFoundError, ConflictError, UnauthorizedError, ID } from 'common'; import { UndoneTodoInteractor } from '../UndoneTodo'; import { MockTodoRepository } from '../_mocks/MockTodoRepository'; import { MockUndoneTodoPresenter, MockDoneTodoPresenter } from '../_mocks/MockTodoPresenter'; import { MockUserRepository } from '../../user/_mocks/MockUserRepository'; import { DoneTodoInteractor } from '../DoneTodo'; -import { ID } from '../../../entity/common/ID'; import { UserEntity } from '../../../entity/user/UserEntity'; import { TodoStatus } from '../../../entity/todo/TodoDto'; @@ -16,7 +15,7 @@ import { TodoStatus } from '../../../entity/todo/TodoDto'; const setup = async () => { // user repository const userRepository = new MockUserRepository(); - const actor = await userRepository.create({ email: 'target@email.com' }); + const actor = await userRepository.create({}); // create todo const repository = new MockTodoRepository(); diff --git a/src/domain-model/src/usecase/user/CreateUser.ts b/src/domain-model/src/usecase/user/CreateUser.ts index 640df4d..c5c54dc 100644 --- a/src/domain-model/src/usecase/user/CreateUser.ts +++ b/src/domain-model/src/usecase/user/CreateUser.ts @@ -18,3 +18,5 @@ export class CreateUserInteractor implements CreateUserUseCase { this.presenter.output(outputData); } } + +// TODO: 特権ユーザが Auth と連携してユーザインスタンスを作成するパターンを検討する diff --git a/src/domain-model/src/usecase/user/DeleteUser.ts b/src/domain-model/src/usecase/user/DeleteUser.ts index 0b57e68..95cdc07 100644 --- a/src/domain-model/src/usecase/user/DeleteUser.ts +++ b/src/domain-model/src/usecase/user/DeleteUser.ts @@ -1,10 +1,9 @@ -import { NotFoundError, UnauthorizedError } from 'common'; +import { NotFoundError, UnauthorizedError, RoleTypes } from 'common'; import { UserRepository } from './interface/repository'; import { DeleteUserInputData, DeleteUserUseCase } from './interface/usecase'; import { DeleteUserOutputData, DeleteUserPresenter } from './interface/presenter'; import { UserEntity } from '../../entity/user/UserEntity'; -import { RoleTypes } from '../../entity/common/Role'; import { denyUnauthenticated } from '../../policy/decision/common'; /** diff --git a/src/domain-model/src/usecase/user/UpdateUserRoles.ts b/src/domain-model/src/usecase/user/UpdateUserRoles.ts index 2b52ba3..40b015d 100644 --- a/src/domain-model/src/usecase/user/UpdateUserRoles.ts +++ b/src/domain-model/src/usecase/user/UpdateUserRoles.ts @@ -1,9 +1,8 @@ -import { NotFoundError } from 'common'; +import { NotFoundError, Role, RoleType } from 'common'; import { UserRepository } from './interface/repository'; import { UpdateUserRolesInputData, UpdateUserRolesUseCase } from './interface/usecase'; import { UpdateUserRolesOutputData, UpdateUserRolesPresenter } from './interface/presenter'; -import { Role, RoleType } from '../../entity/common/Role'; import { UserEntity } from '../../entity/user/UserEntity'; import { allowOnlyWhenActorIsOwner } from '../../policy/decision/common'; diff --git a/src/domain-model/src/usecase/user/__tests__/CreateUser.ts b/src/domain-model/src/usecase/user/__tests__/CreateUser.ts index e672e3d..fab3ba9 100644 --- a/src/domain-model/src/usecase/user/__tests__/CreateUser.ts +++ b/src/domain-model/src/usecase/user/__tests__/CreateUser.ts @@ -1,5 +1,3 @@ -import { IllegalArgumentError } from 'common'; - import { CreateUserInteractor } from '../CreateUser'; import { MockUserRepository } from '../_mocks/MockUserRepository'; import { MockCreateUserPresenter } from '../_mocks/MockUserPresenter'; @@ -18,34 +16,12 @@ const setup = () => { describe('CreateUserInteractor', () => { test('リクエストを処理し、新しいエンティティを生成できた', async () => { const { interactor, presenter } = setup(); - const request = { email: 'aaa@bbb.com' }; + const request = {}; await interactor.handle(request); // response として request で指定したデータが得られた const response = presenter.getResponse(); - expect(response?.user?.email).toBe(request.email); - }); - - test('複数回のリクエストを処理できた', async () => { - const { interactor, presenter } = setup(); - - let i = 0; - while (i <= 10) { - ++i; - const request = { email: `aaa${i}@bbb.com` }; - await interactor.handle(request); - } - - // response として request で指定したデータが得られた - const response = presenter.getResponse(); - expect(response?.user?.email).toBe(`aaa${i}@bbb.com`); - }); - - test('不正なメールアドレスを指定したため、失敗した', async () => { - const { interactor } = setup(); - const request = { email: 'hogehoge' }; - - await expect(interactor.handle(request)).rejects.toThrow(IllegalArgumentError); + expect(response?.user).toBeDefined(); }); }); diff --git a/src/domain-model/src/usecase/user/__tests__/DeleteUser.ts b/src/domain-model/src/usecase/user/__tests__/DeleteUser.ts index a4c185c..e951e83 100644 --- a/src/domain-model/src/usecase/user/__tests__/DeleteUser.ts +++ b/src/domain-model/src/usecase/user/__tests__/DeleteUser.ts @@ -1,17 +1,16 @@ -import { NotFoundError, UnauthorizedError } from 'common'; +import { NotFoundError, UnauthorizedError, RoleTypes } from 'common'; import { DeleteUserInteractor } from '../DeleteUser'; import { MockUserRepository } from '../_mocks/MockUserRepository'; import { MockDeleteUserPresenter } from '../_mocks/MockUserPresenter'; import { UserEntity } from '../../../entity/user/UserEntity'; -import { RoleTypes } from '../../../entity/common/Role'; /** * interactor を生成 */ const setup = async () => { const repository = new MockUserRepository(); - const target = await repository.create({ email: 'aaa@bb.com' }); + const target = await repository.create({}); const presenter = new MockDeleteUserPresenter(); const interactor = new DeleteUserInteractor(repository, presenter); @@ -25,7 +24,6 @@ describe('DeleteUserInteractor', () => { const targetId = target.getId().getId(); const actor = new UserEntity({ id: `${targetId + 1}`, - email: 'actor@email.com', roles: [RoleTypes.Admin], }); @@ -57,7 +55,6 @@ describe('DeleteUserInteractor', () => { const targetId = target.getId().getId(); const actor = new UserEntity({ id: `${targetId + 1}`, - email: 'actor@email.com', roles: [RoleTypes.Member], }); diff --git a/src/domain-model/src/usecase/user/__tests__/GetUser.ts b/src/domain-model/src/usecase/user/__tests__/GetUser.ts index 1d75ec8..a2a4ae7 100644 --- a/src/domain-model/src/usecase/user/__tests__/GetUser.ts +++ b/src/domain-model/src/usecase/user/__tests__/GetUser.ts @@ -8,7 +8,7 @@ import { MockGetUserPresenter } from '../_mocks/MockUserPresenter'; const setup = async () => { // repository const repository = new MockUserRepository(); - const userEntity = await repository.create({ email: 'target@email.com' }); + const userEntity = await repository.create({}); const userId = userEntity.getId().toString(); // interactor diff --git a/src/domain-model/src/usecase/user/__tests__/UpdateUserRoles.ts b/src/domain-model/src/usecase/user/__tests__/UpdateUserRoles.ts index 231ac76..6bb2689 100644 --- a/src/domain-model/src/usecase/user/__tests__/UpdateUserRoles.ts +++ b/src/domain-model/src/usecase/user/__tests__/UpdateUserRoles.ts @@ -1,10 +1,8 @@ -import { IllegalArgumentError, NotFoundError, UnauthorizedError } from 'common'; +import { IllegalArgumentError, NotFoundError, UnauthorizedError, RoleTypes, ID } from 'common'; import { UpdateUserRolesInteractor } from '../UpdateUserRoles'; -import { RoleTypes } from '../../../entity/common/Role'; import { MockUserRepository } from '../_mocks/MockUserRepository'; import { MockUpdateUserRolesPresenter } from '../_mocks/MockUserPresenter'; -import { ID } from '../../../entity/common/ID'; import { UserEntity } from '../../../entity/user/UserEntity'; import { UpdateUserRolesInputData } from '../interface/usecase'; @@ -14,7 +12,7 @@ import { UpdateUserRolesInputData } from '../interface/usecase'; const setup = async () => { // repository const repository = new MockUserRepository(); - const actor = await repository.create({ email: 'target@email.com' }); + const actor = await repository.create({}); // interactor const presenter = new MockUpdateUserRolesPresenter(); diff --git a/src/domain-model/src/usecase/user/_mocks/MockUserRepository.ts b/src/domain-model/src/usecase/user/_mocks/MockUserRepository.ts index c15c597..0754de7 100644 --- a/src/domain-model/src/usecase/user/_mocks/MockUserRepository.ts +++ b/src/domain-model/src/usecase/user/_mocks/MockUserRepository.ts @@ -1,6 +1,5 @@ -import { NotFoundError } from 'common'; +import { NotFoundError, RoleTypes } from 'common'; -import { RoleTypes } from '../../../entity/common/Role'; import { UserEntity } from '../../../entity/user/UserEntity'; import { UserRepository } from '../interface/repository'; import { CreateUserInputData } from '../interface/usecase'; @@ -31,11 +30,10 @@ export class MockUserRepository implements UserRepository { return this.store.entities.get(id) ?? null; } - public async create(user: CreateUserInputData) { + public async create(_user: CreateUserInputData) { const id = `${++this.store.idCounter}`; const newEntity = new UserEntity({ id, - email: user.email, roles: [RoleTypes.Member], }); diff --git a/src/domain-model/src/usecase/user/interface/usecase.ts b/src/domain-model/src/usecase/user/interface/usecase.ts index 37b1dec..c88544a 100644 --- a/src/domain-model/src/usecase/user/interface/usecase.ts +++ b/src/domain-model/src/usecase/user/interface/usecase.ts @@ -9,7 +9,7 @@ export interface GetUserUseCase { } export type CreateUserInputData = { - email: string; + _?: boolean; }; export interface CreateUserUseCase { diff --git a/src/frontend/.env.default b/src/frontend/.env.default new file mode 100644 index 0000000..b06531c --- /dev/null +++ b/src/frontend/.env.default @@ -0,0 +1,6 @@ +AUTH0_DOMAIN=YOUR_AUTH0_DOMAIN +AUTH0_CLIENT_ID=YOUR_AUTH0_CLIENT_ID +AUTH0_CLIENT_SECRET=YOUR_AUTH0_CLIENT_SECRET +REDIRECT_URI=http://localhost:3000/api/callback +POST_LOGOUT_REDIRECT_URI=http://localhost:3000/ +SESSION_COOKIE_SECRET=YOUR_SESSION_COOKIE_SECRET_AT_LEAST_32_CHARACTERS diff --git a/src/frontend/graphql.schema.json b/src/frontend/graphql.schema.json index 98f10c0..eb96fa1 100644 --- a/src/frontend/graphql.schema.json +++ b/src/frontend/graphql.schema.json @@ -225,22 +225,6 @@ "isDeprecated": false, "deprecationReason": null }, - { - "name": "email", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, { "name": "roles", "description": null, @@ -477,6 +461,134 @@ "enumValues": null, "possibleTypes": null }, + { + "kind": "INPUT_OBJECT", + "name": "SignUpAuth0Request", + "description": null, + "fields": null, + "inputFields": [ + { + "name": "auth0UserId", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "SignUpAuth0Response", + "description": null, + "fields": [ + { + "name": "user", + "description": null, + "args": [], + "type": { + "kind": "OBJECT", + "name": "User", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "token", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "INPUT_OBJECT", + "name": "SignInAuth0Request", + "description": null, + "fields": null, + "inputFields": [ + { + "name": "auth0UserId", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "defaultValue": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "SignInAuth0Response", + "description": null, + "fields": [ + { + "name": "user", + "description": null, + "args": [], + "type": { + "kind": "OBJECT", + "name": "User", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "token", + "description": null, + "args": [], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [], + "enumValues": null, + "possibleTypes": null + }, { "kind": "OBJECT", "name": "Mutation", @@ -597,6 +709,29 @@ "isDeprecated": false, "deprecationReason": null }, + { + "name": "signInAuth0", + "description": null, + "args": [ + { + "name": "input", + "description": null, + "type": { + "kind": "INPUT_OBJECT", + "name": "SignInAuth0Request", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "SignInAuth0Response", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, { "name": "signInEmailPassword", "description": null, @@ -620,6 +755,29 @@ "isDeprecated": false, "deprecationReason": null }, + { + "name": "signUpAuth0", + "description": null, + "args": [ + { + "name": "input", + "description": null, + "type": { + "kind": "INPUT_OBJECT", + "name": "SignUpAuth0Request", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "SignUpAuth0Response", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, { "name": "signUpEmailPassword", "description": null, @@ -1258,16 +1416,12 @@ "fields": null, "inputFields": [ { - "name": "email", + "name": "_", "description": null, "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } + "kind": "SCALAR", + "name": "Boolean", + "ofType": null }, "defaultValue": null } diff --git a/src/frontend/package.json b/src/frontend/package.json index 4e62f80..18780e3 100644 --- a/src/frontend/package.json +++ b/src/frontend/package.json @@ -16,13 +16,14 @@ "dependencies": { "@apollo/client": "^3.1.4", "@apollo/react-hooks": "^4.0.0", + "@auth0/nextjs-auth0": "^0.16.0", "@fluentui/react": "^7.133.0", "formik": "^2.1.5", "graphql": "^15.3.0", "jwt-decode": "^2.2.0", - "next": "9.3.5", - "react": "16.13.1", - "react-dom": "16.13.1", + "next": "^10.0.0", + "react": "^17.0.1", + "react-dom": "^17.0.1", "sass": "^1.26.10", "styled-components": "^5.1.1", "unfetch": "^4.1.0", @@ -32,7 +33,7 @@ "devDependencies": { "@types/jwt-decode": "^2.2.1", "@types/node": "^14.6.2", - "@types/react": "^16.9.48", + "@types/react": "^16.9.55", "@types/yup": "^0.29.6", "typescript": "^4.0.2" } diff --git a/src/frontend/src/components/contexts/AuthContext/GetUser.graphql b/src/frontend/src/components/contexts/AuthContext/GetUser.graphql index 2233ad1..128d674 100644 --- a/src/frontend/src/components/contexts/AuthContext/GetUser.graphql +++ b/src/frontend/src/components/contexts/AuthContext/GetUser.graphql @@ -1,7 +1,6 @@ query GetUser($id: ID!) { user(id: $id) { id - email roles } } diff --git a/src/frontend/src/components/contexts/AuthContext/index.tsx b/src/frontend/src/components/contexts/AuthContext/index.tsx index 32e82e1..dbbb275 100644 --- a/src/frontend/src/components/contexts/AuthContext/index.tsx +++ b/src/frontend/src/components/contexts/AuthContext/index.tsx @@ -10,7 +10,7 @@ import { import { getToken, resetToken, setToken } from '../../../libraries/auth-token'; import { client } from '../../../libraries/apollo-client'; -type PickedUser = Pick; +type PickedUser = Pick; type Actor = PickedUser | null; type Jwt = Pick; type SubmitFunction = (input: SignInEmailPasswordRequest) => Promise; diff --git a/src/frontend/src/components/pages/login/index.tsx b/src/frontend/src/components/pages/login/index.tsx index f227fd6..f056aac 100644 --- a/src/frontend/src/components/pages/login/index.tsx +++ b/src/frontend/src/components/pages/login/index.tsx @@ -1,15 +1,9 @@ -import React, { useCallback, useContext } from 'react'; +import React, { useCallback } from 'react'; import { Stack, PrimaryButton, Text, IStackTokens } from '@fluentui/react'; -import { Formik, Form, Field } from 'formik'; import { useRouter } from 'next/router'; -import { - useSignInEmailPasswordMutation, - SignInEmailPasswordRequest, -} from '../../../generated/graphql-client'; -import { loginValidationSchema } from './validation'; -import { FormikTextField } from '../../_formik/TextField'; -import { AuthContext } from '../../contexts/AuthContext'; +import { useSignInEmailPasswordMutation } from '../../../generated/graphql-client'; +// import { AuthContext } from '../../contexts/AuthContext'; import styles from './index.module.scss'; @@ -18,65 +12,34 @@ const spacingToken: IStackTokens = { padding: 's1 0', }; -type SubmitFunction = (input: SignInEmailPasswordRequest) => void; +type SubmitFunction = () => void; type LoginFormProps = { - initialValues: SignInEmailPasswordRequest; onSubmit: SubmitFunction; }; -const LoginForm: React.FC = ({ initialValues, onSubmit }) => ( - - {({ isSubmitting, isValid }) => ( -
- - - - - - - - - - ログイン - - - -
- )} -
+const LoginForm: React.FC = ({ onSubmit }) => ( + + + onSubmit()}> + ログイン + + + ); const Login = () => { const router = useRouter(); - const { login } = useContext(AuthContext); + // const { login } = useContext(AuthContext); const [signInEmailPasswordMutation] = useSignInEmailPasswordMutation(); - const handleSubmit = useCallback( - async (input) => { - try { - await login(input); - router.push('/todos'); - } catch (e) { - console.error(e); - } - }, - [signInEmailPasswordMutation], - ); - - const initialValues = { - email: '', - password: '', - }; + const handleSubmit = useCallback(async () => { + try { + // await login(input); + router.push('/todos'); + } catch (e) { + console.error(e); + } + }, [signInEmailPasswordMutation]); return ( @@ -85,7 +48,7 @@ const Login = () => { TodoApp - + diff --git a/src/frontend/src/components/pages/login/SignInEmailPassword.graphql b/src/frontend/src/components/pages/old__login/SignInEmailPassword.graphql similarity index 93% rename from src/frontend/src/components/pages/login/SignInEmailPassword.graphql rename to src/frontend/src/components/pages/old__login/SignInEmailPassword.graphql index 2299800..44af888 100644 --- a/src/frontend/src/components/pages/login/SignInEmailPassword.graphql +++ b/src/frontend/src/components/pages/old__login/SignInEmailPassword.graphql @@ -2,7 +2,6 @@ mutation SignInEmailPassword($input: SignInEmailPasswordRequest) { signInEmailPassword(input: $input) { user { id - email roles } token diff --git a/src/frontend/src/components/pages/old__login/index.module.scss b/src/frontend/src/components/pages/old__login/index.module.scss new file mode 100644 index 0000000..362ca69 --- /dev/null +++ b/src/frontend/src/components/pages/old__login/index.module.scss @@ -0,0 +1,13 @@ +.wrap { + display: flex; + justify-content: center; + align-items: center; + + width: 100vw; + height: 100vh; +} + +.main { + width: 320px; + max-width: 480px; +} diff --git a/src/frontend/src/components/pages/old__login/index.tsx b/src/frontend/src/components/pages/old__login/index.tsx new file mode 100644 index 0000000..f227fd6 --- /dev/null +++ b/src/frontend/src/components/pages/old__login/index.tsx @@ -0,0 +1,95 @@ +import React, { useCallback, useContext } from 'react'; +import { Stack, PrimaryButton, Text, IStackTokens } from '@fluentui/react'; +import { Formik, Form, Field } from 'formik'; +import { useRouter } from 'next/router'; + +import { + useSignInEmailPasswordMutation, + SignInEmailPasswordRequest, +} from '../../../generated/graphql-client'; +import { loginValidationSchema } from './validation'; +import { FormikTextField } from '../../_formik/TextField'; +import { AuthContext } from '../../contexts/AuthContext'; + +import styles from './index.module.scss'; + +const spacingToken: IStackTokens = { + childrenGap: 's1', + padding: 's1 0', +}; + +type SubmitFunction = (input: SignInEmailPasswordRequest) => void; +type LoginFormProps = { + initialValues: SignInEmailPasswordRequest; + onSubmit: SubmitFunction; +}; + +const LoginForm: React.FC = ({ initialValues, onSubmit }) => ( + + {({ isSubmitting, isValid }) => ( +
+ + + + + + + + + + ログイン + + + +
+ )} +
+); + +const Login = () => { + const router = useRouter(); + const { login } = useContext(AuthContext); + const [signInEmailPasswordMutation] = useSignInEmailPasswordMutation(); + + const handleSubmit = useCallback( + async (input) => { + try { + await login(input); + router.push('/todos'); + } catch (e) { + console.error(e); + } + }, + [signInEmailPasswordMutation], + ); + + const initialValues = { + email: '', + password: '', + }; + + return ( + + + + TodoApp + + + + + + + ); +}; + +export default Login; diff --git a/src/frontend/src/components/pages/login/validation.ts b/src/frontend/src/components/pages/old__login/validation.ts similarity index 100% rename from src/frontend/src/components/pages/login/validation.ts rename to src/frontend/src/components/pages/old__login/validation.ts diff --git a/src/frontend/src/components/pages/todos/GetUserTodos.graphql b/src/frontend/src/components/pages/todos/GetUserTodos.graphql index b42b4c7..3141061 100644 --- a/src/frontend/src/components/pages/todos/GetUserTodos.graphql +++ b/src/frontend/src/components/pages/todos/GetUserTodos.graphql @@ -1,14 +1,12 @@ query GetUserTodos($id: ID!) { user(id: $id) { id - email roles todos { id ownerId owner { id - email } title status diff --git a/src/frontend/src/components/pages/todos/index.tsx b/src/frontend/src/components/pages/todos/index.tsx index db3eca1..8dd6c73 100644 --- a/src/frontend/src/components/pages/todos/index.tsx +++ b/src/frontend/src/components/pages/todos/index.tsx @@ -60,8 +60,4 @@ const TodosPageContainer: React.FC = () => { return ; }; -export const TodosPage: React.FC = () => ( - - - -); +export const TodosPage: React.FC = () => ; diff --git a/src/frontend/src/generated/graphql-client.tsx b/src/frontend/src/generated/graphql-client.tsx index e633a63..873495d 100644 --- a/src/frontend/src/generated/graphql-client.tsx +++ b/src/frontend/src/generated/graphql-client.tsx @@ -38,7 +38,6 @@ export enum Role { export type User = { __typename?: 'User'; id: Scalars['ID']; - email: Scalars['String']; roles: Array; createdAt?: Maybe; updatedAt?: Maybe; @@ -68,6 +67,26 @@ export type SignInEmailPasswordResponse = { token: Scalars['String']; }; +export type SignUpAuth0Request = { + auth0UserId: Scalars['String']; +}; + +export type SignUpAuth0Response = { + __typename?: 'SignUpAuth0Response'; + user?: Maybe; + token: Scalars['String']; +}; + +export type SignInAuth0Request = { + auth0UserId: Scalars['String']; +}; + +export type SignInAuth0Response = { + __typename?: 'SignInAuth0Response'; + user?: Maybe; + token: Scalars['String']; +}; + export type Mutation = { __typename?: 'Mutation'; createTodo?: Maybe; @@ -75,7 +94,9 @@ export type Mutation = { deleteTodo?: Maybe; deleteUser?: Maybe; doneTodo?: Maybe; + signInAuth0?: Maybe; signInEmailPassword?: Maybe; + signUpAuth0?: Maybe; signUpEmailPassword?: Maybe; undoneTodo?: Maybe; updateUserRoles?: Maybe; @@ -107,11 +128,21 @@ export type MutationDoneTodoArgs = { }; +export type MutationSignInAuth0Args = { + input?: Maybe; +}; + + export type MutationSignInEmailPasswordArgs = { input?: Maybe; }; +export type MutationSignUpAuth0Args = { + input?: Maybe; +}; + + export type MutationSignUpEmailPasswordArgs = { input?: Maybe; }; @@ -189,7 +220,7 @@ export type Query = { }; -export type QueryAllAllTodosWithDeadlineApproachingArgs = { +export type QueryAllTodosWithDeadlineApproachingArgs = { query?: Maybe; }; @@ -222,7 +253,7 @@ export type PageInfo = { }; export type CreateUserRequest = { - email: Scalars['String']; + _?: Maybe; }; export type CreateUserResponse = { @@ -258,7 +289,7 @@ export type GetUserQuery = ( { __typename?: 'Query' } & { user?: Maybe<( { __typename?: 'User' } - & Pick + & Pick )> } ); @@ -322,7 +353,7 @@ export type SignInEmailPasswordMutation = ( & Pick & { user?: Maybe<( { __typename?: 'User' } - & Pick + & Pick )> } )> } ); @@ -336,13 +367,13 @@ export type GetUserTodosQuery = ( { __typename?: 'Query' } & { user?: Maybe<( { __typename?: 'User' } - & Pick + & Pick & { todos?: Maybe & { owner?: Maybe<( { __typename?: 'User' } - & Pick + & Pick )> } )>>> } )> } @@ -353,7 +384,6 @@ export const GetUserDocument = gql` query GetUser($id: ID!) { user(id: $id) { id - email roles } } @@ -503,7 +533,6 @@ export const SignInEmailPasswordDocument = gql` signInEmailPassword(input: $input) { user { id - email roles } token @@ -539,14 +568,12 @@ export const GetUserTodosDocument = gql` query GetUserTodos($id: ID!) { user(id: $id) { id - email roles todos { id ownerId owner { id - email } title status diff --git a/src/frontend/src/libraries/auth0.ts b/src/frontend/src/libraries/auth0.ts new file mode 100644 index 0000000..e1979d8 --- /dev/null +++ b/src/frontend/src/libraries/auth0.ts @@ -0,0 +1,25 @@ +import { initAuth0 } from '@auth0/nextjs-auth0'; + +function getEnv(environmentVariable: string, defaultValue?: string): string { + if (typeof window === 'undefined') { + return process.env[environmentVariable] || ''; + } + + return defaultValue || ''; +} + +export default initAuth0({ + clientId: getEnv('AUTH0_CLIENT_ID'), + clientSecret: getEnv('AUTH0_CLIENT_SECRET'), + scope: 'openid profile email', + domain: getEnv('AUTH0_DOMAIN'), + redirectUri: getEnv('REDIRECT_URI', 'http://localhost:3000/api/callback'), + postLogoutRedirectUri: getEnv('POST_LOGOUT_REDIRECT_URI', 'http://localhost:3000/'), + session: { + cookieSecret: getEnv('SESSION_COOKIE_SECRET'), + cookieLifetime: 7200, + storeIdToken: false, + storeRefreshToken: false, + storeAccessToken: false, + }, +}); diff --git a/src/frontend/src/libraries/fetch.ts b/src/frontend/src/libraries/fetch.ts new file mode 100644 index 0000000..3b9e512 --- /dev/null +++ b/src/frontend/src/libraries/fetch.ts @@ -0,0 +1,21 @@ +type Variables = { + input?: Object; +}; + +export const fetchFromBackend = async (query: string, variables?: Variables) => { + const res = await fetch('http://localhost:3000/graphql', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + query, + variables, + }), + }); + + const json = await res.json(); + if (json?.errors) throw new Error(json.errors.toString()); + + return json; +}; diff --git a/src/frontend/src/libraries/me.ts b/src/frontend/src/libraries/me.ts new file mode 100644 index 0000000..b431ca5 --- /dev/null +++ b/src/frontend/src/libraries/me.ts @@ -0,0 +1,28 @@ +import { NextApiRequest } from 'next'; + +import auth0 from './auth0'; +import { fetchFromBackend } from './fetch'; + +const GET_ME = ` +query User ($id: ID!) { + user(id: $id) { + id + roles + } +} +`; + +export const getMe = async (req: NextApiRequest) => { + const session = await auth0.getSession(req); + + if (!session || !session.user) { + return null; + } + + const res = await fetchFromBackend(GET_ME, {}); + + const json = await res.json(); + if (json?.errors) throw new Error(json.errors.toString()); + + return json; +}; diff --git a/src/frontend/src/pages/api/callback.ts b/src/frontend/src/pages/api/callback.ts new file mode 100644 index 0000000..57ac2dd --- /dev/null +++ b/src/frontend/src/pages/api/callback.ts @@ -0,0 +1,36 @@ +import { NextApiRequest, NextApiResponse } from 'next'; + +import auth0 from '../../libraries/auth0'; +import { fetchFromBackend } from '../../libraries/fetch'; + +const SIGNIN_OR_SIGNUP_AUTH0 = ` +mutation SignInOrSignUpAuth0($input: SignInOrSignUpAuth0Request) { + signInOrSignUpAuth0(input: $input) { + user { + id + } + isNewUser + } +} +`; + +const signInOrSignUp = async (auth0UserId: string) => { + const res = await fetchFromBackend(SIGNIN_OR_SIGNUP_AUTH0, { input: { auth0UserId } }); +}; + +const callback = async (req: NextApiRequest, res: NextApiResponse) => { + try { + await auth0.handleCallback(req, res, { + onUserLoaded: async (_req, _res, session) => { + const auth0UserId = (session?.user?.sub || '') as string; + await signInOrSignUp(auth0UserId); + return { ...session }; + }, + }); + } catch (e) { + console.error(e); + res.status(e.status || 500).end(e.message); + } +}; + +export default callback; diff --git a/src/frontend/src/pages/api/login.ts b/src/frontend/src/pages/api/login.ts new file mode 100644 index 0000000..0974cfa --- /dev/null +++ b/src/frontend/src/pages/api/login.ts @@ -0,0 +1,14 @@ +import { NextApiRequest, NextApiResponse } from 'next'; + +import auth0 from '../../libraries/auth0'; + +const login = async (req: NextApiRequest, res: NextApiResponse) => { + try { + await auth0.handleLogin(req, res); + } catch (e) { + console.error(e); + res.status(e.status || 500).end(e.message); + } +}; + +export default login; diff --git a/src/frontend/src/pages/api/logout.ts b/src/frontend/src/pages/api/logout.ts new file mode 100644 index 0000000..fb39504 --- /dev/null +++ b/src/frontend/src/pages/api/logout.ts @@ -0,0 +1,14 @@ +import { NextApiRequest, NextApiResponse } from 'next'; + +import auth0 from '../../libraries/auth0'; + +const logout = async (req: NextApiRequest, res: NextApiResponse) => { + try { + await auth0.handleLogout(req, res); + } catch (e) { + console.error(e); + res.status(e.status || 500).end(e.message); + } +}; + +export default logout; diff --git a/src/frontend/src/pages/api/me.ts b/src/frontend/src/pages/api/me.ts new file mode 100644 index 0000000..deecd08 --- /dev/null +++ b/src/frontend/src/pages/api/me.ts @@ -0,0 +1,14 @@ +import { NextApiRequest, NextApiResponse } from 'next'; + +import auth0 from '../../libraries/auth0'; + +const me = async (req: NextApiRequest, res: NextApiResponse) => { + try { + await auth0.handleProfile(req, res); + } catch (e) { + console.error(e); + res.status(e.status || 500).end(e.message); + } +}; + +export default me; diff --git a/src/frontend/src/pages/index.js b/src/frontend/src/pages/index.js deleted file mode 100644 index 7b41893..0000000 --- a/src/frontend/src/pages/index.js +++ /dev/null @@ -1,203 +0,0 @@ -import * as React from 'react'; -import Head from 'next/head'; - -export default function Home() { - return ( -
- - Create Next App - - - -
-

- Welcome to Next.js! -

- -

- Get started by editing pages/index.js -

- - -
- - - - - - -
- ); -} diff --git a/src/frontend/src/pages/index.tsx b/src/frontend/src/pages/index.tsx new file mode 100644 index 0000000..054dce8 --- /dev/null +++ b/src/frontend/src/pages/index.tsx @@ -0,0 +1,27 @@ +import React from 'react'; +import { GetServerSideProps } from 'next'; + +import auth0 from '../libraries/auth0'; + +export const getServerSideProps: GetServerSideProps = async ({ req, res }) => { + const session = await auth0.getSession(req); + + if (!session || !session.user) { + res.writeHead(307, { Location: '/login' }); + res.end(); + return { props: {} }; + } + + res.writeHead(307, { Location: '/todos' }); + res.end(); + return { props: { user: session.user } }; +}; + +export const Index: React.FC = () => <>; + +export const IndexPage: React.FC = () => { + // const { actor } = useActor(); + return ; +}; + +export default Index; diff --git a/src/schema/package.json b/src/schema/package.json index 1616c4e..81b8839 100644 --- a/src/schema/package.json +++ b/src/schema/package.json @@ -12,6 +12,10 @@ "clean:lib": "rimraf lib *.tsbuildinfo", "clean:modules": "rimraf node_modules", "reinstall": "yarn install", - "codegen": "graphql-codegen --config codegen.yml" + "codegen": "run-p codegen:*", + "codegen:app": "graphql-codegen --config src/app/codegen.yml", + "codegen:app-ui": "graphql-codegen --config src/app/ui/codegen.yml", + "codegen:auth": "graphql-codegen --config src/auth/codegen.yml", + "codegen:auth-ui": "graphql-codegen --config src/auth/ui/codegen.yml" } } diff --git a/src/schema/codegen.yml b/src/schema/src/app/codegen.yml similarity index 72% rename from src/schema/codegen.yml rename to src/schema/src/app/codegen.yml index 6402ceb..a411b73 100644 --- a/src/schema/codegen.yml +++ b/src/schema/src/app/codegen.yml @@ -1,13 +1,13 @@ overwrite: true -schema: 'src/**/*.graphql' +schema: 'src/app/**/*.graphql' generates: - src/types.ts: + src/app/types.ts: plugins: - typescript - typescript-resolvers config: useIndexSignature: true - schema.graphql: + src/app/schema.graphql: plugins: - schema-ast config: diff --git a/src/schema/schema.graphql b/src/schema/src/app/schema.graphql similarity index 75% rename from src/schema/schema.graphql rename to src/schema/src/app/schema.graphql index f50209c..dbdf772 100644 --- a/src/schema/schema.graphql +++ b/src/schema/src/app/schema.graphql @@ -1,72 +1,39 @@ enum TodoStatus { - UNDONE DONE + UNDONE } type Todo { + createdAt: DateTime + dueDate: DateTime id: ID! + owner: User ownerId: ID! - title: String! status: TodoStatus! - dueDate: DateTime - createdAt: DateTime + title: String! updatedAt: DateTime - owner: User } enum Role { + ADMIN ANONYMOUS MEMBER - ADMIN } type User { + createdAt: DateTime id: ID! - email: String! roles: [Role!]! - createdAt: DateTime - updatedAt: DateTime todos: [Todo] + updatedAt: DateTime } scalar DateTime -input SignUpEmailPasswordRequest { - email: String! - password: String! -} - -type SignUpEmailPasswordResponse { - user: User - token: String! -} - -input SignInEmailPasswordRequest { - email: String! - password: String! -} - -type SignInEmailPasswordResponse { - user: User - token: String! -} - -type Mutation { - createTodo(input: CreateTodoRequest): CreateTodoResponse - createUser(input: CreateUserRequest): CreateUserResponse - deleteTodo(input: DeleteTodoRequest): DeleteTodoResponse - deleteUser(input: DeleteUserRequest): DeleteUserResponse - doneTodo(input: DoneTodoRequest): DoneTodoResponse - signInEmailPassword(input: SignInEmailPasswordRequest): SignInEmailPasswordResponse - signUpEmailPassword(input: SignUpEmailPasswordRequest): SignUpEmailPasswordResponse - undoneTodo(input: UndoneTodoRequest): UndoneTodoResponse - updateUserRoles(input: UpdateUserRolesRequest): UpdateUserRolesResponse -} - input CreateTodoRequest { + dueDate: DateTime ownerId: ID! title: String! - dueDate: DateTime } type CreateTodoResponse { @@ -97,9 +64,19 @@ type DeleteTodoResponse { todo: Todo! } +type Mutation { + createTodo(input: CreateTodoRequest): CreateTodoResponse + createUser(input: CreateUserRequest): CreateUserResponse + deleteTodo(input: DeleteTodoRequest): DeleteTodoResponse + deleteUser(input: DeleteUserRequest): DeleteUserResponse + doneTodo(input: DoneTodoRequest): DoneTodoResponse + undoneTodo(input: UndoneTodoRequest): UndoneTodoResponse + updateUserRoles(input: UpdateUserRolesRequest): UpdateUserRolesResponse +} + type TodoEdge { - todo: Todo cursor: String + todo: Todo } input AllTodosWithDeadlineApproachingRequest { @@ -113,9 +90,7 @@ type AllTodosWithDeadlineApproachingResponse { } type Query { - allTodosWithDeadlineApproaching( - query: AllTodosWithDeadlineApproachingRequest - ): AllTodosWithDeadlineApproachingResponse + allTodosWithDeadlineApproaching(query: AllTodosWithDeadlineApproachingRequest): AllTodosWithDeadlineApproachingResponse todo(id: ID!): Todo user(id: ID!): User } @@ -132,13 +107,13 @@ input PagingInput { } type PageInfo { - totalCount: Int - hasNextPage: Boolean endCursor: String + hasNextPage: Boolean + totalCount: Int } input CreateUserRequest { - email: String! + _: Boolean } type CreateUserResponse { diff --git a/src/schema/src/types.ts b/src/schema/src/app/types.ts similarity index 86% rename from src/schema/src/types.ts rename to src/schema/src/app/types.ts index 63de7c5..4e88792 100644 --- a/src/schema/src/types.ts +++ b/src/schema/src/app/types.ts @@ -13,59 +13,74 @@ export type Scalars = { }; export enum TodoStatus { - Undone = 'UNDONE', - Done = 'DONE' + Done = 'DONE', + Undone = 'UNDONE' } export type Todo = { __typename?: 'Todo'; + createdAt?: Maybe; + dueDate?: Maybe; id: Scalars['ID']; + owner?: Maybe; ownerId: Scalars['ID']; - title: Scalars['String']; status: TodoStatus; - dueDate?: Maybe; - createdAt?: Maybe; + title: Scalars['String']; updatedAt?: Maybe; - owner?: Maybe; }; export enum Role { + Admin = 'ADMIN', Anonymous = 'ANONYMOUS', - Member = 'MEMBER', - Admin = 'ADMIN' + Member = 'MEMBER' } export type User = { __typename?: 'User'; + createdAt?: Maybe; id: Scalars['ID']; - email: Scalars['String']; roles: Array; - createdAt?: Maybe; - updatedAt?: Maybe; todos?: Maybe>>; + updatedAt?: Maybe; }; -export type SignUpEmailPasswordRequest = { - email: Scalars['String']; - password: Scalars['String']; +export type CreateTodoRequest = { + dueDate?: Maybe; + ownerId: Scalars['ID']; + title: Scalars['String']; }; -export type SignUpEmailPasswordResponse = { - __typename?: 'SignUpEmailPasswordResponse'; - user?: Maybe; - token: Scalars['String']; +export type CreateTodoResponse = { + __typename?: 'CreateTodoResponse'; + todo?: Maybe; }; -export type SignInEmailPasswordRequest = { - email: Scalars['String']; - password: Scalars['String']; +export type DoneTodoRequest = { + id: Scalars['ID']; }; -export type SignInEmailPasswordResponse = { - __typename?: 'SignInEmailPasswordResponse'; - user?: Maybe; - token: Scalars['String']; +export type DoneTodoResponse = { + __typename?: 'DoneTodoResponse'; + todo: Todo; +}; + +export type UndoneTodoRequest = { + id: Scalars['ID']; +}; + +export type UndoneTodoResponse = { + __typename?: 'UndoneTodoResponse'; + todo: Todo; +}; + +export type DeleteTodoRequest = { + id: Scalars['ID']; +}; + +export type DeleteTodoResponse = { + __typename?: 'DeleteTodoResponse'; + todo: Todo; }; export type Mutation = { @@ -75,8 +90,6 @@ export type Mutation = { deleteTodo?: Maybe; deleteUser?: Maybe; doneTodo?: Maybe; - signInEmailPassword?: Maybe; - signUpEmailPassword?: Maybe; undoneTodo?: Maybe; updateUserRoles?: Maybe; }; @@ -107,16 +120,6 @@ export type MutationDoneTodoArgs = { }; -export type MutationSignInEmailPasswordArgs = { - input?: Maybe; -}; - - -export type MutationSignUpEmailPasswordArgs = { - input?: Maybe; -}; - - export type MutationUndoneTodoArgs = { input?: Maybe; }; @@ -126,48 +129,10 @@ export type MutationUpdateUserRolesArgs = { input?: Maybe; }; -export type CreateTodoRequest = { - ownerId: Scalars['ID']; - title: Scalars['String']; - dueDate?: Maybe; -}; - -export type CreateTodoResponse = { - __typename?: 'CreateTodoResponse'; - todo?: Maybe; -}; - -export type DoneTodoRequest = { - id: Scalars['ID']; -}; - -export type DoneTodoResponse = { - __typename?: 'DoneTodoResponse'; - todo: Todo; -}; - -export type UndoneTodoRequest = { - id: Scalars['ID']; -}; - -export type UndoneTodoResponse = { - __typename?: 'UndoneTodoResponse'; - todo: Todo; -}; - -export type DeleteTodoRequest = { - id: Scalars['ID']; -}; - -export type DeleteTodoResponse = { - __typename?: 'DeleteTodoResponse'; - todo: Todo; -}; - export type TodoEdge = { __typename?: 'TodoEdge'; - todo?: Maybe; cursor?: Maybe; + todo?: Maybe; }; export type AllTodosWithDeadlineApproachingRequest = { @@ -216,13 +181,13 @@ export type PagingInput = { export type PageInfo = { __typename?: 'PageInfo'; - totalCount?: Maybe; - hasNextPage?: Maybe; endCursor?: Maybe; + hasNextPage?: Maybe; + totalCount?: Maybe; }; export type CreateUserRequest = { - email: Scalars['String']; + _?: Maybe; }; export type CreateUserResponse = { @@ -335,11 +300,6 @@ export type ResolversTypes = ResolversObject<{ Role: Role; User: ResolverTypeWrapper; DateTime: ResolverTypeWrapper; - SignUpEmailPasswordRequest: SignUpEmailPasswordRequest; - SignUpEmailPasswordResponse: ResolverTypeWrapper; - SignInEmailPasswordRequest: SignInEmailPasswordRequest; - SignInEmailPasswordResponse: ResolverTypeWrapper; - Mutation: ResolverTypeWrapper<{}>; CreateTodoRequest: CreateTodoRequest; CreateTodoResponse: ResolverTypeWrapper; DoneTodoRequest: DoneTodoRequest; @@ -348,6 +308,7 @@ export type ResolversTypes = ResolversObject<{ UndoneTodoResponse: ResolverTypeWrapper; DeleteTodoRequest: DeleteTodoRequest; DeleteTodoResponse: ResolverTypeWrapper; + Mutation: ResolverTypeWrapper<{}>; TodoEdge: ResolverTypeWrapper; AllTodosWithDeadlineApproachingRequest: AllTodosWithDeadlineApproachingRequest; AllTodosWithDeadlineApproachingResponse: ResolverTypeWrapper; @@ -372,11 +333,6 @@ export type ResolversParentTypes = ResolversObject<{ String: Scalars['String']; User: User; DateTime: Scalars['DateTime']; - SignUpEmailPasswordRequest: SignUpEmailPasswordRequest; - SignUpEmailPasswordResponse: SignUpEmailPasswordResponse; - SignInEmailPasswordRequest: SignInEmailPasswordRequest; - SignInEmailPasswordResponse: SignInEmailPasswordResponse; - Mutation: {}; CreateTodoRequest: CreateTodoRequest; CreateTodoResponse: CreateTodoResponse; DoneTodoRequest: DoneTodoRequest; @@ -385,6 +341,7 @@ export type ResolversParentTypes = ResolversObject<{ UndoneTodoResponse: UndoneTodoResponse; DeleteTodoRequest: DeleteTodoRequest; DeleteTodoResponse: DeleteTodoResponse; + Mutation: {}; TodoEdge: TodoEdge; AllTodosWithDeadlineApproachingRequest: AllTodosWithDeadlineApproachingRequest; AllTodosWithDeadlineApproachingResponse: AllTodosWithDeadlineApproachingResponse; @@ -402,24 +359,23 @@ export type ResolversParentTypes = ResolversObject<{ }>; export type TodoResolvers = ResolversObject<{ + createdAt?: Resolver, ParentType, ContextType>; + dueDate?: Resolver, ParentType, ContextType>; id?: Resolver; + owner?: Resolver, ParentType, ContextType>; ownerId?: Resolver; - title?: Resolver; status?: Resolver; - dueDate?: Resolver, ParentType, ContextType>; - createdAt?: Resolver, ParentType, ContextType>; + title?: Resolver; updatedAt?: Resolver, ParentType, ContextType>; - owner?: Resolver, ParentType, ContextType>; __isTypeOf?: IsTypeOfResolverFn; }>; export type UserResolvers = ResolversObject<{ + createdAt?: Resolver, ParentType, ContextType>; id?: Resolver; - email?: Resolver; roles?: Resolver, ParentType, ContextType>; - createdAt?: Resolver, ParentType, ContextType>; - updatedAt?: Resolver, ParentType, ContextType>; todos?: Resolver>>, ParentType, ContextType>; + updatedAt?: Resolver, ParentType, ContextType>; __isTypeOf?: IsTypeOfResolverFn; }>; @@ -427,30 +383,6 @@ export interface DateTimeScalarConfig extends GraphQLScalarTypeConfig = ResolversObject<{ - user?: Resolver, ParentType, ContextType>; - token?: Resolver; - __isTypeOf?: IsTypeOfResolverFn; -}>; - -export type SignInEmailPasswordResponseResolvers = ResolversObject<{ - user?: Resolver, ParentType, ContextType>; - token?: Resolver; - __isTypeOf?: IsTypeOfResolverFn; -}>; - -export type MutationResolvers = ResolversObject<{ - createTodo?: Resolver, ParentType, ContextType, RequireFields>; - createUser?: Resolver, ParentType, ContextType, RequireFields>; - deleteTodo?: Resolver, ParentType, ContextType, RequireFields>; - deleteUser?: Resolver, ParentType, ContextType, RequireFields>; - doneTodo?: Resolver, ParentType, ContextType, RequireFields>; - signInEmailPassword?: Resolver, ParentType, ContextType, RequireFields>; - signUpEmailPassword?: Resolver, ParentType, ContextType, RequireFields>; - undoneTodo?: Resolver, ParentType, ContextType, RequireFields>; - updateUserRoles?: Resolver, ParentType, ContextType, RequireFields>; -}>; - export type CreateTodoResponseResolvers = ResolversObject<{ todo?: Resolver, ParentType, ContextType>; __isTypeOf?: IsTypeOfResolverFn; @@ -471,9 +403,19 @@ export type DeleteTodoResponseResolvers; }>; +export type MutationResolvers = ResolversObject<{ + createTodo?: Resolver, ParentType, ContextType, RequireFields>; + createUser?: Resolver, ParentType, ContextType, RequireFields>; + deleteTodo?: Resolver, ParentType, ContextType, RequireFields>; + deleteUser?: Resolver, ParentType, ContextType, RequireFields>; + doneTodo?: Resolver, ParentType, ContextType, RequireFields>; + undoneTodo?: Resolver, ParentType, ContextType, RequireFields>; + updateUserRoles?: Resolver, ParentType, ContextType, RequireFields>; +}>; + export type TodoEdgeResolvers = ResolversObject<{ - todo?: Resolver, ParentType, ContextType>; cursor?: Resolver, ParentType, ContextType>; + todo?: Resolver, ParentType, ContextType>; __isTypeOf?: IsTypeOfResolverFn; }>; @@ -490,9 +432,9 @@ export type QueryResolvers; export type PageInfoResolvers = ResolversObject<{ - totalCount?: Resolver, ParentType, ContextType>; - hasNextPage?: Resolver, ParentType, ContextType>; endCursor?: Resolver, ParentType, ContextType>; + hasNextPage?: Resolver, ParentType, ContextType>; + totalCount?: Resolver, ParentType, ContextType>; __isTypeOf?: IsTypeOfResolverFn; }>; @@ -515,13 +457,11 @@ export type Resolvers = ResolversObject<{ Todo?: TodoResolvers; User?: UserResolvers; DateTime?: GraphQLScalarType; - SignUpEmailPasswordResponse?: SignUpEmailPasswordResponseResolvers; - SignInEmailPasswordResponse?: SignInEmailPasswordResponseResolvers; - Mutation?: MutationResolvers; CreateTodoResponse?: CreateTodoResponseResolvers; DoneTodoResponse?: DoneTodoResponseResolvers; UndoneTodoResponse?: UndoneTodoResponseResolvers; DeleteTodoResponse?: DeleteTodoResponseResolvers; + Mutation?: MutationResolvers; TodoEdge?: TodoEdgeResolvers; AllTodosWithDeadlineApproachingResponse?: AllTodosWithDeadlineApproachingResponseResolvers; Query?: QueryResolvers; diff --git a/src/schema/src/app/ui/codegen.yml b/src/schema/src/app/ui/codegen.yml new file mode 100644 index 0000000..cea999f --- /dev/null +++ b/src/schema/src/app/ui/codegen.yml @@ -0,0 +1,15 @@ +overwrite: true +schema: 'src/app/ui/**/*.graphql' +generates: + src/app/ui/types.ts: + plugins: + - typescript + - typescript-resolvers + config: + useIndexSignature: true + src/app/ui/schema.graphql: + plugins: + - schema-ast +config: + scalars: + DateTime: Date diff --git a/src/schema/src/entity/Todo.graphql b/src/schema/src/app/ui/entity/Todo.graphql similarity index 100% rename from src/schema/src/entity/Todo.graphql rename to src/schema/src/app/ui/entity/Todo.graphql diff --git a/src/schema/src/entity/User.graphql b/src/schema/src/app/ui/entity/User.graphql similarity index 89% rename from src/schema/src/entity/User.graphql rename to src/schema/src/app/ui/entity/User.graphql index a53ec28..63cc0f4 100644 --- a/src/schema/src/entity/User.graphql +++ b/src/schema/src/app/ui/entity/User.graphql @@ -6,7 +6,6 @@ enum Role { type User { id: ID! - email: String! roles: [Role!]! createdAt: DateTime diff --git a/src/schema/src/scalar/index.graphql b/src/schema/src/app/ui/scalar/index.graphql similarity index 100% rename from src/schema/src/scalar/index.graphql rename to src/schema/src/app/ui/scalar/index.graphql diff --git a/src/schema/src/app/ui/schema.graphql b/src/schema/src/app/ui/schema.graphql new file mode 100644 index 0000000..dbdf772 --- /dev/null +++ b/src/schema/src/app/ui/schema.graphql @@ -0,0 +1,138 @@ +enum TodoStatus { + DONE + UNDONE +} + +type Todo { + createdAt: DateTime + dueDate: DateTime + id: ID! + owner: User + ownerId: ID! + status: TodoStatus! + title: String! + updatedAt: DateTime +} + +enum Role { + ADMIN + ANONYMOUS + MEMBER +} + +type User { + createdAt: DateTime + id: ID! + roles: [Role!]! + todos: [Todo] + updatedAt: DateTime +} + +scalar DateTime + +input CreateTodoRequest { + dueDate: DateTime + ownerId: ID! + title: String! +} + +type CreateTodoResponse { + todo: Todo +} + +input DoneTodoRequest { + id: ID! +} + +type DoneTodoResponse { + todo: Todo! +} + +input UndoneTodoRequest { + id: ID! +} + +type UndoneTodoResponse { + todo: Todo! +} + +input DeleteTodoRequest { + id: ID! +} + +type DeleteTodoResponse { + todo: Todo! +} + +type Mutation { + createTodo(input: CreateTodoRequest): CreateTodoResponse + createUser(input: CreateUserRequest): CreateUserResponse + deleteTodo(input: DeleteTodoRequest): DeleteTodoResponse + deleteUser(input: DeleteUserRequest): DeleteUserResponse + doneTodo(input: DoneTodoRequest): DoneTodoResponse + undoneTodo(input: UndoneTodoRequest): UndoneTodoResponse + updateUserRoles(input: UpdateUserRolesRequest): UpdateUserRolesResponse +} + +type TodoEdge { + cursor: String + todo: Todo +} + +input AllTodosWithDeadlineApproachingRequest { + dueDate: DateTime! + paging: PagingInput +} + +type AllTodosWithDeadlineApproachingResponse { + edges: [TodoEdge] + pageInfo: PageInfo +} + +type Query { + allTodosWithDeadlineApproaching(query: AllTodosWithDeadlineApproachingRequest): AllTodosWithDeadlineApproachingResponse + todo(id: ID!): Todo + user(id: ID!): User +} + +enum OrderBy { + ASC + DESC +} + +input PagingInput { + cursor: String + skip: Int + take: Int +} + +type PageInfo { + endCursor: String + hasNextPage: Boolean + totalCount: Int +} + +input CreateUserRequest { + _: Boolean +} + +type CreateUserResponse { + user: User +} + +input UpdateUserRolesRequest { + id: ID! + roles: [Role!]! +} + +type UpdateUserRolesResponse { + user: User! +} + +input DeleteUserRequest { + id: ID! +} + +type DeleteUserResponse { + user: User! +} diff --git a/src/schema/src/app/ui/types.ts b/src/schema/src/app/ui/types.ts new file mode 100644 index 0000000..4e88792 --- /dev/null +++ b/src/schema/src/app/ui/types.ts @@ -0,0 +1,479 @@ +import { GraphQLResolveInfo, GraphQLScalarType, GraphQLScalarTypeConfig } from 'graphql'; +export type Maybe = T | null; +export type Exact = { [K in keyof T]: T[K] }; +export type RequireFields = { [X in Exclude]?: T[X] } & { [P in K]-?: NonNullable }; +/** All built-in and custom scalars, mapped to their actual values */ +export type Scalars = { + ID: string; + String: string; + Boolean: boolean; + Int: number; + Float: number; + DateTime: Date; +}; + +export enum TodoStatus { + Done = 'DONE', + Undone = 'UNDONE' +} + +export type Todo = { + __typename?: 'Todo'; + createdAt?: Maybe; + dueDate?: Maybe; + id: Scalars['ID']; + owner?: Maybe; + ownerId: Scalars['ID']; + status: TodoStatus; + title: Scalars['String']; + updatedAt?: Maybe; +}; + +export enum Role { + Admin = 'ADMIN', + Anonymous = 'ANONYMOUS', + Member = 'MEMBER' +} + +export type User = { + __typename?: 'User'; + createdAt?: Maybe; + id: Scalars['ID']; + roles: Array; + todos?: Maybe>>; + updatedAt?: Maybe; +}; + + +export type CreateTodoRequest = { + dueDate?: Maybe; + ownerId: Scalars['ID']; + title: Scalars['String']; +}; + +export type CreateTodoResponse = { + __typename?: 'CreateTodoResponse'; + todo?: Maybe; +}; + +export type DoneTodoRequest = { + id: Scalars['ID']; +}; + +export type DoneTodoResponse = { + __typename?: 'DoneTodoResponse'; + todo: Todo; +}; + +export type UndoneTodoRequest = { + id: Scalars['ID']; +}; + +export type UndoneTodoResponse = { + __typename?: 'UndoneTodoResponse'; + todo: Todo; +}; + +export type DeleteTodoRequest = { + id: Scalars['ID']; +}; + +export type DeleteTodoResponse = { + __typename?: 'DeleteTodoResponse'; + todo: Todo; +}; + +export type Mutation = { + __typename?: 'Mutation'; + createTodo?: Maybe; + createUser?: Maybe; + deleteTodo?: Maybe; + deleteUser?: Maybe; + doneTodo?: Maybe; + undoneTodo?: Maybe; + updateUserRoles?: Maybe; +}; + + +export type MutationCreateTodoArgs = { + input?: Maybe; +}; + + +export type MutationCreateUserArgs = { + input?: Maybe; +}; + + +export type MutationDeleteTodoArgs = { + input?: Maybe; +}; + + +export type MutationDeleteUserArgs = { + input?: Maybe; +}; + + +export type MutationDoneTodoArgs = { + input?: Maybe; +}; + + +export type MutationUndoneTodoArgs = { + input?: Maybe; +}; + + +export type MutationUpdateUserRolesArgs = { + input?: Maybe; +}; + +export type TodoEdge = { + __typename?: 'TodoEdge'; + cursor?: Maybe; + todo?: Maybe; +}; + +export type AllTodosWithDeadlineApproachingRequest = { + dueDate: Scalars['DateTime']; + paging?: Maybe; +}; + +export type AllTodosWithDeadlineApproachingResponse = { + __typename?: 'AllTodosWithDeadlineApproachingResponse'; + edges?: Maybe>>; + pageInfo?: Maybe; +}; + +export type Query = { + __typename?: 'Query'; + allTodosWithDeadlineApproaching?: Maybe; + todo?: Maybe; + user?: Maybe; +}; + + +export type QueryAllTodosWithDeadlineApproachingArgs = { + query?: Maybe; +}; + + +export type QueryTodoArgs = { + id: Scalars['ID']; +}; + + +export type QueryUserArgs = { + id: Scalars['ID']; +}; + +export enum OrderBy { + Asc = 'ASC', + Desc = 'DESC' +} + +export type PagingInput = { + cursor?: Maybe; + skip?: Maybe; + take?: Maybe; +}; + +export type PageInfo = { + __typename?: 'PageInfo'; + endCursor?: Maybe; + hasNextPage?: Maybe; + totalCount?: Maybe; +}; + +export type CreateUserRequest = { + _?: Maybe; +}; + +export type CreateUserResponse = { + __typename?: 'CreateUserResponse'; + user?: Maybe; +}; + +export type UpdateUserRolesRequest = { + id: Scalars['ID']; + roles: Array; +}; + +export type UpdateUserRolesResponse = { + __typename?: 'UpdateUserRolesResponse'; + user: User; +}; + +export type DeleteUserRequest = { + id: Scalars['ID']; +}; + +export type DeleteUserResponse = { + __typename?: 'DeleteUserResponse'; + user: User; +}; + +export type WithIndex = TObject & Record; +export type ResolversObject = WithIndex; + +export type ResolverTypeWrapper = Promise | T; + + +export type LegacyStitchingResolver = { + fragment: string; + resolve: ResolverFn; +}; + +export type NewStitchingResolver = { + selectionSet: string; + resolve: ResolverFn; +}; +export type StitchingResolver = LegacyStitchingResolver | NewStitchingResolver; +export type Resolver = + | ResolverFn + | StitchingResolver; + +export type ResolverFn = ( + parent: TParent, + args: TArgs, + context: TContext, + info: GraphQLResolveInfo +) => Promise | TResult; + +export type SubscriptionSubscribeFn = ( + parent: TParent, + args: TArgs, + context: TContext, + info: GraphQLResolveInfo +) => AsyncIterator | Promise>; + +export type SubscriptionResolveFn = ( + parent: TParent, + args: TArgs, + context: TContext, + info: GraphQLResolveInfo +) => TResult | Promise; + +export interface SubscriptionSubscriberObject { + subscribe: SubscriptionSubscribeFn<{ [key in TKey]: TResult }, TParent, TContext, TArgs>; + resolve?: SubscriptionResolveFn; +} + +export interface SubscriptionResolverObject { + subscribe: SubscriptionSubscribeFn; + resolve: SubscriptionResolveFn; +} + +export type SubscriptionObject = + | SubscriptionSubscriberObject + | SubscriptionResolverObject; + +export type SubscriptionResolver = + | ((...args: any[]) => SubscriptionObject) + | SubscriptionObject; + +export type TypeResolveFn = ( + parent: TParent, + context: TContext, + info: GraphQLResolveInfo +) => Maybe | Promise>; + +export type IsTypeOfResolverFn = (obj: T, info: GraphQLResolveInfo) => boolean | Promise; + +export type NextResolverFn = () => Promise; + +export type DirectiveResolverFn = ( + next: NextResolverFn, + parent: TParent, + args: TArgs, + context: TContext, + info: GraphQLResolveInfo +) => TResult | Promise; + +/** Mapping between all available schema types and the resolvers types */ +export type ResolversTypes = ResolversObject<{ + TodoStatus: TodoStatus; + Todo: ResolverTypeWrapper; + ID: ResolverTypeWrapper; + String: ResolverTypeWrapper; + Role: Role; + User: ResolverTypeWrapper; + DateTime: ResolverTypeWrapper; + CreateTodoRequest: CreateTodoRequest; + CreateTodoResponse: ResolverTypeWrapper; + DoneTodoRequest: DoneTodoRequest; + DoneTodoResponse: ResolverTypeWrapper; + UndoneTodoRequest: UndoneTodoRequest; + UndoneTodoResponse: ResolverTypeWrapper; + DeleteTodoRequest: DeleteTodoRequest; + DeleteTodoResponse: ResolverTypeWrapper; + Mutation: ResolverTypeWrapper<{}>; + TodoEdge: ResolverTypeWrapper; + AllTodosWithDeadlineApproachingRequest: AllTodosWithDeadlineApproachingRequest; + AllTodosWithDeadlineApproachingResponse: ResolverTypeWrapper; + Query: ResolverTypeWrapper<{}>; + OrderBy: OrderBy; + PagingInput: PagingInput; + Int: ResolverTypeWrapper; + PageInfo: ResolverTypeWrapper; + Boolean: ResolverTypeWrapper; + CreateUserRequest: CreateUserRequest; + CreateUserResponse: ResolverTypeWrapper; + UpdateUserRolesRequest: UpdateUserRolesRequest; + UpdateUserRolesResponse: ResolverTypeWrapper; + DeleteUserRequest: DeleteUserRequest; + DeleteUserResponse: ResolverTypeWrapper; +}>; + +/** Mapping between all available schema types and the resolvers parents */ +export type ResolversParentTypes = ResolversObject<{ + Todo: Todo; + ID: Scalars['ID']; + String: Scalars['String']; + User: User; + DateTime: Scalars['DateTime']; + CreateTodoRequest: CreateTodoRequest; + CreateTodoResponse: CreateTodoResponse; + DoneTodoRequest: DoneTodoRequest; + DoneTodoResponse: DoneTodoResponse; + UndoneTodoRequest: UndoneTodoRequest; + UndoneTodoResponse: UndoneTodoResponse; + DeleteTodoRequest: DeleteTodoRequest; + DeleteTodoResponse: DeleteTodoResponse; + Mutation: {}; + TodoEdge: TodoEdge; + AllTodosWithDeadlineApproachingRequest: AllTodosWithDeadlineApproachingRequest; + AllTodosWithDeadlineApproachingResponse: AllTodosWithDeadlineApproachingResponse; + Query: {}; + PagingInput: PagingInput; + Int: Scalars['Int']; + PageInfo: PageInfo; + Boolean: Scalars['Boolean']; + CreateUserRequest: CreateUserRequest; + CreateUserResponse: CreateUserResponse; + UpdateUserRolesRequest: UpdateUserRolesRequest; + UpdateUserRolesResponse: UpdateUserRolesResponse; + DeleteUserRequest: DeleteUserRequest; + DeleteUserResponse: DeleteUserResponse; +}>; + +export type TodoResolvers = ResolversObject<{ + createdAt?: Resolver, ParentType, ContextType>; + dueDate?: Resolver, ParentType, ContextType>; + id?: Resolver; + owner?: Resolver, ParentType, ContextType>; + ownerId?: Resolver; + status?: Resolver; + title?: Resolver; + updatedAt?: Resolver, ParentType, ContextType>; + __isTypeOf?: IsTypeOfResolverFn; +}>; + +export type UserResolvers = ResolversObject<{ + createdAt?: Resolver, ParentType, ContextType>; + id?: Resolver; + roles?: Resolver, ParentType, ContextType>; + todos?: Resolver>>, ParentType, ContextType>; + updatedAt?: Resolver, ParentType, ContextType>; + __isTypeOf?: IsTypeOfResolverFn; +}>; + +export interface DateTimeScalarConfig extends GraphQLScalarTypeConfig { + name: 'DateTime'; +} + +export type CreateTodoResponseResolvers = ResolversObject<{ + todo?: Resolver, ParentType, ContextType>; + __isTypeOf?: IsTypeOfResolverFn; +}>; + +export type DoneTodoResponseResolvers = ResolversObject<{ + todo?: Resolver; + __isTypeOf?: IsTypeOfResolverFn; +}>; + +export type UndoneTodoResponseResolvers = ResolversObject<{ + todo?: Resolver; + __isTypeOf?: IsTypeOfResolverFn; +}>; + +export type DeleteTodoResponseResolvers = ResolversObject<{ + todo?: Resolver; + __isTypeOf?: IsTypeOfResolverFn; +}>; + +export type MutationResolvers = ResolversObject<{ + createTodo?: Resolver, ParentType, ContextType, RequireFields>; + createUser?: Resolver, ParentType, ContextType, RequireFields>; + deleteTodo?: Resolver, ParentType, ContextType, RequireFields>; + deleteUser?: Resolver, ParentType, ContextType, RequireFields>; + doneTodo?: Resolver, ParentType, ContextType, RequireFields>; + undoneTodo?: Resolver, ParentType, ContextType, RequireFields>; + updateUserRoles?: Resolver, ParentType, ContextType, RequireFields>; +}>; + +export type TodoEdgeResolvers = ResolversObject<{ + cursor?: Resolver, ParentType, ContextType>; + todo?: Resolver, ParentType, ContextType>; + __isTypeOf?: IsTypeOfResolverFn; +}>; + +export type AllTodosWithDeadlineApproachingResponseResolvers = ResolversObject<{ + edges?: Resolver>>, ParentType, ContextType>; + pageInfo?: Resolver, ParentType, ContextType>; + __isTypeOf?: IsTypeOfResolverFn; +}>; + +export type QueryResolvers = ResolversObject<{ + allTodosWithDeadlineApproaching?: Resolver, ParentType, ContextType, RequireFields>; + todo?: Resolver, ParentType, ContextType, RequireFields>; + user?: Resolver, ParentType, ContextType, RequireFields>; +}>; + +export type PageInfoResolvers = ResolversObject<{ + endCursor?: Resolver, ParentType, ContextType>; + hasNextPage?: Resolver, ParentType, ContextType>; + totalCount?: Resolver, ParentType, ContextType>; + __isTypeOf?: IsTypeOfResolverFn; +}>; + +export type CreateUserResponseResolvers = ResolversObject<{ + user?: Resolver, ParentType, ContextType>; + __isTypeOf?: IsTypeOfResolverFn; +}>; + +export type UpdateUserRolesResponseResolvers = ResolversObject<{ + user?: Resolver; + __isTypeOf?: IsTypeOfResolverFn; +}>; + +export type DeleteUserResponseResolvers = ResolversObject<{ + user?: Resolver; + __isTypeOf?: IsTypeOfResolverFn; +}>; + +export type Resolvers = ResolversObject<{ + Todo?: TodoResolvers; + User?: UserResolvers; + DateTime?: GraphQLScalarType; + CreateTodoResponse?: CreateTodoResponseResolvers; + DoneTodoResponse?: DoneTodoResponseResolvers; + UndoneTodoResponse?: UndoneTodoResponseResolvers; + DeleteTodoResponse?: DeleteTodoResponseResolvers; + Mutation?: MutationResolvers; + TodoEdge?: TodoEdgeResolvers; + AllTodosWithDeadlineApproachingResponse?: AllTodosWithDeadlineApproachingResponseResolvers; + Query?: QueryResolvers; + PageInfo?: PageInfoResolvers; + CreateUserResponse?: CreateUserResponseResolvers; + UpdateUserRolesResponse?: UpdateUserRolesResponseResolvers; + DeleteUserResponse?: DeleteUserResponseResolvers; +}>; + + +/** + * @deprecated + * Use "Resolvers" root object instead. If you wish to get "IResolvers", add "typesPrefix: I" to your config. + */ +export type IResolvers = Resolvers; diff --git a/src/schema/src/usecase/todo/mutation.graphql b/src/schema/src/app/ui/usecase/todo/mutation.graphql similarity index 100% rename from src/schema/src/usecase/todo/mutation.graphql rename to src/schema/src/app/ui/usecase/todo/mutation.graphql diff --git a/src/schema/src/usecase/todo/query.graphql b/src/schema/src/app/ui/usecase/todo/query.graphql similarity index 100% rename from src/schema/src/usecase/todo/query.graphql rename to src/schema/src/app/ui/usecase/todo/query.graphql diff --git a/src/schema/src/usecase/types.graphql b/src/schema/src/app/ui/usecase/types.graphql similarity index 100% rename from src/schema/src/usecase/types.graphql rename to src/schema/src/app/ui/usecase/types.graphql diff --git a/src/schema/src/usecase/user/mutation.graphql b/src/schema/src/app/ui/usecase/user/mutation.graphql similarity index 96% rename from src/schema/src/usecase/user/mutation.graphql rename to src/schema/src/app/ui/usecase/user/mutation.graphql index d874a20..a556107 100644 --- a/src/schema/src/usecase/user/mutation.graphql +++ b/src/schema/src/app/ui/usecase/user/mutation.graphql @@ -1,5 +1,5 @@ input CreateUserRequest { - email: String! + _: Boolean } type CreateUserResponse { diff --git a/src/schema/src/usecase/user/query.graphql b/src/schema/src/app/ui/usecase/user/query.graphql similarity index 100% rename from src/schema/src/usecase/user/query.graphql rename to src/schema/src/app/ui/usecase/user/query.graphql diff --git a/src/schema/src/auth/codegen.yml b/src/schema/src/auth/codegen.yml new file mode 100644 index 0000000..3c0ed97 --- /dev/null +++ b/src/schema/src/auth/codegen.yml @@ -0,0 +1,15 @@ +overwrite: true +schema: 'src/auth/**/*.graphql' +generates: + src/auth/types.ts: + plugins: + - typescript + - typescript-resolvers + config: + useIndexSignature: true + src/auth/schema.graphql: + plugins: + - schema-ast +config: + scalars: + DateTime: Date diff --git a/src/schema/src/auth/schema.graphql b/src/schema/src/auth/schema.graphql new file mode 100644 index 0000000..fc867c9 --- /dev/null +++ b/src/schema/src/auth/schema.graphql @@ -0,0 +1,43 @@ +scalar DateTime + +input SignUpEmailPasswordRequest { + email: String! + password: String! +} + +type SignUpEmailPasswordResponse { + userId: String + token: String! +} + +input SignInEmailPasswordRequest { + email: String! + password: String! +} + +type SignInEmailPasswordResponse { + userId: String! + token: String! +} + +type Mutation { + signUpEmailPassword(input: SignUpEmailPasswordRequest): SignUpEmailPasswordResponse + signInEmailPassword(input: SignInEmailPasswordRequest): SignInEmailPasswordResponse +} + +enum OrderBy { + ASC + DESC +} + +input PagingInput { + cursor: String + skip: Int + take: Int +} + +type PageInfo { + totalCount: Int + hasNextPage: Boolean + endCursor: String +} diff --git a/src/schema/src/auth/types.ts b/src/schema/src/auth/types.ts new file mode 100644 index 0000000..9c75535 --- /dev/null +++ b/src/schema/src/auth/types.ts @@ -0,0 +1,221 @@ +import { GraphQLResolveInfo, GraphQLScalarType, GraphQLScalarTypeConfig } from 'graphql'; +export type Maybe = T | null; +export type Exact = { [K in keyof T]: T[K] }; +export type RequireFields = { [X in Exclude]?: T[X] } & { [P in K]-?: NonNullable }; +/** All built-in and custom scalars, mapped to their actual values */ +export type Scalars = { + ID: string; + String: string; + Boolean: boolean; + Int: number; + Float: number; + DateTime: Date; +}; + + +export type SignUpEmailPasswordRequest = { + email: Scalars['String']; + password: Scalars['String']; +}; + +export type SignUpEmailPasswordResponse = { + __typename?: 'SignUpEmailPasswordResponse'; + userId?: Maybe; + token: Scalars['String']; +}; + +export type SignInEmailPasswordRequest = { + email: Scalars['String']; + password: Scalars['String']; +}; + +export type SignInEmailPasswordResponse = { + __typename?: 'SignInEmailPasswordResponse'; + userId: Scalars['String']; + token: Scalars['String']; +}; + +export type Mutation = { + __typename?: 'Mutation'; + signUpEmailPassword?: Maybe; + signInEmailPassword?: Maybe; +}; + + +export type MutationSignUpEmailPasswordArgs = { + input?: Maybe; +}; + + +export type MutationSignInEmailPasswordArgs = { + input?: Maybe; +}; + +export enum OrderBy { + Asc = 'ASC', + Desc = 'DESC' +} + +export type PagingInput = { + cursor?: Maybe; + skip?: Maybe; + take?: Maybe; +}; + +export type PageInfo = { + __typename?: 'PageInfo'; + totalCount?: Maybe; + hasNextPage?: Maybe; + endCursor?: Maybe; +}; + +export type WithIndex = TObject & Record; +export type ResolversObject = WithIndex; + +export type ResolverTypeWrapper = Promise | T; + + +export type LegacyStitchingResolver = { + fragment: string; + resolve: ResolverFn; +}; + +export type NewStitchingResolver = { + selectionSet: string; + resolve: ResolverFn; +}; +export type StitchingResolver = LegacyStitchingResolver | NewStitchingResolver; +export type Resolver = + | ResolverFn + | StitchingResolver; + +export type ResolverFn = ( + parent: TParent, + args: TArgs, + context: TContext, + info: GraphQLResolveInfo +) => Promise | TResult; + +export type SubscriptionSubscribeFn = ( + parent: TParent, + args: TArgs, + context: TContext, + info: GraphQLResolveInfo +) => AsyncIterator | Promise>; + +export type SubscriptionResolveFn = ( + parent: TParent, + args: TArgs, + context: TContext, + info: GraphQLResolveInfo +) => TResult | Promise; + +export interface SubscriptionSubscriberObject { + subscribe: SubscriptionSubscribeFn<{ [key in TKey]: TResult }, TParent, TContext, TArgs>; + resolve?: SubscriptionResolveFn; +} + +export interface SubscriptionResolverObject { + subscribe: SubscriptionSubscribeFn; + resolve: SubscriptionResolveFn; +} + +export type SubscriptionObject = + | SubscriptionSubscriberObject + | SubscriptionResolverObject; + +export type SubscriptionResolver = + | ((...args: any[]) => SubscriptionObject) + | SubscriptionObject; + +export type TypeResolveFn = ( + parent: TParent, + context: TContext, + info: GraphQLResolveInfo +) => Maybe | Promise>; + +export type IsTypeOfResolverFn = (obj: T, info: GraphQLResolveInfo) => boolean | Promise; + +export type NextResolverFn = () => Promise; + +export type DirectiveResolverFn = ( + next: NextResolverFn, + parent: TParent, + args: TArgs, + context: TContext, + info: GraphQLResolveInfo +) => TResult | Promise; + +/** Mapping between all available schema types and the resolvers types */ +export type ResolversTypes = ResolversObject<{ + DateTime: ResolverTypeWrapper; + SignUpEmailPasswordRequest: SignUpEmailPasswordRequest; + String: ResolverTypeWrapper; + SignUpEmailPasswordResponse: ResolverTypeWrapper; + SignInEmailPasswordRequest: SignInEmailPasswordRequest; + SignInEmailPasswordResponse: ResolverTypeWrapper; + Mutation: ResolverTypeWrapper<{}>; + OrderBy: OrderBy; + PagingInput: PagingInput; + Int: ResolverTypeWrapper; + PageInfo: ResolverTypeWrapper; + Boolean: ResolverTypeWrapper; +}>; + +/** Mapping between all available schema types and the resolvers parents */ +export type ResolversParentTypes = ResolversObject<{ + DateTime: Scalars['DateTime']; + SignUpEmailPasswordRequest: SignUpEmailPasswordRequest; + String: Scalars['String']; + SignUpEmailPasswordResponse: SignUpEmailPasswordResponse; + SignInEmailPasswordRequest: SignInEmailPasswordRequest; + SignInEmailPasswordResponse: SignInEmailPasswordResponse; + Mutation: {}; + PagingInput: PagingInput; + Int: Scalars['Int']; + PageInfo: PageInfo; + Boolean: Scalars['Boolean']; +}>; + +export interface DateTimeScalarConfig extends GraphQLScalarTypeConfig { + name: 'DateTime'; +} + +export type SignUpEmailPasswordResponseResolvers = ResolversObject<{ + userId?: Resolver, ParentType, ContextType>; + token?: Resolver; + __isTypeOf?: IsTypeOfResolverFn; +}>; + +export type SignInEmailPasswordResponseResolvers = ResolversObject<{ + userId?: Resolver; + token?: Resolver; + __isTypeOf?: IsTypeOfResolverFn; +}>; + +export type MutationResolvers = ResolversObject<{ + signUpEmailPassword?: Resolver, ParentType, ContextType, RequireFields>; + signInEmailPassword?: Resolver, ParentType, ContextType, RequireFields>; +}>; + +export type PageInfoResolvers = ResolversObject<{ + totalCount?: Resolver, ParentType, ContextType>; + hasNextPage?: Resolver, ParentType, ContextType>; + endCursor?: Resolver, ParentType, ContextType>; + __isTypeOf?: IsTypeOfResolverFn; +}>; + +export type Resolvers = ResolversObject<{ + DateTime?: GraphQLScalarType; + SignUpEmailPasswordResponse?: SignUpEmailPasswordResponseResolvers; + SignInEmailPasswordResponse?: SignInEmailPasswordResponseResolvers; + Mutation?: MutationResolvers; + PageInfo?: PageInfoResolvers; +}>; + + +/** + * @deprecated + * Use "Resolvers" root object instead. If you wish to get "IResolvers", add "typesPrefix: I" to your config. + */ +export type IResolvers = Resolvers; diff --git a/src/schema/src/auth/ui/codegen.yml b/src/schema/src/auth/ui/codegen.yml new file mode 100644 index 0000000..7b1a4db --- /dev/null +++ b/src/schema/src/auth/ui/codegen.yml @@ -0,0 +1,15 @@ +overwrite: true +schema: 'src/auth/ui/**/*.graphql' +generates: + src/auth/ui/types.ts: + plugins: + - typescript + - typescript-resolvers + config: + useIndexSignature: true + src/auth/ui/schema.graphql: + plugins: + - schema-ast +config: + scalars: + DateTime: Date diff --git a/src/schema/src/auth/ui/scalar/index.graphql b/src/schema/src/auth/ui/scalar/index.graphql new file mode 100644 index 0000000..68ab69c --- /dev/null +++ b/src/schema/src/auth/ui/scalar/index.graphql @@ -0,0 +1 @@ +scalar DateTime diff --git a/src/schema/src/auth/ui/schema.graphql b/src/schema/src/auth/ui/schema.graphql new file mode 100644 index 0000000..fc867c9 --- /dev/null +++ b/src/schema/src/auth/ui/schema.graphql @@ -0,0 +1,43 @@ +scalar DateTime + +input SignUpEmailPasswordRequest { + email: String! + password: String! +} + +type SignUpEmailPasswordResponse { + userId: String + token: String! +} + +input SignInEmailPasswordRequest { + email: String! + password: String! +} + +type SignInEmailPasswordResponse { + userId: String! + token: String! +} + +type Mutation { + signUpEmailPassword(input: SignUpEmailPasswordRequest): SignUpEmailPasswordResponse + signInEmailPassword(input: SignInEmailPasswordRequest): SignInEmailPasswordResponse +} + +enum OrderBy { + ASC + DESC +} + +input PagingInput { + cursor: String + skip: Int + take: Int +} + +type PageInfo { + totalCount: Int + hasNextPage: Boolean + endCursor: String +} diff --git a/src/schema/src/auth/ui/types.ts b/src/schema/src/auth/ui/types.ts new file mode 100644 index 0000000..9c75535 --- /dev/null +++ b/src/schema/src/auth/ui/types.ts @@ -0,0 +1,221 @@ +import { GraphQLResolveInfo, GraphQLScalarType, GraphQLScalarTypeConfig } from 'graphql'; +export type Maybe = T | null; +export type Exact = { [K in keyof T]: T[K] }; +export type RequireFields = { [X in Exclude]?: T[X] } & { [P in K]-?: NonNullable }; +/** All built-in and custom scalars, mapped to their actual values */ +export type Scalars = { + ID: string; + String: string; + Boolean: boolean; + Int: number; + Float: number; + DateTime: Date; +}; + + +export type SignUpEmailPasswordRequest = { + email: Scalars['String']; + password: Scalars['String']; +}; + +export type SignUpEmailPasswordResponse = { + __typename?: 'SignUpEmailPasswordResponse'; + userId?: Maybe; + token: Scalars['String']; +}; + +export type SignInEmailPasswordRequest = { + email: Scalars['String']; + password: Scalars['String']; +}; + +export type SignInEmailPasswordResponse = { + __typename?: 'SignInEmailPasswordResponse'; + userId: Scalars['String']; + token: Scalars['String']; +}; + +export type Mutation = { + __typename?: 'Mutation'; + signUpEmailPassword?: Maybe; + signInEmailPassword?: Maybe; +}; + + +export type MutationSignUpEmailPasswordArgs = { + input?: Maybe; +}; + + +export type MutationSignInEmailPasswordArgs = { + input?: Maybe; +}; + +export enum OrderBy { + Asc = 'ASC', + Desc = 'DESC' +} + +export type PagingInput = { + cursor?: Maybe; + skip?: Maybe; + take?: Maybe; +}; + +export type PageInfo = { + __typename?: 'PageInfo'; + totalCount?: Maybe; + hasNextPage?: Maybe; + endCursor?: Maybe; +}; + +export type WithIndex = TObject & Record; +export type ResolversObject = WithIndex; + +export type ResolverTypeWrapper = Promise | T; + + +export type LegacyStitchingResolver = { + fragment: string; + resolve: ResolverFn; +}; + +export type NewStitchingResolver = { + selectionSet: string; + resolve: ResolverFn; +}; +export type StitchingResolver = LegacyStitchingResolver | NewStitchingResolver; +export type Resolver = + | ResolverFn + | StitchingResolver; + +export type ResolverFn = ( + parent: TParent, + args: TArgs, + context: TContext, + info: GraphQLResolveInfo +) => Promise | TResult; + +export type SubscriptionSubscribeFn = ( + parent: TParent, + args: TArgs, + context: TContext, + info: GraphQLResolveInfo +) => AsyncIterator | Promise>; + +export type SubscriptionResolveFn = ( + parent: TParent, + args: TArgs, + context: TContext, + info: GraphQLResolveInfo +) => TResult | Promise; + +export interface SubscriptionSubscriberObject { + subscribe: SubscriptionSubscribeFn<{ [key in TKey]: TResult }, TParent, TContext, TArgs>; + resolve?: SubscriptionResolveFn; +} + +export interface SubscriptionResolverObject { + subscribe: SubscriptionSubscribeFn; + resolve: SubscriptionResolveFn; +} + +export type SubscriptionObject = + | SubscriptionSubscriberObject + | SubscriptionResolverObject; + +export type SubscriptionResolver = + | ((...args: any[]) => SubscriptionObject) + | SubscriptionObject; + +export type TypeResolveFn = ( + parent: TParent, + context: TContext, + info: GraphQLResolveInfo +) => Maybe | Promise>; + +export type IsTypeOfResolverFn = (obj: T, info: GraphQLResolveInfo) => boolean | Promise; + +export type NextResolverFn = () => Promise; + +export type DirectiveResolverFn = ( + next: NextResolverFn, + parent: TParent, + args: TArgs, + context: TContext, + info: GraphQLResolveInfo +) => TResult | Promise; + +/** Mapping between all available schema types and the resolvers types */ +export type ResolversTypes = ResolversObject<{ + DateTime: ResolverTypeWrapper; + SignUpEmailPasswordRequest: SignUpEmailPasswordRequest; + String: ResolverTypeWrapper; + SignUpEmailPasswordResponse: ResolverTypeWrapper; + SignInEmailPasswordRequest: SignInEmailPasswordRequest; + SignInEmailPasswordResponse: ResolverTypeWrapper; + Mutation: ResolverTypeWrapper<{}>; + OrderBy: OrderBy; + PagingInput: PagingInput; + Int: ResolverTypeWrapper; + PageInfo: ResolverTypeWrapper; + Boolean: ResolverTypeWrapper; +}>; + +/** Mapping between all available schema types and the resolvers parents */ +export type ResolversParentTypes = ResolversObject<{ + DateTime: Scalars['DateTime']; + SignUpEmailPasswordRequest: SignUpEmailPasswordRequest; + String: Scalars['String']; + SignUpEmailPasswordResponse: SignUpEmailPasswordResponse; + SignInEmailPasswordRequest: SignInEmailPasswordRequest; + SignInEmailPasswordResponse: SignInEmailPasswordResponse; + Mutation: {}; + PagingInput: PagingInput; + Int: Scalars['Int']; + PageInfo: PageInfo; + Boolean: Scalars['Boolean']; +}>; + +export interface DateTimeScalarConfig extends GraphQLScalarTypeConfig { + name: 'DateTime'; +} + +export type SignUpEmailPasswordResponseResolvers = ResolversObject<{ + userId?: Resolver, ParentType, ContextType>; + token?: Resolver; + __isTypeOf?: IsTypeOfResolverFn; +}>; + +export type SignInEmailPasswordResponseResolvers = ResolversObject<{ + userId?: Resolver; + token?: Resolver; + __isTypeOf?: IsTypeOfResolverFn; +}>; + +export type MutationResolvers = ResolversObject<{ + signUpEmailPassword?: Resolver, ParentType, ContextType, RequireFields>; + signInEmailPassword?: Resolver, ParentType, ContextType, RequireFields>; +}>; + +export type PageInfoResolvers = ResolversObject<{ + totalCount?: Resolver, ParentType, ContextType>; + hasNextPage?: Resolver, ParentType, ContextType>; + endCursor?: Resolver, ParentType, ContextType>; + __isTypeOf?: IsTypeOfResolverFn; +}>; + +export type Resolvers = ResolversObject<{ + DateTime?: GraphQLScalarType; + SignUpEmailPasswordResponse?: SignUpEmailPasswordResponseResolvers; + SignInEmailPasswordResponse?: SignInEmailPasswordResponseResolvers; + Mutation?: MutationResolvers; + PageInfo?: PageInfoResolvers; +}>; + + +/** + * @deprecated + * Use "Resolvers" root object instead. If you wish to get "IResolvers", add "typesPrefix: I" to your config. + */ +export type IResolvers = Resolvers; diff --git a/src/schema/src/usecase/auth/mutation.graphql b/src/schema/src/auth/ui/usecase/auth/mutation.graphql similarity index 92% rename from src/schema/src/usecase/auth/mutation.graphql rename to src/schema/src/auth/ui/usecase/auth/mutation.graphql index 743984c..d4dfa9f 100644 --- a/src/schema/src/usecase/auth/mutation.graphql +++ b/src/schema/src/auth/ui/usecase/auth/mutation.graphql @@ -4,7 +4,7 @@ input SignUpEmailPasswordRequest { } type SignUpEmailPasswordResponse { - user: User + userId: String token: String! } @@ -14,7 +14,7 @@ input SignInEmailPasswordRequest { } type SignInEmailPasswordResponse { - user: User + userId: String! token: String! } diff --git a/src/schema/src/auth/ui/usecase/types.graphql b/src/schema/src/auth/ui/usecase/types.graphql new file mode 100644 index 0000000..cdcccbc --- /dev/null +++ b/src/schema/src/auth/ui/usecase/types.graphql @@ -0,0 +1,16 @@ +enum OrderBy { + ASC + DESC +} + +input PagingInput { + cursor: String + skip: Int + take: Int +} + +type PageInfo { + totalCount: Int + hasNextPage: Boolean + endCursor: String +} diff --git a/src/schema/src/index.ts b/src/schema/src/index.ts deleted file mode 100644 index fcb073f..0000000 --- a/src/schema/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './types'; diff --git a/src/schema/tsconfig.json b/src/schema/tsconfig.json index 6a0211d..4c87c5c 100644 --- a/src/schema/tsconfig.json +++ b/src/schema/tsconfig.json @@ -26,6 +26,6 @@ "sourceMap": true, "composite": true }, - "exclude": ["node_modules", "lib", "**/_mocks/*", "**/__tests__/*"], - "include": ["src/**/*"] + "include": ["src/**/*"], + "exclude": ["node_modules", "lib", "**/_mocks/*", "**/__tests__/*"] } diff --git a/yarn.lock b/yarn.lock index f796289..f03929b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,7 +2,7 @@ # yarn lockfile v1 -"@ampproject/toolbox-core@^2.2.0", "@ampproject/toolbox-core@^2.6.0": +"@ampproject/toolbox-core@^2.6.0": version "2.6.0" resolved "https://registry.yarnpkg.com/@ampproject/toolbox-core/-/toolbox-core-2.6.0.tgz#9824d5f133d82106a9bf0774920843c69fa5c869" integrity sha512-sDMnHj8WaX3tqJS5VsIHkeW98nq5WQ0C9RoFc1PPS3rmYIlS0vhAfHbrjJw6wtuxBTQFxccje+Ew+2OJ2D15kA== @@ -10,36 +10,43 @@ cross-fetch "3.0.5" lru-cache "6.0.0" -"@ampproject/toolbox-optimizer@2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@ampproject/toolbox-optimizer/-/toolbox-optimizer-2.2.0.tgz#2438d7102beb1a74bae8d20926e038c5f724a8ae" - integrity sha512-lEujArv6jyl/mEab0uBZ25oMkf+kf8cpTuHPcy8k3+jtomNyVtd94lbSWbQtomsEnYQ0MA9MvLvCJXsJz1fQcg== - dependencies: - "@ampproject/toolbox-core" "^2.2.0" - "@ampproject/toolbox-runtime-version" "^2.2.0" - "@ampproject/toolbox-script-csp" "^2.2.0" - "@ampproject/toolbox-validator-rules" "^2.2.0" - cssnano "4.1.10" +"@ampproject/toolbox-optimizer@2.7.0-alpha.1": + version "2.7.0-alpha.1" + resolved "https://registry.yarnpkg.com/@ampproject/toolbox-optimizer/-/toolbox-optimizer-2.7.0-alpha.1.tgz#ab4c386645f991e5da5a9d2967ed2bb734a9f6c4" + integrity sha512-2wTvOyM6GP6FrYQzxSQCg43STo1jMRGeDKa6YUkYXYH9fm9Wbt2wTRx+ajjb48JQ6WwUnGwga1MhQhVFzRQ+wQ== + dependencies: + "@ampproject/toolbox-core" "^2.6.0" + "@ampproject/toolbox-runtime-version" "^2.7.0-alpha.1" + "@ampproject/toolbox-script-csp" "^2.5.4" + "@ampproject/toolbox-validator-rules" "^2.5.4" + abort-controller "3.0.0" + cross-fetch "3.0.5" + cssnano-simple "1.2.0" + dom-serializer "1.0.1" domhandler "3.0.0" - domutils "2.0.0" + domutils "2.1.0" htmlparser2 "4.1.0" + https-proxy-agent "5.0.0" + lru-cache "6.0.0" + node-fetch "2.6.0" normalize-html-whitespace "1.0.0" + postcss "7.0.32" postcss-safe-parser "4.0.2" - terser "4.6.8" + terser "5.1.0" -"@ampproject/toolbox-runtime-version@^2.2.0": - version "2.6.0" - resolved "https://registry.yarnpkg.com/@ampproject/toolbox-runtime-version/-/toolbox-runtime-version-2.6.0.tgz#c2a310840a6c60a7f5046d2ccaf45646a761bd4f" - integrity sha512-wT+Ehsoq2PRXqpgjebygHD01BpSlaAE4HfDEVxgPVT8oAsLzE4ywZgzI2VQZfaCdb8qLyO5+WXrLSoJXxDBo2Q== +"@ampproject/toolbox-runtime-version@^2.7.0-alpha.1": + version "2.7.0-alpha.1" + resolved "https://registry.yarnpkg.com/@ampproject/toolbox-runtime-version/-/toolbox-runtime-version-2.7.0-alpha.1.tgz#2ecd603e1fc986f21048947639e99b5706e01ec3" + integrity sha512-JruvO4RfaC/piKOY/2w6vuasNjdrHnb+xvmQTl4zBBdMsDooohZKsN9jv9YiKIdpny4MzLt1ce497840vJJq+g== dependencies: "@ampproject/toolbox-core" "^2.6.0" -"@ampproject/toolbox-script-csp@^2.2.0": +"@ampproject/toolbox-script-csp@^2.5.4": version "2.5.4" resolved "https://registry.yarnpkg.com/@ampproject/toolbox-script-csp/-/toolbox-script-csp-2.5.4.tgz#d8b7b91a678ae8f263cb36d9b74e441b7d633aad" integrity sha512-+knTYetI5nWllRZ9wFcj7mYxelkiiFVRAAW/hl0ad8EnKHMH82tRlk40CapEnUHhp6Er5sCYkumQ8dngs3Q4zQ== -"@ampproject/toolbox-validator-rules@^2.2.0": +"@ampproject/toolbox-validator-rules@^2.5.4": version "2.5.4" resolved "https://registry.yarnpkg.com/@ampproject/toolbox-validator-rules/-/toolbox-validator-rules-2.5.4.tgz#7dee3a3edceefea459d060571db8cc6e7bbf0dd6" integrity sha512-bS7uF+h0s5aiklc/iRaujiSsiladOsZBLrJ6QImJDXvubCAQtvE7om7ShlGSXixkMAO0OVMDWyuwLlEy8V1Ing== @@ -110,25 +117,40 @@ resolved "https://registry.yarnpkg.com/@ardatan/aggregate-error/-/aggregate-error-0.0.1.tgz#1403ac5de10d8ca689fc1f65844c27179ae1d44f" integrity sha512-UQ9BequOTIavs0pTHLMwQwKQF8tTV1oezY/H2O9chA+JNPFZSua55xpU5dPSjAU9/jLJ1VwU+HJuTVN8u7S6Fg== -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.1", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.5.5": +"@auth0/nextjs-auth0@^0.16.0": + version "0.16.0" + resolved "https://registry.yarnpkg.com/@auth0/nextjs-auth0/-/nextjs-auth0-0.16.0.tgz#551acb2d7f0054229996ec7c96e7bbb286a867b4" + integrity sha512-LVkVtjzH6HoZawqz+9+poXfPi8J57sE1ksE5j1EvkFeVKDk5ZEu0w9tqQAuAxLFyHlCI7Q1rRlJXpV7O8uGGyg== + dependencies: + "@hapi/iron" "^5.1.4" + base64url "^3.0.1" + cookie "^0.4.1" + openid-client "^3.15.0" + +"@babel/code-frame@7.10.4", "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.1", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.5.5": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== dependencies: "@babel/highlight" "^7.10.4" -"@babel/core@7.7.2": - version "7.7.2" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.7.2.tgz#ea5b99693bcfc058116f42fa1dd54da412b29d91" - integrity sha512-eeD7VEZKfhK1KUXGiyPFettgF3m513f8FoBSWiQ1xTvl1RAopLs42Wp9+Ze911I6H0N9lNqJMDgoZT7gHsipeQ== +"@babel/compat-data@^7.11.0", "@babel/compat-data@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.1.tgz#d7386a689aa0ddf06255005b4b991988021101a0" + integrity sha512-725AQupWJZ8ba0jbKceeFblZTY90McUBWMwHhkFQ9q1zKPJ95GUktljFcgcsIVwRnTnRKlcYzfiNImg5G9m6ZQ== + +"@babel/core@7.7.7": + version "7.7.7" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.7.7.tgz#ee155d2e12300bcc0cff6a8ad46f2af5063803e9" + integrity sha512-jlSjuj/7z138NLZALxVgrx13AOtqip42ATZP7+kYl53GvDV6+4dCek1mVUo8z8c8Xnw/mx2q3d9HWh3griuesQ== dependencies: "@babel/code-frame" "^7.5.5" - "@babel/generator" "^7.7.2" - "@babel/helpers" "^7.7.0" - "@babel/parser" "^7.7.2" - "@babel/template" "^7.7.0" - "@babel/traverse" "^7.7.2" - "@babel/types" "^7.7.2" + "@babel/generator" "^7.7.7" + "@babel/helpers" "^7.7.4" + "@babel/parser" "^7.7.7" + "@babel/template" "^7.7.4" + "@babel/traverse" "^7.7.4" + "@babel/types" "^7.7.4" convert-source-map "^1.7.0" debug "^4.1.0" json5 "^2.1.0" @@ -159,7 +181,7 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.10.2", "@babel/generator@^7.11.0", "@babel/generator@^7.7.2": +"@babel/generator@^7.10.2", "@babel/generator@^7.11.0": version "7.11.4" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.4.tgz#1ec7eec00defba5d6f83e50e3ee72ae2fee482be" integrity sha512-Rn26vueFx0eOoz7iifCN2UHT6rGtnkSGWSoDRIy8jZN3B91PzeSULbswfLoOWuTuAcNwpG/mxy+uCTDnZ9Mp1g== @@ -178,6 +200,15 @@ lodash "^4.17.13" source-map "^0.5.0" +"@babel/generator@^7.12.1", "@babel/generator@^7.7.7": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.1.tgz#0d70be32bdaa03d7c51c8597dda76e0df1f15468" + integrity sha512-DB+6rafIdc9o72Yc3/Ph5h+6hUjeOp66pF0naQBgUFFuPqzQwIlPTm3xZR7YNvduIMtkDIj2t21LSQwnbCrXvg== + dependencies: + "@babel/types" "^7.12.1" + jsesc "^2.5.1" + source-map "^0.5.0" + "@babel/helper-annotate-as-pure@^7.0.0", "@babel/helper-annotate-as-pure@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3" @@ -202,6 +233,15 @@ "@babel/helper-module-imports" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/helper-builder-react-jsx-experimental@^7.12.1": + version "7.12.4" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.12.4.tgz#55fc1ead5242caa0ca2875dcb8eed6d311e50f48" + integrity sha512-AjEa0jrQqNk7eDQOo0pTfUOwQBMF+xVqrausQwT9/rTKy0g04ggFNaJpaE09IQMn9yExluigWMJcj0WC7bq+Og== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-module-imports" "^7.12.1" + "@babel/types" "^7.12.1" + "@babel/helper-builder-react-jsx@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz#8095cddbff858e6fa9c326daee54a2f2732c1d5d" @@ -210,6 +250,16 @@ "@babel/helper-annotate-as-pure" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/helper-compilation-targets@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.1.tgz#310e352888fbdbdd8577be8dfdd2afb9e7adcf50" + integrity sha512-jtBEif7jsPwP27GPHs06v4WBV0KrE8a/P7n0N0sSvHn2hwUCYnolP/CLmz51IzAW4NlN+HuoBtb9QcwnRo9F/g== + dependencies: + "@babel/compat-data" "^7.12.1" + "@babel/helper-validator-option" "^7.12.1" + browserslist "^4.12.0" + semver "^5.5.0" + "@babel/helper-create-class-features-plugin@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.4.tgz#2d4015d0136bd314103a70d84a7183e4b344a355" @@ -222,16 +272,15 @@ "@babel/helper-replace-supers" "^7.10.4" "@babel/helper-split-export-declaration" "^7.10.4" -"@babel/helper-create-class-features-plugin@^7.10.5", "@babel/helper-create-class-features-plugin@^7.7.0": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz#9f61446ba80e8240b0a5c85c6fdac8459d6f259d" - integrity sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A== +"@babel/helper-create-class-features-plugin@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz#3c45998f431edd4a9214c5f1d3ad1448a6137f6e" + integrity sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w== dependencies: "@babel/helper-function-name" "^7.10.4" - "@babel/helper-member-expression-to-functions" "^7.10.5" + "@babel/helper-member-expression-to-functions" "^7.12.1" "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" + "@babel/helper-replace-supers" "^7.12.1" "@babel/helper-split-export-declaration" "^7.10.4" "@babel/helper-create-regexp-features-plugin@^7.10.4": @@ -243,6 +292,15 @@ "@babel/helper-regex" "^7.10.4" regexpu-core "^4.7.0" +"@babel/helper-create-regexp-features-plugin@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz#18b1302d4677f9dc4740fe8c9ed96680e29d37e8" + integrity sha512-rsZ4LGvFTZnzdNZR5HZdmJVuXK8834R5QkF3WvcnBhrlVtF0HSIUC6zbreL9MgjTywhKokn8RIYRiq99+DLAxA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-regex" "^7.10.4" + regexpu-core "^4.7.1" + "@babel/helper-define-map@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.4.tgz#f037ad794264f729eda1889f4ee210b870999092" @@ -289,21 +347,28 @@ dependencies: "@babel/types" "^7.10.4" -"@babel/helper-member-expression-to-functions@^7.10.5": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz#ae69c83d84ee82f4b42f96e2a09410935a8f26df" - integrity sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q== +"@babel/helper-member-expression-to-functions@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz#fba0f2fcff3fba00e6ecb664bb5e6e26e2d6165c" + integrity sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ== dependencies: - "@babel/types" "^7.11.0" + "@babel/types" "^7.12.1" -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.7.0": +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620" integrity sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw== dependencies: "@babel/types" "^7.10.4" -"@babel/helper-module-transforms@^7.10.1", "@babel/helper-module-transforms@^7.10.5", "@babel/helper-module-transforms@^7.7.0": +"@babel/helper-module-imports@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.1.tgz#1644c01591a15a2f084dd6d092d9430eb1d1216c" + integrity sha512-ZeC1TlMSvikvJNy1v/wPIazCu3NdOwgYZLIkmIyAsGhqkNpiDoQQRmaCK8YP4Pq3GPTLPV9WXaPCJKvx06JxKA== + dependencies: + "@babel/types" "^7.12.1" + +"@babel/helper-module-transforms@^7.10.1": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz#b16f250229e47211abdd84b34b64737c2ab2d359" integrity sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg== @@ -329,6 +394,21 @@ "@babel/types" "^7.10.4" lodash "^4.17.13" +"@babel/helper-module-transforms@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c" + integrity sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w== + dependencies: + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-replace-supers" "^7.12.1" + "@babel/helper-simple-access" "^7.12.1" + "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/helper-validator-identifier" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" + lodash "^4.17.19" + "@babel/helper-optimise-call-expression@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" @@ -348,15 +428,14 @@ dependencies: lodash "^4.17.19" -"@babel/helper-remap-async-to-generator@^7.10.4": - version "7.11.4" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.11.4.tgz#4474ea9f7438f18575e30b0cac784045b402a12d" - integrity sha512-tR5vJ/vBa9wFy3m5LLv2faapJLnDFxNWff2SAYkSE4rLUdbp7CdObYFgI7wK4T/Mj4UzpjPwzR8Pzmr5m7MHGA== +"@babel/helper-remap-async-to-generator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz#8c4dbbf916314f6047dc05e6a2217074238347fd" + integrity sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A== dependencies: "@babel/helper-annotate-as-pure" "^7.10.4" "@babel/helper-wrap-function" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.4" + "@babel/types" "^7.12.1" "@babel/helper-replace-supers@^7.10.4": version "7.10.4" @@ -368,7 +447,17 @@ "@babel/traverse" "^7.10.4" "@babel/types" "^7.10.4" -"@babel/helper-simple-access@^7.10.4", "@babel/helper-simple-access@^7.7.0": +"@babel/helper-replace-supers@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.1.tgz#f15c9cc897439281891e11d5ce12562ac0cf3fa9" + integrity sha512-zJjTvtNJnCFsCXVi5rUInstLd/EIVNmIKA1Q9ynESmMBWPWd+7sdR+G4/wdu+Mppfep0XLyG2m7EBPvjCeFyrw== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.12.1" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" + +"@babel/helper-simple-access@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz#0f5ccda2945277a2a7a2d3a821e15395edcf3461" integrity sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw== @@ -376,12 +465,19 @@ "@babel/template" "^7.10.4" "@babel/types" "^7.10.4" -"@babel/helper-skip-transparent-expression-wrappers@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz#eec162f112c2f58d3af0af125e3bb57665146729" - integrity sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q== +"@babel/helper-simple-access@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz#32427e5aa61547d38eb1e6eaf5fd1426fdad9136" + integrity sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA== dependencies: - "@babel/types" "^7.11.0" + "@babel/types" "^7.12.1" + +"@babel/helper-skip-transparent-expression-wrappers@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" + integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA== + dependencies: + "@babel/types" "^7.12.1" "@babel/helper-split-export-declaration@^7.10.4": version "7.10.4" @@ -402,6 +498,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== +"@babel/helper-validator-option@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz#175567380c3e77d60ff98a54bb015fe78f2178d9" + integrity sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A== + "@babel/helper-wrap-function@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz#8a6f701eab0ff39f765b5a1cfef409990e624b87" @@ -412,7 +513,7 @@ "@babel/traverse" "^7.10.4" "@babel/types" "^7.10.4" -"@babel/helpers@^7.10.1", "@babel/helpers@^7.7.0": +"@babel/helpers@^7.10.1": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.4.tgz#2abeb0d721aff7c0a97376b9e1f6f65d7a475044" integrity sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA== @@ -421,6 +522,15 @@ "@babel/traverse" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/helpers@^7.7.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.1.tgz#8a8261c1d438ec18cb890434df4ec768734c1e79" + integrity sha512-9JoDSBGoWtmbay98efmT2+mySkwjzeFeAL9BuWNoVQpkPFQF8SIIFUfY5os9u8wVzglzoiPRSW7cuJmBDUt43g== + dependencies: + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" + "@babel/highlight@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" @@ -435,29 +545,26 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.4.tgz#9eedf27e1998d87739fb5028a5120557c06a1a64" integrity sha512-8jHII4hf+YVDsskTF6WuMB3X4Eh+PsUkC2ljq22so5rHvH+T8BzyL94VOdyFLNR8tBSVXOTbNHOKpR4TfRxVtA== -"@babel/parser@^7.10.2", "@babel/parser@^7.11.0", "@babel/parser@^7.7.2": +"@babel/parser@^7.10.2", "@babel/parser@^7.11.0": version "7.11.4" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.4.tgz#6fa1a118b8b0d80d0267b719213dc947e88cc0ca" integrity sha512-MggwidiH+E9j5Sh8pbrX5sJvMcsqS5o+7iB42M9/k0CD63MjYbdP4nhSh7uB5wnv2/RVzTZFTxzF/kIa5mrCqA== -"@babel/plugin-proposal-async-generator-functions@^7.7.0": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz#3491cabf2f7c179ab820606cec27fed15e0e8558" - integrity sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg== +"@babel/parser@^7.12.1", "@babel/parser@^7.7.7": + version "7.12.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.3.tgz#a305415ebe7a6c7023b40b5122a0662d928334cd" + integrity sha512-kFsOS0IbsuhO5ojF8Hc8z/8vEIOkylVBrjiZUbLTE3XFe0Qi+uu6HjzQixkFaqr0ZPAMZcBVxEwmsnsLPZ2Xsw== + +"@babel/plugin-proposal-async-generator-functions@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz#dc6c1170e27d8aca99ff65f4925bd06b1c90550e" + integrity sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A== dependencies: "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-remap-async-to-generator" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.12.1" "@babel/plugin-syntax-async-generators" "^7.8.0" -"@babel/plugin-proposal-class-properties@7.7.0": - version "7.7.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.7.0.tgz#ac54e728ecf81d90e8f4d2a9c05a890457107917" - integrity sha512-tufDcFA1Vj+eWvwHN+jvMN6QsV5o+vUlytNKrbMiCeDL0F2j92RURzUsUMWE5EJkLyWxjdUslCsMQa9FWth16A== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.7.0" - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-proposal-class-properties@^7.0.0": +"@babel/plugin-proposal-class-properties@7.10.4", "@babel/plugin-proposal-class-properties@^7.0.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz#a33bf632da390a59c7a8c570045d1115cd778807" integrity sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg== @@ -465,45 +572,86 @@ "@babel/helper-create-class-features-plugin" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-proposal-dynamic-import@^7.7.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz#ba57a26cb98b37741e9d5bca1b8b0ddf8291f17e" - integrity sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ== +"@babel/plugin-proposal-class-properties@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de" + integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-proposal-dynamic-import@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz#43eb5c2a3487ecd98c5c8ea8b5fdb69a2749b2dc" + integrity sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-dynamic-import" "^7.8.0" -"@babel/plugin-proposal-json-strings@^7.2.0": +"@babel/plugin-proposal-export-namespace-from@7.10.4": version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz#593e59c63528160233bd321b1aebe0820c2341db" - integrity sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw== + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.10.4.tgz#570d883b91031637b3e2958eea3c438e62c05f54" + integrity sha512-aNdf0LY6/3WXkhh0Fdb6Zk9j1NMD8ovj3F6r0+3j837Pn1S1PdNtcwJ5EG9WkVPNHPxyJDaxMaAOVq4eki0qbg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-export-namespace-from@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz#8b9b8f376b2d88f5dd774e4d24a5cc2e3679b6d4" + integrity sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-json-strings@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz#d45423b517714eedd5621a9dfdc03fa9f4eb241c" + integrity sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings" "^7.8.0" -"@babel/plugin-proposal-nullish-coalescing-operator@7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.7.4.tgz#7db302c83bc30caa89e38fee935635ef6bd11c28" - integrity sha512-TbYHmr1Gl1UC7Vo2HVuj/Naci5BEGNZ0AJhzqD2Vpr6QPFWpUmBRLrIDjedzx7/CShq0bRDS2gI4FIs77VHLVQ== +"@babel/plugin-proposal-logical-assignment-operators@^7.11.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz#f2c490d36e1b3c9659241034a5d2cd50263a2751" + integrity sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.7.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-numeric-separator@7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz#5d6769409699ec9b3b68684cd8116cedff93bad8" - integrity sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz#3ed4fff31c015e7f3f1467f190dbe545cd7b046c" + integrity sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" -"@babel/plugin-proposal-object-rest-spread@7.6.2": - version "7.6.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.6.2.tgz#8ffccc8f3a6545e9f78988b6bf4fe881b88e8096" - integrity sha512-LDBXlmADCsMZV1Y9OQwMc0MyGZ8Ta/zlD9N67BfQT8uYwkRswiu2hU6nJKrjrt/58aH/vqfQlR/9yId/7A2gWw== +"@babel/plugin-proposal-numeric-separator@7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz#ce1590ff0a65ad12970a609d78855e9a4c1aef06" + integrity sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-numeric-separator@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.1.tgz#0e2c6774c4ce48be412119b4d693ac777f7685a6" + integrity sha512-MR7Ok+Af3OhNTCxYVjJZHS0t97ydnJZt/DbR4WISO39iDnhiD8XHrY12xuSJ90FFEGjir0Fzyyn7g/zY6hxbxA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz#bd81f95a1f746760ea43b6c2d3d62b11790ad0af" + integrity sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.10.4" "@babel/plugin-proposal-object-rest-spread@^7.0.0": version "7.10.4" @@ -514,32 +662,49 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.0" "@babel/plugin-transform-parameters" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.6.2": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz#bd81f95a1f746760ea43b6c2d3d62b11790ad0af" - integrity sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA== +"@babel/plugin-proposal-object-rest-spread@^7.11.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069" + integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-transform-parameters" "^7.10.4" + "@babel/plugin-transform-parameters" "^7.12.1" -"@babel/plugin-proposal-optional-catch-binding@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz#31c938309d24a78a49d68fdabffaa863758554dd" - integrity sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g== +"@babel/plugin-proposal-optional-catch-binding@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz#ccc2421af64d3aae50b558a71cede929a5ab2942" + integrity sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" -"@babel/plugin-proposal-optional-chaining@7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.7.4.tgz#3f04c2de1a942cbd3008324df8144b9cbc0ca0ba" - integrity sha512-JmgaS+ygAWDR/STPe3/7y0lNlHgS+19qZ9aC06nYLwQ/XB7c0q5Xs+ksFU3EDnp9EiEsO0dnRAOKeyLHTZuW3A== +"@babel/plugin-proposal-optional-chaining@^7.11.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz#cce122203fc8a32794296fc377c6dedaf4363797" + integrity sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-syntax-optional-chaining" "^7.7.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" -"@babel/plugin-proposal-unicode-property-regex@^7.4.4", "@babel/plugin-proposal-unicode-property-regex@^7.7.0": +"@babel/plugin-proposal-private-methods@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz#86814f6e7a21374c980c10d38b4493e703f4a389" + integrity sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-proposal-unicode-property-regex@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz#2a183958d417765b9eae334f47758e5d6a82e072" + integrity sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz#4483cda53041ce3413b7fe2f00022665ddfaa75d" integrity sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA== @@ -547,7 +712,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-async-generators@^7.2.0", "@babel/plugin-syntax-async-generators@^7.8.0", "@babel/plugin-syntax-async-generators@^7.8.4": +"@babel/plugin-syntax-async-generators@^7.8.0", "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== @@ -568,20 +733,27 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-dynamic-import@7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz#69c159ffaf4998122161ad8ebc5e6d1f55df8612" - integrity sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w== +"@babel/plugin-syntax-class-properties@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz#bcb297c5366e79bebadef509549cd93b04f19978" + integrity sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-dynamic-import@^7.2.0", "@babel/plugin-syntax-dynamic-import@^7.8.0": +"@babel/plugin-syntax-dynamic-import@7.8.3", "@babel/plugin-syntax-dynamic-import@^7.8.0": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.10.4.tgz#53351dd7ae01995e567d04ce42af1a6e0ba846a6" @@ -596,99 +768,120 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-json-strings@^7.2.0", "@babel/plugin-syntax-json-strings@^7.8.0", "@babel/plugin-syntax-json-strings@^7.8.3": +"@babel/plugin-syntax-json-strings@^7.8.0", "@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.10.4": +"@babel/plugin-syntax-jsx@7.10.4", "@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz#39abaae3cbf710c4373d8429484e6ba21340166c" integrity sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": +"@babel/plugin-syntax-jsx@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz#9d9d357cc818aa7ae7935917c1257f67677a0926" + integrity sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-nullish-coalescing-operator@^7.7.4", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-numeric-separator@^7.8.3": +"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.2.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-catch-binding@^7.2.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.3": +"@babel/plugin-syntax-optional-catch-binding@^7.8.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-chaining@^7.7.4", "@babel/plugin-syntax-optional-chaining@^7.8.3": +"@babel/plugin-syntax-optional-chaining@^7.8.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-top-level-await@^7.7.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz#4bbeb8917b54fcf768364e0a81f560e33a3ef57d" - integrity sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ== +"@babel/plugin-syntax-top-level-await@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz#dd6c0b357ac1bb142d98537450a319625d13d2a0" + integrity sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-typescript@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.10.4.tgz#2f55e770d3501e83af217d782cb7517d7bb34d25" - integrity sha512-oSAEz1YkBCAKr5Yiq8/BNtvSAPwkp/IyUnwZogd8p+F0RuYQQrLeRUzIQhueQTTBy/F+a40uS7OFKxnkRvmvFQ== +"@babel/plugin-syntax-typescript@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.1.tgz#460ba9d77077653803c3dd2e673f76d66b4029e5" + integrity sha512-UZNEcCY+4Dp9yYRCAHrHDU+9ZXLYaY9MgBXSRLkB9WjYFRR6quJBumfVrEkUxrePPBwFcpWfNKXqVRQQtm7mMA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-arrow-functions@^7.0.0", "@babel/plugin-transform-arrow-functions@^7.2.0": +"@babel/plugin-transform-arrow-functions@^7.0.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz#e22960d77e697c74f41c501d44d73dbf8a6a64cd" integrity sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-async-to-generator@^7.7.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz#41a5017e49eb6f3cda9392a51eef29405b245a37" - integrity sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ== +"@babel/plugin-transform-arrow-functions@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz#8083ffc86ac8e777fbe24b5967c4b2521f3cb2b3" + integrity sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A== dependencies: - "@babel/helper-module-imports" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-remap-async-to-generator" "^7.10.4" -"@babel/plugin-transform-block-scoped-functions@^7.0.0", "@babel/plugin-transform-block-scoped-functions@^7.2.0": +"@babel/plugin-transform-async-to-generator@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz#3849a49cc2a22e9743cbd6b52926d30337229af1" + integrity sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A== + dependencies: + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.12.1" + +"@babel/plugin-transform-block-scoped-functions@^7.0.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz#1afa595744f75e43a91af73b0d998ecfe4ebc2e8" integrity sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-block-scoped-functions@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz#f2a1a365bde2b7112e0a6ded9067fdd7c07905d9" + integrity sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-block-scoping@^7.0.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.4.tgz#a670d1364bb5019a621b9ea2001482876d734787" @@ -697,14 +890,14 @@ "@babel/helper-plugin-utils" "^7.10.4" lodash "^4.17.13" -"@babel/plugin-transform-block-scoping@^7.6.3": - version "7.11.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz#5b7efe98852bef8d652c0b28144cd93a9e4b5215" - integrity sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew== +"@babel/plugin-transform-block-scoping@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz#f0ee727874b42a208a48a586b84c3d222c2bbef1" + integrity sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.7.0": +"@babel/plugin-transform-classes@^7.0.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz#405136af2b3e218bc4a1926228bc917ab1a0adc7" integrity sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA== @@ -718,21 +911,57 @@ "@babel/helper-split-export-declaration" "^7.10.4" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.0.0", "@babel/plugin-transform-computed-properties@^7.2.0": +"@babel/plugin-transform-classes@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz#65e650fcaddd3d88ddce67c0f834a3d436a32db6" + integrity sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-define-map" "^7.10.4" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.12.1" + "@babel/helper-split-export-declaration" "^7.10.4" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.0.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz#9ded83a816e82ded28d52d4b4ecbdd810cdfc0eb" integrity sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-destructuring@^7.0.0", "@babel/plugin-transform-destructuring@^7.6.0": +"@babel/plugin-transform-computed-properties@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz#d68cf6c9b7f838a8a4144badbe97541ea0904852" + integrity sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-destructuring@^7.0.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz#70ddd2b3d1bea83d01509e9bb25ddb3a74fc85e5" integrity sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-dotall-regex@^7.4.4", "@babel/plugin-transform-dotall-regex@^7.7.0": +"@babel/plugin-transform-destructuring@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz#b9a570fe0d0a8d460116413cb4f97e8e08b2f847" + integrity sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-dotall-regex@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz#a1d16c14862817b6409c0a678d6f9373ca9cd975" + integrity sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-dotall-regex@^7.4.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz#469c2062105c1eb6a040eaf4fac4b488078395ee" integrity sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA== @@ -740,17 +969,17 @@ "@babel/helper-create-regexp-features-plugin" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-duplicate-keys@^7.5.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz#697e50c9fee14380fe843d1f306b295617431e47" - integrity sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA== +"@babel/plugin-transform-duplicate-keys@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz#745661baba295ac06e686822797a69fbaa2ca228" + integrity sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-exponentiation-operator@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz#5ae338c57f8cf4001bdb35607ae66b92d665af2e" - integrity sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw== +"@babel/plugin-transform-exponentiation-operator@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz#b0f2ed356ba1be1428ecaf128ff8a24f02830ae0" + integrity sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug== dependencies: "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" @@ -763,14 +992,21 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-flow" "^7.10.4" -"@babel/plugin-transform-for-of@^7.0.0", "@babel/plugin-transform-for-of@^7.4.4": +"@babel/plugin-transform-for-of@^7.0.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz#c08892e8819d3a5db29031b115af511dbbfebae9" integrity sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-function-name@^7.0.0", "@babel/plugin-transform-function-name@^7.7.0": +"@babel/plugin-transform-for-of@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz#07640f28867ed16f9511c99c888291f560921cfa" + integrity sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-function-name@^7.0.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz#6a467880e0fc9638514ba369111811ddbe2644b7" integrity sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg== @@ -778,40 +1014,52 @@ "@babel/helper-function-name" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-literals@^7.0.0", "@babel/plugin-transform-literals@^7.2.0": +"@babel/plugin-transform-function-name@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz#2ec76258c70fe08c6d7da154003a480620eba667" + integrity sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-literals@^7.0.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz#9f42ba0841100a135f22712d0e391c462f571f3c" integrity sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-member-expression-literals@^7.0.0", "@babel/plugin-transform-member-expression-literals@^7.2.0": +"@babel/plugin-transform-literals@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz#d73b803a26b37017ddf9d3bb8f4dc58bfb806f57" + integrity sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-member-expression-literals@^7.0.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz#b1ec44fcf195afcb8db2c62cd8e551c881baf8b7" integrity sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-modules-amd@^7.5.0": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz#1b9cddaf05d9e88b3aad339cb3e445c4f020a9b1" - integrity sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw== +"@babel/plugin-transform-member-expression-literals@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz#496038602daf1514a64d43d8e17cbb2755e0c3ad" + integrity sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg== dependencies: - "@babel/helper-module-transforms" "^7.10.5" "@babel/helper-plugin-utils" "^7.10.4" - babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@7.7.0": - version "7.7.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.7.0.tgz#3e5ffb4fd8c947feede69cbe24c9554ab4113fe3" - integrity sha512-KEMyWNNWnjOom8vR/1+d+Ocz/mILZG/eyHHO06OuBQ2aNhxT62fr4y6fGOplRx+CxCSp3IFwesL8WdINfY/3kg== +"@babel/plugin-transform-modules-amd@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz#3154300b026185666eebb0c0ed7f8415fefcf6f9" + integrity sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ== dependencies: - "@babel/helper-module-transforms" "^7.7.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-simple-access" "^7.7.0" - babel-plugin-dynamic-import-node "^2.3.0" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.7.0": +"@babel/plugin-transform-modules-commonjs@7.10.4", "@babel/plugin-transform-modules-commonjs@^7.0.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz#66667c3eeda1ebf7896d41f1f16b17105a2fbca0" integrity sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w== @@ -821,39 +1069,50 @@ "@babel/helper-simple-access" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.7.0": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz#6270099c854066681bae9e05f87e1b9cadbe8c85" - integrity sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw== +"@babel/plugin-transform-modules-commonjs@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz#fa403124542636c786cf9b460a0ffbb48a86e648" + integrity sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag== + dependencies: + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-simple-access" "^7.12.1" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz#663fea620d593c93f214a464cd399bf6dc683086" + integrity sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q== dependencies: "@babel/helper-hoist-variables" "^7.10.4" - "@babel/helper-module-transforms" "^7.10.5" + "@babel/helper-module-transforms" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-validator-identifier" "^7.10.4" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-umd@^7.7.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz#9a8481fe81b824654b3a0b65da3df89f3d21839e" - integrity sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA== +"@babel/plugin-transform-modules-umd@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz#eb5a218d6b1c68f3d6217b8fa2cc82fec6547902" + integrity sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q== dependencies: - "@babel/helper-module-transforms" "^7.10.4" + "@babel/helper-module-transforms" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-named-capturing-groups-regex@^7.7.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz#78b4d978810b6f3bcf03f9e318f2fc0ed41aecb6" - integrity sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA== +"@babel/plugin-transform-named-capturing-groups-regex@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz#b407f5c96be0d9f5f88467497fa82b30ac3e8753" + integrity sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.4" + "@babel/helper-create-regexp-features-plugin" "^7.12.1" -"@babel/plugin-transform-new-target@^7.4.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz#9097d753cb7b024cb7381a3b2e52e9513a9c6888" - integrity sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw== +"@babel/plugin-transform-new-target@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz#80073f02ee1bb2d365c3416490e085c95759dec0" + integrity sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-object-super@^7.0.0", "@babel/plugin-transform-object-super@^7.5.5": +"@babel/plugin-transform-object-super@^7.0.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz#d7146c4d139433e7a6526f888c667e314a093894" integrity sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ== @@ -861,6 +1120,14 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-replace-supers" "^7.10.4" +"@babel/plugin-transform-object-super@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz#4ea08696b8d2e65841d0c7706482b048bed1066e" + integrity sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.12.1" + "@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.4.tgz#7b4d137c87ea7adc2a0f3ebf53266871daa6fced" @@ -869,21 +1136,27 @@ "@babel/helper-get-function-arity" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-parameters@^7.4.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz#59d339d58d0b1950435f4043e74e2510005e2c4a" - integrity sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw== +"@babel/plugin-transform-parameters@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz#d2e963b038771650c922eff593799c96d853255d" + integrity sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg== dependencies: - "@babel/helper-get-function-arity" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-property-literals@^7.0.0", "@babel/plugin-transform-property-literals@^7.2.0": +"@babel/plugin-transform-property-literals@^7.0.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz#f6fe54b6590352298785b83edd815d214c42e3c0" integrity sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g== dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-property-literals@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz#41bc81200d730abb4456ab8b3fbd5537b59adecd" + integrity sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-react-display-name@^7.0.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.10.4.tgz#b5795f4e3e3140419c3611b7a2a3832b9aef328d" @@ -891,23 +1164,37 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-react-jsx-self@^7.0.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.10.4.tgz#cd301a5fed8988c182ed0b9d55e9bd6db0bd9369" - integrity sha512-yOvxY2pDiVJi0axdTWHSMi5T0DILN+H+SaeJeACHKjQLezEzhLx9nEF9xgpBLPtkZsks9cnb5P9iBEi21En3gg== +"@babel/plugin-transform-react-display-name@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.1.tgz#1cbcd0c3b1d6648c55374a22fc9b6b7e5341c00d" + integrity sha512-cAzB+UzBIrekfYxyLlFqf/OagTvHLcVBb5vpouzkYkBclRPraiygVnafvAoipErZLI8ANv8Ecn6E/m5qPXD26w== dependencies: "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-jsx" "^7.10.4" -"@babel/plugin-transform-react-jsx-source@^7.0.0": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.10.5.tgz#34f1779117520a779c054f2cdd9680435b9222b4" - integrity sha512-wTeqHVkN1lfPLubRiZH3o73f4rfon42HpgxUSs86Nc+8QIcm/B9s8NNVXu/gwGcOyd7yDib9ikxoDLxJP0UiDA== +"@babel/plugin-transform-react-jsx-development@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.1.tgz#0b8f8cd531dcf7991f1e5f2c10a2a4f1cfc78e36" + integrity sha512-IilcGWdN1yNgEGOrB96jbTplRh+V2Pz1EoEwsKsHfX1a/L40cUYuD71Zepa7C+ujv7kJIxnDftWeZbKNEqZjCQ== + dependencies: + "@babel/helper-builder-react-jsx-experimental" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.12.1" + +"@babel/plugin-transform-react-jsx-self@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.1.tgz#ef43cbca2a14f1bd17807dbe4376ff89d714cf28" + integrity sha512-FbpL0ieNWiiBB5tCldX17EtXgmzeEZjFrix72rQYeq9X6nUK38HCaxexzVQrZWXanxKJPKVVIU37gFjEQYkPkA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-jsx" "^7.10.4" -"@babel/plugin-transform-react-jsx@^7.0.0", "@babel/plugin-transform-react-jsx@^7.7.0": +"@babel/plugin-transform-react-jsx-source@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.12.1.tgz#d07de6863f468da0809edcf79a1aa8ce2a82a26b" + integrity sha512-keQ5kBfjJNRc6zZN1/nVHCd6LLIHq4aUKcVnvE/2l+ZZROSbqoiGFRtT5t3Is89XJxBQaP7NLZX2jgGHdZvvFQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-react-jsx@^7.0.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.4.tgz#673c9f913948764a4421683b2bef2936968fddf2" integrity sha512-L+MfRhWjX0eI7Js093MM6MacKU4M6dnCRa/QPDwYMxjljzSCzzlzKzj9Pk4P3OtrPcxr2N3znR419nr3Xw+65A== @@ -917,37 +1204,62 @@ "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-jsx" "^7.10.4" -"@babel/plugin-transform-regenerator@^7.7.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz#2015e59d839074e76838de2159db421966fd8b63" - integrity sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw== +"@babel/plugin-transform-react-jsx@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.1.tgz#c2d96c77c2b0e4362cc4e77a43ce7c2539d478cb" + integrity sha512-RmKejwnT0T0QzQUzcbP5p1VWlpnP8QHtdhEtLG55ZDQnJNalbF3eeDyu3dnGKvGzFIQiBzFhBYTwvv435p9Xpw== + dependencies: + "@babel/helper-builder-react-jsx" "^7.10.4" + "@babel/helper-builder-react-jsx-experimental" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.12.1" + +"@babel/plugin-transform-react-pure-annotations@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.12.1.tgz#05d46f0ab4d1339ac59adf20a1462c91b37a1a42" + integrity sha512-RqeaHiwZtphSIUZ5I85PEH19LOSzxfuEazoY7/pWASCAIBuATQzpSVD+eT6MebeeZT2F4eSL0u4vw6n4Nm0Mjg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-regenerator@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz#5f0a28d842f6462281f06a964e88ba8d7ab49753" + integrity sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng== dependencies: regenerator-transform "^0.14.2" -"@babel/plugin-transform-reserved-words@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz#8f2682bcdcef9ed327e1b0861585d7013f8a54dd" - integrity sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ== +"@babel/plugin-transform-reserved-words@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz#6fdfc8cc7edcc42b36a7c12188c6787c873adcd8" + integrity sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-runtime@7.6.2": - version "7.6.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.6.2.tgz#2669f67c1fae0ae8d8bf696e4263ad52cb98b6f8" - integrity sha512-cqULw/QB4yl73cS5Y0TZlQSjDvNkzDbu0FurTZyHlJpWE5T3PCMdnyV+xXoH1opr1ldyHODe3QAX3OMAii5NxA== +"@babel/plugin-transform-runtime@7.11.5": + version "7.11.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.11.5.tgz#f108bc8e0cf33c37da031c097d1df470b3a293fc" + integrity sha512-9aIoee+EhjySZ6vY5hnLjigHzunBlscx9ANKutkeWTJTx6m5Rbq6Ic01tLvO54lSusR+BxV7u4UDdCmXv5aagg== dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" resolve "^1.8.1" semver "^5.5.1" -"@babel/plugin-transform-shorthand-properties@^7.0.0", "@babel/plugin-transform-shorthand-properties@^7.2.0": +"@babel/plugin-transform-shorthand-properties@^7.0.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz#9fd25ec5cdd555bb7f473e5e6ee1c971eede4dd6" integrity sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q== dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-transform-shorthand-properties@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz#0bf9cac5550fce0cfdf043420f661d645fdc75e3" + integrity sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-spread@^7.0.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.4.tgz#4e2c85ea0d6abaee1b24dcfbbae426fe8d674cff" @@ -955,18 +1267,18 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-spread@^7.6.2": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz#fa84d300f5e4f57752fe41a6d1b3c554f13f17cc" - integrity sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw== +"@babel/plugin-transform-spread@^7.11.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz#527f9f311be4ec7fdc2b79bb89f7bf884b3e1e1e" + integrity sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng== dependencies: "@babel/helper-plugin-utils" "^7.10.4" - "@babel/helper-skip-transparent-expression-wrappers" "^7.11.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" -"@babel/plugin-transform-sticky-regex@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz#8f3889ee8657581130a29d9cc91d7c73b7c4a28d" - integrity sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ== +"@babel/plugin-transform-sticky-regex@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz#5c24cf50de396d30e99afc8d1c700e8bce0f5caf" + integrity sha512-CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/helper-regex" "^7.10.4" @@ -979,99 +1291,122 @@ "@babel/helper-annotate-as-pure" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-template-literals@^7.4.4": - version "7.10.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz#78bc5d626a6642db3312d9d0f001f5e7639fde8c" - integrity sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw== +"@babel/plugin-transform-template-literals@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz#b43ece6ed9a79c0c71119f576d299ef09d942843" + integrity sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw== dependencies: - "@babel/helper-annotate-as-pure" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-typeof-symbol@^7.2.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz#9509f1a7eec31c4edbffe137c16cc33ff0bc5bfc" - integrity sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA== +"@babel/plugin-transform-typeof-symbol@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz#9ca6be343d42512fbc2e68236a82ae64bc7af78a" + integrity sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-transform-typescript@^7.7.2": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.11.0.tgz#2b4879676af37342ebb278216dd090ac67f13abb" - integrity sha512-edJsNzTtvb3MaXQwj8403B7mZoGu9ElDJQZOKjGUnvilquxBA3IQoEIOvkX/1O8xfAsnHS/oQhe2w/IXrr+w0w== +"@babel/plugin-transform-typescript@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.12.1.tgz#d92cc0af504d510e26a754a7dbc2e5c8cd9c7ab4" + integrity sha512-VrsBByqAIntM+EYMqSm59SiMEf7qkmI9dqMt6RbD/wlwueWmYcI0FFK5Fj47pP6DRZm+3teXjosKlwcZJ5lIMw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.10.5" + "@babel/helper-create-class-features-plugin" "^7.12.1" "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-typescript" "^7.10.4" + "@babel/plugin-syntax-typescript" "^7.12.1" -"@babel/plugin-transform-unicode-regex@^7.7.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz#e56d71f9282fac6db09c82742055576d5e6d80a8" - integrity sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A== +"@babel/plugin-transform-unicode-escapes@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz#5232b9f81ccb07070b7c3c36c67a1b78f1845709" + integrity sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.10.4" "@babel/helper-plugin-utils" "^7.10.4" -"@babel/preset-env@7.7.1": - version "7.7.1" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.7.1.tgz#04a2ff53552c5885cf1083e291c8dd5490f744bb" - integrity sha512-/93SWhi3PxcVTDpSqC+Dp4YxUu3qZ4m7I76k0w73wYfn7bGVuRIO4QUz95aJksbS+AD1/mT1Ie7rbkT0wSplaA== +"@babel/plugin-transform-unicode-regex@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz#cc9661f61390db5c65e3febaccefd5c6ac3faecb" + integrity sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg== dependencies: - "@babel/helper-module-imports" "^7.7.0" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-async-generator-functions" "^7.7.0" - "@babel/plugin-proposal-dynamic-import" "^7.7.0" - "@babel/plugin-proposal-json-strings" "^7.2.0" - "@babel/plugin-proposal-object-rest-spread" "^7.6.2" - "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.7.0" - "@babel/plugin-syntax-async-generators" "^7.2.0" - "@babel/plugin-syntax-dynamic-import" "^7.2.0" - "@babel/plugin-syntax-json-strings" "^7.2.0" - "@babel/plugin-syntax-object-rest-spread" "^7.2.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" - "@babel/plugin-syntax-top-level-await" "^7.7.0" - "@babel/plugin-transform-arrow-functions" "^7.2.0" - "@babel/plugin-transform-async-to-generator" "^7.7.0" - "@babel/plugin-transform-block-scoped-functions" "^7.2.0" - "@babel/plugin-transform-block-scoping" "^7.6.3" - "@babel/plugin-transform-classes" "^7.7.0" - "@babel/plugin-transform-computed-properties" "^7.2.0" - "@babel/plugin-transform-destructuring" "^7.6.0" - "@babel/plugin-transform-dotall-regex" "^7.7.0" - "@babel/plugin-transform-duplicate-keys" "^7.5.0" - "@babel/plugin-transform-exponentiation-operator" "^7.2.0" - "@babel/plugin-transform-for-of" "^7.4.4" - "@babel/plugin-transform-function-name" "^7.7.0" - "@babel/plugin-transform-literals" "^7.2.0" - "@babel/plugin-transform-member-expression-literals" "^7.2.0" - "@babel/plugin-transform-modules-amd" "^7.5.0" - "@babel/plugin-transform-modules-commonjs" "^7.7.0" - "@babel/plugin-transform-modules-systemjs" "^7.7.0" - "@babel/plugin-transform-modules-umd" "^7.7.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.7.0" - "@babel/plugin-transform-new-target" "^7.4.4" - "@babel/plugin-transform-object-super" "^7.5.5" - "@babel/plugin-transform-parameters" "^7.4.4" - "@babel/plugin-transform-property-literals" "^7.2.0" - "@babel/plugin-transform-regenerator" "^7.7.0" - "@babel/plugin-transform-reserved-words" "^7.2.0" - "@babel/plugin-transform-shorthand-properties" "^7.2.0" - "@babel/plugin-transform-spread" "^7.6.2" - "@babel/plugin-transform-sticky-regex" "^7.2.0" - "@babel/plugin-transform-template-literals" "^7.4.4" - "@babel/plugin-transform-typeof-symbol" "^7.2.0" - "@babel/plugin-transform-unicode-regex" "^7.7.0" - "@babel/types" "^7.7.1" - browserslist "^4.6.0" - core-js-compat "^3.1.1" + "@babel/helper-create-regexp-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/preset-env@7.11.5": + version "7.11.5" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.11.5.tgz#18cb4b9379e3e92ffea92c07471a99a2914e4272" + integrity sha512-kXqmW1jVcnB2cdueV+fyBM8estd5mlNfaQi6lwLgRwCby4edpavgbFhiBNjmWA3JpB/yZGSISa7Srf+TwxDQoA== + dependencies: + "@babel/compat-data" "^7.11.0" + "@babel/helper-compilation-targets" "^7.10.4" + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-proposal-async-generator-functions" "^7.10.4" + "@babel/plugin-proposal-class-properties" "^7.10.4" + "@babel/plugin-proposal-dynamic-import" "^7.10.4" + "@babel/plugin-proposal-export-namespace-from" "^7.10.4" + "@babel/plugin-proposal-json-strings" "^7.10.4" + "@babel/plugin-proposal-logical-assignment-operators" "^7.11.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.10.4" + "@babel/plugin-proposal-numeric-separator" "^7.10.4" + "@babel/plugin-proposal-object-rest-spread" "^7.11.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.10.4" + "@babel/plugin-proposal-optional-chaining" "^7.11.0" + "@babel/plugin-proposal-private-methods" "^7.10.4" + "@babel/plugin-proposal-unicode-property-regex" "^7.10.4" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-class-properties" "^7.10.4" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.10.4" + "@babel/plugin-transform-arrow-functions" "^7.10.4" + "@babel/plugin-transform-async-to-generator" "^7.10.4" + "@babel/plugin-transform-block-scoped-functions" "^7.10.4" + "@babel/plugin-transform-block-scoping" "^7.10.4" + "@babel/plugin-transform-classes" "^7.10.4" + "@babel/plugin-transform-computed-properties" "^7.10.4" + "@babel/plugin-transform-destructuring" "^7.10.4" + "@babel/plugin-transform-dotall-regex" "^7.10.4" + "@babel/plugin-transform-duplicate-keys" "^7.10.4" + "@babel/plugin-transform-exponentiation-operator" "^7.10.4" + "@babel/plugin-transform-for-of" "^7.10.4" + "@babel/plugin-transform-function-name" "^7.10.4" + "@babel/plugin-transform-literals" "^7.10.4" + "@babel/plugin-transform-member-expression-literals" "^7.10.4" + "@babel/plugin-transform-modules-amd" "^7.10.4" + "@babel/plugin-transform-modules-commonjs" "^7.10.4" + "@babel/plugin-transform-modules-systemjs" "^7.10.4" + "@babel/plugin-transform-modules-umd" "^7.10.4" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.10.4" + "@babel/plugin-transform-new-target" "^7.10.4" + "@babel/plugin-transform-object-super" "^7.10.4" + "@babel/plugin-transform-parameters" "^7.10.4" + "@babel/plugin-transform-property-literals" "^7.10.4" + "@babel/plugin-transform-regenerator" "^7.10.4" + "@babel/plugin-transform-reserved-words" "^7.10.4" + "@babel/plugin-transform-shorthand-properties" "^7.10.4" + "@babel/plugin-transform-spread" "^7.11.0" + "@babel/plugin-transform-sticky-regex" "^7.10.4" + "@babel/plugin-transform-template-literals" "^7.10.4" + "@babel/plugin-transform-typeof-symbol" "^7.10.4" + "@babel/plugin-transform-unicode-escapes" "^7.10.4" + "@babel/plugin-transform-unicode-regex" "^7.10.4" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.11.5" + browserslist "^4.12.0" + core-js-compat "^3.6.2" invariant "^2.2.2" - js-levenshtein "^1.1.3" + levenary "^1.1.1" semver "^5.5.0" -"@babel/preset-modules@0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.1.tgz#add61473e3182771b36930c1312f3c56c114e406" - integrity sha512-x/kt2aAZlgcFnP3P851fkkb2s4FmTiyGic58pkWMaRK9Am3u9KkH1ttHGjwlsKu7/TVJsLEBXZnjUxqsid3tww== +"@babel/preset-modules@0.1.4", "@babel/preset-modules@^0.1.3": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" + integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" @@ -1079,24 +1414,26 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/preset-react@7.7.0": - version "7.7.0" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.7.0.tgz#8ab0c4787d98cf1f5f22dabf115552bf9e4e406c" - integrity sha512-IXXgSUYBPHUGhUkH+89TR6faMcBtuMW0h5OHbMuVbL3/5wK2g6a2M2BBpkLa+Kw0sAHiZ9dNVgqJMDP/O4GRBA== +"@babel/preset-react@7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.10.4.tgz#92e8a66d816f9911d11d4cc935be67adfc82dbcf" + integrity sha512-BrHp4TgOIy4M19JAfO1LhycVXOPWdDbTRep7eVyatf174Hff+6Uk53sDyajqZPu8W1qXRBiYOfIamek6jA7YVw== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-transform-react-display-name" "^7.0.0" - "@babel/plugin-transform-react-jsx" "^7.7.0" - "@babel/plugin-transform-react-jsx-self" "^7.0.0" - "@babel/plugin-transform-react-jsx-source" "^7.0.0" - -"@babel/preset-typescript@7.7.2": - version "7.7.2" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.7.2.tgz#f71c8bba2ae02f11b29dbf7d6a35f47bbe011632" - integrity sha512-1B4HthAelaLGfNRyrWqJtBEjXX1ulThCrLQ5B2VOtEAznWFIFXFJahgXImqppy66lx/Oh+cOSCQdJzZqh2Jh5g== + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-react-display-name" "^7.10.4" + "@babel/plugin-transform-react-jsx" "^7.10.4" + "@babel/plugin-transform-react-jsx-development" "^7.10.4" + "@babel/plugin-transform-react-jsx-self" "^7.10.4" + "@babel/plugin-transform-react-jsx-source" "^7.10.4" + "@babel/plugin-transform-react-pure-annotations" "^7.10.4" + +"@babel/preset-typescript@7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.10.4.tgz#7d5d052e52a682480d6e2cc5aa31be61c8c25e36" + integrity sha512-SdYnvGPv+bLlwkF2VkJnaX/ni1sMNetcGI1+nThF1gyv6Ph8Qucc4ZZAjM5yZcE/AKRXIOTZz7eSRDWOEjPyRQ== dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-transform-typescript" "^7.7.2" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-typescript" "^7.10.4" "@babel/runtime-corejs3@^7.8.3": version "7.10.4" @@ -1106,12 +1443,12 @@ core-js-pure "^3.0.0" regenerator-runtime "^0.13.4" -"@babel/runtime@7.7.2": - version "7.7.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.2.tgz#111a78002a5c25fc8e3361bedc9529c696b85a6a" - integrity sha512-JONRbXbTXc9WQE2mAZd1p0Z3DZ/6vaQIkgYMSTP3KjRCyd7rCZCcfhCyX+YjwcKxcZ82UrxbRD358bpExNgrjw== +"@babel/runtime@7.11.2", "@babel/runtime@^7.10.5", "@babel/runtime@^7.8.4": + version "7.11.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736" + integrity sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw== dependencies: - regenerator-runtime "^0.13.2" + regenerator-runtime "^0.13.4" "@babel/runtime@^7.0.0": version "7.10.4" @@ -1120,14 +1457,7 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/runtime@^7.10.5", "@babel/runtime@^7.8.4": - version "7.11.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.11.2.tgz#f549c13c754cc40b87644b9fa9f09a6a95fe0736" - integrity sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/template@^7.10.1", "@babel/template@^7.10.4", "@babel/template@^7.3.3", "@babel/template@^7.7.0": +"@babel/template@^7.10.1", "@babel/template@^7.10.4", "@babel/template@^7.3.3", "@babel/template@^7.7.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== @@ -1151,7 +1481,7 @@ globals "^11.1.0" lodash "^4.17.13" -"@babel/traverse@^7.10.1", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.2": +"@babel/traverse@^7.10.1", "@babel/traverse@^7.4.5": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.11.0.tgz#9b996ce1b98f53f7c3e4175115605d56ed07dd24" integrity sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg== @@ -1166,6 +1496,21 @@ globals "^11.1.0" lodash "^4.17.19" +"@babel/traverse@^7.12.1", "@babel/traverse@^7.7.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.1.tgz#941395e0c5cc86d5d3e75caa095d3924526f0c1e" + integrity sha512-MA3WPoRt1ZHo2ZmoGKNqi20YnPt0B1S0GTZEPhhd+hw2KGUzBlHuVunj6K4sNuK+reEvyiPwtp0cpaqLzJDmAw== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.1" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/parser" "^7.12.1" + "@babel/types" "^7.12.1" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.19" + "@babel/types@7.10.4", "@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.4.tgz#369517188352e18219981efd156bfdb199fff1ee" @@ -1175,13 +1520,13 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" -"@babel/types@7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.7.4.tgz#516570d539e44ddf308c07569c258ff94fde9193" - integrity sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA== +"@babel/types@7.11.5": + version "7.11.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.5.tgz#d9de577d01252d77c6800cee039ee64faf75662d" + integrity sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q== dependencies: - esutils "^2.0.2" - lodash "^4.17.13" + "@babel/helper-validator-identifier" "^7.10.4" + lodash "^4.17.19" to-fast-properties "^2.0.0" "@babel/types@7.8.3": @@ -1193,7 +1538,7 @@ lodash "^4.17.13" to-fast-properties "^2.0.0" -"@babel/types@^7.10.2", "@babel/types@^7.11.0", "@babel/types@^7.4.4", "@babel/types@^7.7.1", "@babel/types@^7.7.2": +"@babel/types@^7.10.2", "@babel/types@^7.11.0", "@babel/types@^7.4.4": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.0.tgz#2ae6bf1ba9ae8c3c43824e5861269871b206e90d" integrity sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA== @@ -1202,6 +1547,15 @@ lodash "^4.17.19" to-fast-properties "^2.0.0" +"@babel/types@^7.11.5", "@babel/types@^7.12.1", "@babel/types@^7.7.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.1.tgz#e109d9ab99a8de735be287ee3d6a9947a190c4ae" + integrity sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + lodash "^4.17.19" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -1724,6 +2078,68 @@ aggregate-error "3.0.1" tslib "~2.0.0" +"@hapi/accept@5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@hapi/accept/-/accept-5.0.1.tgz#068553e867f0f63225a506ed74e899441af53e10" + integrity sha512-fMr4d7zLzsAXo28PRRQPXR1o2Wmu+6z+VY1UzDp0iFo13Twj8WePakwXBiqn3E1aAlTpSNzCXdnnQXFhst8h8Q== + dependencies: + "@hapi/boom" "9.x.x" + "@hapi/hoek" "9.x.x" + +"@hapi/b64@4.x.x": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@hapi/b64/-/b64-4.2.1.tgz#bf8418d7907c5e73463f2e3b5c6fca7e9f2a1357" + integrity sha512-zqHpQuH5CBMw6hADzKfU/IGNrxq1Q+/wTYV+OiZRQN9F3tMyk+9BUMeBvFRMamduuqL8iSp62QAnJ+7ATiYLWA== + dependencies: + "@hapi/hoek" "8.x.x" + +"@hapi/boom@7.x.x": + version "7.4.11" + resolved "https://registry.yarnpkg.com/@hapi/boom/-/boom-7.4.11.tgz#37af8417eb9416aef3367aa60fa04a1a9f1fc262" + integrity sha512-VSU/Cnj1DXouukYxxkes4nNJonCnlogHvIff1v1RVoN4xzkKhMXX+GRmb3NyH1iar10I9WFPDv2JPwfH3GaV0A== + dependencies: + "@hapi/hoek" "8.x.x" + +"@hapi/boom@9.x.x": + version "9.1.0" + resolved "https://registry.yarnpkg.com/@hapi/boom/-/boom-9.1.0.tgz#0d9517657a56ff1e0b42d0aca9da1b37706fec56" + integrity sha512-4nZmpp4tXbm162LaZT45P7F7sgiem8dwAh2vHWT6XX24dozNjGMg6BvKCRvtCUcmcXqeMIUqWN8Rc5X8yKuROQ== + dependencies: + "@hapi/hoek" "9.x.x" + +"@hapi/bourne@1.x.x": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" + integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== + +"@hapi/cryptiles@4.x.x": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@hapi/cryptiles/-/cryptiles-4.2.1.tgz#ff0f18d79074659838caedbb911851313ad1ffbc" + integrity sha512-XoqgKsHK0l/VpqPs+tr6j6vE+VQ3+2bkF2stvttmc7xAOf1oSAwHcJ0tlp/6MxMysktt1IEY0Csy3khKaP9/uQ== + dependencies: + "@hapi/boom" "7.x.x" + +"@hapi/hoek@8.x.x": + version "8.5.1" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" + integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== + +"@hapi/hoek@9.x.x": + version "9.1.0" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.1.0.tgz#6c9eafc78c1529248f8f4d92b0799a712b6052c6" + integrity sha512-i9YbZPN3QgfighY/1X1Pu118VUz2Fmmhd6b2n0/O8YVgGGfw0FbUYoA97k7FkpGJ+pLCFEDLUmAPPV4D1kpeFw== + +"@hapi/iron@^5.1.4": + version "5.1.4" + resolved "https://registry.yarnpkg.com/@hapi/iron/-/iron-5.1.4.tgz#7406f36847f798f52b92d1d97f855e27973832b7" + integrity sha512-+ElC+OCiwWLjlJBmm8ZEWjlfzTMQTdgPnU/TsoU5QsktspIWmWi9IU4kU83nH+X/SSya8TP8h8P11Wr5L7dkQQ== + dependencies: + "@hapi/b64" "4.x.x" + "@hapi/boom" "7.x.x" + "@hapi/bourne" "1.x.x" + "@hapi/cryptiles" "4.x.x" + "@hapi/hoek" "8.x.x" + "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" @@ -1949,6 +2365,37 @@ resolved "https://registry.yarnpkg.com/@microsoft/load-themed-styles/-/load-themed-styles-1.10.80.tgz#cb40bd6ed7b79d71d9ab9aea1d7595f9ceb927a5" integrity sha512-dxlU1LFOyhyeQuFAIFDUbRO4EONpD4TyEklebCrYEbZf8A3xDiSkZTIqhDe9s3VRmghMtnfkdxW7zhUGgP9lug== +"@next/env@10.0.0": + version "10.0.0" + resolved "https://registry.yarnpkg.com/@next/env/-/env-10.0.0.tgz#eb0239062226a9c8b604d58d4a4204e26c22eb16" + integrity sha512-59+6BnOxPoMY64Qy2crDGHtvQgHwIL1SIkWeNiEud1V6ASs59SM9oDGN+Bo/EswII1nn+wQRpMvax0IIN2j+VQ== + +"@next/polyfill-module@10.0.0": + version "10.0.0" + resolved "https://registry.yarnpkg.com/@next/polyfill-module/-/polyfill-module-10.0.0.tgz#17f59cb7325a03f23b66b979fccc56d133411b0a" + integrity sha512-FLSwwWQaP/sXjlS7w4YFu+oottbo/bjoh+L+YED7dblsaRJT89ifV+h8zvLvh1hCL7FJUYVar4rehvj/VO5T9w== + +"@next/react-dev-overlay@10.0.0": + version "10.0.0" + resolved "https://registry.yarnpkg.com/@next/react-dev-overlay/-/react-dev-overlay-10.0.0.tgz#ba1acc79bc9d874f1801a0b312e6a45de74bf425" + integrity sha512-HJ44TJXtaGfGxVtljPECZvqw+GctVvBr60Rsedo5A+wU2GIiycJ8n5yUSdc9UiYTnPuxfJFicJec6kgR6GSWKA== + dependencies: + "@babel/code-frame" "7.10.4" + ally.js "1.4.1" + anser "1.4.9" + chalk "4.0.0" + classnames "2.2.6" + data-uri-to-buffer "3.0.0" + shell-quote "1.7.2" + source-map "0.8.0-beta.0" + stacktrace-parser "0.1.10" + strip-ansi "6.0.0" + +"@next/react-refresh-utils@10.0.0": + version "10.0.0" + resolved "https://registry.yarnpkg.com/@next/react-refresh-utils/-/react-refresh-utils-10.0.0.tgz#45cdd1ad3b55ac442f8431cdc43ff53c3dc44d16" + integrity sha512-V1/oiDWb2C1Do0eZONsKX1aqGNkqCUqxUahIiCjwKFu9c3bps+Ygg4JjtaCd9oycv0KzYImUZnU+nqveFUjxUw== + "@nodelib/fs.scandir@2.1.3": version "2.1.3" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" @@ -1970,6 +2417,18 @@ "@nodelib/fs.scandir" "2.1.3" fastq "^1.6.0" +"@npmcli/move-file@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.0.1.tgz#de103070dac0f48ce49cf6693c23af59c0f70464" + integrity sha512-Uv6h1sT+0DrblvIrolFtbvM1FgWm+/sy4B3pvLp67Zys+thcukzS5ekn7HsZFGpWP4Q3fYJCljbWQE/XivMRLw== + dependencies: + mkdirp "^1.0.4" + +"@panva/asn1.js@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@panva/asn1.js/-/asn1.js-1.0.0.tgz#dd55ae7b8129e02049f009408b97c61ccf9032f6" + integrity sha512-UdkG3mLEqXgnlKsWanWcgb6dOjUzJ+XC5f+aWw30qrtjxeNUSfKX1cd5FBzOaXQumoe9nIqeZUvrRJS03HCCtw== + "@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" @@ -2030,6 +2489,11 @@ dependencies: any-observable "^0.3.0" +"@sindresorhus/is@^0.14.0": + version "0.14.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" + integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== + "@sinonjs/commons@^1.7.0": version "1.8.0" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.0.tgz#c8d68821a854c555bba172f3b06959a0039b236d" @@ -2044,6 +2508,13 @@ dependencies: "@sinonjs/commons" "^1.7.0" +"@szmarczak/http-timer@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" + integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== + dependencies: + defer-to-connect "^1.0.1" + "@types/accepts@*", "@types/accepts@^1.3.5": version "1.3.5" resolved "https://registry.yarnpkg.com/@types/accepts/-/accepts-1.3.5.tgz#c34bec115cfc746e04fe5a059df4ce7e7b391575" @@ -2172,6 +2643,15 @@ dependencies: "@types/node" "*" +"@types/got@^9.6.9": + version "9.6.11" + resolved "https://registry.yarnpkg.com/@types/got/-/got-9.6.11.tgz#482b402cc5ee459481aeeadb08142ebb1a9afb26" + integrity sha512-dr3IiDNg5TDesGyuwTrN77E1Cd7DCdmCFtEfSGqr83jMMtcwhf/SGPbN2goY4JUWQfvxwY56+e5tjfi+oXeSdA== + dependencies: + "@types/node" "*" + "@types/tough-cookie" "*" + form-data "^2.5.0" + "@types/graceful-fs@^4.1.2": version "4.1.3" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.3.tgz#039af35fe26bec35003e8d86d2ee9c586354348f" @@ -2237,11 +2717,16 @@ jest-diff "^25.2.1" pretty-format "^25.2.1" -"@types/json-schema@^7.0.3", "@types/json-schema@^7.0.4": +"@types/json-schema@^7.0.3": version "7.0.5" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.5.tgz#dcce4430e64b443ba8945f0290fb564ad5bac6dd" integrity sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ== +"@types/json-schema@^7.0.5": + version "7.0.6" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" + integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== + "@types/jsonwebtoken@^8.5.0": version "8.5.0" resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-8.5.0.tgz#2531d5e300803aa63279b232c014acf780c981c5" @@ -2342,11 +2827,6 @@ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== -"@types/q@^1.5.1": - version "1.5.4" - resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" - integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== - "@types/qs@*": version "6.9.4" resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.4.tgz#a59e851c1ba16c0513ea123830dd639a0a15cb6a" @@ -2357,10 +2837,10 @@ resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== -"@types/react@^16.9.48": - version "16.9.48" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.48.tgz#d3387329f070d1b1bc0ff4a54a54ceefd5a8485c" - integrity sha512-4ykBVswgYitPGMXFRxJCHkxJDU2rjfU3/zw67f8+dB7sNdVJXsrwqoYxz/stkAucymnEEbRPFmX7Ce5Mc/kJCw== +"@types/react@^16.9.55": + version "16.9.55" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.55.tgz#47078587f5bfe028a23b6b46c7b94ac0d436acff" + integrity sha512-6KLe6lkILeRwyyy7yG9rULKJ0sXplUsl98MGoCfpteXf9sPWFWWMknDcsvubcpaTdBuxtsLF6HDUwdApZL/xIg== dependencies: "@types/prop-types" "*" csstype "^3.0.2" @@ -2388,6 +2868,11 @@ resolved "https://registry.yarnpkg.com/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz#9aa30c04db212a9a0649d6ae6fd50accc40748a1" integrity sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ== +"@types/tough-cookie@*": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.0.tgz#fef1904e4668b6e5ecee60c52cc6a078ffa6697d" + integrity sha512-I99sngh224D0M7XgW1s120zxCt3VYQ3IQsuw3P3jbq5GG4yc79+ZjyKznyOGIQrflfylLgcfekeZW/vk0yng6A== + "@types/uuid@^8.3.0": version "8.3.0" resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.0.tgz#215c231dff736d5ba92410e6d602050cce7e273f" @@ -2741,6 +3226,13 @@ abbrev@1: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== +abort-controller@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + accepts@^1.3.5, accepts@~1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" @@ -2767,10 +3259,10 @@ acorn-walk@^7.1.1: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== -acorn@^6.2.1: - version "6.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" - integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== +acorn@^6.4.1: + version "6.4.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== acorn@^7.1.1: version "7.3.1" @@ -2782,16 +3274,13 @@ acorn@^7.3.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.0.tgz#e1ad486e6c54501634c6c397c5c121daa383607c" integrity sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w== -adjust-sourcemap-loader@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-2.0.0.tgz#6471143af75ec02334b219f54bc7970c52fb29a4" - integrity sha512-4hFsTsn58+YjrU9qKzML2JSSDqKvN8mUGQ0nNIrfPi8hmIONT4L3uUaT6MKdMsZ9AjsU6D2xDkZxCkbQPxChrA== +adjust-sourcemap-loader@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-3.0.0.tgz#5ae12fb5b7b1c585e80bbb5a63ec163a1a45e61e" + integrity sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw== dependencies: - assert "1.4.1" - camelcase "5.0.0" - loader-utils "1.2.3" - object-path "0.11.4" - regex-parser "2.2.10" + loader-utils "^2.0.0" + regex-parser "^2.2.11" agent-base@4, agent-base@^4.3.0: version "4.3.0" @@ -2800,6 +3289,13 @@ agent-base@4, agent-base@^4.3.0: dependencies: es6-promisify "^5.0.0" +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + aggregate-error@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" @@ -2821,7 +3317,7 @@ ajv-errors@^1.0.0: resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== -ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: version "3.5.2" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== @@ -2836,7 +3332,7 @@ ajv@5: fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.3.0" -ajv@^6.1.0, ajv@^6.12.2: +ajv@^6.1.0: version "6.12.4" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.4.tgz#0614facc4522127fa713445c6bfd3ebd376e2234" integrity sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ== @@ -2856,10 +3352,28 @@ ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -alphanum-sort@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" - integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= +ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ally.js@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/ally.js/-/ally.js-1.4.1.tgz#9fb7e6ba58efac4ee9131cb29aa9ee3b540bcf1e" + integrity sha1-n7fmuljvrE7pExyymqnuO1QLzx4= + dependencies: + css.escape "^1.5.0" + platform "1.3.3" + +anser@1.4.9: + version "1.4.9" + resolved "https://registry.yarnpkg.com/anser/-/anser-1.4.9.tgz#1f85423a5dcf8da4631a341665ff675b96845760" + integrity sha512-AI+BjTeGt2+WFk4eWcqbQ7snZpDBt8SaLlj0RT2h5xfdWaiy51OjYvqwMrNzJLGy8iOAL6nKDITWO+rd4MkYEA== ansi-colors@^4.1.1: version "4.1.1" @@ -3242,13 +3756,6 @@ assert-plus@1.0.0, assert-plus@^1.0.0: resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= -assert@1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" - integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE= - dependencies: - util "0.10.3" - assert@^1.1.1: version "1.5.0" resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" @@ -3262,6 +3769,11 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= +ast-types@0.13.2: + version "0.13.2" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.2.tgz#df39b677a911a83f3a049644fb74fdded23cea48" + integrity sha512-uWMHxJxtfj/1oZClOxDEV1sQ1HCDkA4MG8Gr69KKeBjEVH0R84WlejZ0y2DcwyBlpAEMltmVYkVgqfLFb2oyiA== + astral-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" @@ -3319,15 +3831,6 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.0.tgz#a17b3a8ea811060e74d47d306122400ad4497ae2" integrity sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA== -babel-code-frame@^6.22.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - babel-jest@^26.3.0: version "26.3.0" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.3.0.tgz#10d0ca4b529ca3e7d1417855ef7d7bd6fc0c3463" @@ -3342,7 +3845,7 @@ babel-jest@^26.3.0: graceful-fs "^4.2.4" slash "^3.0.0" -babel-plugin-dynamic-import-node@^2.3.0, babel-plugin-dynamic-import-node@^2.3.3: +babel-plugin-dynamic-import-node@^2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== @@ -3471,11 +3974,16 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= -base64-js@^1.0.2: +base64-js@^1.0.2, base64-js@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== +base64url@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/base64url/-/base64url-3.0.1.tgz#6399d572e2bc3f90a9a8b22d5dbb0a32d33f788d" + integrity sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A== + base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" @@ -3526,6 +4034,15 @@ bindings@^1.5.0: dependencies: file-uri-to-path "1.0.0" +bl@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.0.3.tgz#12d6287adc29080e22a705e5764b2a9522cdc489" + integrity sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + block-stream@*: version "0.0.9" resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" @@ -3564,11 +4081,6 @@ body-parser@1.19.0, body-parser@^1.18.3: raw-body "2.4.0" type-is "~1.6.17" -boolbase@^1.0.0, boolbase@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= - brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -3671,16 +4183,27 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@4.8.3: - version "4.8.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.3.tgz#65802fcd77177c878e015f0e3189f2c4f627ba44" - integrity sha512-iU43cMMknxG1ClEZ2MDKeonKE1CCrFVkQK2AqO2YWFmvIrx4JWrvQ4w4hQez6EpVI8rHTtqh/ruHHDHSOKxvUg== +browserslist@4.13.0: + version "4.13.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.13.0.tgz#42556cba011e1b0a2775b611cba6a8eca18e940d" + integrity sha512-MINatJ5ZNrLnQ6blGvePd/QOz9Xtu+Ne+x29iQSCHfkU5BugKVJwZKn/iiL8UbpIpa3JhviKjz+XxMo0m2caFQ== + dependencies: + caniuse-lite "^1.0.30001093" + electron-to-chromium "^1.3.488" + escalade "^3.0.1" + node-releases "^1.1.58" + +browserslist@^4.12.0: + version "4.14.6" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.6.tgz#97702a9c212e0c6b6afefad913d3a1538e348457" + integrity sha512-zeFYcUo85ENhc/zxHbiIp0LGzzTrE2Pv2JhxvS7kpUb9Q9D38kUX6Bie7pGutJ/5iF5rOxE7CepAuWD56xJ33A== dependencies: - caniuse-lite "^1.0.30001017" - electron-to-chromium "^1.3.322" - node-releases "^1.1.44" + caniuse-lite "^1.0.30001154" + electron-to-chromium "^1.3.585" + escalade "^3.1.1" + node-releases "^1.1.65" -browserslist@^4.0.0, browserslist@^4.6.0, browserslist@^4.8.5: +browserslist@^4.8.5: version "4.14.0" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.0.tgz#2908951abfe4ec98737b72f34c3bcedc8d43b000" integrity sha512-pUsXKAF2lVwhmtpeA3LJrZ76jXuusrNyhduuQs7CDFf9foT4Y38aQOserd2lMe5DSSrjf3fx34oHwryuvxAUgQ== @@ -3709,7 +4232,7 @@ buffer-equal-constant-time@1.0.1: resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" integrity sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk= -buffer-from@1.x, buffer-from@^1.0.0: +buffer-from@1.x, buffer-from@^1.0.0, buffer-from@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== @@ -3719,6 +4242,14 @@ buffer-xor@^1.0.3: resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= +buffer@5.6.0, buffer@^5.1.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" + integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + buffer@^4.3.0: version "4.9.2" resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" @@ -3728,13 +4259,13 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" -buffer@^5.1.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" - integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== +buffer@^5.5.0: + version "5.7.0" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.0.tgz#88afbd29fc89fa7b58e82b39206f31f2cf34feed" + integrity sha512-cd+5r1VLBwUqTrmnzW+D7ABkJUM6mr7uv1dv+6jRw4Rcl7tFIFHDqHPL98LhpGFn3dbAt3gtLxtrWp4m1kFrqg== dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" + base64-js "^1.3.1" + ieee754 "^1.1.13" builtin-status-codes@^3.0.0: version "3.0.0" @@ -3753,6 +4284,29 @@ bytes@3.1.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== +cacache@15.0.5: + version "15.0.5" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.5.tgz#69162833da29170d6732334643c60e005f5f17d0" + integrity sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A== + dependencies: + "@npmcli/move-file" "^1.0.1" + chownr "^2.0.0" + fs-minipass "^2.0.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^6.0.0" + minipass "^3.1.1" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^1.0.3" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^8.0.0" + tar "^6.0.2" + unique-filename "^1.1.1" + cacache@^12.0.2: version "12.0.4" resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" @@ -3789,24 +4343,18 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= - dependencies: - callsites "^2.0.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= +cacheable-request@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" + integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== dependencies: - caller-callsite "^2.0.0" - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^3.0.0" + lowercase-keys "^2.0.0" + normalize-url "^4.1.0" + responselike "^1.0.2" callsites@^3.0.0: version "3.1.0" @@ -3829,11 +4377,6 @@ camelcase-keys@^2.0.0: camelcase "^2.0.0" map-obj "^1.0.0" -camelcase@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" - integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== - camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" @@ -3854,17 +4397,12 @@ camelize@^1.0.0: resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b" integrity sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs= -caniuse-api@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" - integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== - dependencies: - browserslist "^4.0.0" - caniuse-lite "^1.0.0" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" +caniuse-lite@^1.0.30001093, caniuse-lite@^1.0.30001113, caniuse-lite@^1.0.30001154: + version "1.0.30001154" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001154.tgz#f3bbc245ce55e4c1cd20fa731b097880181a7f17" + integrity sha512-y9DvdSti8NnYB9Be92ddMZQrcOe04kcQtcxtBx4NkB04+qZ+JUWotnXBJTmxlKudhxNTQ3RRknMwNU2YQl/Org== -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001017, caniuse-lite@^1.0.30001111: +caniuse-lite@^1.0.30001111: version "1.0.30001119" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001119.tgz#99185d04bc00e76a86c9ff731dc5ec8e53aefca1" integrity sha512-Hpwa4obv7EGP+TjkCh/wVvbtNJewxmtg4yVJBLFnxo35vbPapBr138bUWENkb5j5L9JZJ9RXLn4OrXRG/cecPQ== @@ -3889,6 +4427,14 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= +chalk@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.0.0.tgz#6e98081ed2d17faab615eb52ac66ec1fe6209e72" + integrity sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chalk@4.1.0, chalk@^4.0.0, chalk@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" @@ -3950,7 +4496,7 @@ chokidar@3.4.1: optionalDependencies: fsevents "~2.1.2" -"chokidar@>=2.0.0 <4.0.0", chokidar@^3.3.0, chokidar@^3.4.0, chokidar@^3.4.1: +chokidar@3.4.2, "chokidar@>=2.0.0 <4.0.0", chokidar@^3.4.0, chokidar@^3.4.1: version "3.4.2" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.2.tgz#38dc8e658dec3809741eb3ef7bb0a47fe424232d" integrity sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A== @@ -3989,6 +4535,11 @@ chownr@^1.1.1: resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + chrome-trace-event@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" @@ -4019,6 +4570,11 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" +classnames@2.2.6: + version "2.2.6" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" + integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== + clean-stack@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" @@ -4089,29 +4645,18 @@ cliui@^6.0.0: strip-ansi "^6.0.0" wrap-ansi "^6.2.0" -clone-deep@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== +clone-response@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" + integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" + mimic-response "^1.0.0" co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= -coa@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" - integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== - dependencies: - "@types/q" "^1.5.1" - chalk "^2.4.1" - q "^1.1.2" - code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" @@ -4154,21 +4699,26 @@ color-name@^1.0.0, color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -color-string@^1.5.2: - version "1.5.3" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" - integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw== +color-string@^1.5.4: + version "1.5.4" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.4.tgz#dd51cd25cfee953d138fe4002372cc3d0e504cb6" + integrity sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw== dependencies: color-name "^1.0.0" simple-swizzle "^0.2.2" -color@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10" - integrity sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg== +color@^3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/color/-/color-3.1.3.tgz#ca67fb4e7b97d611dcde39eceed422067d91596e" + integrity sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ== dependencies: color-convert "^1.9.1" - color-string "^1.5.2" + color-string "^1.5.4" + +colorette@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" + integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" @@ -4295,7 +4845,7 @@ cookie@0.4.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== -cookie@^0.4.0: +cookie@^0.4.0, cookie@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== @@ -4317,7 +4867,7 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-js-compat@^3.1.1: +core-js-compat@^3.6.2: version "3.6.5" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.5.tgz#2a51d9a4e25dfd6e690251aa81f99e3c05481f1c" integrity sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng== @@ -4375,16 +4925,6 @@ cosmiconfig@7.0.0, cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" -cosmiconfig@^5.0.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" - create-ecdh@^4.0.0: version "4.0.4" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" @@ -4451,7 +4991,7 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2: shebang-command "^2.0.0" which "^2.0.1" -crypto-browserify@^3.11.0: +crypto-browserify@3.12.0, crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== @@ -4473,51 +5013,23 @@ css-color-keywords@^1.0.0: resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" integrity sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU= -css-color-names@0.0.4, css-color-names@^0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" - integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= - -css-declaration-sorter@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" - integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== - dependencies: - postcss "^7.0.1" - timsort "^0.3.0" - -css-loader@3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.3.0.tgz#65f889807baec3197313965d6cda9899f936734d" - integrity sha512-x9Y1vvHe5RR+4tzwFdWExPueK00uqFTCw7mZy+9aE/X1SKWOArm5luaOrtJ4d05IpOwJ6S86b/tVcIdhw1Bu4A== +css-loader@4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-4.3.0.tgz#c888af64b2a5b2e85462c72c0f4a85c7e2e0821e" + integrity sha512-rdezjCjScIrsL8BSYszgT4s476IcNKt6yX69t0pHjJVnPUTDpn4WfIpDQTN3wCJvUvfsz/mFjuGOekf3PY3NUg== dependencies: - camelcase "^5.3.1" + camelcase "^6.0.0" cssesc "^3.0.0" icss-utils "^4.1.1" - loader-utils "^1.2.3" - normalize-path "^3.0.0" - postcss "^7.0.23" + loader-utils "^2.0.0" + postcss "^7.0.32" postcss-modules-extract-imports "^2.0.0" - postcss-modules-local-by-default "^3.0.2" - postcss-modules-scope "^2.1.1" + postcss-modules-local-by-default "^3.0.3" + postcss-modules-scope "^2.2.0" postcss-modules-values "^3.0.0" - postcss-value-parser "^4.0.2" - schema-utils "^2.6.0" - -css-select-base-adapter@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" - integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== - -css-select@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" - integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== - dependencies: - boolbase "^1.0.0" - css-what "^3.2.1" - domutils "^1.7.0" - nth-check "^1.0.2" + postcss-value-parser "^4.1.0" + schema-utils "^2.7.1" + semver "^7.3.2" css-to-react-native@^3.0.0: version "3.0.0" @@ -4528,26 +5040,10 @@ css-to-react-native@^3.0.0: css-color-keywords "^1.0.0" postcss-value-parser "^4.0.2" -css-tree@1.0.0-alpha.37: - version "1.0.0-alpha.37" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" - integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== - dependencies: - mdn-data "2.0.4" - source-map "^0.6.1" - -css-tree@1.0.0-alpha.39: - version "1.0.0-alpha.39" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.39.tgz#2bff3ffe1bb3f776cf7eefd91ee5cba77a149eeb" - integrity sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA== - dependencies: - mdn-data "2.0.6" - source-map "^0.6.1" - -css-what@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.3.0.tgz#10fec696a9ece2e591ac772d759aacabac38cd39" - integrity sha512-pv9JPyatiPaQ6pf4OvD/dbfm0o5LviWmwxNWzblYf/1u9QZd0ihV+PMwy5jdQWQ3349kZmKEx9WXuSka2dM4cg== +css.escape@^1.5.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" + integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s= css@^2.0.0: version "2.2.4" @@ -4569,80 +5065,21 @@ cssfilter@0.0.10: resolved "https://registry.yarnpkg.com/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae" integrity sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4= -cssnano-preset-default@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" - integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== - dependencies: - css-declaration-sorter "^4.0.1" - cssnano-util-raw-cache "^4.0.1" - postcss "^7.0.0" - postcss-calc "^7.0.1" - postcss-colormin "^4.0.3" - postcss-convert-values "^4.0.1" - postcss-discard-comments "^4.0.2" - postcss-discard-duplicates "^4.0.2" - postcss-discard-empty "^4.0.1" - postcss-discard-overridden "^4.0.1" - postcss-merge-longhand "^4.0.11" - postcss-merge-rules "^4.0.3" - postcss-minify-font-values "^4.0.2" - postcss-minify-gradients "^4.0.2" - postcss-minify-params "^4.0.2" - postcss-minify-selectors "^4.0.2" - postcss-normalize-charset "^4.0.1" - postcss-normalize-display-values "^4.0.2" - postcss-normalize-positions "^4.0.2" - postcss-normalize-repeat-style "^4.0.2" - postcss-normalize-string "^4.0.2" - postcss-normalize-timing-functions "^4.0.2" - postcss-normalize-unicode "^4.0.1" - postcss-normalize-url "^4.0.1" - postcss-normalize-whitespace "^4.0.2" - postcss-ordered-values "^4.1.2" - postcss-reduce-initial "^4.0.3" - postcss-reduce-transforms "^4.0.2" - postcss-svgo "^4.0.2" - postcss-unique-selectors "^4.0.1" - -cssnano-util-get-arguments@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" - integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= - -cssnano-util-get-match@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" - integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= - -cssnano-util-raw-cache@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" - integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== - dependencies: - postcss "^7.0.0" - -cssnano-util-same-parent@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" - integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== - -cssnano@4.1.10: - version "4.1.10" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" - integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== +cssnano-preset-simple@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/cssnano-preset-simple/-/cssnano-preset-simple-1.2.0.tgz#afcf13eb076e8ebd91c4f311cd449781c14c7371" + integrity sha512-zojGlY+KasFeQT/SnD/WqYXHcKddz2XHRDtIwxrWpGqGHp5IyLWsWFS3UW7pOf3AWvfkpYSRdxOSlYuJPz8j8g== dependencies: - cosmiconfig "^5.0.0" - cssnano-preset-default "^4.0.7" - is-resolvable "^1.0.0" - postcss "^7.0.0" + caniuse-lite "^1.0.30001093" + postcss "^7.0.32" -csso@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.0.3.tgz#0d9985dc852c7cc2b2cacfbbe1079014d1a8e903" - integrity sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ== +cssnano-simple@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/cssnano-simple/-/cssnano-simple-1.2.0.tgz#b8cc5f52c2a52e6513b4636d0da165ec9d48d327" + integrity sha512-pton9cZ70/wOCWMAbEGHO1ACsW1KggTB6Ikj7k71uOEsz6SfByH++86+WAmXjRSc9q/g9gxkpFP9bDX9vRotdA== dependencies: - css-tree "1.0.0-alpha.39" + cssnano-preset-simple "1.2.0" + postcss "^7.0.32" cssom@^0.4.4: version "0.4.4" @@ -4693,6 +5130,13 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" +data-uri-to-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.0.tgz#8a3088a5efd3f53c3682343313c6895d498eb8d7" + integrity sha512-MJ6mFTZ+nPQO+39ua/ltwNePXrfdF3Ww0wP1Od7EePySXN1cP9XNqRQOG3FxTfipp8jx898LUCgBCEP11Qw/ZQ== + dependencies: + buffer-from "^1.1.1" + data-urls@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" @@ -4744,6 +5188,13 @@ debug@3.1.0: dependencies: ms "2.0.0" +debug@4: + version "4.2.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" + integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg== + dependencies: + ms "2.1.2" + debug@^3.1.0, debug@^3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" @@ -4780,6 +5231,27 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= +decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= + dependencies: + mimic-response "^1.0.0" + +decompress-response@^4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-4.2.1.tgz#414023cc7a302da25ce2ec82d0d5238ccafd8986" + integrity sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw== + dependencies: + mimic-response "^2.0.0" + +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + dedent@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" @@ -4805,6 +5277,11 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== +defer-to-connect@^1.0.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" + integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== + define-properties@^1.1.2, define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" @@ -4882,7 +5359,7 @@ detect-indent@6.0.0: resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.0.0.tgz#0abd0f549f69fc6659a254fe96786186b6f528fd" integrity sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA== -detect-libc@^1.0.2: +detect-libc@^1.0.2, detect-libc@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= @@ -4944,15 +5421,7 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -dom-serializer@0, dom-serializer@^0.2.1: - version "0.2.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== - dependencies: - domelementtype "^2.0.1" - entities "^2.0.0" - -dom-serializer@^1.0.1: +dom-serializer@1.0.1, dom-serializer@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.0.1.tgz#79695eb49af3cd8abc8d93a73da382deb1ca0795" integrity sha512-1Aj1Qy3YLbdslkI75QEOfdp9TkQ3o8LRISAzxOibjBs/xWwr1WxZFOQphFkZuepHFGo+kB8e5FVJSS0faAJ4Rw== @@ -4961,6 +5430,14 @@ dom-serializer@^1.0.1: domhandler "^3.0.0" entities "^2.0.0" +dom-serializer@^0.2.1: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + domain-browser@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" @@ -4970,16 +5447,11 @@ domain-browser@^1.1.1: version "1.0.0" dependencies: bcrypt "^5.0.0" - common "file:../../Library/Caches/Yarn/v6/npm-domain-model-1.0.0-fa375160-5582-432d-a46b-890cd9373151-1603635599555/node_modules/common" + common "file:../../Library/Caches/Yarn/v6/npm-domain-model-1.0.0-ccace337-26c3-46f9-bb45-55efafa81c3b-1605600167308/node_modules/common" dotenv "^8.2.0" graphql-scalars "^1.2.6" jsonwebtoken "^8.5.1" -domelementtype@1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== - domelementtype@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" @@ -4999,23 +5471,15 @@ domhandler@3.0.0, domhandler@^3.0.0: dependencies: domelementtype "^2.0.1" -domutils@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.0.0.tgz#15b8278e37bfa8468d157478c58c367718133c08" - integrity sha512-n5SelJ1axbO636c2yUtOGia/IcJtVtlhQbFiVDBZHKV5ReJO1ViX7sFEemtuyoAnBxk5meNSYgA8V4s0271efg== +domutils@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.1.0.tgz#7ade3201af43703fde154952e3a868eb4b635f16" + integrity sha512-CD9M0Dm1iaHfQ1R/TI+z3/JWp/pgub0j4jIQKH89ARR4ATAV2nbaOQS5XxU9maJP5jHaPdDDQSEHuE2UmpUTKg== dependencies: dom-serializer "^0.2.1" domelementtype "^2.0.1" domhandler "^3.0.0" -domutils@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" - integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== - dependencies: - dom-serializer "0" - domelementtype "1" - domutils@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.2.0.tgz#f3ce1610af5c30280bde1b71f84b018b958f32cf" @@ -5033,13 +5497,6 @@ dot-case@^3.0.3: no-case "^3.0.3" tslib "^1.10.0" -dot-prop@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" - integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== - dependencies: - is-obj "^2.0.0" - dotenv@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-4.0.0.tgz#864ef1379aced55ce6f95debecdce179f7a0cd1d" @@ -5055,6 +5512,11 @@ dotenv@^8.2.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= + duplexify@^3.4.2, duplexify@^3.6.0: version "3.7.1" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" @@ -5092,7 +5554,12 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.3.322, electron-to-chromium@^1.3.523: +electron-to-chromium@^1.3.488, electron-to-chromium@^1.3.585: + version "1.3.585" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.585.tgz#71cdb722c73488b9475ad1c572cf43a763ef9081" + integrity sha512-xoeqjMQhgHDZM7FiglJAb2aeOxHZWFruUc3MbAGTgE7GB8rr5fTn1Sdh5THGuQtndU3GuXlu91ZKqRivxoCZ/A== + +electron-to-chromium@^1.3.523: version "1.3.555" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.555.tgz#a096716ff77cf8da9a608eb628fd6927869503d2" integrity sha512-/55x3nF2feXFZ5tdGUOr00TxnUjUgdxhrn+eCJ1FAcoAt+cKQTjQkUC5XF4frMWE1R5sjHk+JueuBalimfe5Pg== @@ -5152,14 +5619,14 @@ encoding@^0.1.11: dependencies: iconv-lite "~0.4.13" -end-of-stream@^1.0.0, end-of-stream@^1.1.0: +end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" -enhanced-resolve@^4.1.0: +enhanced-resolve@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz#3b806f3bfafc1ec7de69551ef93cca46c1704126" integrity sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ== @@ -5284,6 +5751,11 @@ es6-symbol@^3.1.1, es6-symbol@~3.1.3: d "^1.0.1" ext "^1.1.2" +escalade@^3.0.1, escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + escalade@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.0.2.tgz#6a580d70edb87880f22b4c91d0d56078df6962c4" @@ -5463,6 +5935,11 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + eventemitter3@^3.1.0: version "3.1.2" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" @@ -5547,6 +6024,11 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" +expand-template@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" + integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== + expect@^26.3.0: version "26.3.0" resolved "https://registry.yarnpkg.com/expect/-/expect-26.3.0.tgz#6145b4999a2c9bd64a644360d0c781c44d369c54" @@ -5879,19 +6361,14 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= -fork-ts-checker-webpack-plugin@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz#a1642c0d3e65f50c2cc1742e9c0a80f441f86b19" - integrity sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ== +form-data@^2.5.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" + integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== dependencies: - babel-code-frame "^6.22.0" - chalk "^2.4.1" - chokidar "^3.3.0" - micromatch "^3.1.10" - minimatch "^3.0.4" - semver "^5.6.0" - tapable "^1.0.0" - worker-rpc "^0.1.0" + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" form-data@^3.0.0: version "3.0.0" @@ -5955,6 +6432,11 @@ fs-capacitor@^2.0.4: resolved "https://registry.yarnpkg.com/fs-capacitor/-/fs-capacitor-2.0.4.tgz#5a22e72d40ae5078b4fe64fe4d08c0d3fc88ad3c" integrity sha512-8S4f4WsCryNw2mJJchi46YgB6CR5Ze+4L1h8ewl9tEpL4SJ3ZO+c/bS4BWhB8bK+O3TMqhuZarTitd0S0eh2pA== +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + fs-extra@9.0.1: version "9.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" @@ -5981,6 +6463,13 @@ fs-minipass@^1.2.5: dependencies: minipass "^2.6.0" +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + fs-write-stream-atomic@^1.0.8: version "1.0.10" resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" @@ -6080,7 +6569,7 @@ get-stdin@^6.0.0: resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== -get-stream@^4.0.0: +get-stream@^4.0.0, get-stream@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== @@ -6094,6 +6583,13 @@ get-stream@^5.0.0: dependencies: pump "^3.0.0" +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -6106,6 +6602,11 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" +github-from-package@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" + integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4= + glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" @@ -6162,6 +6663,23 @@ globby@11.0.1: merge2 "^1.3.0" slash "^3.0.0" +got@^9.6.0: + version "9.6.0" + resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" + integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== + dependencies: + "@sindresorhus/is" "^0.14.0" + "@szmarczak/http-timer" "^1.1.2" + cacheable-request "^6.0.0" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^4.1.0" + lowercase-keys "^1.0.1" + mimic-response "^1.0.1" + p-cancelable "^1.0.0" + to-readable-stream "^1.0.0" + url-parse-lax "^3.0.0" + graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: version "4.2.4" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" @@ -6325,7 +6843,7 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -has@^1.0.0, has@^1.0.3: +has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== @@ -6349,16 +6867,11 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" -he@^1.1.0: +he@1.2.0, he@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -hex-color-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" - integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== - highlight.js@^9.6.0: version "9.18.3" resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.18.3.tgz#a1a0a2028d5e3149e2380f8a865ee8516703d634" @@ -6385,21 +6898,6 @@ hosted-git-info@^2.1.4: resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== -hsl-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" - integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= - -hsla-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" - integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= - -html-comment-regex@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" - integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== - html-encoding-sniffer@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" @@ -6422,6 +6920,11 @@ htmlparser2@4.1.0: domutils "^2.0.0" entities "^2.0.0" +http-cache-semantics@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" + integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + http-errors@1.7.2: version "1.7.2" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" @@ -6477,6 +6980,14 @@ https-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= +https-proxy-agent@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" + integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== + dependencies: + agent-base "6" + debug "4" + https-proxy-agent@^2.2.1: version "2.2.4" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" @@ -6527,6 +7038,11 @@ icss-utils@^4.0.0, icss-utils@^4.1.1: dependencies: postcss "^7.0.14" +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + ieee754@^1.1.4: version "1.1.13" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" @@ -6559,14 +7075,6 @@ immutable@~3.7.6: resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.7.6.tgz#13b4d3cb12befa15482a26fe1b2ebae640071e4b" integrity sha1-E7TTyxK++hVIKib+Gy665kAHHks= -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= - dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" - import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" @@ -6617,7 +7125,7 @@ indexes-of@^1.0.1: resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= -infer-owner@^1.0.3: +infer-owner@^1.0.3, infer-owner@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== @@ -6630,7 +7138,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -6695,11 +7203,6 @@ ipaddr.js@1.9.1: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== -is-absolute-url@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" - integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= - is-absolute@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" @@ -6763,18 +7266,6 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" -is-color-stop@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" - integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= - dependencies: - css-color-names "^0.0.4" - hex-color-regex "^1.1.0" - hsl-regex "^1.0.0" - hsla-regex "^1.0.0" - rgb-regex "^1.0.1" - rgba-regex "^1.0.0" - is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -6812,11 +7303,6 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-data-descriptor "^1.0.0" kind-of "^6.0.2" -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= - is-docker@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.0.0.tgz#2cb0df0e75e2d064fe1864c37cdeacb7b2dcf25b" @@ -6902,11 +7388,6 @@ is-obj@^1.0.1: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - is-observable@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e" @@ -6914,11 +7395,6 @@ is-observable@^1.1.0: dependencies: symbol-observable "^1.1.0" -is-plain-obj@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= - is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -6967,11 +7443,6 @@ is-relative@^1.0.0: dependencies: is-unc-path "^1.0.0" -is-resolvable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" - integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== - is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -6987,13 +7458,6 @@ is-string@^1.0.5: resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== -is-svg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" - integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== - dependencies: - html-comment-regex "^1.1.0" - is-symbol@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" @@ -7521,21 +7985,18 @@ jest@^26.3.0: import-local "^3.0.2" jest-cli "^26.3.0" -js-levenshtein@^1.1.3: - version "1.1.6" - resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" - integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g== +jose@^1.27.1: + version "1.28.0" + resolved "https://registry.yarnpkg.com/jose/-/jose-1.28.0.tgz#0803f8c71f43cd293a9d931c555c30531f5ca5dc" + integrity sha512-JmfDRzt/HSj8ipd9TsDtEHoLUnLYavG+7e8F6s1mx2jfVSfXOTaFQsJUydbjJpTnTDHP1+yKL9Ke7ktS/a0Eiw== + dependencies: + "@panva/asn1.js" "^1.0.0" "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= - js-yaml@^3.10.0, js-yaml@^3.13.1: version "3.14.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" @@ -7591,6 +8052,11 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= + json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" @@ -7727,6 +8193,13 @@ jwt-decode@^2.2.0: resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-2.2.0.tgz#7d86bd56679f58ce6a84704a657dd392bba81a79" integrity sha1-fYa9VmefWM5qhHBKZX3TkruoGnk= +keyv@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" + integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== + dependencies: + json-buffer "3.0.0" + kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -7756,11 +8229,23 @@ kleur@^3.0.3: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== +klona@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0" + integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA== + leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== +levenary@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" + integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== + dependencies: + leven "^3.1.0" + levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -7777,6 +8262,14 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +line-column@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/line-column/-/line-column-1.0.2.tgz#d25af2936b6f4849172b312e4792d1d987bc34a2" + integrity sha1-0lryk2tvSEkXKzEuR5LR2Ye8NKI= + dependencies: + isarray "^1.0.0" + isobject "^2.0.0" + lines-and-columns@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" @@ -7896,7 +8389,7 @@ loader-utils@1.2.3: emojis-list "^2.0.0" json5 "^1.0.1" -loader-utils@2.0.0: +loader-utils@2.0.0, loader-utils@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== @@ -7905,7 +8398,7 @@ loader-utils@2.0.0: emojis-list "^3.0.0" json5 "^2.1.2" -loader-utils@^1.1.0, loader-utils@^1.2.3: +loader-utils@^1.2.3: version "1.4.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== @@ -7964,7 +8457,7 @@ lodash.isstring@^4.0.1: resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= -lodash.memoize@4.x, lodash.memoize@^4.1.2: +lodash.memoize@4.x: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= @@ -7979,11 +8472,6 @@ lodash.sortby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= - lodash@^4.17.11: version "4.17.20" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" @@ -8059,7 +8547,17 @@ lower-case@2.0.1, lower-case@^2.0.1: dependencies: tslib "^1.10.0" -lru-cache@6.0.0: +lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + +lru-cache@6.0.0, lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== @@ -8096,7 +8594,7 @@ make-dir@^3.0.0, make-dir@^3.0.2: dependencies: semver "^6.0.0" -make-error@1.x, make-error@^1.1.1: +make-error@1.x, make-error@^1.1.1, make-error@^1.3.6: version "1.3.6" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== @@ -8134,16 +8632,6 @@ md5.js@^1.3.4: inherits "^2.0.1" safe-buffer "^5.1.2" -mdn-data@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" - integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== - -mdn-data@2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.6.tgz#852dc60fcaa5daa2e8cf6c9189c440ed3e042978" - integrity sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA== - media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -8206,11 +8694,6 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -microevent.ts@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" - integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== - micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" @@ -8273,15 +8756,20 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -mini-css-extract-plugin@0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.0.tgz#81d41ec4fe58c713a96ad7c723cdb2d0bd4d70e1" - integrity sha512-MNpRGbNA52q6U92i0qbVpQNsgk7LExy41MdAlG84FeytfDOtRIf/mCHdEgG8rpTKOaNKiqUnZdlptF469hxqOw== - dependencies: - loader-utils "^1.1.0" - normalize-url "1.9.1" - schema-utils "^1.0.0" - webpack-sources "^1.1.0" +mimic-response@^1.0.0, mimic-response@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +mimic-response@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-2.1.0.tgz#d13763d35f613d09ec37ebb30bac0469c0ee8f43" + integrity sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA== + +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" @@ -8300,11 +8788,32 @@ minimatch@3.0.4, minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" -minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: +minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.2: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" @@ -8313,6 +8822,13 @@ minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: safe-buffer "^5.1.2" yallist "^3.0.0" +minipass@^3.0.0, minipass@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" + integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== + dependencies: + yallist "^4.0.0" + minizlib@^1.2.1: version "1.3.3" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" @@ -8320,6 +8836,14 @@ minizlib@^1.2.1: dependencies: minipass "^2.9.0" +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + mississippi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" @@ -8344,6 +8868,11 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" +mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== + mkdirp@0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.3.tgz#5a514b7179259287952881e94410ec5465659f8c" @@ -8356,7 +8885,7 @@ mkdirp@1.0.4, mkdirp@1.x, mkdirp@^1.0.3, mkdirp@^1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@~0.5.1: +"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -8385,7 +8914,7 @@ ms@2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== -ms@^2.1.1: +ms@2.1.2, ms@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== @@ -8431,6 +8960,11 @@ nan@^2.12.1, nan@^2.14.0: resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== +nanoid@^3.1.12: + version "3.1.16" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.16.tgz#b21f0a7d031196faf75314d7c65d36352beeef64" + integrity sha512-+AK8MN0WHji40lj8AEuwLOvLSbWYApQpre/aFJZD71r43wVRLrOYS4FmJOPQYon1TqB462RzrrxlfA74XRES8w== + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -8448,10 +8982,15 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" -native-url@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/native-url/-/native-url-0.3.1.tgz#5045c65d0eb4c3ee548d48e3cb50797eec5a3c54" - integrity sha512-VL0XRW8nNBdSpxqZCbLJKrLHmIMn82FZ8pJzriJgyBmErjdEtrUX6eZAJbtHjlkMooEWUV+EtJ0D5tOP3+1Piw== +napi-build-utils@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" + integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== + +native-url@0.3.4: + version "0.3.4" + resolved "https://registry.yarnpkg.com/native-url/-/native-url-0.3.4.tgz#29c943172aed86c63cee62c8c04db7f5756661f8" + integrity sha512-6iM8R99ze45ivyH8vybJ7X0yekIcPf5GgLV5K0ENCbmRcaRIDoj37BC8iLEmaaBfqqb8enuZ5p0uhY+lVAbAcA== dependencies: querystring "^0.2.0" @@ -8483,7 +9022,12 @@ negotiator@0.6.2: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== -neo-async@^2.5.0, neo-async@^2.6.1: +neo-async@2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" + integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== + +neo-async@^2.5.0, neo-async@^2.6.1, neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== @@ -8493,53 +9037,73 @@ next-tick@~1.0.0: resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= -next@9.3.5: - version "9.3.5" - resolved "https://registry.yarnpkg.com/next/-/next-9.3.5.tgz#c9ff01147d3c9e165efdaa2cec1702b5741f5ac7" - integrity sha512-vJKGUK2nMsveYZTZH5Oz9L+cDYcCsuWLUXfWJejvhdQ3jLgVhZVa+7TQ45Kt0PA1ea7jqlDUN22DtzmPFi981w== - dependencies: - "@ampproject/toolbox-optimizer" "2.2.0" - "@babel/core" "7.7.2" - "@babel/plugin-proposal-class-properties" "7.7.0" - "@babel/plugin-proposal-nullish-coalescing-operator" "7.7.4" - "@babel/plugin-proposal-numeric-separator" "7.8.3" - "@babel/plugin-proposal-object-rest-spread" "7.6.2" - "@babel/plugin-proposal-optional-chaining" "7.7.4" +next@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/next/-/next-10.0.0.tgz#fbc82fa69f05bf82fb5c4e160151f38fb9615e99" + integrity sha512-hpJkikt6tqwj7DfD5Mizwc1kDsaaS73TQK6lJL+++Ht8QXIEs+KUqTZULgdMk80mDV2Zhzo9/JYMEranWwAFLA== + dependencies: + "@ampproject/toolbox-optimizer" "2.7.0-alpha.1" + "@babel/code-frame" "7.10.4" + "@babel/core" "7.7.7" + "@babel/plugin-proposal-class-properties" "7.10.4" + "@babel/plugin-proposal-export-namespace-from" "7.10.4" + "@babel/plugin-proposal-numeric-separator" "7.10.4" + "@babel/plugin-proposal-object-rest-spread" "7.11.0" "@babel/plugin-syntax-bigint" "7.8.3" - "@babel/plugin-syntax-dynamic-import" "7.2.0" - "@babel/plugin-transform-modules-commonjs" "7.7.0" - "@babel/plugin-transform-runtime" "7.6.2" - "@babel/preset-env" "7.7.1" - "@babel/preset-modules" "0.1.1" - "@babel/preset-react" "7.7.0" - "@babel/preset-typescript" "7.7.2" - "@babel/runtime" "7.7.2" - "@babel/types" "7.7.4" - babel-plugin-syntax-jsx "6.18.0" + "@babel/plugin-syntax-dynamic-import" "7.8.3" + "@babel/plugin-syntax-jsx" "7.10.4" + "@babel/plugin-transform-modules-commonjs" "7.10.4" + "@babel/plugin-transform-runtime" "7.11.5" + "@babel/preset-env" "7.11.5" + "@babel/preset-modules" "0.1.4" + "@babel/preset-react" "7.10.4" + "@babel/preset-typescript" "7.10.4" + "@babel/runtime" "7.11.2" + "@babel/types" "7.11.5" + "@hapi/accept" "5.0.1" + "@next/env" "10.0.0" + "@next/polyfill-module" "10.0.0" + "@next/react-dev-overlay" "10.0.0" + "@next/react-refresh-utils" "10.0.0" + ast-types "0.13.2" babel-plugin-transform-define "2.0.0" babel-plugin-transform-react-remove-prop-types "0.4.24" - browserslist "4.8.3" - css-loader "3.3.0" + browserslist "4.13.0" + buffer "5.6.0" + cacache "15.0.5" + caniuse-lite "^1.0.30001113" + chokidar "3.4.2" + crypto-browserify "3.12.0" + css-loader "4.3.0" + cssnano-simple "1.2.0" find-cache-dir "3.3.1" - fork-ts-checker-webpack-plugin "3.1.1" jest-worker "24.9.0" loader-utils "2.0.0" - mini-css-extract-plugin "0.8.0" mkdirp "0.5.3" - native-url "0.3.1" - pnp-webpack-plugin "1.5.0" - postcss "7.0.27" + native-url "0.3.4" + neo-async "2.6.1" + node-html-parser "^1.2.19" + path-browserify "1.0.1" + pnp-webpack-plugin "1.6.4" + postcss "8.1.1" + process "0.11.10" prop-types "15.7.2" - prop-types-exact "1.2.0" - react-is "16.8.6" - resolve-url-loader "3.1.1" - sass-loader "8.0.2" - style-loader "1.0.0" - styled-jsx "3.2.5" - use-subscription "1.1.1" + react-is "16.13.1" + react-refresh "0.8.3" + resolve-url-loader "3.1.2" + sass-loader "10.0.2" + schema-utils "2.7.1" + stream-browserify "3.0.0" + style-loader "1.2.1" + styled-jsx "3.3.1" + use-subscription "1.5.0" + vm-browserify "1.1.2" watchpack "2.0.0-beta.13" - webpack "4.42.1" + web-vitals "0.2.4" + webpack "4.44.1" webpack-sources "1.4.3" + optionalDependencies: + sharp "0.26.2" nice-try@^1.0.4: version "1.0.5" @@ -8554,6 +9118,13 @@ no-case@^3.0.3: lower-case "^2.0.1" tslib "^1.10.0" +node-abi@^2.7.0: + version "2.19.1" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.19.1.tgz#6aa32561d0a5e2fdb6810d8c25641b657a8cea85" + integrity sha512-HbtmIuByq44yhAzK7b9j/FelKlHYISKQn0mtvcBrU5QBkhoCMp5bu8Hv5AI34DcKfOAcJBcOEMwLlwO62FFu9A== + dependencies: + semver "^5.4.1" + node-addon-api@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.0.tgz#f9afb8d777a91525244b01775ea0ddbe1125483b" @@ -8564,6 +9135,11 @@ node-addon-api@^3.0.0: resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.0.0.tgz#812446a1001a54f71663bed188314bba07e09247" integrity sha512-sSHCgWfJ+Lui/u+0msF3oyCgvdkhxDbkCS6Q8uiJquzOimkJBvX6hl5aSSA7DR1XbMpdM8r7phjcF63sF4rkKg== +node-addon-api@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.0.2.tgz#04bc7b83fd845ba785bb6eae25bc857e1ef75681" + integrity sha512-+D4s2HCnxPd5PjjI0STKwncjXTUKKqm74MDMz9OPXavjsGmjkvwgLtA5yoxJUdmpj52+2u+RrXgPipahKczMKg== + node-fetch@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.1.2.tgz#ab884e8e7e57e38a944753cec706f788d1768bb5" @@ -8600,6 +9176,13 @@ node-gyp@3.x: tar "^2.0.0" which "1" +node-html-parser@^1.2.19: + version "1.4.5" + resolved "https://registry.yarnpkg.com/node-html-parser/-/node-html-parser-1.4.5.tgz#0697045ccaf4e5f8f99b78d0a5579d096b7da6d2" + integrity sha512-sNm4Tdc8zj5HnFtkNEcK/1tpvyfRxEuz1d4rkVceGPeMTfzd2twPTiEo/UbqxOexSt9AzJ/cvQXSTj7fa6Ey1w== + dependencies: + he "1.2.0" + node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -8683,11 +9266,21 @@ node-pre-gyp@^0.11.0: semver "^5.3.0" tar "^4" -node-releases@^1.1.44, node-releases@^1.1.60: +node-releases@^1.1.58, node-releases@^1.1.65: + version "1.1.65" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.65.tgz#52d9579176bd60f23eba05c4438583f341944b81" + integrity sha512-YpzJOe2WFIW0V4ZkJQd/DGR/zdVwc/pI4Nl1CZrBO19FdRcSTmsuhdttw9rsTzzJLrNcSloLiBbEYx1C4f6gpA== + +node-releases@^1.1.60: version "1.1.60" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.60.tgz#6948bdfce8286f0b5d0e5a88e8384e954dfe7084" integrity sha512-gsO4vjEdQaTusZAEebUWp2a5d7dF5DYoIpDG7WySnk7BuZDW+GPpHXoXXuYawRBr/9t5q54tirPz79kFIWg4dA== +noop-logger@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2" + integrity sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI= + "nopt@2 || 3": version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" @@ -8730,20 +9323,10 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -normalize-url@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" - integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= - dependencies: - object-assign "^4.0.1" - prepend-http "^1.0.0" - query-string "^4.1.0" - sort-keys "^1.0.0" - -normalize-url@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" - integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== +normalize-url@^4.1.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" + integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== npm-bundled@^1.0.1: version "1.1.1" @@ -8795,7 +9378,7 @@ npm-run-path@^4.0.0: dependencies: path-key "^3.0.0" -"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.2: +"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.1, npmlog@^4.0.2, npmlog@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== @@ -8805,13 +9388,6 @@ npm-run-path@^4.0.0: gauge "~2.7.3" set-blocking "~2.0.0" -nth-check@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" - integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== - dependencies: - boolbase "~1.0.0" - nullthrows@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" @@ -8846,6 +9422,11 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" +object-hash@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.0.3.tgz#d12db044e03cd2ca3d77c0570d87225b02e1e6ea" + integrity sha512-JPKn0GMu+Fa3zt3Bmr66JhokJU5BaNBIh4ZeTlaCBzrBsOeXzwcKKAK1tbLiPKgvwmPXsDvvLHoWh5Bm7ofIYg== + object-inspect@^1.7.0, object-inspect@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" @@ -8856,7 +9437,7 @@ object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object-path@0.11.4, object-path@^0.11.4: +object-path@^0.11.4: version "0.11.4" resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.11.4.tgz#370ae752fbf37de3ea70a861c23bba8915691949" integrity sha1-NwrnUvvzfePqcKhhwju6iRVpGUk= @@ -8912,7 +9493,7 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" -object.values@^1.1.0, object.values@^1.1.1: +object.values@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== @@ -8941,6 +9522,11 @@ office-ui-fabric-react@^7.133.0: prop-types "^15.7.2" tslib "^1.10.0" +oidc-token-hash@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/oidc-token-hash/-/oidc-token-hash-5.0.0.tgz#acdfb1f4310f58e64d5d74a4e8671a426986e888" + integrity sha512-8Yr4CZSv+Tn8ZkN3iN2i2w2G92mUKClp4z7EGUfdsERiYSbj7P4i/NHm72ft+aUdsiFx9UdIPSTwbyzQ6C4URg== + on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" @@ -8974,6 +9560,21 @@ opencollective-postinstall@^2.0.2: resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q== +openid-client@^3.15.0: + version "3.15.10" + resolved "https://registry.yarnpkg.com/openid-client/-/openid-client-3.15.10.tgz#35978f629bb95fdeeb0ab7365aa4800ca0b6558e" + integrity sha512-C9r6/iVzNQ7aGp0krS5mFIY5nY8AH6ajYCH0Njns6AXy2fM3Khw/dY97QlaFJWW2QLhec6xfEk23LZw9EeX66Q== + dependencies: + "@types/got" "^9.6.9" + base64url "^3.0.1" + got "^9.6.0" + jose "^1.27.1" + lru-cache "^6.0.0" + make-error "^1.3.6" + object-hash "^2.0.1" + oidc-token-hash "^5.0.0" + p-any "^3.0.0" + optimism@^0.12.1: version "0.12.1" resolved "https://registry.yarnpkg.com/optimism/-/optimism-0.12.1.tgz#933f9467b9aef0e601655adb9638f893e486ad02" @@ -9028,6 +9629,24 @@ osenv@0, osenv@^0.1.4: os-homedir "^1.0.0" os-tmpdir "^1.0.0" +p-any@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-any/-/p-any-3.0.0.tgz#79847aeed70b5d3a10ea625296c0c3d2e90a87b9" + integrity sha512-5rqbqfsRWNb0sukt0awwgJMlaep+8jV45S15SKKB34z4UuzjcofIfnriCBhWjZP2jbVtjt9yRl7buB6RlKsu9w== + dependencies: + p-cancelable "^2.0.0" + p-some "^5.0.0" + +p-cancelable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" + integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== + +p-cancelable@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.0.0.tgz#4a3740f5bdaf5ed5d7c3e34882c6fb5d6b266a6e" + integrity sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg== + p-each-series@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" @@ -9085,6 +9704,14 @@ p-map@^4.0.0: dependencies: aggregate-error "^3.0.0" +p-some@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-some/-/p-some-5.0.0.tgz#8b730c74b4fe5169d7264a240ad010b6ebc686a4" + integrity sha512-Js5XZxo6vHjB9NOYAzWDYAIyyiPvva0DWESAIWIK7uhSpGsyg5FwUPxipU/SOQx5x9EqhOh545d1jo6cVkitig== + dependencies: + aggregate-error "^3.0.0" + p-cancelable "^2.0.0" + p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" @@ -9204,6 +9831,11 @@ path-browserify@0.0.1: resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== +path-browserify@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" + integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== + path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" @@ -9330,170 +9962,57 @@ pinkie-promise@^2.0.0: resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= - -pirates@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" - integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== - dependencies: - node-modules-regexp "^1.0.0" - -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - -pkg-dir@^4.1.0, pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -please-upgrade-node@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" - integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== - dependencies: - semver-compare "^1.0.0" - -pnp-webpack-plugin@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.5.0.tgz#62a1cd3068f46d564bb33c56eb250e4d586676eb" - integrity sha512-jd9olUr9D7do+RN8Wspzhpxhgp1n6Vd0NtQ4SFkmIACZoEL1nkyAdW9Ygrinjec0vgDcWjscFQQ1gDW8rsfKTg== - dependencies: - ts-pnp "^1.1.2" - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -postcss-calc@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.3.tgz#d65cca92a3c52bf27ad37a5f732e0587b74f1623" - integrity sha512-IB/EAEmZhIMEIhG7Ov4x+l47UaXOS1n2f4FBUk/aKllQhtSCxWhTzn0nJgkqN7fo/jcWySvWTSB6Syk9L+31bA== - dependencies: - postcss "^7.0.27" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.0.2" - -postcss-colormin@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" - integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== - dependencies: - browserslist "^4.0.0" - color "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-convert-values@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" - integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-discard-comments@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" - integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== - dependencies: - postcss "^7.0.0" - -postcss-discard-duplicates@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" - integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== - dependencies: - postcss "^7.0.0" + pinkie "^2.0.0" -postcss-discard-empty@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" - integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== - dependencies: - postcss "^7.0.0" +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= -postcss-discard-overridden@^4.0.1: +pirates@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" - integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" + integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== dependencies: - postcss "^7.0.0" + node-modules-regexp "^1.0.0" -postcss-merge-longhand@^4.0.11: - version "4.0.11" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" - integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== dependencies: - css-color-names "0.0.4" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - stylehacks "^4.0.0" + find-up "^3.0.0" -postcss-merge-rules@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" - integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== +pkg-dir@^4.1.0, pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - cssnano-util-same-parent "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - vendors "^1.0.0" + find-up "^4.0.0" -postcss-minify-font-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" - integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" +platform@1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/platform/-/platform-1.3.3.tgz#646c77011899870b6a0903e75e997e8e51da7461" + integrity sha1-ZGx3ARiZhwtqCQPnXpl+jlHadGE= -postcss-minify-gradients@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" - integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== +please-upgrade-node@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" + integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== dependencies: - cssnano-util-get-arguments "^4.0.0" - is-color-stop "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" + semver-compare "^1.0.0" -postcss-minify-params@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" - integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== +pnp-webpack-plugin@1.6.4: + version "1.6.4" + resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" + integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== dependencies: - alphanum-sort "^1.0.0" - browserslist "^4.0.0" - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - uniqs "^2.0.0" + ts-pnp "^1.1.6" -postcss-minify-selectors@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" - integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== - dependencies: - alphanum-sort "^1.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= postcss-modules-extract-imports@^2.0.0: version "2.0.0" @@ -9502,7 +10021,7 @@ postcss-modules-extract-imports@^2.0.0: dependencies: postcss "^7.0.5" -postcss-modules-local-by-default@^3.0.2: +postcss-modules-local-by-default@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz#bb14e0cc78279d504dbdcbfd7e0ca28993ffbbb0" integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw== @@ -9512,7 +10031,7 @@ postcss-modules-local-by-default@^3.0.2: postcss-selector-parser "^6.0.2" postcss-value-parser "^4.1.0" -postcss-modules-scope@^2.1.1: +postcss-modules-scope@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== @@ -9528,116 +10047,6 @@ postcss-modules-values@^3.0.0: icss-utils "^4.0.0" postcss "^7.0.6" -postcss-normalize-charset@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" - integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== - dependencies: - postcss "^7.0.0" - -postcss-normalize-display-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" - integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-positions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" - integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== - dependencies: - cssnano-util-get-arguments "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-repeat-style@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" - integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== - dependencies: - cssnano-util-get-arguments "^4.0.0" - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-string@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" - integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== - dependencies: - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-timing-functions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" - integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-unicode@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" - integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-url@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" - integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== - dependencies: - is-absolute-url "^2.0.0" - normalize-url "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-whitespace@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" - integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-ordered-values@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" - integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== - dependencies: - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-reduce-initial@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" - integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== - dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - -postcss-reduce-transforms@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" - integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== - dependencies: - cssnano-util-get-match "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - postcss-safe-parser@4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz#a6d4e48f0f37d9f7c11b2a581bf00f8ba4870b96" @@ -9645,15 +10054,6 @@ postcss-safe-parser@4.0.2: dependencies: postcss "^7.0.26" -postcss-selector-parser@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" - integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== - dependencies: - dot-prop "^5.2.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" @@ -9663,30 +10063,6 @@ postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: indexes-of "^1.0.1" uniq "^1.0.1" -postcss-svgo@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" - integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== - dependencies: - is-svg "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - svgo "^1.0.0" - -postcss-unique-selectors@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" - integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== - dependencies: - alphanum-sort "^1.0.0" - postcss "^7.0.0" - uniqs "^2.0.0" - -postcss-value-parser@^3.0.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" - integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== - postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" @@ -9701,16 +10077,7 @@ postcss@7.0.21: source-map "^0.6.1" supports-color "^6.1.0" -postcss@7.0.27: - version "7.0.27" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.27.tgz#cc67cdc6b0daa375105b7c424a85567345fc54d9" - integrity sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - -postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.23, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: +postcss@7.0.32, postcss@^7.0.14, postcss@^7.0.26, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: version "7.0.32" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.32.tgz#4310d6ee347053da3433db2be492883d62cec59d" integrity sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw== @@ -9719,6 +10086,37 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.23, postcss@^7.0.2 source-map "^0.6.1" supports-color "^6.1.0" +postcss@8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.1.1.tgz#c3a287dd10e4f6c84cb3791052b96a5d859c9389" + integrity sha512-9DGLSsjooH3kSNjTZUOt2eIj2ZTW0VI2PZ/3My+8TC7KIbH2OKwUlISfDsf63EP4aiRUt3XkEWMWvyJHvJelEg== + dependencies: + colorette "^1.2.1" + line-column "^1.0.2" + nanoid "^3.1.12" + source-map "^0.6.1" + +prebuild-install@^5.3.5: + version "5.3.6" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-5.3.6.tgz#7c225568d864c71d89d07f8796042733a3f54291" + integrity sha512-s8Aai8++QQGi4sSbs/M1Qku62PFK49Jm1CbgXklGz4nmHveDq0wzJkg7Na5QbnO1uNH8K7iqx2EQ/mV0MZEmOg== + dependencies: + detect-libc "^1.0.3" + expand-template "^2.0.3" + github-from-package "0.0.0" + minimist "^1.2.3" + mkdirp-classic "^0.5.3" + napi-build-utils "^1.0.1" + node-abi "^2.7.0" + noop-logger "^0.1.1" + npmlog "^4.0.1" + pump "^3.0.0" + rc "^1.2.7" + simple-get "^3.0.3" + tar-fs "^2.0.0" + tunnel-agent "^0.6.0" + which-pm-runs "^1.0.0" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -9729,10 +10127,10 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= -prepend-http@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= prettier@^2.0.5: version "2.0.5" @@ -9793,7 +10191,7 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -process@^0.11.10: +process@0.11.10, process@^0.11.10: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= @@ -9823,16 +10221,7 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.4" -prop-types-exact@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/prop-types-exact/-/prop-types-exact-1.2.0.tgz#825d6be46094663848237e3925a98c6e944e9869" - integrity sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA== - dependencies: - has "^1.0.3" - object.assign "^4.1.0" - reflect.ownkeys "^0.2.0" - -prop-types@15.7.2, prop-types@^15.6.2, prop-types@^15.7.2: +prop-types@15.7.2, prop-types@^15.7.2: version "15.7.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== @@ -9921,11 +10310,6 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -q@^1.1.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= - qs@6.7.0: version "6.7.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" @@ -9936,14 +10320,6 @@ qs@~6.5.2: resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== -query-string@^4.1.0: - version "4.3.4" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" - integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= - dependencies: - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" @@ -9994,39 +10370,37 @@ rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" -react-dom@16.13.1: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.13.1.tgz#c1bd37331a0486c078ee54c4740720993b2e0e7f" - integrity sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag== +react-dom@^17.0.1: + version "17.0.1" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.1.tgz#1de2560474ec9f0e334285662ede52dbc5426fc6" + integrity sha512-6eV150oJZ9U2t9svnsspTMrWNyHc6chX0KzDeAOXftRa8bNeOKTTfCJ7KorIwenkHd2xqVTBTCZd79yk/lx/Ug== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" - prop-types "^15.6.2" - scheduler "^0.19.1" + scheduler "^0.20.1" react-fast-compare@^2.0.1: version "2.0.4" resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-2.0.4.tgz#e84b4d455b0fec113e0402c329352715196f81f9" integrity sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw== -react-is@16.8.6: - version "16.8.6" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16" - integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA== - -react-is@^16.12.0, react-is@^16.7.0, react-is@^16.8.1: +react-is@16.13.1, react-is@^16.12.0, react-is@^16.7.0, react-is@^16.8.1: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -react@16.13.1: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react/-/react-16.13.1.tgz#2e818822f1a9743122c063d6410d85c1e3afe48e" - integrity sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w== +react-refresh@0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f" + integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg== + +react@^17.0.1: + version "17.0.1" + resolved "https://registry.yarnpkg.com/react/-/react-17.0.1.tgz#6e0600416bd57574e3f86d92edba3d9008726127" + integrity sha512-lG9c9UuMHdcAexXtigOZLX8exLWkW0Ku29qPRU8uhF2R9BN96dLCt0psvzPLlHc5OWkgymP3qwTRgbnw5BKx3w== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" - prop-types "^15.6.2" read-pkg-up@^1.0.1: version "1.0.1" @@ -10086,7 +10460,7 @@ read-pkg@^5.2.0: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.6.0: +readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.5.0, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -10131,11 +10505,6 @@ reflect-metadata@^0.1.13: resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08" integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg== -reflect.ownkeys@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz#749aceec7f3fdf8b63f927a04809e90c5c0b3460" - integrity sha1-dJrO7H8/34tj+SegSAnpDFwLNGA= - regenerate-unicode-properties@^8.2.0: version "8.2.0" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" @@ -10148,11 +10517,6 @@ regenerate@^1.4.0: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.1.tgz#cad92ad8e6b591773485fbe05a485caf4f457e6f" integrity sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A== -regenerator-runtime@^0.13.2: - version "0.13.7" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" - integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== - regenerator-runtime@^0.13.4: version "0.13.5" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" @@ -10173,10 +10537,10 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regex-parser@2.2.10: - version "2.2.10" - resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.10.tgz#9e66a8f73d89a107616e63b39d4deddfee912b37" - integrity sha512-8t6074A68gHfU8Neftl0Le6KTDwfGAj7IyjPIMSfikI2wJUTHDMaIq42bUsfVnj8mhx0R+45rdUXHGpN164avA== +regex-parser@^2.2.11: + version "2.2.11" + resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.11.tgz#3b37ec9049e19479806e878cabe7c1ca83ccfe58" + integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== regexp.prototype.flags@^1.3.0: version "1.3.0" @@ -10203,6 +10567,18 @@ regexpu-core@^4.7.0: unicode-match-property-ecmascript "^1.0.4" unicode-match-property-value-ecmascript "^1.2.0" +regexpu-core@^4.7.1: + version "4.7.1" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" + integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.2.0" + regjsgen@^0.5.1: version "0.5.2" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" @@ -10346,22 +10722,17 @@ resolve-from@5.0.0, resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= - resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve-url-loader@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.1.tgz#28931895fa1eab9be0647d3b2958c100ae3c0bf0" - integrity sha512-K1N5xUjj7v0l2j/3Sgs5b8CjrrgtC70SmdCuZiJ8tSyb5J+uk3FoeZ4b7yTnH6j7ngI+Bc5bldHJIa8hYdu2gQ== +resolve-url-loader@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.2.tgz#235e2c28e22e3e432ba7a5d4e305c59a58edfc08" + integrity sha512-QEb4A76c8Mi7I3xNKXlRKQSlLBwjUV/ULFMP+G7n3/7tJZ8MG5wsZ3ucxP1Jz8Vevn6fnJsxDx9cIls+utGzPQ== dependencies: - adjust-sourcemap-loader "2.0.0" + adjust-sourcemap-loader "3.0.0" camelcase "5.3.1" compose-function "3.0.3" convert-source-map "1.7.0" @@ -10384,6 +10755,13 @@ resolve@^1.0.0, resolve@^1.10.0, resolve@^1.17.0, resolve@^1.3.2, resolve@^1.8.1 dependencies: path-parse "^1.0.6" +responselike@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= + dependencies: + lowercase-keys "^1.0.0" + restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" @@ -10428,16 +10806,6 @@ rework@1.0.1: convert-source-map "^0.3.3" css "^2.0.0" -rgb-regex@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" - integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= - -rgba-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" - integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= - rimraf@2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" @@ -10547,16 +10915,16 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" -sass-loader@8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-8.0.2.tgz#debecd8c3ce243c76454f2e8290482150380090d" - integrity sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ== +sass-loader@10.0.2: + version "10.0.2" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.0.2.tgz#c7b73010848b264792dd45372eea0b87cba4401e" + integrity sha512-wV6NDUVB8/iEYMalV/+139+vl2LaRFlZGEd5/xmdcdzQcgmis+npyco6NsDTVOlNA3y2NV9Gcz+vHyFMIT+ffg== dependencies: - clone-deep "^4.0.1" - loader-utils "^1.2.3" - neo-async "^2.6.1" - schema-utils "^2.6.1" - semver "^6.3.0" + klona "^2.0.3" + loader-utils "^2.0.0" + neo-async "^2.6.2" + schema-utils "^2.7.1" + semver "^7.3.2" sass@^1.26.10: version "1.26.10" @@ -10565,7 +10933,7 @@ sass@^1.26.10: dependencies: chokidar ">=2.0.0 <4.0.0" -sax@>=0.6.0, sax@^1.2.4, sax@~1.2.4: +sax@>=0.6.0, sax@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== @@ -10585,14 +10953,23 @@ scheduler@^0.18.0: loose-envify "^1.1.0" object-assign "^4.1.1" -scheduler@^0.19.1: - version "0.19.1" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" - integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA== +scheduler@^0.20.1: + version "0.20.1" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.1.tgz#da0b907e24026b01181ecbc75efdc7f27b5a000c" + integrity sha512-LKTe+2xNJBNxu/QhHvDR14wUXHRQbVY5ZOYpOGWRzhydZUqrLb2JBvLPY7cAqFmqrWuDED0Mjk7013SZiOz6Bw== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" +schema-utils@2.7.1, schema-utils@^2.6.6, schema-utils@^2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== + dependencies: + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" + schema-utils@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" @@ -10602,15 +10979,6 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" -schema-utils@^2.0.1, schema-utils@^2.6.0, schema-utils@^2.6.1: - version "2.7.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" - integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== - dependencies: - "@types/json-schema" "^7.0.4" - ajv "^6.12.2" - ajv-keywords "^3.4.1" - "schema@file:src/schema": version "1.0.0" @@ -10733,18 +11101,26 @@ sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - dependencies: - kind-of "^6.0.2" - shallowequal@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== +sharp@0.26.2: + version "0.26.2" + resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.26.2.tgz#3d5777d246ae32890afe82a783c1cbb98456a88c" + integrity sha512-bGBPCxRAvdK9bX5HokqEYma4j/Q5+w8Nrmb2/sfgQCLEUx/HblcpmOfp59obL3+knIKnOhyKmDb4tEOhvFlp6Q== + dependencies: + color "^3.1.2" + detect-libc "^1.0.3" + node-addon-api "^3.0.2" + npmlog "^4.1.2" + prebuild-install "^5.3.5" + semver "^7.3.2" + simple-get "^4.0.0" + tar-fs "^2.1.0" + tunnel-agent "^0.6.0" + shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -10769,7 +11145,7 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shell-quote@^1.6.1: +shell-quote@1.7.2, shell-quote@^1.6.1: version "1.7.2" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== @@ -10797,6 +11173,29 @@ signedsource@^1.0.0: resolved "https://registry.yarnpkg.com/signedsource/-/signedsource-1.0.0.tgz#1ddace4981798f93bd833973803d80d52e93ad6a" integrity sha1-HdrOSYF5j5O9gzlzgD2A1S6TrWo= +simple-concat@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + +simple-get@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-3.1.0.tgz#b45be062435e50d159540b576202ceec40b9c6b3" + integrity sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA== + dependencies: + decompress-response "^4.2.0" + once "^1.3.1" + simple-concat "^1.0.0" + +simple-get@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.0.tgz#73fa628278d21de83dadd5512d2cc1f4872bd675" + integrity sha512-ZalZGexYr3TA0SwySsr5HlgOOinS4Jsa8YB2GJ6lUNAazyAu4KG/VmzMTwAt2YVXzzVj8QmefmAonZIK2BSGcQ== + dependencies: + decompress-response "^6.0.0" + once "^1.3.1" + simple-concat "^1.0.0" + simple-git@2.11.0: version "2.11.0" resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-2.11.0.tgz#5bd99fe3465dcbcb82f0eb23ab3c1615cb947374" @@ -10885,13 +11284,6 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -sort-keys@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" - integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= - dependencies: - is-plain-obj "^1.0.0" - source-list-map@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" @@ -10931,6 +11323,13 @@ source-map@0.7.3, source-map@^0.7.3: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== +source-map@0.8.0-beta.0: + version "0.8.0-beta.0" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" + integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== + dependencies: + whatwg-url "^7.0.0" + source-map@^0.5.0, source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" @@ -11011,10 +11410,12 @@ ssri@^6.0.1: dependencies: figgy-pudding "^3.5.1" -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== +ssri@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.0.tgz#79ca74e21f8ceaeddfcb4b90143c458b8d988808" + integrity sha512-aq/pz989nxVYwn16Tsbj1TqFpD5LLrQxHf5zaHuieFV+R0Bbr4y8qUsOA45hXT/N4/9UNXTarBjnjVmjSOVaAA== + dependencies: + minipass "^3.1.1" stack-utils@^2.0.2: version "2.0.2" @@ -11023,6 +11424,13 @@ stack-utils@^2.0.2: dependencies: escape-string-regexp "^2.0.0" +stacktrace-parser@0.1.10: + version "0.1.10" + resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" + integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== + dependencies: + type-fest "^0.7.1" + static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -11041,6 +11449,14 @@ stealthy-require@^1.1.1: resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= +stream-browserify@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" + integrity sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA== + dependencies: + inherits "~2.0.4" + readable-stream "^3.5.0" + stream-browserify@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" @@ -11078,11 +11494,6 @@ streamsearch@0.1.2: resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-0.1.2.tgz#808b9d0e56fc273d809ba57338e929919a1a9f1a" integrity sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo= -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= - string-argv@0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" @@ -11200,6 +11611,13 @@ stringify-object@^3.3.0: is-obj "^1.0.1" is-regexp "^1.0.0" +strip-ansi@6.0.0, strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" @@ -11221,13 +11639,6 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" @@ -11272,13 +11683,13 @@ strip-json-comments@^3.1.0: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -style-loader@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.0.0.tgz#1d5296f9165e8e2c85d24eee0b7caf9ec8ca1f82" - integrity sha512-B0dOCFwv7/eY31a5PCieNwMgMhVGFe9w+rh7s/Bx8kfFkrth9zfTZquoYvdw8URgiqxObQKcpW51Ugz1HjfdZw== +style-loader@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.2.1.tgz#c5cbbfbf1170d076cfdd86e0109c5bba114baa1a" + integrity sha512-ByHSTQvHLkWE9Ir5+lGbVOXhxX10fbprhLvdg96wedFZb4NDekDPxVKv5Fwmio+QcMlkkNfuK+5W1peQ5CUhZg== dependencies: - loader-utils "^1.2.3" - schema-utils "^2.0.1" + loader-utils "^2.0.0" + schema-utils "^2.6.6" styled-components@^5.1.1: version "5.1.1" @@ -11296,10 +11707,10 @@ styled-components@^5.1.1: shallowequal "^1.1.0" supports-color "^5.5.0" -styled-jsx@3.2.5: - version "3.2.5" - resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-3.2.5.tgz#0172a3e13a0d6d8bf09167dcaf32cf7102d932ca" - integrity sha512-prEahkYwQHomUljJzXzrFnBmQrSMtWOBbXn8QeEkpfFkqMZQGshxzzp4H8ebBIsbVlHF/3+GSXMnmK/fp7qVYQ== +styled-jsx@3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-3.3.1.tgz#d79f306c42c99cefbe8e76f35dad8100dc5c9ecc" + integrity sha512-RhW71t3k95E3g7Zq3lEBk+kmf+p4ZME7c5tfsYf9M5mq6CgIvFXkbvhawL2gWriXLRlMyKAYACE89Qa2JnTqUw== dependencies: "@babel/types" "7.8.3" babel-plugin-syntax-jsx "6.18.0" @@ -11310,15 +11721,6 @@ styled-jsx@3.2.5: stylis "3.5.4" stylis-rule-sheet "0.0.10" -stylehacks@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" - integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - stylis-rule-sheet@0.0.10: version "0.0.10" resolved "https://registry.yarnpkg.com/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz#44e64a2b076643f4b52e5ff71efc04d8c3c4a430" @@ -11385,25 +11787,6 @@ supports-hyperlinks@^2.0.0: has-flag "^4.0.0" supports-color "^7.0.0" -svgo@^1.0.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" - integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== - dependencies: - chalk "^2.4.1" - coa "^2.0.2" - css-select "^2.0.0" - css-select-base-adapter "^0.1.1" - css-tree "1.0.0-alpha.37" - csso "^4.0.2" - js-yaml "^3.13.1" - mkdirp "~0.5.1" - object.values "^1.1.0" - sax "~1.2.4" - stable "^0.1.8" - unquote "~1.1.1" - util.promisify "~1.0.0" - symbol-observable@^1.0.4, symbol-observable@^1.1.0, symbol-observable@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" @@ -11434,6 +11817,27 @@ tapable@^1.0.0, tapable@^1.1.3: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== +tar-fs@^2.0.0, tar-fs@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.0.tgz#d1cdd121ab465ee0eb9ccde2d35049d3f3daf0d5" + integrity sha512-9uW5iDvrIMCVpvasdFHW0wJPez0K4JnMZtsuIeDI7HyMGJNxmDZDOCQROr7lXyS+iL/QMpj07qcjGYTSdRFXUg== + dependencies: + chownr "^1.1.1" + mkdirp-classic "^0.5.2" + pump "^3.0.0" + tar-stream "^2.0.0" + +tar-stream@^2.0.0: + version "2.1.4" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.4.tgz#c4fb1a11eb0da29b893a5b25476397ba2d053bfa" + integrity sha512-o3pS2zlG4gxr67GmFYBLlq+dM8gyRGUOvsrHclSkvtVtQbjV0s/+ZE8OpICbaj8clrX3tjeHngYGP7rweaBnuw== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + tar@^2.0.0: version "2.2.2" resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz#0ca8848562c7299b8b446ff6a4d60cdbb23edc40" @@ -11456,6 +11860,18 @@ tar@^4, tar@^4.4.2: safe-buffer "^5.1.2" yallist "^3.0.3" +tar@^6.0.2: + version "6.0.5" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.0.5.tgz#bde815086e10b39f1dcd298e89d596e1535e200f" + integrity sha512-0b4HOimQHj9nXNEAA7zWwMM91Zhhba3pspja6sQbgTpynOJf+bkjBnfybNYzbpLbnwXnbyB4LOREvlyXLkCHSg== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^3.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + terminal-link@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" @@ -11479,10 +11895,10 @@ terser-webpack-plugin@^1.4.3: webpack-sources "^1.4.0" worker-farm "^1.7.0" -terser@4.6.8: - version "4.6.8" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.8.tgz#62ccb14a52f102418ad6061dfef45076f13e5fa2" - integrity sha512-drV7ga6ZlIpBtitvb87Uk7P7gAJkCt3j/TqZr9wwF4Dlt0MBn52ANIAyuvP1F605WdPY4w6vT63u6KTWqaXFRQ== +terser@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.1.0.tgz#1f4ab81c8619654fdded51f3157b001e1747281d" + integrity sha512-pwC1Jbzahz1ZPU87NQ8B3g5pKbhyJSiHih4gLH6WZiPU8mmS1IlGbB0A2Nuvkj/LCNsgIKctg6GkYwWCeTvXZQ== dependencies: commander "^2.20.0" source-map "~0.6.1" @@ -11559,11 +11975,6 @@ timers-browserify@^2.0.4: dependencies: setimmediate "^1.0.4" -timsort@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" - integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= - tiny-warning@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" @@ -11598,6 +12009,11 @@ to-object-path@^0.3.0: dependencies: kind-of "^3.0.2" +to-readable-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" + integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== + to-regex-range@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" @@ -11650,6 +12066,13 @@ tough-cookie@^3.0.1: psl "^1.1.28" punycode "^2.1.1" +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= + dependencies: + punycode "^2.1.0" + tr46@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" @@ -11728,7 +12151,7 @@ ts-node@^8.10.2: source-map-support "^0.5.17" yn "3.1.1" -ts-pnp@^1.1.2: +ts-pnp@^1.1.6: version "1.2.0" resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== @@ -11806,6 +12229,11 @@ type-fest@^0.6.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== +type-fest@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" + integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== + type-fest@^0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" @@ -11925,11 +12353,6 @@ uniq@^1.0.1: resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= -uniqs@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" - integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= - unique-filename@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" @@ -11976,11 +12399,6 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= -unquote@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" - integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= - unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" @@ -12013,6 +12431,13 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= + dependencies: + prepend-http "^2.0.0" + url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" @@ -12021,10 +12446,12 @@ url@^0.11.0: punycode "1.3.2" querystring "0.2.0" -use-subscription@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/use-subscription/-/use-subscription-1.1.1.tgz#5509363e9bb152c4fb334151d4dceb943beaa7bb" - integrity sha512-gk4fPTYvNhs6Ia7u8/+K7bM7sZ7O7AMfWtS+zPO8luH+zWuiGgGcrW0hL4MRWZSzXo+4ofNorf87wZwBKz2YdQ== +use-subscription@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/use-subscription/-/use-subscription-1.5.0.tgz#0df66fdf97b9a340147ad72f76fac1db6f56d240" + integrity sha512-/FVRiB2I7NDjzWoNBYPt6YkkvleMm/lFtxj1hH6nX2TVrJ/5UTbovw9OE1efv2Zl0HoAYuTjM7zHd9OsABn5sg== + dependencies: + object-assign "^4.1.1" use@^3.1.0: version "3.1.1" @@ -12036,7 +12463,7 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -util.promisify@^1.0.0, util.promisify@~1.0.0: +util.promisify@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== @@ -12117,11 +12544,6 @@ vary@^1, vary@~1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= -vendors@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" - integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== - verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" @@ -12131,7 +12553,7 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vm-browserify@^1.0.1: +vm-browserify@1.1.2, vm-browserify@^1.0.1: version "1.1.2" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== @@ -12180,7 +12602,7 @@ watchpack@2.0.0-beta.13: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" -watchpack@^1.6.0: +watchpack@^1.7.4: version "1.7.4" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.4.tgz#6e9da53b3c80bb2d6508188f5b200410866cd30b" integrity sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg== @@ -12191,6 +12613,16 @@ watchpack@^1.6.0: chokidar "^3.4.1" watchpack-chokidar2 "^2.0.0" +web-vitals@0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-0.2.4.tgz#ec3df43c834a207fd7cdefd732b2987896e08511" + integrity sha512-6BjspCO9VriYy12z356nL6JBS0GYeEcA457YyRzD+dD6XYCQ75NKhcOHUMHentOE7OcVCIXXDvOm0jKFfQG2Gg== + +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + webidl-conversions@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" @@ -12201,7 +12633,7 @@ webidl-conversions@^6.0.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== -webpack-sources@1.4.3, webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1: +webpack-sources@1.4.3, webpack-sources@^1.4.0, webpack-sources@^1.4.1: version "1.4.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== @@ -12209,20 +12641,20 @@ webpack-sources@1.4.3, webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-s source-list-map "^2.0.0" source-map "~0.6.1" -webpack@4.42.1: - version "4.42.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.42.1.tgz#ae707baf091f5ca3ef9c38b884287cfe8f1983ef" - integrity sha512-SGfYMigqEfdGchGhFFJ9KyRpQKnipvEvjc1TwrXEPCM6H5Wywu10ka8o3KGrMzSMxMQKt8aCHUFh5DaQ9UmyRg== +webpack@4.44.1: + version "4.44.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.1.tgz#17e69fff9f321b8f117d1fda714edfc0b939cc21" + integrity sha512-4UOGAohv/VGUNQJstzEywwNxqX417FnjZgZJpJQegddzPmTvph37eBIRbRTfdySXzVtJXLJfbMN3mMYhM6GdmQ== dependencies: "@webassemblyjs/ast" "1.9.0" "@webassemblyjs/helper-module-context" "1.9.0" "@webassemblyjs/wasm-edit" "1.9.0" "@webassemblyjs/wasm-parser" "1.9.0" - acorn "^6.2.1" + acorn "^6.4.1" ajv "^6.10.2" ajv-keywords "^3.4.1" chrome-trace-event "^1.0.2" - enhanced-resolve "^4.1.0" + enhanced-resolve "^4.3.0" eslint-scope "^4.0.3" json-parse-better-errors "^1.0.2" loader-runner "^2.4.0" @@ -12235,7 +12667,7 @@ webpack@4.42.1: schema-utils "^1.0.0" tapable "^1.1.3" terser-webpack-plugin "^1.4.3" - watchpack "^1.6.0" + watchpack "^1.7.4" webpack-sources "^1.4.1" websocket@1.0.31: @@ -12271,6 +12703,15 @@ whatwg-mimetype@^2.3.0: resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== +whatwg-url@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + whatwg-url@^8.0.0: version "8.1.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.1.0.tgz#c628acdcf45b82274ce7281ee31dd3c839791771" @@ -12323,13 +12764,6 @@ worker-farm@^1.7.0: dependencies: errno "~0.1.7" -worker-rpc@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5" - integrity sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg== - dependencies: - microevent.ts "~0.1.1" - wrap-ansi@7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"