├── server ├── src │ ├── album │ │ └── album.schema.ts │ ├── track │ │ ├── dto │ │ │ ├── create-track.dto.ts │ │ │ └── create-comment.dto.ts │ │ ├── schemas │ │ │ ├── comment.schema.ts │ │ │ └── track.schema.ts │ │ ├── track.module.ts │ │ ├── track.controller.ts │ │ └── track.service.ts │ ├── file │ │ ├── file.module.ts │ │ └── file.service.ts │ ├── main.ts │ └── app.module.ts ├── .prettierrc ├── nest-cli.json ├── tsconfig.build.json ├── tsconfig.json ├── .gitignore ├── .eslintrc.js ├── package.json └── README.md ├── README.md └── client ├── next-env.d.ts ├── public ├── favicon.ico └── vercel.svg ├── styles ├── TrackItem.module.scss └── Player.module.scss ├── store ├── actions-creators │ ├── index.ts │ ├── track.ts │ └── player.ts ├── reducers │ ├── trackReducer.ts │ ├── index.ts │ └── playerReducer.ts └── index.ts ├── hooks ├── useTypedSelector.ts ├── useActions.ts └── useInput.ts ├── pages ├── _app.tsx ├── index.tsx └── tracks │ ├── index.tsx │ ├── create.tsx │ └── [id].tsx ├── .gitignore ├── tsconfig.json ├── components ├── TrackProgress.tsx ├── TrackList.tsx ├── FileUpload.tsx ├── StepWrapper.tsx ├── TrackItem.tsx ├── Player.tsx └── Navbar.tsx ├── package.json ├── types ├── track.ts └── player.ts ├── layouts └── MainLayout.tsx ├── README.md └── package-lock.json /server/src/album/album.schema.ts: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /server/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true, 3 | "trailingComma": "all" 4 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # npm run start:dev - запуск сервера 2 | # npm run dev - запуск клиента 3 | -------------------------------------------------------------------------------- /client/next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | -------------------------------------------------------------------------------- /server/nest-cli.json: -------------------------------------------------------------------------------- 1 | { 2 | "collection": "@nestjs/schematics", 3 | "sourceRoot": "src" 4 | } 5 | -------------------------------------------------------------------------------- /client/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/utimur/music-platform-course/HEAD/client/public/favicon.ico -------------------------------------------------------------------------------- /server/tsconfig.build.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "exclude": ["node_modules", "test", "dist", "**/*spec.ts"] 4 | } 5 | -------------------------------------------------------------------------------- /client/styles/TrackItem.module.scss: -------------------------------------------------------------------------------- 1 | 2 | .track { 3 | margin: 20px; 4 | padding: 10px; 5 | display: flex; 6 | align-items: center; 7 | } 8 | -------------------------------------------------------------------------------- /server/src/track/dto/create-track.dto.ts: -------------------------------------------------------------------------------- 1 | export class CreateTrackDto { 2 | readonly name; 3 | readonly artist; 4 | readonly text; 5 | } 6 | -------------------------------------------------------------------------------- /client/store/actions-creators/index.ts: -------------------------------------------------------------------------------- 1 | import * as PlayerActionCreators from '../actions-creators/player' 2 | 3 | 4 | export default { 5 | ...PlayerActionCreators 6 | } 7 | -------------------------------------------------------------------------------- /server/src/file/file.module.ts: -------------------------------------------------------------------------------- 1 | import {Module} from "@nestjs/common"; 2 | import {FileService} from "./file.service"; 3 | 4 | 5 | @Module({ 6 | providers: [FileService] 7 | }) 8 | export class FileModule {} 9 | -------------------------------------------------------------------------------- /server/src/track/dto/create-comment.dto.ts: -------------------------------------------------------------------------------- 1 | import {ObjectId} from "mongoose"; 2 | 3 | export class CreateCommentDto { 4 | readonly username: string; 5 | readonly text: string; 6 | readonly trackId: ObjectId; 7 | } 8 | -------------------------------------------------------------------------------- /client/hooks/useTypedSelector.ts: -------------------------------------------------------------------------------- 1 | import {TypedUseSelectorHook, useSelector} from "react-redux"; 2 | import {RootState} from "../store/reducers"; 3 | 4 | 5 | export const useTypedSelector: TypedUseSelectorHook = useSelector 6 | -------------------------------------------------------------------------------- /client/styles/Player.module.scss: -------------------------------------------------------------------------------- 1 | 2 | .player { 3 | height: 60px; 4 | width: 100%; 5 | position: fixed; 6 | bottom: 0; 7 | display: flex; 8 | align-items: center; 9 | padding: 0 10px; 10 | background-color: lightgray; 11 | } 12 | -------------------------------------------------------------------------------- /client/pages/_app.tsx: -------------------------------------------------------------------------------- 1 | import React, {FC} from 'react'; 2 | import {AppProps} from 'next/app'; 3 | import {wrapper} from "../store"; 4 | 5 | const WrappedApp: FC = ({Component, pageProps}) => ( 6 | 7 | ); 8 | 9 | export default wrapper.withRedux(WrappedApp); 10 | -------------------------------------------------------------------------------- /client/hooks/useActions.ts: -------------------------------------------------------------------------------- 1 | import {useDispatch} from "react-redux"; 2 | import {bindActionCreators} from "redux"; 3 | import ActionCreators from '../store/actions-creators' 4 | 5 | export const useActions = () => { 6 | const dispatch = useDispatch() 7 | return bindActionCreators(ActionCreators, dispatch) 8 | } 9 | -------------------------------------------------------------------------------- /client/hooks/useInput.ts: -------------------------------------------------------------------------------- 1 | import React, {useState} from "react"; 2 | 3 | 4 | export const useInput = (initialValue) => { 5 | const [value, setValue] = useState(initialValue) 6 | 7 | const onChange = (e: React.ChangeEvent) => { 8 | setValue(e.target.value) 9 | } 10 | 11 | return { 12 | value, onChange 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /server/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "declaration": true, 5 | "removeComments": true, 6 | "emitDecoratorMetadata": true, 7 | "experimentalDecorators": true, 8 | "allowSyntheticDefaultImports": true, 9 | "target": "es2017", 10 | "sourceMap": true, 11 | "outDir": "./dist", 12 | "baseUrl": "./", 13 | "incremental": true 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /server/src/main.ts: -------------------------------------------------------------------------------- 1 | import {NestFactory} from "@nestjs/core"; 2 | import {AppModule} from "./app.module"; 3 | 4 | 5 | const start = async () => { 6 | try { 7 | const PORT = process.env.PORT || 5000; 8 | const app = await NestFactory.create(AppModule); 9 | app.enableCors() 10 | await app.listen(PORT, () => console.log(`server started on PORT ${PORT}`)) 11 | } catch (e) { 12 | console.log(e) 13 | } 14 | } 15 | 16 | start() 17 | -------------------------------------------------------------------------------- /server/.gitignore: -------------------------------------------------------------------------------- 1 | # compiled output 2 | /dist 3 | /node_modules 4 | 5 | # Logs 6 | logs 7 | *.log 8 | npm-debug.log* 9 | yarn-debug.log* 10 | yarn-error.log* 11 | lerna-debug.log* 12 | 13 | # OS 14 | .DS_Store 15 | 16 | # Tests 17 | /coverage 18 | /.nyc_output 19 | 20 | # IDEs and editors 21 | /.idea 22 | .project 23 | .classpath 24 | .c9/ 25 | *.launch 26 | .settings/ 27 | *.sublime-workspace 28 | 29 | # IDE - VSCode 30 | .vscode/* 31 | !.vscode/settings.json 32 | !.vscode/tasks.json 33 | !.vscode/launch.json 34 | !.vscode/extensions.json -------------------------------------------------------------------------------- /client/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # next.js 12 | /.next/ 13 | /out/ 14 | 15 | # production 16 | /build 17 | 18 | # misc 19 | .DS_Store 20 | *.pem 21 | 22 | # debug 23 | npm-debug.log* 24 | yarn-debug.log* 25 | yarn-error.log* 26 | 27 | # local env files 28 | .env.local 29 | .env.development.local 30 | .env.test.local 31 | .env.production.local 32 | 33 | # vercel 34 | .vercel 35 | -------------------------------------------------------------------------------- /server/src/track/schemas/comment.schema.ts: -------------------------------------------------------------------------------- 1 | import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose'; 2 | import { Document } from 'mongoose'; 3 | import {Track} from "./track.schema"; 4 | import * as mongoose from 'mongoose' 5 | 6 | export type CommentDocument = Comment & Document; 7 | 8 | @Schema() 9 | export class Comment { 10 | @Prop() 11 | username: string; 12 | 13 | @Prop() 14 | text: string; 15 | 16 | @Prop({type: mongoose.Schema.Types.ObjectId, ref: 'Track'}) 17 | track: Track; 18 | } 19 | 20 | export const CommentSchema = SchemaFactory.createForClass(Comment); 21 | -------------------------------------------------------------------------------- /client/store/reducers/trackReducer.ts: -------------------------------------------------------------------------------- 1 | import {TrackAction, TrackActionTypes, TrackState} from "../../types/track"; 2 | 3 | const initialState: TrackState = { 4 | tracks: [], 5 | error: '' 6 | } 7 | 8 | export const trackReducer = (state = initialState, action: TrackAction): TrackState => { 9 | switch (action.type) { 10 | case TrackActionTypes.FETCH_TRACKS_ERROR: 11 | return {...state, error: action.payload} 12 | case TrackActionTypes.FETCH_TRACKS: 13 | return {error: '', tracks: action.payload} 14 | default: 15 | return state 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /client/store/index.ts: -------------------------------------------------------------------------------- 1 | 2 | 3 | // create a makeStore function 4 | import {Context, createWrapper, MakeStore} from "next-redux-wrapper"; 5 | import {AnyAction, applyMiddleware, createStore} from "redux"; 6 | import {reducer, RootState} from "./reducers"; 7 | import thunk, {ThunkAction, ThunkDispatch} from "redux-thunk"; 8 | 9 | const makeStore: MakeStore 10 | = (context: Context) => createStore(reducer, applyMiddleware(thunk)); 11 | 12 | // export an assembled wrapper 13 | export const wrapper = createWrapper(makeStore, {debug: true}); 14 | 15 | export type NextThunkDispatch = ThunkDispatch 16 | -------------------------------------------------------------------------------- /server/src/app.module.ts: -------------------------------------------------------------------------------- 1 | import {Module} from "@nestjs/common"; 2 | import {TrackModule} from "./track/track.module"; 3 | import {MongooseModule} from "@nestjs/mongoose"; 4 | import {FileModule} from "./file/file.module"; 5 | import * as path from 'path' 6 | import {ServeStaticModule} from "@nestjs/serve-static"; 7 | 8 | @Module({ 9 | imports: [ 10 | ServeStaticModule.forRoot({rootPath: path.resolve(__dirname, 'static')}), 11 | MongooseModule.forRoot('mongodb+srv://admin:admin@cluster0.oeudk.mongodb.net/music-platform?retryWrites=true&w=majority'), 12 | TrackModule, 13 | FileModule 14 | ] 15 | }) 16 | export class AppModule {} 17 | -------------------------------------------------------------------------------- /client/store/actions-creators/track.ts: -------------------------------------------------------------------------------- 1 | import {Dispatch} from "react"; 2 | import {TrackAction, TrackActionTypes} from "../../types/track"; 3 | import axios from "axios"; 4 | 5 | export const fetchTracks = () => { 6 | return async (dispatch: Dispatch) => { 7 | try { 8 | const response = await axios.get('http://localhost:5000/tracks') 9 | dispatch({type: TrackActionTypes.FETCH_TRACKS, payload: response.data}) 10 | } catch (e) { 11 | dispatch({ 12 | type: TrackActionTypes.FETCH_TRACKS_ERROR, 13 | payload: 'Произошла ошибка при загрузке треков'}) 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /client/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": [ 5 | "dom", 6 | "dom.iterable", 7 | "esnext" 8 | ], 9 | "allowJs": true, 10 | "skipLibCheck": true, 11 | "strict": false, 12 | "forceConsistentCasingInFileNames": true, 13 | "noEmit": true, 14 | "esModuleInterop": true, 15 | "module": "esnext", 16 | "moduleResolution": "node", 17 | "resolveJsonModule": true, 18 | "isolatedModules": true, 19 | "jsx": "preserve" 20 | }, 21 | "include": [ 22 | "next-env.d.ts", 23 | "**/*.ts", 24 | "**/*.tsx" 25 | ], 26 | "exclude": [ 27 | "node_modules" 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /server/src/track/schemas/track.schema.ts: -------------------------------------------------------------------------------- 1 | import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose'; 2 | import {Document} from 'mongoose'; 3 | import * as mongoose from 'mongoose' 4 | 5 | export type TrackDocument = Track & Document; 6 | 7 | @Schema() 8 | export class Track { 9 | @Prop() 10 | name: string; 11 | 12 | @Prop() 13 | artist: string; 14 | 15 | @Prop() 16 | text: string; 17 | 18 | @Prop() 19 | listens: number; 20 | 21 | @Prop() 22 | picture: string; 23 | 24 | @Prop() 25 | audio: string; 26 | 27 | @Prop({type: [{type: mongoose.Schema.Types.ObjectId, ref: 'Comment'}]}) 28 | comments: Comment[]; 29 | } 30 | 31 | export const TrackSchema = SchemaFactory.createForClass(Track); 32 | -------------------------------------------------------------------------------- /client/components/TrackProgress.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | interface TrackProgressProps { 4 | left: number; 5 | right: number; 6 | onChange: (e) => void 7 | } 8 | 9 | const TrackProgress: React.FC = 10 | ({ 11 | left, right, onChange 12 | }) => { 13 | return ( 14 | 15 | 22 | {left} / {right} 23 | 24 | ); 25 | }; 26 | 27 | export default TrackProgress; 28 | -------------------------------------------------------------------------------- /server/src/track/track.module.ts: -------------------------------------------------------------------------------- 1 | import {Module} from "@nestjs/common"; 2 | import {TrackController} from "./track.controller"; 3 | import {TrackService} from "./track.service"; 4 | import {MongooseModule} from "@nestjs/mongoose"; 5 | import {Track, TrackSchema} from "./schemas/track.schema"; 6 | import {Comment, CommentSchema} from "./schemas/comment.schema"; 7 | import {FileService} from "../file/file.service"; 8 | 9 | 10 | @Module({ 11 | imports: [ 12 | MongooseModule.forFeature([{name: Track.name, schema: TrackSchema}]), 13 | MongooseModule.forFeature([{name: Comment.name, schema: CommentSchema}]), 14 | ], 15 | controllers: [TrackController], 16 | providers: [TrackService, FileService] 17 | }) 18 | export class TrackModule {} 19 | -------------------------------------------------------------------------------- /client/components/TrackList.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import {ITrack} from "../types/track"; 3 | import {Box, Grid} from "@material-ui/core"; 4 | import {Book} from "@material-ui/icons"; 5 | import TrackItem from "./TrackItem"; 6 | 7 | interface TrackListProps { 8 | tracks: ITrack[] 9 | } 10 | 11 | const TrackList: React.FC = ({tracks}) => { 12 | 13 | return ( 14 | 15 | 16 | {tracks.map(track => 17 | 21 | )} 22 | 23 | 24 | ); 25 | }; 26 | 27 | export default TrackList; 28 | -------------------------------------------------------------------------------- /server/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | parser: '@typescript-eslint/parser', 3 | parserOptions: { 4 | project: 'tsconfig.json', 5 | sourceType: 'module', 6 | }, 7 | plugins: ['@typescript-eslint/eslint-plugin'], 8 | extends: [ 9 | 'plugin:@typescript-eslint/recommended', 10 | 'prettier/@typescript-eslint', 11 | 'plugin:prettier/recommended', 12 | ], 13 | root: true, 14 | env: { 15 | node: true, 16 | jest: true, 17 | }, 18 | ignorePatterns: ['.eslintrc.js'], 19 | rules: { 20 | '@typescript-eslint/interface-name-prefix': 'off', 21 | '@typescript-eslint/explicit-function-return-type': 'off', 22 | '@typescript-eslint/explicit-module-boundary-types': 'off', 23 | '@typescript-eslint/no-explicit-any': 'off', 24 | }, 25 | }; 26 | -------------------------------------------------------------------------------- /client/components/FileUpload.tsx: -------------------------------------------------------------------------------- 1 | import React, {useRef} from 'react'; 2 | 3 | interface FileUploadProps { 4 | setFile: Function; 5 | accept: string; 6 | } 7 | 8 | const FileUpload: React.FC = ({setFile, accept, children}) => { 9 | const ref = useRef() 10 | 11 | const onChange = (e: React.ChangeEvent) => { 12 | setFile(e.target.files[0]) 13 | } 14 | 15 | return ( 16 | ref.current.click()}> 17 | 24 | {children} 25 | 26 | ); 27 | }; 28 | 29 | export default FileUpload; 30 | -------------------------------------------------------------------------------- /client/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "client", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "next dev", 7 | "build": "next build", 8 | "start": "next start" 9 | }, 10 | "dependencies": { 11 | "@emotion/react": "^11.1.4", 12 | "@emotion/styled": "^11.0.0", 13 | "@material-ui/core": "^5.0.0-alpha.24", 14 | "@material-ui/icons": "^4.11.2", 15 | "@types/react-redux": "^7.1.16", 16 | "axios": "^0.21.1", 17 | "next": "10.0.6", 18 | "next-redux-wrapper": "^6.0.2", 19 | "react": "17.0.1", 20 | "react-dom": "17.0.1", 21 | "react-redux": "^7.2.2", 22 | "redux": "^4.0.5", 23 | "redux-thunk": "^2.3.0", 24 | "sass": "^1.32.6" 25 | }, 26 | "devDependencies": { 27 | "@types/node": "^14.14.25", 28 | "@types/react": "^17.0.1", 29 | "typescript": "^4.1.3" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /client/store/reducers/index.ts: -------------------------------------------------------------------------------- 1 | import {combineReducers} from "redux"; 2 | import {playerReducer} from "./playerReducer"; 3 | import {HYDRATE} from "next-redux-wrapper"; 4 | import {trackReducer} from "./trackReducer"; 5 | 6 | 7 | const rootReducer = combineReducers({ 8 | player: playerReducer, 9 | track: trackReducer 10 | }) 11 | 12 | export const reducer = (state, action) => { 13 | if (action.type === HYDRATE) { 14 | const nextState = { 15 | ...state, // use previous state 16 | ...action.payload, // apply delta from hydration 17 | } 18 | if (state.count) nextState.count = state.count // preserve count value on client side navigation 19 | return nextState 20 | } else { 21 | return rootReducer(state, action) 22 | } 23 | } 24 | 25 | export type RootState = ReturnType 26 | -------------------------------------------------------------------------------- /client/types/track.ts: -------------------------------------------------------------------------------- 1 | export interface IComment { 2 | _id: string; 3 | username: string; 4 | text: string 5 | } 6 | 7 | export interface ITrack { 8 | _id: string; 9 | name: string; 10 | artist: string; 11 | text: string; 12 | listens: number; 13 | picture: string; 14 | audio: string; 15 | comments: IComment[] 16 | } 17 | 18 | export interface TrackState { 19 | tracks: ITrack[]; 20 | error: string; 21 | } 22 | 23 | export enum TrackActionTypes { 24 | FETCH_TRACKS = 'FETCH_TRACKS', 25 | FETCH_TRACKS_ERROR = 'FETCH_TRACKS_ERROR', 26 | } 27 | 28 | interface FetchTracksAction { 29 | type: TrackActionTypes.FETCH_TRACKS; 30 | payload: ITrack[] 31 | } 32 | 33 | interface FetchTracksErrorAction { 34 | type: TrackActionTypes.FETCH_TRACKS_ERROR; 35 | payload: string 36 | } 37 | 38 | export type TrackAction = FetchTracksAction | FetchTracksErrorAction 39 | -------------------------------------------------------------------------------- /client/store/actions-creators/player.ts: -------------------------------------------------------------------------------- 1 | import {PlayerAction, PlayerActionTypes} from "../../types/player"; 2 | import {ITrack} from "../../types/track"; 3 | 4 | 5 | export const playTrack = (): PlayerAction => { 6 | return {type: PlayerActionTypes.PLAY} 7 | } 8 | export const pauseTrack = (): PlayerAction => { 9 | return {type: PlayerActionTypes.PAUSE} 10 | } 11 | export const setDuration = (payload: number): PlayerAction => { 12 | return {type: PlayerActionTypes.SET_DURATION, payload} 13 | } 14 | export const setVolume = (payload: number): PlayerAction => { 15 | return {type: PlayerActionTypes.SET_VOLUME, payload} 16 | } 17 | export const setCurrentTime = (payload: number): PlayerAction => { 18 | return {type: PlayerActionTypes.SET_CURRENT_TIME, payload} 19 | } 20 | export const setActiveTrack = (payload: ITrack): PlayerAction => { 21 | return {type: PlayerActionTypes.SET_ACTIVE, payload} 22 | } 23 | -------------------------------------------------------------------------------- /client/pages/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import {Button} from "@material-ui/core"; 3 | import Navbar from "../components/Navbar"; 4 | import MainLayout from "../layouts/MainLayout"; 5 | 6 | const Index = () => { 7 | return ( 8 | <> 9 | 10 | 11 | Добро пожаловать! 12 | Здесь собраны лучшие треки! 13 | 14 | 15 | 16 | 26 | > 27 | ); 28 | }; 29 | 30 | export default Index; 31 | -------------------------------------------------------------------------------- /server/src/file/file.service.ts: -------------------------------------------------------------------------------- 1 | import {HttpException, HttpStatus, Injectable} from "@nestjs/common"; 2 | import * as path from 'path' 3 | import * as fs from 'fs' 4 | import * as uuid from 'uuid' 5 | 6 | export enum FileType { 7 | AUDIO = 'audio', 8 | IMAGE = 'image' 9 | } 10 | 11 | @Injectable() 12 | export class FileService{ 13 | 14 | createFile(type: FileType, file): string { 15 | try { 16 | const fileExtension = file.originalname.split('.').pop() 17 | const fileName = uuid.v4() + '.' + fileExtension 18 | const filePath = path.resolve(__dirname, '..', 'static', type) 19 | if(!fs.existsSync(filePath)) { 20 | fs.mkdirSync(filePath, {recursive: true}) 21 | } 22 | fs.writeFileSync(path.resolve(filePath, fileName), file.buffer) 23 | return type + '/' + fileName 24 | } catch (e) { 25 | throw new HttpException(e.message, HttpStatus.INTERNAL_SERVER_ERROR) 26 | } 27 | } 28 | 29 | removeFile(fileName: string) { 30 | 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /client/public/vercel.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | -------------------------------------------------------------------------------- /client/store/reducers/playerReducer.ts: -------------------------------------------------------------------------------- 1 | import {PlayerAction, PlayerActionTypes, PlayerState} from "../../types/player"; 2 | 3 | const initialState: PlayerState = { 4 | currentTime: 0, 5 | duration: 0, 6 | active: null, 7 | volume: 50, 8 | pause: true 9 | } 10 | 11 | export const playerReducer = (state = initialState, action: PlayerAction): PlayerState => { 12 | switch (action.type) { 13 | case PlayerActionTypes.PAUSE: 14 | return {...state, pause:true} 15 | case PlayerActionTypes.PLAY: 16 | return {...state, pause:false} 17 | case PlayerActionTypes.SET_CURRENT_TIME: 18 | return {...state, currentTime: action.payload} 19 | case PlayerActionTypes.SET_VOLUME: 20 | return {...state, volume: action.payload} 21 | case PlayerActionTypes.SET_DURATION: 22 | return {...state, duration: action.payload} 23 | case PlayerActionTypes.SET_ACTIVE: 24 | return {...state, active: action.payload, duration: 0, currentTime: 0} 25 | default: 26 | return state 27 | 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /client/components/StepWrapper.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import {Card, Container, Grid, Step, StepLabel, Stepper} from "@material-ui/core"; 3 | 4 | interface StepWrapperProps { 5 | activeStep: number; 6 | } 7 | const steps = ['Информация о треке', 'Загрузите обложку', 'Загрузите сам трек'] 8 | 9 | const StepWrapper: React.FC = ({activeStep, children}) => { 10 | return ( 11 | 12 | 13 | {steps.map((step, index) => 14 | index} 17 | > 18 | {step} 19 | 20 | )} 21 | 22 | 23 | 24 | {children} 25 | 26 | 27 | 28 | ); 29 | }; 30 | 31 | export default StepWrapper; 32 | -------------------------------------------------------------------------------- /client/types/player.ts: -------------------------------------------------------------------------------- 1 | import {ITrack} from "./track"; 2 | 3 | export interface PlayerState { 4 | active: null | ITrack; 5 | volume: number; 6 | duration: number; 7 | currentTime: number; 8 | pause: boolean; 9 | } 10 | 11 | export enum PlayerActionTypes { 12 | PLAY = "PLAY", 13 | PAUSE = "PAUSE", 14 | SET_ACTIVE = "SET_ACTIVE", 15 | SET_DURATION = "SET_DURATION", 16 | SET_CURRENT_TIME = "SET_CURRENT_TIME", 17 | SET_VOLUME = "SET_VOLUME", 18 | } 19 | 20 | interface PlayAction { 21 | type: PlayerActionTypes.PLAY 22 | } 23 | interface PauseAction { 24 | type: PlayerActionTypes.PAUSE 25 | } 26 | interface SetActiveAction { 27 | type: PlayerActionTypes.SET_ACTIVE, 28 | payload: ITrack; 29 | } 30 | interface SetDurationAction { 31 | type: PlayerActionTypes.SET_DURATION, 32 | payload: number; 33 | } 34 | interface SetVolumeAction { 35 | type: PlayerActionTypes.SET_VOLUME, 36 | payload: number; 37 | } 38 | interface SetCurrentTimeAction { 39 | type: PlayerActionTypes.SET_CURRENT_TIME, 40 | payload: number; 41 | } 42 | 43 | export type PlayerAction = 44 | PlayAction 45 | | PauseAction 46 | | SetActiveAction 47 | | SetDurationAction 48 | | SetVolumeAction 49 | | SetCurrentTimeAction 50 | -------------------------------------------------------------------------------- /client/layouts/MainLayout.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import Navbar from "../components/Navbar"; 3 | import {Container} from "@material-ui/core"; 4 | import Player from "../components/Player"; 5 | import Head from "next/head"; 6 | 7 | interface MainLayoutProps { 8 | title?: string; 9 | description?: string; 10 | keywords?: string; 11 | } 12 | 13 | const MainLayout: React.FC 14 | = ({ 15 | children, 16 | title, 17 | description, 18 | keywords 19 | }) => { 20 | return ( 21 | <> 22 | 23 | {title || 'Музыкальная площадка'} 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | {children} 32 | 33 | 34 | > 35 | ); 36 | }; 37 | 38 | export default MainLayout; 39 | -------------------------------------------------------------------------------- /client/README.md: -------------------------------------------------------------------------------- 1 | This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). 2 | 3 | ## Getting Started 4 | 5 | First, run the development server: 6 | 7 | ```bash 8 | npm run dev 9 | # or 10 | yarn dev 11 | ``` 12 | 13 | Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. 14 | 15 | You can start editing the page by modifying `pages/index.ts`. The page auto-updates as you edit the file. 16 | 17 | [API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.js`. 18 | 19 | The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages. 20 | 21 | ## Learn More 22 | 23 | To learn more about Next.js, take a look at the following resources: 24 | 25 | - [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. 26 | - [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. 27 | 28 | You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! 29 | 30 | ## Deploy on Vercel 31 | 32 | The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. 33 | 34 | Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. 35 | -------------------------------------------------------------------------------- /client/components/TrackItem.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import {ITrack} from "../types/track"; 3 | import {Card, Grid, IconButton} from "@material-ui/core"; 4 | import styles from '../styles/TrackItem.module.scss' 5 | import {Delete, Pause, PlayArrow} from "@material-ui/icons"; 6 | import {useRouter} from "next/router"; 7 | import {useActions} from "../hooks/useActions"; 8 | 9 | interface TrackItemProps { 10 | track: ITrack; 11 | active?: boolean; 12 | } 13 | 14 | const TrackItem: React.FC = ({track, active = false}) => { 15 | const router = useRouter() 16 | const {playTrack, pauseTrack, setActiveTrack} = useActions() 17 | 18 | const play = (e) => { 19 | e.stopPropagation() 20 | setActiveTrack(track) 21 | playTrack() 22 | } 23 | 24 | return ( 25 | router.push('/tracks/' + track._id)}> 26 | 27 | {!active 28 | ? 29 | : 30 | } 31 | 32 | 33 | 34 | {track.name} 35 | {track.artist} 36 | 37 | {active && 02:42 / 03:22} 38 | e.stopPropagation()} style={{marginLeft: 'auto'}}> 39 | 40 | 41 | 42 | ); 43 | }; 44 | 45 | export default TrackItem; 46 | -------------------------------------------------------------------------------- /server/src/track/track.controller.ts: -------------------------------------------------------------------------------- 1 | import {Body, Controller, Delete, Get, Param, Post, Query, UploadedFiles, UseInterceptors} from "@nestjs/common"; 2 | import {TrackService} from "./track.service"; 3 | import {CreateTrackDto} from "./dto/create-track.dto"; 4 | import {ObjectId} from "mongoose"; 5 | import {CreateCommentDto} from "./dto/create-comment.dto"; 6 | import {FileFieldsInterceptor} from "@nestjs/platform-express"; 7 | 8 | 9 | @Controller('/tracks') 10 | export class TrackController { 11 | constructor(private trackService: TrackService) { } 12 | 13 | @Post() 14 | @UseInterceptors(FileFieldsInterceptor([ 15 | { name: 'picture', maxCount: 1 }, 16 | { name: 'audio', maxCount: 1 }, 17 | ])) 18 | create(@UploadedFiles() files, @Body() dto: CreateTrackDto) { 19 | const {picture, audio} = files 20 | return this.trackService.create(dto, picture[0], audio[0]); 21 | } 22 | 23 | @Get() 24 | getAll(@Query('count') count: number, 25 | @Query('offset') offset: number) { 26 | return this.trackService.getAll(count, offset) 27 | } 28 | 29 | @Get('/search') 30 | search(@Query('query') query: string) { 31 | return this.trackService.search(query) 32 | } 33 | 34 | @Get(':id') 35 | getOne(@Param('id') id: ObjectId) { 36 | return this.trackService.getOne(id); 37 | } 38 | 39 | @Delete(':id') 40 | delete(@Param('id') id: ObjectId) { 41 | return this.trackService.delete(id); 42 | } 43 | 44 | @Post('/comment') 45 | addComment(@Body() dto: CreateCommentDto) { 46 | return this.trackService.addComment(dto); 47 | } 48 | 49 | @Post('/listen/:id') 50 | listen(@Param('id') id: ObjectId) { 51 | return this.trackService.listen(id); 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /client/pages/tracks/index.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import MainLayout from "../../layouts/MainLayout"; 3 | import {Box, Button, Card, Grid} from "@material-ui/core"; 4 | import {useRouter} from "next/router"; 5 | import {ITrack} from "../../types/track"; 6 | import TrackList from "../../components/TrackList"; 7 | import Player from "../../components/Player"; 8 | import {useTypedSelector} from "../../hooks/useTypedSelector"; 9 | import {useActions} from "../../hooks/useActions"; 10 | import {NextThunkDispatch, wrapper} from "../../store"; 11 | import {fetchTracks} from "../../store/actions-creators/track"; 12 | 13 | const Index = () => { 14 | const router = useRouter() 15 | const {tracks, error} = useTypedSelector(state => state.track) 16 | 17 | if (error) { 18 | return 19 | {error} 20 | 21 | } 22 | 23 | return ( 24 | 25 | 26 | 27 | 28 | 29 | Список треков 30 | router.push('/tracks/create')}> 31 | Загрузить 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | ); 40 | }; 41 | 42 | export default Index; 43 | 44 | export const getServerSideProps = wrapper.getServerSideProps(async ({store}) => { 45 | const dispatch = store.dispatch as NextThunkDispatch 46 | await dispatch(await fetchTracks()) 47 | }) 48 | -------------------------------------------------------------------------------- /server/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "server", 3 | "version": "0.0.1", 4 | "description": "", 5 | "author": "", 6 | "private": true, 7 | "license": "UNLICENSED", 8 | "scripts": { 9 | "prebuild": "rimraf dist", 10 | "build": "nest build", 11 | "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", 12 | "start": "nest start", 13 | "start:dev": "nest start --watch", 14 | "start:debug": "nest start --debug --watch", 15 | "start:prod": "node dist/main", 16 | "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", 17 | "test": "jest", 18 | "test:watch": "jest --watch", 19 | "test:cov": "jest --coverage", 20 | "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", 21 | "test:e2e": "jest --config ./test/jest-e2e.json" 22 | }, 23 | "dependencies": { 24 | "@nestjs/common": "^7.5.1", 25 | "@nestjs/core": "^7.5.1", 26 | "@nestjs/mongoose": "^7.2.2", 27 | "@nestjs/platform-express": "^7.5.1", 28 | "@nestjs/serve-static": "^2.1.4", 29 | "mongoose": "^5.11.15", 30 | "reflect-metadata": "^0.1.13", 31 | "rimraf": "^3.0.2", 32 | "rxjs": "^6.6.3", 33 | "uuid": "^8.3.2" 34 | }, 35 | "devDependencies": { 36 | "@nestjs/cli": "^7.5.1", 37 | "@nestjs/schematics": "^7.1.3", 38 | "@nestjs/testing": "^7.5.1", 39 | "@types/express": "^4.17.8", 40 | "@types/jest": "^26.0.15", 41 | "@types/node": "^14.14.6", 42 | "@types/supertest": "^2.0.10", 43 | "@typescript-eslint/eslint-plugin": "^4.6.1", 44 | "@typescript-eslint/parser": "^4.6.1", 45 | "eslint": "^7.12.1", 46 | "eslint-config-prettier": "7.2.0", 47 | "eslint-plugin-prettier": "^3.1.4", 48 | "jest": "^26.6.3", 49 | "prettier": "^2.1.2", 50 | "supertest": "^6.0.0", 51 | "ts-jest": "^26.4.3", 52 | "ts-loader": "^8.0.8", 53 | "ts-node": "^9.0.0", 54 | "tsconfig-paths": "^3.9.0", 55 | "typescript": "^4.0.5" 56 | }, 57 | "jest": { 58 | "moduleFileExtensions": [ 59 | "js", 60 | "json", 61 | "ts" 62 | ], 63 | "rootDir": "src", 64 | "testRegex": ".*\\.spec\\.ts$", 65 | "transform": { 66 | "^.+\\.(t|j)s$": "ts-jest" 67 | }, 68 | "collectCoverageFrom": [ 69 | "**/*.(t|j)s" 70 | ], 71 | "coverageDirectory": "../coverage", 72 | "testEnvironment": "node" 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /server/src/track/track.service.ts: -------------------------------------------------------------------------------- 1 | import {Injectable} from "@nestjs/common"; 2 | import {InjectModel} from "@nestjs/mongoose"; 3 | import {Track, TrackDocument} from "./schemas/track.schema"; 4 | import {Model, ObjectId} from "mongoose"; 5 | import {Comment, CommentDocument} from "./schemas/comment.schema"; 6 | import {CreateTrackDto} from "./dto/create-track.dto"; 7 | import {CreateCommentDto} from "./dto/create-comment.dto"; 8 | import {FileService, FileType} from "../file/file.service"; 9 | 10 | 11 | @Injectable() 12 | export class TrackService { 13 | 14 | constructor(@InjectModel(Track.name) private trackModel: Model, 15 | @InjectModel(Comment.name) private commentModel: Model, 16 | private fileService: FileService) {} 17 | 18 | async create(dto: CreateTrackDto, picture, audio): Promise { 19 | const audioPath = this.fileService.createFile(FileType.AUDIO, audio); 20 | const picturePath = this.fileService.createFile(FileType.IMAGE, picture); 21 | const track = await this.trackModel.create({...dto, listens: 0, audio: audioPath, picture: picturePath}) 22 | return track; 23 | } 24 | 25 | async getAll(count = 10, offset = 0): Promise { 26 | const tracks = await this.trackModel.find().skip(Number(offset)).limit(Number(count)); 27 | return tracks; 28 | } 29 | 30 | async getOne(id: ObjectId): Promise { 31 | const track = await this.trackModel.findById(id).populate('comments'); 32 | return track; 33 | } 34 | 35 | async delete(id: ObjectId): Promise { 36 | const track = await this.trackModel.findByIdAndDelete(id); 37 | return track._id 38 | } 39 | 40 | async addComment(dto: CreateCommentDto): Promise { 41 | const track = await this.trackModel.findById(dto.trackId); 42 | const comment = await this.commentModel.create({...dto}) 43 | track.comments.push(comment._id) 44 | await track.save(); 45 | return comment; 46 | } 47 | 48 | async listen(id: ObjectId) { 49 | const track = await this.trackModel.findById(id); 50 | track.listens += 1 51 | track.save() 52 | } 53 | 54 | async search(query: string): Promise { 55 | const tracks = await this.trackModel.find({ 56 | name: {$regex: new RegExp(query, 'i')} 57 | }) 58 | return tracks; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /client/components/Player.tsx: -------------------------------------------------------------------------------- 1 | import React, {useEffect} from 'react'; 2 | import {Pause, PlayArrow, VolumeUp} from "@material-ui/icons"; 3 | import {Grid, IconButton} from "@material-ui/core"; 4 | import styles from '../styles/Player.module.scss' 5 | import {ITrack} from "../types/track"; 6 | import TrackProgress from "./TrackProgress"; 7 | import {useTypedSelector} from "../hooks/useTypedSelector"; 8 | import {useActions} from "../hooks/useActions"; 9 | 10 | let audio; 11 | 12 | const Player = () => { 13 | const {pause, volume, active, duration, currentTime} = useTypedSelector(state => state.player) 14 | const {pauseTrack, playTrack, setVolume, setCurrentTime, setDuration, setActiveTrack} = useActions() 15 | 16 | useEffect(() => { 17 | if (!audio) { 18 | audio = new Audio() 19 | } else { 20 | setAudio() 21 | play() 22 | } 23 | }, [active]) 24 | 25 | const setAudio = () => { 26 | if (active) { 27 | audio.src = 'http://localhost:5000/' + active.audio 28 | audio.volume = volume / 100 29 | audio.onloadedmetadata = () => { 30 | setDuration(Math.ceil(audio.duration)) 31 | } 32 | audio.ontimeupdate = () => { 33 | setCurrentTime(Math.ceil(audio.currentTime)) 34 | } 35 | } 36 | } 37 | 38 | const play = () => { 39 | if (pause) { 40 | playTrack() 41 | audio.play() 42 | } else { 43 | pauseTrack() 44 | audio.pause() 45 | } 46 | } 47 | 48 | const changeVolume = (e: React.ChangeEvent) => { 49 | audio.volume = Number(e.target.value) / 100 50 | setVolume(Number(e.target.value)) 51 | } 52 | const changeCurrentTime = (e: React.ChangeEvent) => { 53 | audio.currentTime = Number(e.target.value) 54 | setCurrentTime(Number(e.target.value)) 55 | } 56 | 57 | if (!active) { 58 | return null 59 | } 60 | 61 | return ( 62 | 63 | 64 | {pause 65 | ? 66 | : 67 | } 68 | 69 | 70 | {active?.name} 71 | {active?.artist} 72 | 73 | 74 | 75 | 76 | 77 | ); 78 | }; 79 | 80 | export default Player; 81 | -------------------------------------------------------------------------------- /client/pages/tracks/create.tsx: -------------------------------------------------------------------------------- 1 | import React, {useState} from 'react'; 2 | import MainLayout from "../../layouts/MainLayout"; 3 | import StepWrapper from "../../components/StepWrapper"; 4 | import {Button, Grid, TextField} from "@material-ui/core"; 5 | import FileUpload from "../../components/FileUpload"; 6 | import {useInput} from "../../hooks/useInput"; 7 | import axios from "axios"; 8 | import {useRouter} from "next/router"; 9 | 10 | const Create = () => { 11 | const [activeStep, setActiveStep] = useState(0) 12 | const [picture, setPicture] = useState(null) 13 | const [audio, setAudio] = useState(null) 14 | const name = useInput('') 15 | const artist = useInput('') 16 | const text = useInput('') 17 | const router = useRouter() 18 | 19 | const next = () => { 20 | if (activeStep !== 2) { 21 | setActiveStep(prev => prev + 1) 22 | } else { 23 | const formData = new FormData() 24 | formData.append('name', name.value) 25 | formData.append('text', text.value) 26 | formData.append('artist', artist.value) 27 | formData.append('picture', picture) 28 | formData.append('audio', audio) 29 | axios.post('http://localhost:5000/tracks', formData) 30 | .then(resp => router.push('/tracks')) 31 | .catch(e => console.log(e)) 32 | } 33 | } 34 | 35 | const back = () => { 36 | setActiveStep(prev => prev - 1); 37 | } 38 | 39 | return ( 40 | 41 | 42 | {activeStep === 0 && 43 | 44 | 49 | 54 | 61 | 62 | } 63 | {activeStep === 1 && 64 | 65 | Загрузить изображение 66 | 67 | } 68 | {activeStep === 2 && 69 | 70 | Загрузить аудио 71 | 72 | } 73 | 74 | 75 | Назад 76 | Далее 77 | 78 | 79 | ); 80 | }; 81 | 82 | export default Create; 83 | -------------------------------------------------------------------------------- /client/components/Navbar.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import clsx from 'clsx'; 3 | import { makeStyles, useTheme, Theme, createStyles } from '@material-ui/core/styles'; 4 | import Drawer from '@material-ui/core/Drawer'; 5 | import CssBaseline from '@material-ui/core/CssBaseline'; 6 | import AppBar from '@material-ui/core/AppBar'; 7 | import Toolbar from '@material-ui/core/Toolbar'; 8 | import List from '@material-ui/core/List'; 9 | import Typography from '@material-ui/core/Typography'; 10 | import Divider from '@material-ui/core/Divider'; 11 | import IconButton from '@material-ui/core/IconButton'; 12 | import MenuIcon from '@material-ui/icons/Menu'; 13 | import ChevronLeftIcon from '@material-ui/icons/ChevronLeft'; 14 | import ChevronRightIcon from '@material-ui/icons/ChevronRight'; 15 | import ListItem from '@material-ui/core/ListItem'; 16 | import ListItemIcon from '@material-ui/core/ListItemIcon'; 17 | import ListItemText from '@material-ui/core/ListItemText'; 18 | import InboxIcon from '@material-ui/icons/MoveToInbox'; 19 | import MailIcon from '@material-ui/icons/Mail'; 20 | import {useRouter} from "next/router"; 21 | 22 | const menuItems = [ 23 | {text: 'Главная', href: '/'}, 24 | {text: 'Список треков', href: '/tracks'}, 25 | {text: 'Список альбомов', href: '/albums'}, 26 | ] 27 | 28 | export default function Navbar() { 29 | const [open, setOpen] = React.useState(false); 30 | const router = useRouter() 31 | 32 | const handleDrawerOpen = () => { 33 | setOpen(true); 34 | }; 35 | 36 | const handleDrawerClose = () => { 37 | setOpen(false); 38 | }; 39 | 40 | return ( 41 | 42 | 43 | 46 | 47 | 53 | 54 | 55 | 56 | Persistent drawer 57 | 58 | 59 | 60 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | {menuItems.map(({text, href}, index) => ( 72 | router.push(href)}> 73 | 74 | {index % 2 === 0 ? : } 75 | 76 | 77 | 78 | ))} 79 | 80 | 81 | 82 | ); 83 | } 84 | -------------------------------------------------------------------------------- /client/pages/tracks/[id].tsx: -------------------------------------------------------------------------------- 1 | import React, {useState} from 'react'; 2 | import {ITrack} from "../../types/track"; 3 | import MainLayout from "../../layouts/MainLayout"; 4 | import {Button, Grid, TextField} from "@material-ui/core"; 5 | import {useRouter} from "next/router"; 6 | import {GetServerSideProps} from "next"; 7 | import axios from "axios"; 8 | import {useInput} from "../../hooks/useInput"; 9 | 10 | const TrackPage = ({serverTrack}) => { 11 | const [track, setTrack] = useState(serverTrack) 12 | const router = useRouter() 13 | const username = useInput('') 14 | const text = useInput('') 15 | 16 | const addComment = async () => { 17 | try { 18 | const response = await axios.post('http://localhost:5000/tracks/comment', { 19 | username: username.value, 20 | text: text.value, 21 | trackId: track._id 22 | }) 23 | setTrack({...track, comments: [...track.comments, response.data]}) 24 | } catch (e) { 25 | console.log(e) 26 | } 27 | } 28 | 29 | return ( 30 | 34 | router.push('/tracks')} 38 | > 39 | К списку 40 | 41 | 42 | 43 | 44 | Название трека - {track.name} 45 | Исполнитель - {track.artist} 46 | Прослушиваний - {track.listens} 47 | 48 | 49 | Слова в треке 50 | {track.text} 51 | Комментарии 52 | 53 | 54 | 59 | 66 | Отправить 67 | 68 | 69 | {track.comments.map(comment => 70 | 71 | Автор - {comment.username} 72 | Комментарий - {comment.text} 73 | 74 | )} 75 | 76 | 77 | ); 78 | }; 79 | 80 | export default TrackPage; 81 | 82 | export const getServerSideProps: GetServerSideProps = async ({params}) => { 83 | const response = await axios.get('http://localhost:5000/tracks/' + params.id) 84 | return { 85 | props: { 86 | serverTrack: response.data 87 | } 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /server/README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | [circleci-image]: https://img.shields.io/circleci/build/github/nestjs/nest/master?token=abc123def456 6 | [circleci-url]: https://circleci.com/gh/nestjs/nest 7 | 8 | A progressive Node.js framework for building efficient and scalable server-side applications. 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 24 | 25 | ## Description 26 | 27 | [Nest](https://github.com/nestjs/nest) framework TypeScript starter repository. 28 | 29 | ## Installation 30 | 31 | ```bash 32 | $ npm install 33 | ``` 34 | 35 | ## Running the app 36 | 37 | ```bash 38 | # development 39 | $ npm run start 40 | 41 | # watch mode 42 | $ npm run start:dev 43 | 44 | # production mode 45 | $ npm run start:prod 46 | ``` 47 | 48 | ## Test 49 | 50 | ```bash 51 | # unit tests 52 | $ npm run test 53 | 54 | # e2e tests 55 | $ npm run test:e2e 56 | 57 | # test coverage 58 | $ npm run test:cov 59 | ``` 60 | 61 | ## Support 62 | 63 | Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please [read more here](https://docs.nestjs.com/support). 64 | 65 | ## Stay in touch 66 | 67 | - Author - [Kamil Myśliwiec](https://kamilmysliwiec.com) 68 | - Website - [https://nestjs.com](https://nestjs.com/) 69 | - Twitter - [@nestframework](https://twitter.com/nestframework) 70 | 71 | ## License 72 | 73 | Nest is [MIT licensed](LICENSE). 74 | -------------------------------------------------------------------------------- /client/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "client", 3 | "version": "0.1.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@ampproject/toolbox-core": { 8 | "version": "2.7.4", 9 | "resolved": "https://registry.npmjs.org/@ampproject/toolbox-core/-/toolbox-core-2.7.4.tgz", 10 | "integrity": "sha512-qpBhcS4urB7IKc+jx2kksN7BuvvwCo7Y3IstapWo+EW+COY5EYAUwb2pil37v3TsaqHKgX//NloFP1SKzGZAnw==", 11 | "requires": { 12 | "cross-fetch": "3.0.6", 13 | "lru-cache": "6.0.0" 14 | } 15 | }, 16 | "@ampproject/toolbox-optimizer": { 17 | "version": "2.7.1-alpha.0", 18 | "resolved": "https://registry.npmjs.org/@ampproject/toolbox-optimizer/-/toolbox-optimizer-2.7.1-alpha.0.tgz", 19 | "integrity": "sha512-WGPZKVQvHgNYJk1XVJCCmY+NVGTGJtvn0OALDyiegN4FJWOcilQUhCIcjMkZN59u1flz/u+sEKccM5qsROqVyg==", 20 | "requires": { 21 | "@ampproject/toolbox-core": "^2.7.1-alpha.0", 22 | "@ampproject/toolbox-runtime-version": "^2.7.1-alpha.0", 23 | "@ampproject/toolbox-script-csp": "^2.5.4", 24 | "@ampproject/toolbox-validator-rules": "^2.7.1-alpha.0", 25 | "abort-controller": "3.0.0", 26 | "cross-fetch": "3.0.6", 27 | "cssnano-simple": "1.2.1", 28 | "dom-serializer": "1.1.0", 29 | "domhandler": "3.3.0", 30 | "domutils": "2.4.2", 31 | "htmlparser2": "5.0.1", 32 | "https-proxy-agent": "5.0.0", 33 | "lru-cache": "6.0.0", 34 | "node-fetch": "2.6.1", 35 | "normalize-html-whitespace": "1.0.0", 36 | "postcss": "7.0.32", 37 | "postcss-safe-parser": "4.0.2", 38 | "terser": "5.5.1" 39 | }, 40 | "dependencies": { 41 | "cssnano-simple": { 42 | "version": "1.2.1", 43 | "resolved": "https://registry.npmjs.org/cssnano-simple/-/cssnano-simple-1.2.1.tgz", 44 | "integrity": "sha512-9vOyjw8Dj/T12kIOnXPZ5VnEIo6F3YMaIn0wqJXmn277R58cWpI3AvtdlCBtohX7VAUNYcyk2d0dKcXXkb5I6Q==", 45 | "requires": { 46 | "cssnano-preset-simple": "1.2.1", 47 | "postcss": "^7.0.32" 48 | } 49 | }, 50 | "postcss": { 51 | "version": "7.0.32", 52 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", 53 | "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", 54 | "requires": { 55 | "chalk": "^2.4.2", 56 | "source-map": "^0.6.1", 57 | "supports-color": "^6.1.0" 58 | } 59 | } 60 | } 61 | }, 62 | "@ampproject/toolbox-runtime-version": { 63 | "version": "2.7.4", 64 | "resolved": "https://registry.npmjs.org/@ampproject/toolbox-runtime-version/-/toolbox-runtime-version-2.7.4.tgz", 65 | "integrity": "sha512-SAdOUOERp42thVNWaBJlnFvFVvnacMVnz5z9LyUZHSnoL1EqrAW5Sz5jv+Ly+gkA8NYsEaUxAdSCBAzE9Uzb4Q==", 66 | "requires": { 67 | "@ampproject/toolbox-core": "2.7.4" 68 | } 69 | }, 70 | "@ampproject/toolbox-script-csp": { 71 | "version": "2.5.4", 72 | "resolved": "https://registry.npmjs.org/@ampproject/toolbox-script-csp/-/toolbox-script-csp-2.5.4.tgz", 73 | "integrity": "sha512-+knTYetI5nWllRZ9wFcj7mYxelkiiFVRAAW/hl0ad8EnKHMH82tRlk40CapEnUHhp6Er5sCYkumQ8dngs3Q4zQ==" 74 | }, 75 | "@ampproject/toolbox-validator-rules": { 76 | "version": "2.7.4", 77 | "resolved": "https://registry.npmjs.org/@ampproject/toolbox-validator-rules/-/toolbox-validator-rules-2.7.4.tgz", 78 | "integrity": "sha512-z3JRcpIZLLdVC9XVe7YTZuB3a/eR9s2SjElYB9AWRdyJyL5Jt7+pGNv4Uwh1uHVoBXsWEVQzNOWSNtrO3mSwZA==", 79 | "requires": { 80 | "cross-fetch": "3.0.6" 81 | } 82 | }, 83 | "@babel/code-frame": { 84 | "version": "7.12.11", 85 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", 86 | "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", 87 | "requires": { 88 | "@babel/highlight": "^7.10.4" 89 | } 90 | }, 91 | "@babel/helper-module-imports": { 92 | "version": "7.12.13", 93 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz", 94 | "integrity": "sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g==", 95 | "requires": { 96 | "@babel/types": "^7.12.13" 97 | }, 98 | "dependencies": { 99 | "@babel/types": { 100 | "version": "7.12.13", 101 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.13.tgz", 102 | "integrity": "sha512-oKrdZTld2im1z8bDwTOQvUbxKwE+854zc16qWZQlcTqMN00pWxHQ4ZeOq0yDMnisOpRykH2/5Qqcrk/OlbAjiQ==", 103 | "requires": { 104 | "@babel/helper-validator-identifier": "^7.12.11", 105 | "lodash": "^4.17.19", 106 | "to-fast-properties": "^2.0.0" 107 | } 108 | } 109 | } 110 | }, 111 | "@babel/helper-plugin-utils": { 112 | "version": "7.12.13", 113 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.12.13.tgz", 114 | "integrity": "sha512-C+10MXCXJLiR6IeG9+Wiejt9jmtFpxUc3MQqCmPY8hfCjyUGl9kT+B2okzEZrtykiwrc4dbCPdDoz0A/HQbDaA==" 115 | }, 116 | "@babel/helper-validator-identifier": { 117 | "version": "7.12.11", 118 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", 119 | "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==" 120 | }, 121 | "@babel/highlight": { 122 | "version": "7.12.13", 123 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.12.13.tgz", 124 | "integrity": "sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww==", 125 | "requires": { 126 | "@babel/helper-validator-identifier": "^7.12.11", 127 | "chalk": "^2.0.0", 128 | "js-tokens": "^4.0.0" 129 | } 130 | }, 131 | "@babel/plugin-syntax-jsx": { 132 | "version": "7.12.13", 133 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz", 134 | "integrity": "sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g==", 135 | "requires": { 136 | "@babel/helper-plugin-utils": "^7.12.13" 137 | } 138 | }, 139 | "@babel/runtime": { 140 | "version": "7.12.5", 141 | "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", 142 | "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", 143 | "requires": { 144 | "regenerator-runtime": "^0.13.4" 145 | } 146 | }, 147 | "@babel/types": { 148 | "version": "7.8.3", 149 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", 150 | "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", 151 | "requires": { 152 | "esutils": "^2.0.2", 153 | "lodash": "^4.17.13", 154 | "to-fast-properties": "^2.0.0" 155 | } 156 | }, 157 | "@emotion/babel-plugin": { 158 | "version": "11.1.2", 159 | "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.1.2.tgz", 160 | "integrity": "sha512-Nz1k7b11dWw8Nw4Z1R99A9mlB6C6rRsCtZnwNUOj4NsoZdrO2f2A/83ST7htJORD5zpOiLKY59aJN23092949w==", 161 | "requires": { 162 | "@babel/helper-module-imports": "^7.7.0", 163 | "@babel/plugin-syntax-jsx": "^7.12.1", 164 | "@babel/runtime": "^7.7.2", 165 | "@emotion/hash": "^0.8.0", 166 | "@emotion/memoize": "^0.7.5", 167 | "@emotion/serialize": "^1.0.0", 168 | "babel-plugin-macros": "^2.6.1", 169 | "convert-source-map": "^1.5.0", 170 | "escape-string-regexp": "^4.0.0", 171 | "find-root": "^1.1.0", 172 | "source-map": "^0.5.7", 173 | "stylis": "^4.0.3" 174 | }, 175 | "dependencies": { 176 | "escape-string-regexp": { 177 | "version": "4.0.0", 178 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 179 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" 180 | }, 181 | "source-map": { 182 | "version": "0.5.7", 183 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 184 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" 185 | }, 186 | "stylis": { 187 | "version": "4.0.7", 188 | "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.7.tgz", 189 | "integrity": "sha512-OFFeUXFgwnGOKvEXaSv0D0KQ5ADP0n6g3SVONx6I/85JzNZ3u50FRwB3lVIk1QO2HNdI75tbVzc4Z66Gdp9voA==" 190 | } 191 | } 192 | }, 193 | "@emotion/cache": { 194 | "version": "11.1.3", 195 | "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.1.3.tgz", 196 | "integrity": "sha512-n4OWinUPJVaP6fXxWZD9OUeQ0lY7DvtmtSuqtRWT0Ofo/sBLCVSgb4/Oa0Q5eFxcwablRKjUXqXtNZVyEwCAuA==", 197 | "requires": { 198 | "@emotion/memoize": "^0.7.4", 199 | "@emotion/sheet": "^1.0.0", 200 | "@emotion/utils": "^1.0.0", 201 | "@emotion/weak-memoize": "^0.2.5", 202 | "stylis": "^4.0.3" 203 | }, 204 | "dependencies": { 205 | "stylis": { 206 | "version": "4.0.7", 207 | "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.7.tgz", 208 | "integrity": "sha512-OFFeUXFgwnGOKvEXaSv0D0KQ5ADP0n6g3SVONx6I/85JzNZ3u50FRwB3lVIk1QO2HNdI75tbVzc4Z66Gdp9voA==" 209 | } 210 | } 211 | }, 212 | "@emotion/hash": { 213 | "version": "0.8.0", 214 | "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", 215 | "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" 216 | }, 217 | "@emotion/is-prop-valid": { 218 | "version": "1.0.0", 219 | "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.0.0.tgz", 220 | "integrity": "sha512-G5X0t7eR9pkhUvAY32QS3lToP9JyNF8It5CcmMvbWjmC9/Yq7IhevaKqxl+me2BKR93iTPiL/h3En1ZX/1G3PQ==", 221 | "requires": { 222 | "@emotion/memoize": "^0.7.4" 223 | } 224 | }, 225 | "@emotion/memoize": { 226 | "version": "0.7.5", 227 | "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.5.tgz", 228 | "integrity": "sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==" 229 | }, 230 | "@emotion/react": { 231 | "version": "11.1.4", 232 | "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.1.4.tgz", 233 | "integrity": "sha512-9gkhrW8UjV4IGRnEe4/aGPkUxoGS23aD9Vu6JCGfEDyBYL+nGkkRBoMFGAzCT9qFdyUvQp4UUtErbKWxq/JS4A==", 234 | "requires": { 235 | "@babel/runtime": "^7.7.2", 236 | "@emotion/cache": "^11.1.3", 237 | "@emotion/serialize": "^1.0.0", 238 | "@emotion/sheet": "^1.0.1", 239 | "@emotion/utils": "^1.0.0", 240 | "@emotion/weak-memoize": "^0.2.5", 241 | "hoist-non-react-statics": "^3.3.1" 242 | } 243 | }, 244 | "@emotion/serialize": { 245 | "version": "1.0.0", 246 | "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.0.0.tgz", 247 | "integrity": "sha512-zt1gm4rhdo5Sry8QpCOpopIUIKU+mUSpV9WNmFILUraatm5dttNEaYzUWWSboSMUE6PtN2j1cAsuvcugfdI3mw==", 248 | "requires": { 249 | "@emotion/hash": "^0.8.0", 250 | "@emotion/memoize": "^0.7.4", 251 | "@emotion/unitless": "^0.7.5", 252 | "@emotion/utils": "^1.0.0", 253 | "csstype": "^3.0.2" 254 | } 255 | }, 256 | "@emotion/sheet": { 257 | "version": "1.0.1", 258 | "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.0.1.tgz", 259 | "integrity": "sha512-GbIvVMe4U+Zc+929N1V7nW6YYJtidj31lidSmdYcWozwoBIObXBnaJkKNDjZrLm9Nc0BR+ZyHNaRZxqNZbof5g==" 260 | }, 261 | "@emotion/styled": { 262 | "version": "11.0.0", 263 | "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.0.0.tgz", 264 | "integrity": "sha512-498laccxJlBiJqrr2r/fx9q+Pr55D0URP2UyOkoSGLjevb8LLAFWueqthsQ5XijE66iGo7y3rzzEYdA7CHmZEQ==", 265 | "requires": { 266 | "@babel/runtime": "^7.7.2", 267 | "@emotion/babel-plugin": "^11.0.0", 268 | "@emotion/is-prop-valid": "^1.0.0", 269 | "@emotion/serialize": "^1.0.0", 270 | "@emotion/utils": "^1.0.0" 271 | } 272 | }, 273 | "@emotion/unitless": { 274 | "version": "0.7.5", 275 | "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", 276 | "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" 277 | }, 278 | "@emotion/utils": { 279 | "version": "1.0.0", 280 | "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.0.0.tgz", 281 | "integrity": "sha512-mQC2b3XLDs6QCW+pDQDiyO/EdGZYOygE8s5N5rrzjSI4M3IejPE/JPndCBwRT9z982aqQNi6beWs1UeayrQxxA==" 282 | }, 283 | "@emotion/weak-memoize": { 284 | "version": "0.2.5", 285 | "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", 286 | "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==" 287 | }, 288 | "@hapi/accept": { 289 | "version": "5.0.1", 290 | "resolved": "https://registry.npmjs.org/@hapi/accept/-/accept-5.0.1.tgz", 291 | "integrity": "sha512-fMr4d7zLzsAXo28PRRQPXR1o2Wmu+6z+VY1UzDp0iFo13Twj8WePakwXBiqn3E1aAlTpSNzCXdnnQXFhst8h8Q==", 292 | "requires": { 293 | "@hapi/boom": "9.x.x", 294 | "@hapi/hoek": "9.x.x" 295 | } 296 | }, 297 | "@hapi/boom": { 298 | "version": "9.1.1", 299 | "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-9.1.1.tgz", 300 | "integrity": "sha512-VNR8eDbBrOxBgbkddRYIe7+8DZ+vSbV6qlmaN2x7eWjsUjy2VmQgChkOKcVZIeupEZYj+I0dqNg430OhwzagjA==", 301 | "requires": { 302 | "@hapi/hoek": "9.x.x" 303 | } 304 | }, 305 | "@hapi/hoek": { 306 | "version": "9.1.1", 307 | "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.1.1.tgz", 308 | "integrity": "sha512-CAEbWH7OIur6jEOzaai83jq3FmKmv4PmX1JYfs9IrYcGEVI/lyL1EXJGCj7eFVJ0bg5QR8LMxBlEtA+xKiLpFw==" 309 | }, 310 | "@material-ui/core": { 311 | "version": "5.0.0-alpha.24", 312 | "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-5.0.0-alpha.24.tgz", 313 | "integrity": "sha512-X4CFyL0De9aWy6G+CAolfbEcl1UsAI74BQZeEY+cE1MZHGfJl992LeXnhgtR3OpQoCtS7FUlptsed0kcsertDA==", 314 | "requires": { 315 | "@babel/runtime": "^7.4.4", 316 | "@material-ui/styled-engine": "5.0.0-alpha.24", 317 | "@material-ui/styles": "5.0.0-alpha.24", 318 | "@material-ui/system": "5.0.0-alpha.24", 319 | "@material-ui/types": "5.1.6", 320 | "@material-ui/unstyled": "5.0.0-alpha.24", 321 | "@material-ui/utils": "5.0.0-alpha.24", 322 | "@popperjs/core": "^2.4.4", 323 | "@types/react-transition-group": "^4.2.0", 324 | "clsx": "^1.0.4", 325 | "csstype": "^3.0.2", 326 | "hoist-non-react-statics": "^3.3.2", 327 | "prop-types": "^15.7.2", 328 | "react-is": "^16.8.0 || ^17.0.0", 329 | "react-transition-group": "^4.4.0" 330 | } 331 | }, 332 | "@material-ui/icons": { 333 | "version": "4.11.2", 334 | "resolved": "https://registry.npmjs.org/@material-ui/icons/-/icons-4.11.2.tgz", 335 | "integrity": "sha512-fQNsKX2TxBmqIGJCSi3tGTO/gZ+eJgWmMJkgDiOfyNaunNaxcklJQFaFogYcFl0qFuaEz1qaXYXboa/bUXVSOQ==", 336 | "requires": { 337 | "@babel/runtime": "^7.4.4" 338 | } 339 | }, 340 | "@material-ui/styled-engine": { 341 | "version": "5.0.0-alpha.24", 342 | "resolved": "https://registry.npmjs.org/@material-ui/styled-engine/-/styled-engine-5.0.0-alpha.24.tgz", 343 | "integrity": "sha512-b6sYanUFOJ5lfo13vgqGm/xhpFxkGitjlvl7WxN4o0Lh+Y6v+bNMFsDw7X4JTyNJrJES2kLhKbAbCdIwdkCSGw==", 344 | "requires": { 345 | "@babel/runtime": "^7.4.4", 346 | "@emotion/cache": "^11.0.0", 347 | "prop-types": "^15.7.2" 348 | } 349 | }, 350 | "@material-ui/styles": { 351 | "version": "5.0.0-alpha.24", 352 | "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-5.0.0-alpha.24.tgz", 353 | "integrity": "sha512-ehGfDXSqCI2OJw3r+yiatOivjduziXVfm90nBb3YRjCKNIlAfiFaOklX7DQ/DL1nMUbbhExqaEhhKarQT2WIwQ==", 354 | "requires": { 355 | "@babel/runtime": "^7.4.4", 356 | "@emotion/hash": "^0.8.0", 357 | "@material-ui/types": "5.1.6", 358 | "@material-ui/utils": "5.0.0-alpha.24", 359 | "clsx": "^1.0.4", 360 | "csstype": "^3.0.2", 361 | "hoist-non-react-statics": "^3.3.2", 362 | "jss": "^10.0.3", 363 | "jss-plugin-camel-case": "^10.0.3", 364 | "jss-plugin-default-unit": "^10.0.3", 365 | "jss-plugin-global": "^10.0.3", 366 | "jss-plugin-nested": "^10.0.3", 367 | "jss-plugin-props-sort": "^10.0.3", 368 | "jss-plugin-rule-value-function": "^10.0.3", 369 | "jss-plugin-vendor-prefixer": "^10.0.3", 370 | "prop-types": "^15.7.2" 371 | } 372 | }, 373 | "@material-ui/system": { 374 | "version": "5.0.0-alpha.24", 375 | "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-5.0.0-alpha.24.tgz", 376 | "integrity": "sha512-3sIeS6zvLdzntM3CWL2HHiX52IycHxHOwbdacKz72te/VA5y6nunOgBOyR3/p3Zb9MuuQ9KnE7lDWJtR/UKsBA==", 377 | "requires": { 378 | "@babel/runtime": "^7.4.4", 379 | "@material-ui/utils": "5.0.0-alpha.24", 380 | "csstype": "^3.0.2", 381 | "prop-types": "^15.7.2" 382 | } 383 | }, 384 | "@material-ui/types": { 385 | "version": "5.1.6", 386 | "resolved": "https://registry.npmjs.org/@material-ui/types/-/types-5.1.6.tgz", 387 | "integrity": "sha512-4QJmcgoxTNn7F6H011AYDeThoxtR9IpJRu46YGA+Z01g/6+7iN9Jo7/MWQraYAd+jN0yGHAoI2KnY2Nbbk5Wsg==" 388 | }, 389 | "@material-ui/unstyled": { 390 | "version": "5.0.0-alpha.24", 391 | "resolved": "https://registry.npmjs.org/@material-ui/unstyled/-/unstyled-5.0.0-alpha.24.tgz", 392 | "integrity": "sha512-qfCpZn4VQwVp3LQwtDpS9ufAim7NggZqm5+GfOxILh0qvtyK6mPzVNcAmKFURJO+ClUoL2ySkLqID9S9Pmkelg==", 393 | "requires": { 394 | "@babel/runtime": "^7.4.4", 395 | "@material-ui/utils": "5.0.0-alpha.24", 396 | "clsx": "^1.0.4", 397 | "prop-types": "^15.7.2", 398 | "react-is": "^16.8.0 || ^17.0.0" 399 | } 400 | }, 401 | "@material-ui/utils": { 402 | "version": "5.0.0-alpha.24", 403 | "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-5.0.0-alpha.24.tgz", 404 | "integrity": "sha512-di0zaQKHiRi6NwPAt/4mRNfUYTa5aWVTqfzTYN/OdnQTGtOLPPFo9Om+uYgkunZIOa3lsahveo6ieH/YgFnJfQ==", 405 | "requires": { 406 | "@babel/runtime": "^7.4.4", 407 | "@types/prop-types": "^15.7.3", 408 | "@types/react-is": "^16.7.1 || ^17.0.0", 409 | "prop-types": "^15.7.2", 410 | "react-is": "^16.8.0 || ^17.0.0" 411 | } 412 | }, 413 | "@next/env": { 414 | "version": "10.0.6", 415 | "resolved": "https://registry.npmjs.org/@next/env/-/env-10.0.6.tgz", 416 | "integrity": "sha512-++zgrcSL9SprjWKBbO3YuVj/8CTmxJl+zLErW/Kbr2VCT0u12SrBcMKvD236lEGs5/qUgeBfU3Dvmr6MASWrtA==" 417 | }, 418 | "@next/polyfill-module": { 419 | "version": "10.0.6", 420 | "resolved": "https://registry.npmjs.org/@next/polyfill-module/-/polyfill-module-10.0.6.tgz", 421 | "integrity": "sha512-Sk3HYFxiI3AyIhw7Nnc5un//duCthAP2XtPb4N1SamymOU2QSb8I1zkcsxVIlZRvftdXikQQgra6Ck2zfJRxpA==" 422 | }, 423 | "@next/react-dev-overlay": { 424 | "version": "10.0.6", 425 | "resolved": "https://registry.npmjs.org/@next/react-dev-overlay/-/react-dev-overlay-10.0.6.tgz", 426 | "integrity": "sha512-KbxpyVT6gr1KZ7JoFDKGNM0hK7CxPkIC14j/gYgR6qSOhxGs3GEIBScJRXfKD7LNPMgVgQtaJlBYlEJ7aQu1xg==", 427 | "requires": { 428 | "@babel/code-frame": "7.12.11", 429 | "anser": "1.4.9", 430 | "chalk": "4.0.0", 431 | "classnames": "2.2.6", 432 | "css.escape": "1.5.1", 433 | "data-uri-to-buffer": "3.0.1", 434 | "platform": "1.3.6", 435 | "shell-quote": "1.7.2", 436 | "source-map": "0.8.0-beta.0", 437 | "stacktrace-parser": "0.1.10", 438 | "strip-ansi": "6.0.0" 439 | }, 440 | "dependencies": { 441 | "ansi-styles": { 442 | "version": "4.3.0", 443 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 444 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 445 | "requires": { 446 | "color-convert": "^2.0.1" 447 | } 448 | }, 449 | "chalk": { 450 | "version": "4.0.0", 451 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", 452 | "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", 453 | "requires": { 454 | "ansi-styles": "^4.1.0", 455 | "supports-color": "^7.1.0" 456 | } 457 | }, 458 | "color-convert": { 459 | "version": "2.0.1", 460 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 461 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 462 | "requires": { 463 | "color-name": "~1.1.4" 464 | } 465 | }, 466 | "color-name": { 467 | "version": "1.1.4", 468 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 469 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 470 | }, 471 | "has-flag": { 472 | "version": "4.0.0", 473 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 474 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" 475 | }, 476 | "source-map": { 477 | "version": "0.8.0-beta.0", 478 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", 479 | "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", 480 | "requires": { 481 | "whatwg-url": "^7.0.0" 482 | } 483 | }, 484 | "supports-color": { 485 | "version": "7.2.0", 486 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 487 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 488 | "requires": { 489 | "has-flag": "^4.0.0" 490 | } 491 | } 492 | } 493 | }, 494 | "@next/react-refresh-utils": { 495 | "version": "10.0.6", 496 | "resolved": "https://registry.npmjs.org/@next/react-refresh-utils/-/react-refresh-utils-10.0.6.tgz", 497 | "integrity": "sha512-4BF+8PyzDcYpumQJ22yBUjVP/CL2KLPM+3K3ZQb61HvmIptB/t+jFnH2ew8S7ORQNu/caVQC6wP5wAfOtpJNsg==" 498 | }, 499 | "@opentelemetry/api": { 500 | "version": "0.14.0", 501 | "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-0.14.0.tgz", 502 | "integrity": "sha512-L7RMuZr5LzMmZiQSQDy9O1jo0q+DaLy6XpYJfIGfYSfoJA5qzYwUP3sP1uMIQ549DvxAgM3ng85EaPTM/hUHwQ==", 503 | "requires": { 504 | "@opentelemetry/context-base": "^0.14.0" 505 | } 506 | }, 507 | "@opentelemetry/context-base": { 508 | "version": "0.14.0", 509 | "resolved": "https://registry.npmjs.org/@opentelemetry/context-base/-/context-base-0.14.0.tgz", 510 | "integrity": "sha512-sDOAZcYwynHFTbLo6n8kIbLiVF3a3BLkrmehJUyEbT9F+Smbi47kLGS2gG2g0fjBLR/Lr1InPD7kXL7FaTqEkw==" 511 | }, 512 | "@popperjs/core": { 513 | "version": "2.6.0", 514 | "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.6.0.tgz", 515 | "integrity": "sha512-cPqjjzuFWNK3BSKLm0abspP0sp/IGOli4p5I5fKFAzdS8fvjdOwDCfZqAaIiXd9lPkOWi3SUUfZof3hEb7J/uw==" 516 | }, 517 | "@types/hoist-non-react-statics": { 518 | "version": "3.3.1", 519 | "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", 520 | "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", 521 | "requires": { 522 | "@types/react": "*", 523 | "hoist-non-react-statics": "^3.3.0" 524 | } 525 | }, 526 | "@types/node": { 527 | "version": "14.14.25", 528 | "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.25.tgz", 529 | "integrity": "sha512-EPpXLOVqDvisVxtlbvzfyqSsFeQxltFbluZNRndIb8tr9KiBnYNLzrc1N3pyKUCww2RNrfHDViqDWWE1LCJQtQ==", 530 | "dev": true 531 | }, 532 | "@types/parse-json": { 533 | "version": "4.0.0", 534 | "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", 535 | "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" 536 | }, 537 | "@types/prop-types": { 538 | "version": "15.7.3", 539 | "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", 540 | "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==" 541 | }, 542 | "@types/react": { 543 | "version": "17.0.1", 544 | "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.1.tgz", 545 | "integrity": "sha512-w8t9f53B2ei4jeOqf/gxtc2Sswnc3LBK5s0DyJcg5xd10tMHXts2N31cKjWfH9IC/JvEPa/YF1U4YeP1t4R6HQ==", 546 | "requires": { 547 | "@types/prop-types": "*", 548 | "csstype": "^3.0.2" 549 | } 550 | }, 551 | "@types/react-is": { 552 | "version": "17.0.0", 553 | "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-17.0.0.tgz", 554 | "integrity": "sha512-A0DQ1YWZ0RG2+PV7neAotNCIh8gZ3z7tQnDJyS2xRPDNtAtSPcJ9YyfMP8be36Ha0kQRzbZCrrTMznA4blqO5g==", 555 | "requires": { 556 | "@types/react": "*" 557 | } 558 | }, 559 | "@types/react-redux": { 560 | "version": "7.1.16", 561 | "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.16.tgz", 562 | "integrity": "sha512-f/FKzIrZwZk7YEO9E1yoxIuDNRiDducxkFlkw/GNMGEnK9n4K8wJzlJBghpSuOVDgEUHoDkDF7Gi9lHNQR4siw==", 563 | "requires": { 564 | "@types/hoist-non-react-statics": "^3.3.0", 565 | "@types/react": "*", 566 | "hoist-non-react-statics": "^3.3.0", 567 | "redux": "^4.0.0" 568 | } 569 | }, 570 | "@types/react-transition-group": { 571 | "version": "4.4.0", 572 | "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.0.tgz", 573 | "integrity": "sha512-/QfLHGpu+2fQOqQaXh8MG9q03bFENooTb/it4jr5kKaZlDQfWvjqWZg48AwzPVMBHlRuTRAY7hRHCEOXz5kV6w==", 574 | "requires": { 575 | "@types/react": "*" 576 | } 577 | }, 578 | "abort-controller": { 579 | "version": "3.0.0", 580 | "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", 581 | "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", 582 | "requires": { 583 | "event-target-shim": "^5.0.0" 584 | } 585 | }, 586 | "agent-base": { 587 | "version": "6.0.2", 588 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 589 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 590 | "requires": { 591 | "debug": "4" 592 | } 593 | }, 594 | "anser": { 595 | "version": "1.4.9", 596 | "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.9.tgz", 597 | "integrity": "sha512-AI+BjTeGt2+WFk4eWcqbQ7snZpDBt8SaLlj0RT2h5xfdWaiy51OjYvqwMrNzJLGy8iOAL6nKDITWO+rd4MkYEA==" 598 | }, 599 | "ansi-regex": { 600 | "version": "5.0.0", 601 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", 602 | "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" 603 | }, 604 | "ansi-styles": { 605 | "version": "3.2.1", 606 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 607 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 608 | "requires": { 609 | "color-convert": "^1.9.0" 610 | } 611 | }, 612 | "anymatch": { 613 | "version": "3.1.1", 614 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", 615 | "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", 616 | "requires": { 617 | "normalize-path": "^3.0.0", 618 | "picomatch": "^2.0.4" 619 | } 620 | }, 621 | "aproba": { 622 | "version": "1.2.0", 623 | "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", 624 | "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", 625 | "optional": true 626 | }, 627 | "are-we-there-yet": { 628 | "version": "1.1.5", 629 | "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", 630 | "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", 631 | "optional": true, 632 | "requires": { 633 | "delegates": "^1.0.0", 634 | "readable-stream": "^2.0.6" 635 | }, 636 | "dependencies": { 637 | "readable-stream": { 638 | "version": "2.3.7", 639 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 640 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 641 | "optional": true, 642 | "requires": { 643 | "core-util-is": "~1.0.0", 644 | "inherits": "~2.0.3", 645 | "isarray": "~1.0.0", 646 | "process-nextick-args": "~2.0.0", 647 | "safe-buffer": "~5.1.1", 648 | "string_decoder": "~1.1.1", 649 | "util-deprecate": "~1.0.1" 650 | } 651 | }, 652 | "safe-buffer": { 653 | "version": "5.1.2", 654 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 655 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 656 | "optional": true 657 | }, 658 | "string_decoder": { 659 | "version": "1.1.1", 660 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 661 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 662 | "optional": true, 663 | "requires": { 664 | "safe-buffer": "~5.1.0" 665 | } 666 | } 667 | } 668 | }, 669 | "array-flatten": { 670 | "version": "3.0.0", 671 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz", 672 | "integrity": "sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==", 673 | "optional": true 674 | }, 675 | "asn1.js": { 676 | "version": "5.4.1", 677 | "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", 678 | "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", 679 | "requires": { 680 | "bn.js": "^4.0.0", 681 | "inherits": "^2.0.1", 682 | "minimalistic-assert": "^1.0.0", 683 | "safer-buffer": "^2.1.0" 684 | }, 685 | "dependencies": { 686 | "bn.js": { 687 | "version": "4.11.9", 688 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", 689 | "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" 690 | } 691 | } 692 | }, 693 | "assert": { 694 | "version": "1.5.0", 695 | "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", 696 | "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", 697 | "requires": { 698 | "object-assign": "^4.1.1", 699 | "util": "0.10.3" 700 | }, 701 | "dependencies": { 702 | "inherits": { 703 | "version": "2.0.1", 704 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", 705 | "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" 706 | }, 707 | "util": { 708 | "version": "0.10.3", 709 | "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", 710 | "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", 711 | "requires": { 712 | "inherits": "2.0.1" 713 | } 714 | } 715 | } 716 | }, 717 | "ast-types": { 718 | "version": "0.13.2", 719 | "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.2.tgz", 720 | "integrity": "sha512-uWMHxJxtfj/1oZClOxDEV1sQ1HCDkA4MG8Gr69KKeBjEVH0R84WlejZ0y2DcwyBlpAEMltmVYkVgqfLFb2oyiA==" 721 | }, 722 | "axios": { 723 | "version": "0.21.1", 724 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", 725 | "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", 726 | "requires": { 727 | "follow-redirects": "^1.10.0" 728 | } 729 | }, 730 | "babel-plugin-macros": { 731 | "version": "2.8.0", 732 | "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", 733 | "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", 734 | "requires": { 735 | "@babel/runtime": "^7.7.2", 736 | "cosmiconfig": "^6.0.0", 737 | "resolve": "^1.12.0" 738 | } 739 | }, 740 | "babel-plugin-syntax-jsx": { 741 | "version": "6.18.0", 742 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", 743 | "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" 744 | }, 745 | "base64-js": { 746 | "version": "1.5.1", 747 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 748 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" 749 | }, 750 | "big.js": { 751 | "version": "5.2.2", 752 | "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", 753 | "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" 754 | }, 755 | "binary-extensions": { 756 | "version": "2.2.0", 757 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 758 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" 759 | }, 760 | "bl": { 761 | "version": "4.0.4", 762 | "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.4.tgz", 763 | "integrity": "sha512-7tdr4EpSd7jJ6tuQ21vu2ke8w7pNEstzj1O8wwq6sNNzO3UDi5MA8Gny/gquCj7r2C6fHudg8tKRGyjRgmvNxQ==", 764 | "optional": true, 765 | "requires": { 766 | "buffer": "^5.5.0", 767 | "inherits": "^2.0.4", 768 | "readable-stream": "^3.4.0" 769 | } 770 | }, 771 | "bn.js": { 772 | "version": "5.1.3", 773 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", 774 | "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==" 775 | }, 776 | "braces": { 777 | "version": "3.0.2", 778 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 779 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 780 | "requires": { 781 | "fill-range": "^7.0.1" 782 | } 783 | }, 784 | "brorand": { 785 | "version": "1.1.0", 786 | "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", 787 | "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" 788 | }, 789 | "browserify-aes": { 790 | "version": "1.2.0", 791 | "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", 792 | "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", 793 | "requires": { 794 | "buffer-xor": "^1.0.3", 795 | "cipher-base": "^1.0.0", 796 | "create-hash": "^1.1.0", 797 | "evp_bytestokey": "^1.0.3", 798 | "inherits": "^2.0.1", 799 | "safe-buffer": "^5.0.1" 800 | } 801 | }, 802 | "browserify-cipher": { 803 | "version": "1.0.1", 804 | "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", 805 | "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", 806 | "requires": { 807 | "browserify-aes": "^1.0.4", 808 | "browserify-des": "^1.0.0", 809 | "evp_bytestokey": "^1.0.0" 810 | } 811 | }, 812 | "browserify-des": { 813 | "version": "1.0.2", 814 | "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", 815 | "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", 816 | "requires": { 817 | "cipher-base": "^1.0.1", 818 | "des.js": "^1.0.0", 819 | "inherits": "^2.0.1", 820 | "safe-buffer": "^5.1.2" 821 | } 822 | }, 823 | "browserify-rsa": { 824 | "version": "4.1.0", 825 | "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", 826 | "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", 827 | "requires": { 828 | "bn.js": "^5.0.0", 829 | "randombytes": "^2.0.1" 830 | } 831 | }, 832 | "browserify-sign": { 833 | "version": "4.2.1", 834 | "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", 835 | "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", 836 | "requires": { 837 | "bn.js": "^5.1.1", 838 | "browserify-rsa": "^4.0.1", 839 | "create-hash": "^1.2.0", 840 | "create-hmac": "^1.1.7", 841 | "elliptic": "^6.5.3", 842 | "inherits": "^2.0.4", 843 | "parse-asn1": "^5.1.5", 844 | "readable-stream": "^3.6.0", 845 | "safe-buffer": "^5.2.0" 846 | } 847 | }, 848 | "browserify-zlib": { 849 | "version": "0.2.0", 850 | "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", 851 | "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", 852 | "requires": { 853 | "pako": "~1.0.5" 854 | } 855 | }, 856 | "browserslist": { 857 | "version": "4.16.1", 858 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.1.tgz", 859 | "integrity": "sha512-UXhDrwqsNcpTYJBTZsbGATDxZbiVDsx6UjpmRUmtnP10pr8wAYr5LgFoEFw9ixriQH2mv/NX2SfGzE/o8GndLA==", 860 | "requires": { 861 | "caniuse-lite": "^1.0.30001173", 862 | "colorette": "^1.2.1", 863 | "electron-to-chromium": "^1.3.634", 864 | "escalade": "^3.1.1", 865 | "node-releases": "^1.1.69" 866 | } 867 | }, 868 | "buffer": { 869 | "version": "5.6.0", 870 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", 871 | "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", 872 | "requires": { 873 | "base64-js": "^1.0.2", 874 | "ieee754": "^1.1.4" 875 | } 876 | }, 877 | "buffer-from": { 878 | "version": "1.1.1", 879 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", 880 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" 881 | }, 882 | "buffer-xor": { 883 | "version": "1.0.3", 884 | "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", 885 | "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" 886 | }, 887 | "builtin-status-codes": { 888 | "version": "3.0.0", 889 | "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", 890 | "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" 891 | }, 892 | "bytes": { 893 | "version": "3.1.0", 894 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", 895 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" 896 | }, 897 | "callsites": { 898 | "version": "3.1.0", 899 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 900 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" 901 | }, 902 | "caniuse-lite": { 903 | "version": "1.0.30001185", 904 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001185.tgz", 905 | "integrity": "sha512-Fpi4kVNtNvJ15H0F6vwmXtb3tukv3Zg3qhKkOGUq7KJ1J6b9kf4dnNgtEAFXhRsJo0gNj9W60+wBvn0JcTvdTg==" 906 | }, 907 | "chalk": { 908 | "version": "2.4.2", 909 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 910 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 911 | "requires": { 912 | "ansi-styles": "^3.2.1", 913 | "escape-string-regexp": "^1.0.5", 914 | "supports-color": "^5.3.0" 915 | }, 916 | "dependencies": { 917 | "supports-color": { 918 | "version": "5.5.0", 919 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 920 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 921 | "requires": { 922 | "has-flag": "^3.0.0" 923 | } 924 | } 925 | } 926 | }, 927 | "chokidar": { 928 | "version": "3.5.1", 929 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", 930 | "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", 931 | "requires": { 932 | "anymatch": "~3.1.1", 933 | "braces": "~3.0.2", 934 | "fsevents": "~2.3.1", 935 | "glob-parent": "~5.1.0", 936 | "is-binary-path": "~2.1.0", 937 | "is-glob": "~4.0.1", 938 | "normalize-path": "~3.0.0", 939 | "readdirp": "~3.5.0" 940 | } 941 | }, 942 | "chownr": { 943 | "version": "1.1.4", 944 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", 945 | "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", 946 | "optional": true 947 | }, 948 | "cipher-base": { 949 | "version": "1.0.4", 950 | "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", 951 | "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", 952 | "requires": { 953 | "inherits": "^2.0.1", 954 | "safe-buffer": "^5.0.1" 955 | } 956 | }, 957 | "classnames": { 958 | "version": "2.2.6", 959 | "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", 960 | "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==" 961 | }, 962 | "clsx": { 963 | "version": "1.1.1", 964 | "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", 965 | "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==" 966 | }, 967 | "code-point-at": { 968 | "version": "1.1.0", 969 | "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", 970 | "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", 971 | "optional": true 972 | }, 973 | "color": { 974 | "version": "3.1.3", 975 | "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", 976 | "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==", 977 | "optional": true, 978 | "requires": { 979 | "color-convert": "^1.9.1", 980 | "color-string": "^1.5.4" 981 | } 982 | }, 983 | "color-convert": { 984 | "version": "1.9.3", 985 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 986 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 987 | "requires": { 988 | "color-name": "1.1.3" 989 | } 990 | }, 991 | "color-name": { 992 | "version": "1.1.3", 993 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 994 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" 995 | }, 996 | "color-string": { 997 | "version": "1.5.4", 998 | "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.4.tgz", 999 | "integrity": "sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==", 1000 | "optional": true, 1001 | "requires": { 1002 | "color-name": "^1.0.0", 1003 | "simple-swizzle": "^0.2.2" 1004 | } 1005 | }, 1006 | "colorette": { 1007 | "version": "1.2.1", 1008 | "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", 1009 | "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==" 1010 | }, 1011 | "commander": { 1012 | "version": "2.20.3", 1013 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 1014 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" 1015 | }, 1016 | "commondir": { 1017 | "version": "1.0.1", 1018 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", 1019 | "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" 1020 | }, 1021 | "console-browserify": { 1022 | "version": "1.2.0", 1023 | "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", 1024 | "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" 1025 | }, 1026 | "console-control-strings": { 1027 | "version": "1.1.0", 1028 | "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", 1029 | "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", 1030 | "optional": true 1031 | }, 1032 | "constants-browserify": { 1033 | "version": "1.0.0", 1034 | "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", 1035 | "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" 1036 | }, 1037 | "convert-source-map": { 1038 | "version": "1.7.0", 1039 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", 1040 | "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", 1041 | "requires": { 1042 | "safe-buffer": "~5.1.1" 1043 | }, 1044 | "dependencies": { 1045 | "safe-buffer": { 1046 | "version": "5.1.2", 1047 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1048 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 1049 | } 1050 | } 1051 | }, 1052 | "core-util-is": { 1053 | "version": "1.0.2", 1054 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 1055 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 1056 | }, 1057 | "cosmiconfig": { 1058 | "version": "6.0.0", 1059 | "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", 1060 | "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", 1061 | "requires": { 1062 | "@types/parse-json": "^4.0.0", 1063 | "import-fresh": "^3.1.0", 1064 | "parse-json": "^5.0.0", 1065 | "path-type": "^4.0.0", 1066 | "yaml": "^1.7.2" 1067 | } 1068 | }, 1069 | "create-ecdh": { 1070 | "version": "4.0.4", 1071 | "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", 1072 | "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", 1073 | "requires": { 1074 | "bn.js": "^4.1.0", 1075 | "elliptic": "^6.5.3" 1076 | }, 1077 | "dependencies": { 1078 | "bn.js": { 1079 | "version": "4.11.9", 1080 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", 1081 | "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" 1082 | } 1083 | } 1084 | }, 1085 | "create-hash": { 1086 | "version": "1.2.0", 1087 | "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", 1088 | "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", 1089 | "requires": { 1090 | "cipher-base": "^1.0.1", 1091 | "inherits": "^2.0.1", 1092 | "md5.js": "^1.3.4", 1093 | "ripemd160": "^2.0.1", 1094 | "sha.js": "^2.4.0" 1095 | } 1096 | }, 1097 | "create-hmac": { 1098 | "version": "1.1.7", 1099 | "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", 1100 | "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", 1101 | "requires": { 1102 | "cipher-base": "^1.0.3", 1103 | "create-hash": "^1.1.0", 1104 | "inherits": "^2.0.1", 1105 | "ripemd160": "^2.0.0", 1106 | "safe-buffer": "^5.0.1", 1107 | "sha.js": "^2.4.8" 1108 | } 1109 | }, 1110 | "cross-fetch": { 1111 | "version": "3.0.6", 1112 | "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.0.6.tgz", 1113 | "integrity": "sha512-KBPUbqgFjzWlVcURG+Svp9TlhA5uliYtiNx/0r8nv0pdypeQCRJ9IaSIc3q/x3q8t3F75cHuwxVql1HFGHCNJQ==", 1114 | "requires": { 1115 | "node-fetch": "2.6.1" 1116 | } 1117 | }, 1118 | "crypto-browserify": { 1119 | "version": "3.12.0", 1120 | "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", 1121 | "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", 1122 | "requires": { 1123 | "browserify-cipher": "^1.0.0", 1124 | "browserify-sign": "^4.0.0", 1125 | "create-ecdh": "^4.0.0", 1126 | "create-hash": "^1.1.0", 1127 | "create-hmac": "^1.1.0", 1128 | "diffie-hellman": "^5.0.0", 1129 | "inherits": "^2.0.1", 1130 | "pbkdf2": "^3.0.3", 1131 | "public-encrypt": "^4.0.0", 1132 | "randombytes": "^2.0.0", 1133 | "randomfill": "^1.0.3" 1134 | } 1135 | }, 1136 | "css-vendor": { 1137 | "version": "2.0.8", 1138 | "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz", 1139 | "integrity": "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==", 1140 | "requires": { 1141 | "@babel/runtime": "^7.8.3", 1142 | "is-in-browser": "^1.0.2" 1143 | } 1144 | }, 1145 | "css.escape": { 1146 | "version": "1.5.1", 1147 | "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", 1148 | "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=" 1149 | }, 1150 | "cssnano-preset-simple": { 1151 | "version": "1.2.1", 1152 | "resolved": "https://registry.npmjs.org/cssnano-preset-simple/-/cssnano-preset-simple-1.2.1.tgz", 1153 | "integrity": "sha512-B2KahOIFTV6dw5Ioy9jHshTh/vAYNnUB2enyWRgnAEg3oJBjI/035ExpePaMqS2SwpbH7gCgvQqwpMBH6hTJSw==", 1154 | "requires": { 1155 | "caniuse-lite": "^1.0.30001093", 1156 | "postcss": "^7.0.32" 1157 | }, 1158 | "dependencies": { 1159 | "postcss": { 1160 | "version": "7.0.35", 1161 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", 1162 | "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", 1163 | "requires": { 1164 | "chalk": "^2.4.2", 1165 | "source-map": "^0.6.1", 1166 | "supports-color": "^6.1.0" 1167 | } 1168 | } 1169 | } 1170 | }, 1171 | "cssnano-simple": { 1172 | "version": "1.2.2", 1173 | "resolved": "https://registry.npmjs.org/cssnano-simple/-/cssnano-simple-1.2.2.tgz", 1174 | "integrity": "sha512-4slyYc1w4JhSbhVX5xi9G0aQ42JnRyPg+7l7cqoNyoIDzfWx40Rq3JQZnoAWDu60A4AvKVp9ln/YSUOdhDX68g==", 1175 | "requires": { 1176 | "cssnano-preset-simple": "1.2.2", 1177 | "postcss": "^7.0.32" 1178 | }, 1179 | "dependencies": { 1180 | "cssnano-preset-simple": { 1181 | "version": "1.2.2", 1182 | "resolved": "https://registry.npmjs.org/cssnano-preset-simple/-/cssnano-preset-simple-1.2.2.tgz", 1183 | "integrity": "sha512-gtvrcRSGtP3hA/wS8mFVinFnQdEsEpm3v4I/s/KmNjpdWaThV/4E5EojAzFXxyT5OCSRPLlHR9iQexAqKHlhGQ==", 1184 | "requires": { 1185 | "caniuse-lite": "^1.0.30001179", 1186 | "postcss": "^7.0.32" 1187 | } 1188 | }, 1189 | "postcss": { 1190 | "version": "7.0.35", 1191 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", 1192 | "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", 1193 | "requires": { 1194 | "chalk": "^2.4.2", 1195 | "source-map": "^0.6.1", 1196 | "supports-color": "^6.1.0" 1197 | } 1198 | } 1199 | } 1200 | }, 1201 | "csstype": { 1202 | "version": "3.0.6", 1203 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.6.tgz", 1204 | "integrity": "sha512-+ZAmfyWMT7TiIlzdqJgjMb7S4f1beorDbWbsocyK4RaiqA5RTX3K14bnBWmmA9QEM0gRdsjyyrEmcyga8Zsxmw==" 1205 | }, 1206 | "data-uri-to-buffer": { 1207 | "version": "3.0.1", 1208 | "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz", 1209 | "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==" 1210 | }, 1211 | "debug": { 1212 | "version": "4.3.1", 1213 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", 1214 | "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", 1215 | "requires": { 1216 | "ms": "2.1.2" 1217 | } 1218 | }, 1219 | "decompress-response": { 1220 | "version": "4.2.1", 1221 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", 1222 | "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", 1223 | "optional": true, 1224 | "requires": { 1225 | "mimic-response": "^2.0.0" 1226 | } 1227 | }, 1228 | "deep-extend": { 1229 | "version": "0.6.0", 1230 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", 1231 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", 1232 | "optional": true 1233 | }, 1234 | "delegates": { 1235 | "version": "1.0.0", 1236 | "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", 1237 | "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", 1238 | "optional": true 1239 | }, 1240 | "depd": { 1241 | "version": "1.1.2", 1242 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 1243 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 1244 | }, 1245 | "des.js": { 1246 | "version": "1.0.1", 1247 | "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", 1248 | "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", 1249 | "requires": { 1250 | "inherits": "^2.0.1", 1251 | "minimalistic-assert": "^1.0.0" 1252 | } 1253 | }, 1254 | "detect-libc": { 1255 | "version": "1.0.3", 1256 | "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", 1257 | "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", 1258 | "optional": true 1259 | }, 1260 | "diffie-hellman": { 1261 | "version": "5.0.3", 1262 | "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", 1263 | "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", 1264 | "requires": { 1265 | "bn.js": "^4.1.0", 1266 | "miller-rabin": "^4.0.0", 1267 | "randombytes": "^2.0.0" 1268 | }, 1269 | "dependencies": { 1270 | "bn.js": { 1271 | "version": "4.11.9", 1272 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", 1273 | "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" 1274 | } 1275 | } 1276 | }, 1277 | "dom-helpers": { 1278 | "version": "5.2.0", 1279 | "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.0.tgz", 1280 | "integrity": "sha512-Ru5o9+V8CpunKnz5LGgWXkmrH/20cGKwcHwS4m73zIvs54CN9epEmT/HLqFJW3kXpakAFkEdzgy1hzlJe3E4OQ==", 1281 | "requires": { 1282 | "@babel/runtime": "^7.8.7", 1283 | "csstype": "^3.0.2" 1284 | } 1285 | }, 1286 | "dom-serializer": { 1287 | "version": "1.1.0", 1288 | "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.1.0.tgz", 1289 | "integrity": "sha512-ox7bvGXt2n+uLWtCRLybYx60IrOlWL/aCebWJk1T0d4m3y2tzf4U3ij9wBMUb6YJZpz06HCCYuyCDveE2xXmzQ==", 1290 | "requires": { 1291 | "domelementtype": "^2.0.1", 1292 | "domhandler": "^3.0.0", 1293 | "entities": "^2.0.0" 1294 | } 1295 | }, 1296 | "domain-browser": { 1297 | "version": "1.2.0", 1298 | "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", 1299 | "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" 1300 | }, 1301 | "domelementtype": { 1302 | "version": "2.1.0", 1303 | "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", 1304 | "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==" 1305 | }, 1306 | "domhandler": { 1307 | "version": "3.3.0", 1308 | "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz", 1309 | "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==", 1310 | "requires": { 1311 | "domelementtype": "^2.0.1" 1312 | } 1313 | }, 1314 | "domutils": { 1315 | "version": "2.4.2", 1316 | "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.4.2.tgz", 1317 | "integrity": "sha512-NKbgaM8ZJOecTZsIzW5gSuplsX2IWW2mIK7xVr8hTQF2v1CJWTmLZ1HOCh5sH+IzVPAGE5IucooOkvwBRAdowA==", 1318 | "requires": { 1319 | "dom-serializer": "^1.0.1", 1320 | "domelementtype": "^2.0.1", 1321 | "domhandler": "^3.3.0" 1322 | } 1323 | }, 1324 | "electron-to-chromium": { 1325 | "version": "1.3.657", 1326 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.657.tgz", 1327 | "integrity": "sha512-/9ROOyvEflEbaZFUeGofD+Tqs/WynbSTbNgNF+/TJJxH1ePD/e6VjZlDJpW3FFFd3nj5l3Hd8ki2vRwy+gyRFw==" 1328 | }, 1329 | "elliptic": { 1330 | "version": "6.5.4", 1331 | "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", 1332 | "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", 1333 | "requires": { 1334 | "bn.js": "^4.11.9", 1335 | "brorand": "^1.1.0", 1336 | "hash.js": "^1.0.0", 1337 | "hmac-drbg": "^1.0.1", 1338 | "inherits": "^2.0.4", 1339 | "minimalistic-assert": "^1.0.1", 1340 | "minimalistic-crypto-utils": "^1.0.1" 1341 | }, 1342 | "dependencies": { 1343 | "bn.js": { 1344 | "version": "4.11.9", 1345 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", 1346 | "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" 1347 | } 1348 | } 1349 | }, 1350 | "emojis-list": { 1351 | "version": "2.1.0", 1352 | "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", 1353 | "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" 1354 | }, 1355 | "end-of-stream": { 1356 | "version": "1.4.4", 1357 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 1358 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 1359 | "optional": true, 1360 | "requires": { 1361 | "once": "^1.4.0" 1362 | } 1363 | }, 1364 | "entities": { 1365 | "version": "2.2.0", 1366 | "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", 1367 | "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" 1368 | }, 1369 | "error-ex": { 1370 | "version": "1.3.2", 1371 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 1372 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 1373 | "requires": { 1374 | "is-arrayish": "^0.2.1" 1375 | }, 1376 | "dependencies": { 1377 | "is-arrayish": { 1378 | "version": "0.2.1", 1379 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 1380 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" 1381 | } 1382 | } 1383 | }, 1384 | "escalade": { 1385 | "version": "3.1.1", 1386 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 1387 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" 1388 | }, 1389 | "escape-string-regexp": { 1390 | "version": "1.0.5", 1391 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1392 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" 1393 | }, 1394 | "esutils": { 1395 | "version": "2.0.3", 1396 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 1397 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" 1398 | }, 1399 | "etag": { 1400 | "version": "1.8.1", 1401 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 1402 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" 1403 | }, 1404 | "event-target-shim": { 1405 | "version": "5.0.1", 1406 | "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", 1407 | "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" 1408 | }, 1409 | "events": { 1410 | "version": "3.2.0", 1411 | "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", 1412 | "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==" 1413 | }, 1414 | "evp_bytestokey": { 1415 | "version": "1.0.3", 1416 | "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", 1417 | "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", 1418 | "requires": { 1419 | "md5.js": "^1.3.4", 1420 | "safe-buffer": "^5.1.1" 1421 | } 1422 | }, 1423 | "expand-template": { 1424 | "version": "2.0.3", 1425 | "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", 1426 | "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", 1427 | "optional": true 1428 | }, 1429 | "fill-range": { 1430 | "version": "7.0.1", 1431 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 1432 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 1433 | "requires": { 1434 | "to-regex-range": "^5.0.1" 1435 | } 1436 | }, 1437 | "find-cache-dir": { 1438 | "version": "3.3.1", 1439 | "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", 1440 | "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", 1441 | "requires": { 1442 | "commondir": "^1.0.1", 1443 | "make-dir": "^3.0.2", 1444 | "pkg-dir": "^4.1.0" 1445 | } 1446 | }, 1447 | "find-root": { 1448 | "version": "1.1.0", 1449 | "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", 1450 | "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" 1451 | }, 1452 | "find-up": { 1453 | "version": "4.1.0", 1454 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", 1455 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", 1456 | "requires": { 1457 | "locate-path": "^5.0.0", 1458 | "path-exists": "^4.0.0" 1459 | } 1460 | }, 1461 | "follow-redirects": { 1462 | "version": "1.13.2", 1463 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.2.tgz", 1464 | "integrity": "sha512-6mPTgLxYm3r6Bkkg0vNM0HTjfGrOEtsfbhagQvbxDEsEkpNhw582upBaoRZylzen6krEmxXJgt9Ju6HiI4O7BA==" 1465 | }, 1466 | "fs-constants": { 1467 | "version": "1.0.0", 1468 | "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", 1469 | "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", 1470 | "optional": true 1471 | }, 1472 | "fsevents": { 1473 | "version": "2.3.2", 1474 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 1475 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 1476 | "optional": true 1477 | }, 1478 | "function-bind": { 1479 | "version": "1.1.1", 1480 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1481 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 1482 | }, 1483 | "gauge": { 1484 | "version": "2.7.4", 1485 | "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", 1486 | "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", 1487 | "optional": true, 1488 | "requires": { 1489 | "aproba": "^1.0.3", 1490 | "console-control-strings": "^1.0.0", 1491 | "has-unicode": "^2.0.0", 1492 | "object-assign": "^4.1.0", 1493 | "signal-exit": "^3.0.0", 1494 | "string-width": "^1.0.1", 1495 | "strip-ansi": "^3.0.1", 1496 | "wide-align": "^1.1.0" 1497 | }, 1498 | "dependencies": { 1499 | "ansi-regex": { 1500 | "version": "2.1.1", 1501 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 1502 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 1503 | "optional": true 1504 | }, 1505 | "strip-ansi": { 1506 | "version": "3.0.1", 1507 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 1508 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 1509 | "optional": true, 1510 | "requires": { 1511 | "ansi-regex": "^2.0.0" 1512 | } 1513 | } 1514 | } 1515 | }, 1516 | "github-from-package": { 1517 | "version": "0.0.0", 1518 | "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", 1519 | "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=", 1520 | "optional": true 1521 | }, 1522 | "glob-parent": { 1523 | "version": "5.1.1", 1524 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", 1525 | "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", 1526 | "requires": { 1527 | "is-glob": "^4.0.1" 1528 | } 1529 | }, 1530 | "glob-to-regexp": { 1531 | "version": "0.4.1", 1532 | "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", 1533 | "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" 1534 | }, 1535 | "graceful-fs": { 1536 | "version": "4.2.5", 1537 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.5.tgz", 1538 | "integrity": "sha512-kBBSQbz2K0Nyn+31j/w36fUfxkBW9/gfwRWdUY1ULReH3iokVJgddZAFcD1D0xlgTmFxJCbUkUclAlc6/IDJkw==" 1539 | }, 1540 | "has": { 1541 | "version": "1.0.3", 1542 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1543 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1544 | "requires": { 1545 | "function-bind": "^1.1.1" 1546 | } 1547 | }, 1548 | "has-flag": { 1549 | "version": "3.0.0", 1550 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1551 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" 1552 | }, 1553 | "has-unicode": { 1554 | "version": "2.0.1", 1555 | "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", 1556 | "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", 1557 | "optional": true 1558 | }, 1559 | "hash-base": { 1560 | "version": "3.1.0", 1561 | "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", 1562 | "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", 1563 | "requires": { 1564 | "inherits": "^2.0.4", 1565 | "readable-stream": "^3.6.0", 1566 | "safe-buffer": "^5.2.0" 1567 | } 1568 | }, 1569 | "hash.js": { 1570 | "version": "1.1.7", 1571 | "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", 1572 | "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", 1573 | "requires": { 1574 | "inherits": "^2.0.3", 1575 | "minimalistic-assert": "^1.0.1" 1576 | } 1577 | }, 1578 | "he": { 1579 | "version": "1.2.0", 1580 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 1581 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" 1582 | }, 1583 | "hmac-drbg": { 1584 | "version": "1.0.1", 1585 | "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", 1586 | "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", 1587 | "requires": { 1588 | "hash.js": "^1.0.3", 1589 | "minimalistic-assert": "^1.0.0", 1590 | "minimalistic-crypto-utils": "^1.0.1" 1591 | } 1592 | }, 1593 | "hoist-non-react-statics": { 1594 | "version": "3.3.2", 1595 | "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", 1596 | "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", 1597 | "requires": { 1598 | "react-is": "^16.7.0" 1599 | } 1600 | }, 1601 | "htmlparser2": { 1602 | "version": "5.0.1", 1603 | "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-5.0.1.tgz", 1604 | "integrity": "sha512-vKZZra6CSe9qsJzh0BjBGXo8dvzNsq/oGvsjfRdOrrryfeD9UOBEEQdeoqCRmKZchF5h2zOBMQ6YuQ0uRUmdbQ==", 1605 | "requires": { 1606 | "domelementtype": "^2.0.1", 1607 | "domhandler": "^3.3.0", 1608 | "domutils": "^2.4.2", 1609 | "entities": "^2.0.0" 1610 | } 1611 | }, 1612 | "http-errors": { 1613 | "version": "1.7.3", 1614 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", 1615 | "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", 1616 | "requires": { 1617 | "depd": "~1.1.2", 1618 | "inherits": "2.0.4", 1619 | "setprototypeof": "1.1.1", 1620 | "statuses": ">= 1.5.0 < 2", 1621 | "toidentifier": "1.0.0" 1622 | } 1623 | }, 1624 | "https-browserify": { 1625 | "version": "1.0.0", 1626 | "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", 1627 | "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" 1628 | }, 1629 | "https-proxy-agent": { 1630 | "version": "5.0.0", 1631 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", 1632 | "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", 1633 | "requires": { 1634 | "agent-base": "6", 1635 | "debug": "4" 1636 | } 1637 | }, 1638 | "hyphenate-style-name": { 1639 | "version": "1.0.4", 1640 | "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz", 1641 | "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" 1642 | }, 1643 | "iconv-lite": { 1644 | "version": "0.4.24", 1645 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 1646 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 1647 | "requires": { 1648 | "safer-buffer": ">= 2.1.2 < 3" 1649 | } 1650 | }, 1651 | "ieee754": { 1652 | "version": "1.2.1", 1653 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 1654 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" 1655 | }, 1656 | "import-fresh": { 1657 | "version": "3.3.0", 1658 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 1659 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 1660 | "requires": { 1661 | "parent-module": "^1.0.0", 1662 | "resolve-from": "^4.0.0" 1663 | } 1664 | }, 1665 | "indefinite-observable": { 1666 | "version": "2.0.1", 1667 | "resolved": "https://registry.npmjs.org/indefinite-observable/-/indefinite-observable-2.0.1.tgz", 1668 | "integrity": "sha512-G8vgmork+6H9S8lUAg1gtXEj2JxIQTo0g2PbFiYOdjkziSI0F7UYBiVwhZRuixhBCNGczAls34+5HJPyZysvxQ==", 1669 | "requires": { 1670 | "symbol-observable": "1.2.0" 1671 | } 1672 | }, 1673 | "inherits": { 1674 | "version": "2.0.4", 1675 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1676 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1677 | }, 1678 | "ini": { 1679 | "version": "1.3.8", 1680 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", 1681 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", 1682 | "optional": true 1683 | }, 1684 | "is-arrayish": { 1685 | "version": "0.3.2", 1686 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", 1687 | "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", 1688 | "optional": true 1689 | }, 1690 | "is-binary-path": { 1691 | "version": "2.1.0", 1692 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1693 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1694 | "requires": { 1695 | "binary-extensions": "^2.0.0" 1696 | } 1697 | }, 1698 | "is-core-module": { 1699 | "version": "2.2.0", 1700 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", 1701 | "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", 1702 | "requires": { 1703 | "has": "^1.0.3" 1704 | } 1705 | }, 1706 | "is-extglob": { 1707 | "version": "2.1.1", 1708 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1709 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" 1710 | }, 1711 | "is-fullwidth-code-point": { 1712 | "version": "1.0.0", 1713 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", 1714 | "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", 1715 | "optional": true, 1716 | "requires": { 1717 | "number-is-nan": "^1.0.0" 1718 | } 1719 | }, 1720 | "is-glob": { 1721 | "version": "4.0.1", 1722 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 1723 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 1724 | "requires": { 1725 | "is-extglob": "^2.1.1" 1726 | } 1727 | }, 1728 | "is-in-browser": { 1729 | "version": "1.1.3", 1730 | "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz", 1731 | "integrity": "sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU=" 1732 | }, 1733 | "is-number": { 1734 | "version": "7.0.0", 1735 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1736 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" 1737 | }, 1738 | "isarray": { 1739 | "version": "1.0.0", 1740 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1741 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 1742 | }, 1743 | "isobject": { 1744 | "version": "2.1.0", 1745 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", 1746 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", 1747 | "requires": { 1748 | "isarray": "1.0.0" 1749 | } 1750 | }, 1751 | "jest-worker": { 1752 | "version": "24.9.0", 1753 | "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", 1754 | "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", 1755 | "requires": { 1756 | "merge-stream": "^2.0.0", 1757 | "supports-color": "^6.1.0" 1758 | } 1759 | }, 1760 | "js-tokens": { 1761 | "version": "4.0.0", 1762 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1763 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 1764 | }, 1765 | "json-parse-even-better-errors": { 1766 | "version": "2.3.1", 1767 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", 1768 | "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" 1769 | }, 1770 | "json5": { 1771 | "version": "1.0.1", 1772 | "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", 1773 | "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", 1774 | "requires": { 1775 | "minimist": "^1.2.0" 1776 | } 1777 | }, 1778 | "jss": { 1779 | "version": "10.5.1", 1780 | "resolved": "https://registry.npmjs.org/jss/-/jss-10.5.1.tgz", 1781 | "integrity": "sha512-hbbO3+FOTqVdd7ZUoTiwpHzKXIo5vGpMNbuXH1a0wubRSWLWSBvwvaq4CiHH/U42CmjOnp6lVNNs/l+Z7ZdDmg==", 1782 | "requires": { 1783 | "@babel/runtime": "^7.3.1", 1784 | "csstype": "^3.0.2", 1785 | "indefinite-observable": "^2.0.1", 1786 | "is-in-browser": "^1.1.3", 1787 | "tiny-warning": "^1.0.2" 1788 | } 1789 | }, 1790 | "jss-plugin-camel-case": { 1791 | "version": "10.5.1", 1792 | "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.5.1.tgz", 1793 | "integrity": "sha512-9+oymA7wPtswm+zxVti1qiowC5q7bRdCJNORtns2JUj/QHp2QPXYwSNRD8+D2Cy3/CEMtdJzlNnt5aXmpS6NAg==", 1794 | "requires": { 1795 | "@babel/runtime": "^7.3.1", 1796 | "hyphenate-style-name": "^1.0.3", 1797 | "jss": "10.5.1" 1798 | } 1799 | }, 1800 | "jss-plugin-default-unit": { 1801 | "version": "10.5.1", 1802 | "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.5.1.tgz", 1803 | "integrity": "sha512-D48hJBc9Tj3PusvlillHW8Fz0y/QqA7MNmTYDQaSB/7mTrCZjt7AVRROExoOHEtd2qIYKOYJW3Jc2agnvsXRlQ==", 1804 | "requires": { 1805 | "@babel/runtime": "^7.3.1", 1806 | "jss": "10.5.1" 1807 | } 1808 | }, 1809 | "jss-plugin-global": { 1810 | "version": "10.5.1", 1811 | "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.5.1.tgz", 1812 | "integrity": "sha512-jX4XpNgoaB8yPWw/gA1aPXJEoX0LNpvsROPvxlnYe+SE0JOhuvF7mA6dCkgpXBxfTWKJsno7cDSCgzHTocRjCQ==", 1813 | "requires": { 1814 | "@babel/runtime": "^7.3.1", 1815 | "jss": "10.5.1" 1816 | } 1817 | }, 1818 | "jss-plugin-nested": { 1819 | "version": "10.5.1", 1820 | "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.5.1.tgz", 1821 | "integrity": "sha512-xXkWKOCljuwHNjSYcXrCxBnjd8eJp90KVFW1rlhvKKRXnEKVD6vdKXYezk2a89uKAHckSvBvBoDGsfZrldWqqQ==", 1822 | "requires": { 1823 | "@babel/runtime": "^7.3.1", 1824 | "jss": "10.5.1", 1825 | "tiny-warning": "^1.0.2" 1826 | } 1827 | }, 1828 | "jss-plugin-props-sort": { 1829 | "version": "10.5.1", 1830 | "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.5.1.tgz", 1831 | "integrity": "sha512-t+2vcevNmMg4U/jAuxlfjKt46D/jHzCPEjsjLRj/J56CvP7Iy03scsUP58Iw8mVnaV36xAUZH2CmAmAdo8994g==", 1832 | "requires": { 1833 | "@babel/runtime": "^7.3.1", 1834 | "jss": "10.5.1" 1835 | } 1836 | }, 1837 | "jss-plugin-rule-value-function": { 1838 | "version": "10.5.1", 1839 | "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.5.1.tgz", 1840 | "integrity": "sha512-3gjrSxsy4ka/lGQsTDY8oYYtkt2esBvQiceGBB4PykXxHoGRz14tbCK31Zc6DHEnIeqsjMUGbq+wEly5UViStQ==", 1841 | "requires": { 1842 | "@babel/runtime": "^7.3.1", 1843 | "jss": "10.5.1", 1844 | "tiny-warning": "^1.0.2" 1845 | } 1846 | }, 1847 | "jss-plugin-vendor-prefixer": { 1848 | "version": "10.5.1", 1849 | "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.5.1.tgz", 1850 | "integrity": "sha512-cLkH6RaPZWHa1TqSfd2vszNNgxT1W0omlSjAd6hCFHp3KIocSrW21gaHjlMU26JpTHwkc+tJTCQOmE/O1A4FKQ==", 1851 | "requires": { 1852 | "@babel/runtime": "^7.3.1", 1853 | "css-vendor": "^2.0.8", 1854 | "jss": "10.5.1" 1855 | } 1856 | }, 1857 | "line-column": { 1858 | "version": "1.0.2", 1859 | "resolved": "https://registry.npmjs.org/line-column/-/line-column-1.0.2.tgz", 1860 | "integrity": "sha1-0lryk2tvSEkXKzEuR5LR2Ye8NKI=", 1861 | "requires": { 1862 | "isarray": "^1.0.0", 1863 | "isobject": "^2.0.0" 1864 | } 1865 | }, 1866 | "lines-and-columns": { 1867 | "version": "1.1.6", 1868 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", 1869 | "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" 1870 | }, 1871 | "loader-utils": { 1872 | "version": "1.2.3", 1873 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", 1874 | "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", 1875 | "requires": { 1876 | "big.js": "^5.2.2", 1877 | "emojis-list": "^2.0.0", 1878 | "json5": "^1.0.1" 1879 | } 1880 | }, 1881 | "locate-path": { 1882 | "version": "5.0.0", 1883 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", 1884 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", 1885 | "requires": { 1886 | "p-locate": "^4.1.0" 1887 | } 1888 | }, 1889 | "lodash": { 1890 | "version": "4.17.20", 1891 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", 1892 | "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" 1893 | }, 1894 | "lodash.sortby": { 1895 | "version": "4.7.0", 1896 | "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", 1897 | "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" 1898 | }, 1899 | "loose-envify": { 1900 | "version": "1.4.0", 1901 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 1902 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 1903 | "requires": { 1904 | "js-tokens": "^3.0.0 || ^4.0.0" 1905 | } 1906 | }, 1907 | "lru-cache": { 1908 | "version": "6.0.0", 1909 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 1910 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 1911 | "requires": { 1912 | "yallist": "^4.0.0" 1913 | } 1914 | }, 1915 | "make-dir": { 1916 | "version": "3.1.0", 1917 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", 1918 | "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", 1919 | "requires": { 1920 | "semver": "^6.0.0" 1921 | } 1922 | }, 1923 | "md5.js": { 1924 | "version": "1.3.5", 1925 | "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", 1926 | "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", 1927 | "requires": { 1928 | "hash-base": "^3.0.0", 1929 | "inherits": "^2.0.1", 1930 | "safe-buffer": "^5.1.2" 1931 | } 1932 | }, 1933 | "merge-stream": { 1934 | "version": "2.0.0", 1935 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 1936 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" 1937 | }, 1938 | "miller-rabin": { 1939 | "version": "4.0.1", 1940 | "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", 1941 | "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", 1942 | "requires": { 1943 | "bn.js": "^4.0.0", 1944 | "brorand": "^1.0.1" 1945 | }, 1946 | "dependencies": { 1947 | "bn.js": { 1948 | "version": "4.11.9", 1949 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", 1950 | "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" 1951 | } 1952 | } 1953 | }, 1954 | "mimic-response": { 1955 | "version": "2.1.0", 1956 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", 1957 | "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", 1958 | "optional": true 1959 | }, 1960 | "minimalistic-assert": { 1961 | "version": "1.0.1", 1962 | "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", 1963 | "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" 1964 | }, 1965 | "minimalistic-crypto-utils": { 1966 | "version": "1.0.1", 1967 | "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", 1968 | "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" 1969 | }, 1970 | "minimist": { 1971 | "version": "1.2.5", 1972 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 1973 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" 1974 | }, 1975 | "mkdirp-classic": { 1976 | "version": "0.5.3", 1977 | "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", 1978 | "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", 1979 | "optional": true 1980 | }, 1981 | "ms": { 1982 | "version": "2.1.2", 1983 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1984 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1985 | }, 1986 | "nanoid": { 1987 | "version": "3.1.20", 1988 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", 1989 | "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==" 1990 | }, 1991 | "napi-build-utils": { 1992 | "version": "1.0.2", 1993 | "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", 1994 | "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", 1995 | "optional": true 1996 | }, 1997 | "native-url": { 1998 | "version": "0.3.4", 1999 | "resolved": "https://registry.npmjs.org/native-url/-/native-url-0.3.4.tgz", 2000 | "integrity": "sha512-6iM8R99ze45ivyH8vybJ7X0yekIcPf5GgLV5K0ENCbmRcaRIDoj37BC8iLEmaaBfqqb8enuZ5p0uhY+lVAbAcA==", 2001 | "requires": { 2002 | "querystring": "^0.2.0" 2003 | } 2004 | }, 2005 | "next": { 2006 | "version": "10.0.6", 2007 | "resolved": "https://registry.npmjs.org/next/-/next-10.0.6.tgz", 2008 | "integrity": "sha512-uM5Yv4Ha9iL6Lbg7Ez36GyJ0YTdRLzXLA9b1REH3rX2Wytw0Ls5qPuFGk4BHSQpQhYx6Z61iA2qPkGl33W4iBg==", 2009 | "requires": { 2010 | "@ampproject/toolbox-optimizer": "2.7.1-alpha.0", 2011 | "@babel/runtime": "7.12.5", 2012 | "@hapi/accept": "5.0.1", 2013 | "@next/env": "10.0.6", 2014 | "@next/polyfill-module": "10.0.6", 2015 | "@next/react-dev-overlay": "10.0.6", 2016 | "@next/react-refresh-utils": "10.0.6", 2017 | "@opentelemetry/api": "0.14.0", 2018 | "ast-types": "0.13.2", 2019 | "browserslist": "4.16.1", 2020 | "buffer": "5.6.0", 2021 | "caniuse-lite": "^1.0.30001179", 2022 | "chalk": "2.4.2", 2023 | "chokidar": "3.5.1", 2024 | "crypto-browserify": "3.12.0", 2025 | "cssnano-simple": "1.2.2", 2026 | "etag": "1.8.1", 2027 | "find-cache-dir": "3.3.1", 2028 | "jest-worker": "24.9.0", 2029 | "native-url": "0.3.4", 2030 | "node-fetch": "2.6.1", 2031 | "node-html-parser": "1.4.9", 2032 | "node-libs-browser": "^2.2.1", 2033 | "p-limit": "3.1.0", 2034 | "path-browserify": "1.0.1", 2035 | "pnp-webpack-plugin": "1.6.4", 2036 | "postcss": "8.1.7", 2037 | "process": "0.11.10", 2038 | "prop-types": "15.7.2", 2039 | "raw-body": "2.4.1", 2040 | "react-is": "16.13.1", 2041 | "react-refresh": "0.8.3", 2042 | "sharp": "0.26.3", 2043 | "stream-browserify": "3.0.0", 2044 | "styled-jsx": "3.3.2", 2045 | "use-subscription": "1.5.1", 2046 | "vm-browserify": "1.1.2", 2047 | "watchpack": "2.0.0-beta.13" 2048 | } 2049 | }, 2050 | "next-redux-wrapper": { 2051 | "version": "6.0.2", 2052 | "resolved": "https://registry.npmjs.org/next-redux-wrapper/-/next-redux-wrapper-6.0.2.tgz", 2053 | "integrity": "sha512-I9CnIYhQwI/qEoNdc9VAPjIyuq4rFFhCTa4rKhoDHWEVHGB1DXZy8TAyGpwvWizESd8IoTI/OKlP6bFpCbXsOw==" 2054 | }, 2055 | "node-abi": { 2056 | "version": "2.19.3", 2057 | "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.19.3.tgz", 2058 | "integrity": "sha512-9xZrlyfvKhWme2EXFKQhZRp1yNWT/uI1luYPr3sFl+H4keYY4xR+1jO7mvTTijIsHf1M+QDe9uWuKeEpLInIlg==", 2059 | "optional": true, 2060 | "requires": { 2061 | "semver": "^5.4.1" 2062 | }, 2063 | "dependencies": { 2064 | "semver": { 2065 | "version": "5.7.1", 2066 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 2067 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 2068 | "optional": true 2069 | } 2070 | } 2071 | }, 2072 | "node-addon-api": { 2073 | "version": "3.1.0", 2074 | "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz", 2075 | "integrity": "sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw==", 2076 | "optional": true 2077 | }, 2078 | "node-fetch": { 2079 | "version": "2.6.1", 2080 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", 2081 | "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" 2082 | }, 2083 | "node-html-parser": { 2084 | "version": "1.4.9", 2085 | "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-1.4.9.tgz", 2086 | "integrity": "sha512-UVcirFD1Bn0O+TSmloHeHqZZCxHjvtIeGdVdGMhyZ8/PWlEiZaZ5iJzR189yKZr8p0FXN58BUeC7RHRkf/KYGw==", 2087 | "requires": { 2088 | "he": "1.2.0" 2089 | } 2090 | }, 2091 | "node-libs-browser": { 2092 | "version": "2.2.1", 2093 | "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", 2094 | "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", 2095 | "requires": { 2096 | "assert": "^1.1.1", 2097 | "browserify-zlib": "^0.2.0", 2098 | "buffer": "^4.3.0", 2099 | "console-browserify": "^1.1.0", 2100 | "constants-browserify": "^1.0.0", 2101 | "crypto-browserify": "^3.11.0", 2102 | "domain-browser": "^1.1.1", 2103 | "events": "^3.0.0", 2104 | "https-browserify": "^1.0.0", 2105 | "os-browserify": "^0.3.0", 2106 | "path-browserify": "0.0.1", 2107 | "process": "^0.11.10", 2108 | "punycode": "^1.2.4", 2109 | "querystring-es3": "^0.2.0", 2110 | "readable-stream": "^2.3.3", 2111 | "stream-browserify": "^2.0.1", 2112 | "stream-http": "^2.7.2", 2113 | "string_decoder": "^1.0.0", 2114 | "timers-browserify": "^2.0.4", 2115 | "tty-browserify": "0.0.0", 2116 | "url": "^0.11.0", 2117 | "util": "^0.11.0", 2118 | "vm-browserify": "^1.0.1" 2119 | }, 2120 | "dependencies": { 2121 | "buffer": { 2122 | "version": "4.9.2", 2123 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", 2124 | "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", 2125 | "requires": { 2126 | "base64-js": "^1.0.2", 2127 | "ieee754": "^1.1.4", 2128 | "isarray": "^1.0.0" 2129 | } 2130 | }, 2131 | "path-browserify": { 2132 | "version": "0.0.1", 2133 | "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", 2134 | "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" 2135 | }, 2136 | "punycode": { 2137 | "version": "1.4.1", 2138 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", 2139 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" 2140 | }, 2141 | "readable-stream": { 2142 | "version": "2.3.7", 2143 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 2144 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 2145 | "requires": { 2146 | "core-util-is": "~1.0.0", 2147 | "inherits": "~2.0.3", 2148 | "isarray": "~1.0.0", 2149 | "process-nextick-args": "~2.0.0", 2150 | "safe-buffer": "~5.1.1", 2151 | "string_decoder": "~1.1.1", 2152 | "util-deprecate": "~1.0.1" 2153 | }, 2154 | "dependencies": { 2155 | "string_decoder": { 2156 | "version": "1.1.1", 2157 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 2158 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 2159 | "requires": { 2160 | "safe-buffer": "~5.1.0" 2161 | } 2162 | } 2163 | } 2164 | }, 2165 | "safe-buffer": { 2166 | "version": "5.1.2", 2167 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 2168 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 2169 | }, 2170 | "stream-browserify": { 2171 | "version": "2.0.2", 2172 | "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", 2173 | "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", 2174 | "requires": { 2175 | "inherits": "~2.0.1", 2176 | "readable-stream": "^2.0.2" 2177 | } 2178 | } 2179 | } 2180 | }, 2181 | "node-releases": { 2182 | "version": "1.1.70", 2183 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.70.tgz", 2184 | "integrity": "sha512-Slf2s69+2/uAD79pVVQo8uSiC34+g8GWY8UH2Qtqv34ZfhYrxpYpfzs9Js9d6O0mbDmALuxaTlplnBTnSELcrw==" 2185 | }, 2186 | "noop-logger": { 2187 | "version": "0.1.1", 2188 | "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", 2189 | "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=", 2190 | "optional": true 2191 | }, 2192 | "normalize-html-whitespace": { 2193 | "version": "1.0.0", 2194 | "resolved": "https://registry.npmjs.org/normalize-html-whitespace/-/normalize-html-whitespace-1.0.0.tgz", 2195 | "integrity": "sha512-9ui7CGtOOlehQu0t/OhhlmDyc71mKVlv+4vF+me4iZLPrNtRL2xoquEdfZxasC/bdQi/Hr3iTrpyRKIG+ocabA==" 2196 | }, 2197 | "normalize-path": { 2198 | "version": "3.0.0", 2199 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 2200 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" 2201 | }, 2202 | "npmlog": { 2203 | "version": "4.1.2", 2204 | "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", 2205 | "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", 2206 | "optional": true, 2207 | "requires": { 2208 | "are-we-there-yet": "~1.1.2", 2209 | "console-control-strings": "~1.1.0", 2210 | "gauge": "~2.7.3", 2211 | "set-blocking": "~2.0.0" 2212 | } 2213 | }, 2214 | "number-is-nan": { 2215 | "version": "1.0.1", 2216 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", 2217 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", 2218 | "optional": true 2219 | }, 2220 | "object-assign": { 2221 | "version": "4.1.1", 2222 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 2223 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" 2224 | }, 2225 | "once": { 2226 | "version": "1.4.0", 2227 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2228 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 2229 | "optional": true, 2230 | "requires": { 2231 | "wrappy": "1" 2232 | } 2233 | }, 2234 | "os-browserify": { 2235 | "version": "0.3.0", 2236 | "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", 2237 | "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" 2238 | }, 2239 | "p-limit": { 2240 | "version": "3.1.0", 2241 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 2242 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 2243 | "requires": { 2244 | "yocto-queue": "^0.1.0" 2245 | } 2246 | }, 2247 | "p-locate": { 2248 | "version": "4.1.0", 2249 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", 2250 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", 2251 | "requires": { 2252 | "p-limit": "^2.2.0" 2253 | }, 2254 | "dependencies": { 2255 | "p-limit": { 2256 | "version": "2.3.0", 2257 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 2258 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 2259 | "requires": { 2260 | "p-try": "^2.0.0" 2261 | } 2262 | } 2263 | } 2264 | }, 2265 | "p-try": { 2266 | "version": "2.2.0", 2267 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 2268 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" 2269 | }, 2270 | "pako": { 2271 | "version": "1.0.11", 2272 | "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", 2273 | "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" 2274 | }, 2275 | "parent-module": { 2276 | "version": "1.0.1", 2277 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 2278 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 2279 | "requires": { 2280 | "callsites": "^3.0.0" 2281 | } 2282 | }, 2283 | "parse-asn1": { 2284 | "version": "5.1.6", 2285 | "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", 2286 | "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", 2287 | "requires": { 2288 | "asn1.js": "^5.2.0", 2289 | "browserify-aes": "^1.0.0", 2290 | "evp_bytestokey": "^1.0.0", 2291 | "pbkdf2": "^3.0.3", 2292 | "safe-buffer": "^5.1.1" 2293 | } 2294 | }, 2295 | "parse-json": { 2296 | "version": "5.2.0", 2297 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", 2298 | "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", 2299 | "requires": { 2300 | "@babel/code-frame": "^7.0.0", 2301 | "error-ex": "^1.3.1", 2302 | "json-parse-even-better-errors": "^2.3.0", 2303 | "lines-and-columns": "^1.1.6" 2304 | } 2305 | }, 2306 | "path-browserify": { 2307 | "version": "1.0.1", 2308 | "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", 2309 | "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" 2310 | }, 2311 | "path-exists": { 2312 | "version": "4.0.0", 2313 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 2314 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" 2315 | }, 2316 | "path-parse": { 2317 | "version": "1.0.6", 2318 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", 2319 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" 2320 | }, 2321 | "path-type": { 2322 | "version": "4.0.0", 2323 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 2324 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" 2325 | }, 2326 | "pbkdf2": { 2327 | "version": "3.1.1", 2328 | "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", 2329 | "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", 2330 | "requires": { 2331 | "create-hash": "^1.1.2", 2332 | "create-hmac": "^1.1.4", 2333 | "ripemd160": "^2.0.1", 2334 | "safe-buffer": "^5.0.1", 2335 | "sha.js": "^2.4.8" 2336 | } 2337 | }, 2338 | "picomatch": { 2339 | "version": "2.2.2", 2340 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", 2341 | "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" 2342 | }, 2343 | "pkg-dir": { 2344 | "version": "4.2.0", 2345 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", 2346 | "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", 2347 | "requires": { 2348 | "find-up": "^4.0.0" 2349 | } 2350 | }, 2351 | "platform": { 2352 | "version": "1.3.6", 2353 | "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz", 2354 | "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==" 2355 | }, 2356 | "pnp-webpack-plugin": { 2357 | "version": "1.6.4", 2358 | "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", 2359 | "integrity": "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==", 2360 | "requires": { 2361 | "ts-pnp": "^1.1.6" 2362 | } 2363 | }, 2364 | "postcss": { 2365 | "version": "8.1.7", 2366 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.1.7.tgz", 2367 | "integrity": "sha512-llCQW1Pz4MOPwbZLmOddGM9eIJ8Bh7SZ2Oj5sxZva77uVaotYDsYTch1WBTNu7fUY0fpWp0fdt7uW40D4sRiiQ==", 2368 | "requires": { 2369 | "colorette": "^1.2.1", 2370 | "line-column": "^1.0.2", 2371 | "nanoid": "^3.1.16", 2372 | "source-map": "^0.6.1" 2373 | } 2374 | }, 2375 | "postcss-safe-parser": { 2376 | "version": "4.0.2", 2377 | "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz", 2378 | "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==", 2379 | "requires": { 2380 | "postcss": "^7.0.26" 2381 | }, 2382 | "dependencies": { 2383 | "postcss": { 2384 | "version": "7.0.35", 2385 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", 2386 | "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", 2387 | "requires": { 2388 | "chalk": "^2.4.2", 2389 | "source-map": "^0.6.1", 2390 | "supports-color": "^6.1.0" 2391 | } 2392 | } 2393 | } 2394 | }, 2395 | "prebuild-install": { 2396 | "version": "6.0.0", 2397 | "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.0.0.tgz", 2398 | "integrity": "sha512-h2ZJ1PXHKWZpp1caLw0oX9sagVpL2YTk+ZwInQbQ3QqNd4J03O6MpFNmMTJlkfgPENWqe5kP0WjQLqz5OjLfsw==", 2399 | "optional": true, 2400 | "requires": { 2401 | "detect-libc": "^1.0.3", 2402 | "expand-template": "^2.0.3", 2403 | "github-from-package": "0.0.0", 2404 | "minimist": "^1.2.3", 2405 | "mkdirp-classic": "^0.5.3", 2406 | "napi-build-utils": "^1.0.1", 2407 | "node-abi": "^2.7.0", 2408 | "noop-logger": "^0.1.1", 2409 | "npmlog": "^4.0.1", 2410 | "pump": "^3.0.0", 2411 | "rc": "^1.2.7", 2412 | "simple-get": "^3.0.3", 2413 | "tar-fs": "^2.0.0", 2414 | "tunnel-agent": "^0.6.0", 2415 | "which-pm-runs": "^1.0.0" 2416 | }, 2417 | "dependencies": { 2418 | "simple-get": { 2419 | "version": "3.1.0", 2420 | "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz", 2421 | "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==", 2422 | "optional": true, 2423 | "requires": { 2424 | "decompress-response": "^4.2.0", 2425 | "once": "^1.3.1", 2426 | "simple-concat": "^1.0.0" 2427 | } 2428 | } 2429 | } 2430 | }, 2431 | "process": { 2432 | "version": "0.11.10", 2433 | "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", 2434 | "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" 2435 | }, 2436 | "process-nextick-args": { 2437 | "version": "2.0.1", 2438 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 2439 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" 2440 | }, 2441 | "prop-types": { 2442 | "version": "15.7.2", 2443 | "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", 2444 | "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", 2445 | "requires": { 2446 | "loose-envify": "^1.4.0", 2447 | "object-assign": "^4.1.1", 2448 | "react-is": "^16.8.1" 2449 | } 2450 | }, 2451 | "public-encrypt": { 2452 | "version": "4.0.3", 2453 | "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", 2454 | "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", 2455 | "requires": { 2456 | "bn.js": "^4.1.0", 2457 | "browserify-rsa": "^4.0.0", 2458 | "create-hash": "^1.1.0", 2459 | "parse-asn1": "^5.0.0", 2460 | "randombytes": "^2.0.1", 2461 | "safe-buffer": "^5.1.2" 2462 | }, 2463 | "dependencies": { 2464 | "bn.js": { 2465 | "version": "4.11.9", 2466 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", 2467 | "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" 2468 | } 2469 | } 2470 | }, 2471 | "pump": { 2472 | "version": "3.0.0", 2473 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 2474 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 2475 | "optional": true, 2476 | "requires": { 2477 | "end-of-stream": "^1.1.0", 2478 | "once": "^1.3.1" 2479 | } 2480 | }, 2481 | "punycode": { 2482 | "version": "2.1.1", 2483 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 2484 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" 2485 | }, 2486 | "querystring": { 2487 | "version": "0.2.0", 2488 | "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", 2489 | "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" 2490 | }, 2491 | "querystring-es3": { 2492 | "version": "0.2.1", 2493 | "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", 2494 | "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" 2495 | }, 2496 | "randombytes": { 2497 | "version": "2.1.0", 2498 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 2499 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 2500 | "requires": { 2501 | "safe-buffer": "^5.1.0" 2502 | } 2503 | }, 2504 | "randomfill": { 2505 | "version": "1.0.4", 2506 | "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", 2507 | "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", 2508 | "requires": { 2509 | "randombytes": "^2.0.5", 2510 | "safe-buffer": "^5.1.0" 2511 | } 2512 | }, 2513 | "raw-body": { 2514 | "version": "2.4.1", 2515 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz", 2516 | "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==", 2517 | "requires": { 2518 | "bytes": "3.1.0", 2519 | "http-errors": "1.7.3", 2520 | "iconv-lite": "0.4.24", 2521 | "unpipe": "1.0.0" 2522 | } 2523 | }, 2524 | "rc": { 2525 | "version": "1.2.8", 2526 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", 2527 | "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", 2528 | "optional": true, 2529 | "requires": { 2530 | "deep-extend": "^0.6.0", 2531 | "ini": "~1.3.0", 2532 | "minimist": "^1.2.0", 2533 | "strip-json-comments": "~2.0.1" 2534 | } 2535 | }, 2536 | "react": { 2537 | "version": "17.0.1", 2538 | "resolved": "https://registry.npmjs.org/react/-/react-17.0.1.tgz", 2539 | "integrity": "sha512-lG9c9UuMHdcAexXtigOZLX8exLWkW0Ku29qPRU8uhF2R9BN96dLCt0psvzPLlHc5OWkgymP3qwTRgbnw5BKx3w==", 2540 | "requires": { 2541 | "loose-envify": "^1.1.0", 2542 | "object-assign": "^4.1.1" 2543 | } 2544 | }, 2545 | "react-dom": { 2546 | "version": "17.0.1", 2547 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.1.tgz", 2548 | "integrity": "sha512-6eV150oJZ9U2t9svnsspTMrWNyHc6chX0KzDeAOXftRa8bNeOKTTfCJ7KorIwenkHd2xqVTBTCZd79yk/lx/Ug==", 2549 | "requires": { 2550 | "loose-envify": "^1.1.0", 2551 | "object-assign": "^4.1.1", 2552 | "scheduler": "^0.20.1" 2553 | } 2554 | }, 2555 | "react-is": { 2556 | "version": "16.13.1", 2557 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", 2558 | "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" 2559 | }, 2560 | "react-redux": { 2561 | "version": "7.2.2", 2562 | "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.2.tgz", 2563 | "integrity": "sha512-8+CQ1EvIVFkYL/vu6Olo7JFLWop1qRUeb46sGtIMDCSpgwPQq8fPLpirIB0iTqFe9XYEFPHssdX8/UwN6pAkEA==", 2564 | "requires": { 2565 | "@babel/runtime": "^7.12.1", 2566 | "hoist-non-react-statics": "^3.3.2", 2567 | "loose-envify": "^1.4.0", 2568 | "prop-types": "^15.7.2", 2569 | "react-is": "^16.13.1" 2570 | } 2571 | }, 2572 | "react-refresh": { 2573 | "version": "0.8.3", 2574 | "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz", 2575 | "integrity": "sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg==" 2576 | }, 2577 | "react-transition-group": { 2578 | "version": "4.4.1", 2579 | "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.1.tgz", 2580 | "integrity": "sha512-Djqr7OQ2aPUiYurhPalTrVy9ddmFCCzwhqQmtN+J3+3DzLO209Fdr70QrN8Z3DsglWql6iY1lDWAfpFiBtuKGw==", 2581 | "requires": { 2582 | "@babel/runtime": "^7.5.5", 2583 | "dom-helpers": "^5.0.1", 2584 | "loose-envify": "^1.4.0", 2585 | "prop-types": "^15.6.2" 2586 | } 2587 | }, 2588 | "readable-stream": { 2589 | "version": "3.6.0", 2590 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 2591 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 2592 | "requires": { 2593 | "inherits": "^2.0.3", 2594 | "string_decoder": "^1.1.1", 2595 | "util-deprecate": "^1.0.1" 2596 | } 2597 | }, 2598 | "readdirp": { 2599 | "version": "3.5.0", 2600 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", 2601 | "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", 2602 | "requires": { 2603 | "picomatch": "^2.2.1" 2604 | } 2605 | }, 2606 | "redux": { 2607 | "version": "4.0.5", 2608 | "resolved": "https://registry.npmjs.org/redux/-/redux-4.0.5.tgz", 2609 | "integrity": "sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w==", 2610 | "requires": { 2611 | "loose-envify": "^1.4.0", 2612 | "symbol-observable": "^1.2.0" 2613 | } 2614 | }, 2615 | "redux-thunk": { 2616 | "version": "2.3.0", 2617 | "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.3.0.tgz", 2618 | "integrity": "sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw==" 2619 | }, 2620 | "regenerator-runtime": { 2621 | "version": "0.13.7", 2622 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", 2623 | "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" 2624 | }, 2625 | "resolve": { 2626 | "version": "1.19.0", 2627 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", 2628 | "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", 2629 | "requires": { 2630 | "is-core-module": "^2.1.0", 2631 | "path-parse": "^1.0.6" 2632 | } 2633 | }, 2634 | "resolve-from": { 2635 | "version": "4.0.0", 2636 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 2637 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" 2638 | }, 2639 | "ripemd160": { 2640 | "version": "2.0.2", 2641 | "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", 2642 | "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", 2643 | "requires": { 2644 | "hash-base": "^3.0.0", 2645 | "inherits": "^2.0.1" 2646 | } 2647 | }, 2648 | "safe-buffer": { 2649 | "version": "5.2.1", 2650 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 2651 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 2652 | }, 2653 | "safer-buffer": { 2654 | "version": "2.1.2", 2655 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 2656 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 2657 | }, 2658 | "sass": { 2659 | "version": "1.32.6", 2660 | "resolved": "https://registry.npmjs.org/sass/-/sass-1.32.6.tgz", 2661 | "integrity": "sha512-1bcDHDcSqeFtMr0JXI3xc/CXX6c4p0wHHivJdru8W7waM7a1WjKMm4m/Z5sY7CbVw4Whi2Chpcw6DFfSWwGLzQ==", 2662 | "requires": { 2663 | "chokidar": ">=2.0.0 <4.0.0" 2664 | } 2665 | }, 2666 | "scheduler": { 2667 | "version": "0.20.1", 2668 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.1.tgz", 2669 | "integrity": "sha512-LKTe+2xNJBNxu/QhHvDR14wUXHRQbVY5ZOYpOGWRzhydZUqrLb2JBvLPY7cAqFmqrWuDED0Mjk7013SZiOz6Bw==", 2670 | "requires": { 2671 | "loose-envify": "^1.1.0", 2672 | "object-assign": "^4.1.1" 2673 | } 2674 | }, 2675 | "semver": { 2676 | "version": "6.3.0", 2677 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 2678 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" 2679 | }, 2680 | "set-blocking": { 2681 | "version": "2.0.0", 2682 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 2683 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", 2684 | "optional": true 2685 | }, 2686 | "setimmediate": { 2687 | "version": "1.0.5", 2688 | "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", 2689 | "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" 2690 | }, 2691 | "setprototypeof": { 2692 | "version": "1.1.1", 2693 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 2694 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" 2695 | }, 2696 | "sha.js": { 2697 | "version": "2.4.11", 2698 | "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", 2699 | "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", 2700 | "requires": { 2701 | "inherits": "^2.0.1", 2702 | "safe-buffer": "^5.0.1" 2703 | } 2704 | }, 2705 | "sharp": { 2706 | "version": "0.26.3", 2707 | "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.26.3.tgz", 2708 | "integrity": "sha512-NdEJ9S6AMr8Px0zgtFo1TJjMK/ROMU92MkDtYn2BBrDjIx3YfH9TUyGdzPC+I/L619GeYQc690Vbaxc5FPCCWg==", 2709 | "optional": true, 2710 | "requires": { 2711 | "array-flatten": "^3.0.0", 2712 | "color": "^3.1.3", 2713 | "detect-libc": "^1.0.3", 2714 | "node-addon-api": "^3.0.2", 2715 | "npmlog": "^4.1.2", 2716 | "prebuild-install": "^6.0.0", 2717 | "semver": "^7.3.2", 2718 | "simple-get": "^4.0.0", 2719 | "tar-fs": "^2.1.1", 2720 | "tunnel-agent": "^0.6.0" 2721 | }, 2722 | "dependencies": { 2723 | "semver": { 2724 | "version": "7.3.4", 2725 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", 2726 | "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", 2727 | "optional": true, 2728 | "requires": { 2729 | "lru-cache": "^6.0.0" 2730 | } 2731 | } 2732 | } 2733 | }, 2734 | "shell-quote": { 2735 | "version": "1.7.2", 2736 | "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", 2737 | "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==" 2738 | }, 2739 | "signal-exit": { 2740 | "version": "3.0.3", 2741 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", 2742 | "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", 2743 | "optional": true 2744 | }, 2745 | "simple-concat": { 2746 | "version": "1.0.1", 2747 | "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", 2748 | "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", 2749 | "optional": true 2750 | }, 2751 | "simple-get": { 2752 | "version": "4.0.0", 2753 | "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.0.tgz", 2754 | "integrity": "sha512-ZalZGexYr3TA0SwySsr5HlgOOinS4Jsa8YB2GJ6lUNAazyAu4KG/VmzMTwAt2YVXzzVj8QmefmAonZIK2BSGcQ==", 2755 | "optional": true, 2756 | "requires": { 2757 | "decompress-response": "^6.0.0", 2758 | "once": "^1.3.1", 2759 | "simple-concat": "^1.0.0" 2760 | }, 2761 | "dependencies": { 2762 | "decompress-response": { 2763 | "version": "6.0.0", 2764 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", 2765 | "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", 2766 | "optional": true, 2767 | "requires": { 2768 | "mimic-response": "^3.1.0" 2769 | } 2770 | }, 2771 | "mimic-response": { 2772 | "version": "3.1.0", 2773 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", 2774 | "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", 2775 | "optional": true 2776 | } 2777 | } 2778 | }, 2779 | "simple-swizzle": { 2780 | "version": "0.2.2", 2781 | "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", 2782 | "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", 2783 | "optional": true, 2784 | "requires": { 2785 | "is-arrayish": "^0.3.1" 2786 | } 2787 | }, 2788 | "source-map": { 2789 | "version": "0.6.1", 2790 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 2791 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" 2792 | }, 2793 | "source-map-support": { 2794 | "version": "0.5.19", 2795 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", 2796 | "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", 2797 | "requires": { 2798 | "buffer-from": "^1.0.0", 2799 | "source-map": "^0.6.0" 2800 | } 2801 | }, 2802 | "stacktrace-parser": { 2803 | "version": "0.1.10", 2804 | "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", 2805 | "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", 2806 | "requires": { 2807 | "type-fest": "^0.7.1" 2808 | } 2809 | }, 2810 | "statuses": { 2811 | "version": "1.5.0", 2812 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 2813 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" 2814 | }, 2815 | "stream-browserify": { 2816 | "version": "3.0.0", 2817 | "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", 2818 | "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", 2819 | "requires": { 2820 | "inherits": "~2.0.4", 2821 | "readable-stream": "^3.5.0" 2822 | } 2823 | }, 2824 | "stream-http": { 2825 | "version": "2.8.3", 2826 | "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", 2827 | "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", 2828 | "requires": { 2829 | "builtin-status-codes": "^3.0.0", 2830 | "inherits": "^2.0.1", 2831 | "readable-stream": "^2.3.6", 2832 | "to-arraybuffer": "^1.0.0", 2833 | "xtend": "^4.0.0" 2834 | }, 2835 | "dependencies": { 2836 | "readable-stream": { 2837 | "version": "2.3.7", 2838 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 2839 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 2840 | "requires": { 2841 | "core-util-is": "~1.0.0", 2842 | "inherits": "~2.0.3", 2843 | "isarray": "~1.0.0", 2844 | "process-nextick-args": "~2.0.0", 2845 | "safe-buffer": "~5.1.1", 2846 | "string_decoder": "~1.1.1", 2847 | "util-deprecate": "~1.0.1" 2848 | } 2849 | }, 2850 | "safe-buffer": { 2851 | "version": "5.1.2", 2852 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 2853 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 2854 | }, 2855 | "string_decoder": { 2856 | "version": "1.1.1", 2857 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 2858 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 2859 | "requires": { 2860 | "safe-buffer": "~5.1.0" 2861 | } 2862 | } 2863 | } 2864 | }, 2865 | "string-hash": { 2866 | "version": "1.1.3", 2867 | "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", 2868 | "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=" 2869 | }, 2870 | "string-width": { 2871 | "version": "1.0.2", 2872 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", 2873 | "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", 2874 | "optional": true, 2875 | "requires": { 2876 | "code-point-at": "^1.0.0", 2877 | "is-fullwidth-code-point": "^1.0.0", 2878 | "strip-ansi": "^3.0.0" 2879 | }, 2880 | "dependencies": { 2881 | "ansi-regex": { 2882 | "version": "2.1.1", 2883 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 2884 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 2885 | "optional": true 2886 | }, 2887 | "strip-ansi": { 2888 | "version": "3.0.1", 2889 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 2890 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 2891 | "optional": true, 2892 | "requires": { 2893 | "ansi-regex": "^2.0.0" 2894 | } 2895 | } 2896 | } 2897 | }, 2898 | "string_decoder": { 2899 | "version": "1.3.0", 2900 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 2901 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 2902 | "requires": { 2903 | "safe-buffer": "~5.2.0" 2904 | } 2905 | }, 2906 | "strip-ansi": { 2907 | "version": "6.0.0", 2908 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 2909 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 2910 | "requires": { 2911 | "ansi-regex": "^5.0.0" 2912 | } 2913 | }, 2914 | "strip-json-comments": { 2915 | "version": "2.0.1", 2916 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 2917 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", 2918 | "optional": true 2919 | }, 2920 | "styled-jsx": { 2921 | "version": "3.3.2", 2922 | "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-3.3.2.tgz", 2923 | "integrity": "sha512-daAkGd5mqhbBhLd6jYAjYBa9LpxYCzsgo/f6qzPdFxVB8yoGbhxvzQgkC0pfmCVvW3JuAEBn0UzFLBfkHVZG1g==", 2924 | "requires": { 2925 | "@babel/types": "7.8.3", 2926 | "babel-plugin-syntax-jsx": "6.18.0", 2927 | "convert-source-map": "1.7.0", 2928 | "loader-utils": "1.2.3", 2929 | "source-map": "0.7.3", 2930 | "string-hash": "1.1.3", 2931 | "stylis": "3.5.4", 2932 | "stylis-rule-sheet": "0.0.10" 2933 | }, 2934 | "dependencies": { 2935 | "source-map": { 2936 | "version": "0.7.3", 2937 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", 2938 | "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" 2939 | } 2940 | } 2941 | }, 2942 | "stylis": { 2943 | "version": "3.5.4", 2944 | "resolved": "https://registry.npmjs.org/stylis/-/stylis-3.5.4.tgz", 2945 | "integrity": "sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q==" 2946 | }, 2947 | "stylis-rule-sheet": { 2948 | "version": "0.0.10", 2949 | "resolved": "https://registry.npmjs.org/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz", 2950 | "integrity": "sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw==" 2951 | }, 2952 | "supports-color": { 2953 | "version": "6.1.0", 2954 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", 2955 | "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", 2956 | "requires": { 2957 | "has-flag": "^3.0.0" 2958 | } 2959 | }, 2960 | "symbol-observable": { 2961 | "version": "1.2.0", 2962 | "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", 2963 | "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" 2964 | }, 2965 | "tar-fs": { 2966 | "version": "2.1.1", 2967 | "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", 2968 | "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", 2969 | "optional": true, 2970 | "requires": { 2971 | "chownr": "^1.1.1", 2972 | "mkdirp-classic": "^0.5.2", 2973 | "pump": "^3.0.0", 2974 | "tar-stream": "^2.1.4" 2975 | } 2976 | }, 2977 | "tar-stream": { 2978 | "version": "2.2.0", 2979 | "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", 2980 | "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", 2981 | "optional": true, 2982 | "requires": { 2983 | "bl": "^4.0.3", 2984 | "end-of-stream": "^1.4.1", 2985 | "fs-constants": "^1.0.0", 2986 | "inherits": "^2.0.3", 2987 | "readable-stream": "^3.1.1" 2988 | } 2989 | }, 2990 | "terser": { 2991 | "version": "5.5.1", 2992 | "resolved": "https://registry.npmjs.org/terser/-/terser-5.5.1.tgz", 2993 | "integrity": "sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ==", 2994 | "requires": { 2995 | "commander": "^2.20.0", 2996 | "source-map": "~0.7.2", 2997 | "source-map-support": "~0.5.19" 2998 | }, 2999 | "dependencies": { 3000 | "source-map": { 3001 | "version": "0.7.3", 3002 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", 3003 | "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" 3004 | } 3005 | } 3006 | }, 3007 | "timers-browserify": { 3008 | "version": "2.0.12", 3009 | "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", 3010 | "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", 3011 | "requires": { 3012 | "setimmediate": "^1.0.4" 3013 | } 3014 | }, 3015 | "tiny-warning": { 3016 | "version": "1.0.3", 3017 | "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", 3018 | "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" 3019 | }, 3020 | "to-arraybuffer": { 3021 | "version": "1.0.1", 3022 | "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", 3023 | "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" 3024 | }, 3025 | "to-fast-properties": { 3026 | "version": "2.0.0", 3027 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 3028 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" 3029 | }, 3030 | "to-regex-range": { 3031 | "version": "5.0.1", 3032 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 3033 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 3034 | "requires": { 3035 | "is-number": "^7.0.0" 3036 | } 3037 | }, 3038 | "toidentifier": { 3039 | "version": "1.0.0", 3040 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", 3041 | "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" 3042 | }, 3043 | "tr46": { 3044 | "version": "1.0.1", 3045 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", 3046 | "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", 3047 | "requires": { 3048 | "punycode": "^2.1.0" 3049 | } 3050 | }, 3051 | "ts-pnp": { 3052 | "version": "1.2.0", 3053 | "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", 3054 | "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==" 3055 | }, 3056 | "tty-browserify": { 3057 | "version": "0.0.0", 3058 | "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", 3059 | "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" 3060 | }, 3061 | "tunnel-agent": { 3062 | "version": "0.6.0", 3063 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 3064 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", 3065 | "optional": true, 3066 | "requires": { 3067 | "safe-buffer": "^5.0.1" 3068 | } 3069 | }, 3070 | "type-fest": { 3071 | "version": "0.7.1", 3072 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", 3073 | "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==" 3074 | }, 3075 | "typescript": { 3076 | "version": "4.1.3", 3077 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.3.tgz", 3078 | "integrity": "sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg==", 3079 | "dev": true 3080 | }, 3081 | "unpipe": { 3082 | "version": "1.0.0", 3083 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 3084 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" 3085 | }, 3086 | "url": { 3087 | "version": "0.11.0", 3088 | "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", 3089 | "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", 3090 | "requires": { 3091 | "punycode": "1.3.2", 3092 | "querystring": "0.2.0" 3093 | }, 3094 | "dependencies": { 3095 | "punycode": { 3096 | "version": "1.3.2", 3097 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", 3098 | "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" 3099 | } 3100 | } 3101 | }, 3102 | "use-subscription": { 3103 | "version": "1.5.1", 3104 | "resolved": "https://registry.npmjs.org/use-subscription/-/use-subscription-1.5.1.tgz", 3105 | "integrity": "sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA==", 3106 | "requires": { 3107 | "object-assign": "^4.1.1" 3108 | } 3109 | }, 3110 | "util": { 3111 | "version": "0.11.1", 3112 | "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", 3113 | "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", 3114 | "requires": { 3115 | "inherits": "2.0.3" 3116 | }, 3117 | "dependencies": { 3118 | "inherits": { 3119 | "version": "2.0.3", 3120 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 3121 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 3122 | } 3123 | } 3124 | }, 3125 | "util-deprecate": { 3126 | "version": "1.0.2", 3127 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 3128 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 3129 | }, 3130 | "vm-browserify": { 3131 | "version": "1.1.2", 3132 | "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", 3133 | "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" 3134 | }, 3135 | "watchpack": { 3136 | "version": "2.0.0-beta.13", 3137 | "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.0.0-beta.13.tgz", 3138 | "integrity": "sha512-ZEFq2mx/k5qgQwgi6NOm+2ImICb8ngAkA/rZ6oyXZ7SgPn3pncf+nfhYTCrs3lmHwOxnPtGLTOuFLfpSMh1VMA==", 3139 | "requires": { 3140 | "glob-to-regexp": "^0.4.1", 3141 | "graceful-fs": "^4.1.2" 3142 | } 3143 | }, 3144 | "webidl-conversions": { 3145 | "version": "4.0.2", 3146 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", 3147 | "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" 3148 | }, 3149 | "whatwg-url": { 3150 | "version": "7.1.0", 3151 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", 3152 | "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", 3153 | "requires": { 3154 | "lodash.sortby": "^4.7.0", 3155 | "tr46": "^1.0.1", 3156 | "webidl-conversions": "^4.0.2" 3157 | } 3158 | }, 3159 | "which-pm-runs": { 3160 | "version": "1.0.0", 3161 | "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", 3162 | "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", 3163 | "optional": true 3164 | }, 3165 | "wide-align": { 3166 | "version": "1.1.3", 3167 | "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", 3168 | "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", 3169 | "optional": true, 3170 | "requires": { 3171 | "string-width": "^1.0.2 || 2" 3172 | } 3173 | }, 3174 | "wrappy": { 3175 | "version": "1.0.2", 3176 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3177 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 3178 | "optional": true 3179 | }, 3180 | "xtend": { 3181 | "version": "4.0.2", 3182 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 3183 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" 3184 | }, 3185 | "yallist": { 3186 | "version": "4.0.0", 3187 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 3188 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 3189 | }, 3190 | "yaml": { 3191 | "version": "1.10.0", 3192 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", 3193 | "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==" 3194 | }, 3195 | "yocto-queue": { 3196 | "version": "0.1.0", 3197 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 3198 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" 3199 | } 3200 | } 3201 | } 3202 | --------------------------------------------------------------------------------
{track.text}
2 | 3 |
A progressive Node.js framework for building efficient and scalable server-side applications.
10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |