├── README.md ├── client ├── .eslintcache ├── .gitignore ├── README.md ├── package.json ├── public │ ├── index.html │ ├── logo.png │ ├── manifest.json │ └── robots.txt ├── src │ ├── Apollo.js │ ├── App.js │ ├── assets │ │ └── github.svg │ ├── components │ │ ├── Chat.js │ │ ├── CommunityGuidelines.js │ │ ├── CommunityGuidelinesModal.js │ │ ├── Loading.js │ │ └── ProfileModal.js │ ├── context │ │ └── context.js │ ├── draft │ │ ├── Draft.js │ │ ├── hashtagConfig.js │ │ └── toolbarConfig.js │ ├── index.js │ ├── pages │ │ ├── ChatWindow.js │ │ ├── Login.js │ │ ├── PrivateRoute.js │ │ └── Signup.js │ ├── schema │ │ ├── mutations.js │ │ ├── queries.js │ │ └── subscriptions.js │ └── styles.css └── yarn.lock └── server ├── .gitignore ├── index.js ├── package.json ├── schema ├── mutationResolvers.js ├── queryResolvers.js └── schema.js ├── util ├── auth.js ├── emailValidator.js ├── firebase-admin.js ├── firebase.js ├── messages.js ├── removeEmojis.js ├── userExistence.js └── users.js ├── yarn-error.log └── yarn.lock /README.md: -------------------------------------------------------------------------------- 1 | ## Chathouse 2 | 3 | A Public Drop-in Chat App built with NodeJS, GraphQL, Firebase, React, Chakra UI and React Draft. 4 | 5 | ### How to contribute? 6 | 7 | 1. Clone the repository. 8 | 9 | 2. Run `yarn install` to install the required dependencies. 10 | 11 | 3. Change the required API keys (Firebase) in the `.env` file with your own. 12 | 13 | 4. Create your own `ACCESS_TOKEN_SECRET` and `REFRESH_TOKEN_SECRET` in the `.env` file. 14 | 15 | 5. Make sure to comment out the `sameSite: "None"` and `secure: true` options wherever the cookies are set/removed. (These options are only used for production). 16 | 17 | 6. Run `yarn start` inside the `client/` directory to start the front-end and `yarn dev` inside the `server/` directory to start the server. 18 | 19 | 7. That's it! Add the features you want or fix any bug, make a PR and it'll be merged! 20 | 21 | Website --> https://chathouse.now.sh -------------------------------------------------------------------------------- /client/.eslintcache: -------------------------------------------------------------------------------- 1 | [{"/home/fayd/Projects/chat-app/client/src/App.js":"1","/home/fayd/Projects/chat-app/client/src/pages/ChatWindow.js":"2","/home/fayd/Projects/chat-app/client/src/pages/Signup.js":"3","/home/fayd/Projects/chat-app/client/src/schema/mutations.js":"4","/home/fayd/Projects/chat-app/client/src/components/Loading.js":"5","/home/fayd/Projects/chat-app/client/src/pages/Login.js":"6","/home/fayd/Projects/chat-app/client/src/pages/PrivateRoute.js":"7","/home/fayd/Projects/chat-app/client/src/components/Chat.js":"8","/home/fayd/Projects/chat-app/client/src/context/context.js":"9","/home/fayd/Projects/chat-app/client/src/schema/queries.js":"10"},{"size":1311,"mtime":1612855052053,"results":"11","hashOfConfig":"12"},{"size":2986,"mtime":1613057124699,"results":"13","hashOfConfig":"12"},{"size":2351,"mtime":1612672325351,"results":"14","hashOfConfig":"12"},{"size":725,"mtime":1612771189808,"results":"15","hashOfConfig":"12"},{"size":251,"mtime":1612854646858,"results":"16","hashOfConfig":"12"},{"size":2033,"mtime":1612678691614,"results":"17","hashOfConfig":"12"},{"size":771,"mtime":1612935546458,"results":"18","hashOfConfig":"12"},{"size":3048,"mtime":1613057075415,"results":"19","hashOfConfig":"12"},{"size":2492,"mtime":1612855180982,"results":"20","hashOfConfig":"12"},{"size":246,"mtime":1612618139739,"results":"21","hashOfConfig":"12"},{"filePath":"22","messages":"23","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"24","usedDeprecatedRules":"25"},"1cc2hiu",{"filePath":"26","messages":"27","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"28","messages":"29","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"25"},{"filePath":"30","messages":"31","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"32","messages":"33","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"34"},{"filePath":"35","messages":"36","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"37","messages":"38","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"39","messages":"40","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"41","messages":"42","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"34"},{"filePath":"43","messages":"44","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/home/fayd/Projects/chat-app/client/src/App.js",["45"],"import { ChakraProvider } from \"@chakra-ui/react\";\nimport ChatWindow from \"./pages/ChatWindow\";\nimport { ApolloClient, InMemoryCache, ApolloProvider } from \"@apollo/client\";\nimport { BrowserRouter as Router, Switch, Route } from \"react-router-dom\";\nimport { WebSocketLink } from \"@apollo/client/link/ws\";\nimport Login from \"./pages/Login\";\nimport Signup from \"./pages/Signup\";\nimport PrivateRoute from \"./pages/PrivateRoute\";\nimport { UserProvider } from \"./context/context\";\n\nfunction App() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\n// const link = new WebSocketLink({\n// uri: `ws://localhost:4000/graphql`,\n// options: {\n// reconnect: true,\n// },\n// });\n\nconst client = new ApolloClient({\n // uri: process.env.REACT_APP_GRAPHQL_URI,\n uri: \"http://localhost:4000/graphql\",\n // link,\n cache: new InMemoryCache(),\n credentials: \"include\",\n});\n\nexport default App;\n",["46","47"],"/home/fayd/Projects/chat-app/client/src/pages/ChatWindow.js",["48"],"/home/fayd/Projects/chat-app/client/src/pages/Signup.js",[],"/home/fayd/Projects/chat-app/client/src/schema/mutations.js",[],"/home/fayd/Projects/chat-app/client/src/components/Loading.js",[],["49","50"],"/home/fayd/Projects/chat-app/client/src/pages/Login.js",[],"/home/fayd/Projects/chat-app/client/src/pages/PrivateRoute.js",[],"/home/fayd/Projects/chat-app/client/src/components/Chat.js",[],"/home/fayd/Projects/chat-app/client/src/context/context.js",[],"/home/fayd/Projects/chat-app/client/src/schema/queries.js",[],{"ruleId":"51","severity":1,"message":"52","line":5,"column":10,"nodeType":"53","messageId":"54","endLine":5,"endColumn":23},{"ruleId":"55","replacedBy":"56"},{"ruleId":"57","replacedBy":"58"},{"ruleId":"51","severity":1,"message":"59","line":18,"column":10,"nodeType":"53","messageId":"54","endLine":18,"endColumn":22},{"ruleId":"55","replacedBy":"60"},{"ruleId":"57","replacedBy":"61"},"no-unused-vars","'WebSocketLink' is defined but never used.","Identifier","unusedVar","no-native-reassign",["62"],"no-negated-in-lhs",["63"],"'GET_MESSAGES' is defined but never used.",["62"],["63"],"no-global-assign","no-unsafe-negation"] -------------------------------------------------------------------------------- /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 | # production 11 | /build 12 | 13 | # misc 14 | .DS_Store 15 | .env.local 16 | .env 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | .eslintcache 22 | npm-debug.log* 23 | yarn-debug.log* 24 | yarn-error.log* 25 | yarn.lock -------------------------------------------------------------------------------- /client/README.md: -------------------------------------------------------------------------------- 1 | # Getting Started with Create React App 2 | 3 | This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). 4 | 5 | ## Available Scripts 6 | 7 | In the project directory, you can run: 8 | 9 | ### `yarn start` 10 | 11 | Runs the app in the development mode.\ 12 | Open [http://localhost:3000](http://localhost:3000) to view it in the browser. 13 | 14 | The page will reload if you make edits.\ 15 | You will also see any lint errors in the console. 16 | 17 | ### `yarn test` 18 | 19 | Launches the test runner in the interactive watch mode.\ 20 | See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information. 21 | 22 | ### `yarn build` 23 | 24 | Builds the app for production to the `build` folder.\ 25 | It correctly bundles React in production mode and optimizes the build for the best performance. 26 | 27 | The build is minified and the filenames include the hashes.\ 28 | Your app is ready to be deployed! 29 | 30 | See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information. 31 | 32 | ### `yarn eject` 33 | 34 | **Note: this is a one-way operation. Once you `eject`, you can’t go back!** 35 | 36 | If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project. 37 | 38 | Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own. 39 | 40 | You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it. 41 | 42 | ## Learn More 43 | 44 | You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started). 45 | 46 | To learn React, check out the [React documentation](https://reactjs.org/). 47 | 48 | ### Code Splitting 49 | 50 | This section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting) 51 | 52 | ### Analyzing the Bundle Size 53 | 54 | This section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size) 55 | 56 | ### Making a Progressive Web App 57 | 58 | This section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app) 59 | 60 | ### Advanced Configuration 61 | 62 | This section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration) 63 | 64 | ### Deployment 65 | 66 | This section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment) 67 | 68 | ### `yarn build` fails to minify 69 | 70 | This section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify) 71 | -------------------------------------------------------------------------------- /client/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "client", 3 | "version": "0.1.0", 4 | "private": true, 5 | "dependencies": { 6 | "@apollo/client": "^3.3.8", 7 | "@apollo/react-hooks": "^4.0.0", 8 | "@chakra-ui/icons": "^1.0.3", 9 | "@chakra-ui/react": "^1.1.5", 10 | "@emotion/react": "^11.1.4", 11 | "@emotion/styled": "^11.0.0", 12 | "copy-text-to-clipboard": "^3.0.0", 13 | "draft-js": "^0.11.7", 14 | "draftjs-to-html": "^0.9.1", 15 | "framer-motion": "^3.2.2-rc.1", 16 | "graphql": "^15.4.0", 17 | "html-react-parser": "^1.2.4", 18 | "react": "^17.0.1", 19 | "react-dom": "^17.0.1", 20 | "react-draft-wysiwyg": "^1.14.5", 21 | "react-router-dom": "^5.2.0", 22 | "react-scripts": "4.0.1", 23 | "subscriptions-transport-ws": "^0.9.18", 24 | "tinykeys": "^1.1.1", 25 | "web-vitals": "^0.2.4" 26 | }, 27 | "scripts": { 28 | "start": "react-scripts start", 29 | "build": "react-scripts build", 30 | "test": "react-scripts test", 31 | "eject": "react-scripts eject" 32 | }, 33 | "eslintConfig": { 34 | "extends": [ 35 | "react-app", 36 | "react-app/jest" 37 | ] 38 | }, 39 | "browserslist": { 40 | "production": [ 41 | ">0.2%", 42 | "not dead", 43 | "not op_mini all" 44 | ], 45 | "development": [ 46 | "last 1 chrome version", 47 | "last 1 firefox version", 48 | "last 1 safari version" 49 | ] 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /client/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 12 | Chathouse 13 | 14 | 15 | 16 |
17 | 18 | 19 | -------------------------------------------------------------------------------- /client/public/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/faisalsayed10/chathouse/2e0b437301793bf2cc58e4e75bca8a53fd99060c/client/public/logo.png -------------------------------------------------------------------------------- /client/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "React App", 3 | "name": "Create React App Sample", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo192.png", 12 | "type": "image/png", 13 | "sizes": "192x192" 14 | }, 15 | { 16 | "src": "logo512.png", 17 | "type": "image/png", 18 | "sizes": "512x512" 19 | } 20 | ], 21 | "start_url": ".", 22 | "display": "standalone", 23 | "theme_color": "#000000", 24 | "background_color": "#ffffff" 25 | } 26 | -------------------------------------------------------------------------------- /client/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /client/src/Apollo.js: -------------------------------------------------------------------------------- 1 | import { WebSocketLink } from "@apollo/client/link/ws"; 2 | import { ApolloClient, InMemoryCache } from "@apollo/client"; 3 | import { split, HttpLink } from "@apollo/client"; 4 | import { getMainDefinition } from "@apollo/client/utilities"; 5 | 6 | const wsLink = new WebSocketLink({ 7 | uri: process.env.REACT_APP_WS_URI || `ws://localhost:4000/graphql`, 8 | options: { 9 | reconnect: true, 10 | }, 11 | }); 12 | 13 | const httpLink = new HttpLink({ 14 | uri: process.env.REACT_APP_GRAPHQL_URI || "http://localhost:4000/graphql", 15 | credentials: "include", 16 | }); 17 | 18 | const link = split( 19 | ({ query }) => { 20 | const definition = getMainDefinition(query); 21 | return ( 22 | definition.kind === "OperationDefinition" && 23 | definition.operation === "subscription" 24 | ); 25 | }, 26 | wsLink, 27 | httpLink 28 | ); 29 | 30 | const client = new ApolloClient({ 31 | link, 32 | cache: new InMemoryCache(), 33 | }); 34 | 35 | export default client; 36 | -------------------------------------------------------------------------------- /client/src/App.js: -------------------------------------------------------------------------------- 1 | import { ChakraProvider } from "@chakra-ui/react"; 2 | import ChatWindow from "./pages/ChatWindow"; 3 | import { BrowserRouter as Router, Switch, Route } from "react-router-dom"; 4 | import Login from "./pages/Login"; 5 | import Signup from "./pages/Signup"; 6 | import PrivateRoute from "./pages/PrivateRoute"; 7 | import { UserProvider } from "./context/context"; 8 | import { ApolloProvider } from "@apollo/client"; 9 | import client from "./Apollo"; 10 | 11 | function App() { 12 | return ( 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | ); 29 | } 30 | 31 | export default App; 32 | -------------------------------------------------------------------------------- /client/src/assets/github.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /client/src/components/Chat.js: -------------------------------------------------------------------------------- 1 | import { useMutation } from "@apollo/client"; 2 | import { CopyIcon, DeleteIcon, HamburgerIcon } from "@chakra-ui/icons"; 3 | import copy from "copy-text-to-clipboard"; 4 | import { 5 | Box, 6 | IconButton, 7 | Menu, 8 | MenuButton, 9 | MenuItem, 10 | MenuList, 11 | Text, 12 | } from "@chakra-ui/react"; 13 | import React, { useEffect } from "react"; 14 | import { DELETE_MESSAGE } from "../schema/mutations"; 15 | import Loading from "./Loading"; 16 | import parse from "html-react-parser"; 17 | import "../styles.css"; 18 | 19 | function Chat({ 20 | user, 21 | dummy, 22 | loading, 23 | data, 24 | subscribeToNewMessages, 25 | subscribeToDeletedMessages, 26 | }) { 27 | const [deleteMessage] = useMutation(DELETE_MESSAGE); 28 | 29 | useEffect(() => { 30 | subscribeToNewMessages(); 31 | subscribeToDeletedMessages(); 32 | // eslint-disable-next-line 33 | }, []); 34 | 35 | useEffect(() => { 36 | if (loading) { 37 | return; 38 | } 39 | dummy.current.scrollIntoView({ behavior: "smooth" }); 40 | }, [loading, data, dummy]); 41 | 42 | if (loading) return ; 43 | 44 | return ( 45 | <> 46 | {data ? ( 47 | data?.messages.map(({ message, author, id, isVerified }) => ( 48 | 54 | {author !== user && ( 55 | 65 | {author.slice(0, 2).toUpperCase()} 66 | 67 | )} 68 | 77 | 78 | {user === author ? "You" : author}{" "} 79 | {isVerified ? ( 80 | verified_user 87 | ) : null} 88 | : 89 | {" "} 90 | {parse(message)} 91 | 92 | {user === author ? ( 93 | 94 | } 98 | size="xs" 99 | variant="outline" 100 | ml="2" 101 | padding="0" 102 | transition="all 0.2s" 103 | /> 104 | 105 | } 107 | onClick={() => { 108 | let stringified = message 109 | .toString() 110 | .replaceAll(/<[^>]*>/gi, ""); 111 | copy(stringified); 112 | }} 113 | > 114 | Copy 115 | 116 | } 118 | type="submit" 119 | onClick={() => deleteMessage({ variables: { id } })} 120 | > 121 | Delete 122 | 123 | 124 | 125 | ) : null} 126 | 127 | )) 128 | ) : ( 129 | 130 | No messages to display. 131 | 132 | )} 133 | 134 | ); 135 | } 136 | 137 | export default Chat; 138 | -------------------------------------------------------------------------------- /client/src/components/CommunityGuidelines.js: -------------------------------------------------------------------------------- 1 | import { Text } from "@chakra-ui/react"; 2 | import React from "react"; 3 | 4 | function CommunityGuidelines() { 5 | return ( 6 | <> 7 | 8 | Violence: You may not 9 | threaten violence against an individual or a group of people. We also 10 | prohibit the glorification of violence. 11 | 12 |
13 | 14 | Terrorism/violent extremism: 15 | You may not threaten or promote terrorism or violent extremism. 16 | 17 |
18 | 19 | Child sexual exploitation: 20 | We have zero tolerance for child sexual exploitation on Chathouse. 21 | 22 |
23 | 24 | Abuse/harassment: You may 25 | not engage in the targeted harassment of someone, or incite other people 26 | to do so. This includes wishing or hoping that someone experiences 27 | physical harm. 28 | 29 |
30 | 31 | Hateful conduct: You may not 32 | promote violence against, threaten, or harass other people on the basis 33 | of race, ethnicity, national origin, caste, sexual orientation, gender, 34 | gender identity, religious affiliation, age, disability, or serious 35 | disease. 36 | 37 |
38 | 39 | Suicide or self-harm: You 40 | may not promote or encourage suicide or self-harm. 41 | 42 |
43 | 44 | 45 | Sensitive media, including graphic violence and adult content: 46 | {" "} 47 | You may not post media that is excessively gory or share violent or 48 | adult content at any cost. Media depicting sexual violence and/or 49 | assault is also not permitted. 50 | 51 |
52 | 53 | 54 | Illegal or certain regulated goods or services: 55 | {" "} 56 | You may not use our service for any unlawful purpose or in furtherance 57 | of illegal activities. This includes selling, buying, or facilitating 58 | transactions in illegal goods or services, as well as certain types of 59 | regulated goods or services. 60 | 61 |
62 | 63 | Private information: You may 64 | not publish or post other people's private information (such as home 65 | phone number and address) without their express authorization and 66 | permission. We also prohibit threatening to expose private information 67 | or incentivizing others to do so. 68 | 69 |
70 | 71 | Civic Integrity: You may not 72 | use our services for the purpose of manipulating or interfering in 73 | elections or other civic processes. This includes posting or sharing 74 | content that may suppress participation or mislead people about when, 75 | where, or how to participate in a civic process. 76 | 77 |
78 | 79 | Impersonation: You may not 80 | impersonate individuals, groups, or organizations in a manner that is 81 | intended to or does mislead, confuse, or deceive others. 82 | 83 |
84 | 85 | Copyright and trademark: You 86 | may not violate others’ intellectual property rights, including 87 | copyright and trademark. 88 | 89 | 90 | ); 91 | } 92 | 93 | export default CommunityGuidelines; 94 | -------------------------------------------------------------------------------- /client/src/components/CommunityGuidelinesModal.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import CommunityGuidelines from "../components/CommunityGuidelines"; 3 | import { 4 | Button, 5 | Modal, 6 | ModalBody, 7 | ModalCloseButton, 8 | ModalContent, 9 | ModalFooter, 10 | ModalHeader, 11 | ModalOverlay, 12 | useDisclosure, 13 | } from "@chakra-ui/react"; 14 | 15 | function CommunityGuidelinesModal() { 16 | const { isOpen, onOpen, onClose } = useDisclosure(); 17 | 18 | return ( 19 | <> 20 | 29 | 30 | 31 | 32 | Community Guidelines 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | ); 44 | } 45 | 46 | export default CommunityGuidelinesModal; 47 | -------------------------------------------------------------------------------- /client/src/components/Loading.js: -------------------------------------------------------------------------------- 1 | import { Flex, Spinner } from '@chakra-ui/react' 2 | import React from 'react' 3 | 4 | function Loading() { 5 | return ( 6 | 7 | 8 | 9 | ) 10 | } 11 | 12 | export default Loading 13 | -------------------------------------------------------------------------------- /client/src/components/ProfileModal.js: -------------------------------------------------------------------------------- 1 | import React, { useContext } from 'react' 2 | import { UserContext } from '../context/context' 3 | import { 4 | Button, 5 | Modal, 6 | ModalBody, 7 | ModalCloseButton, 8 | ModalContent, 9 | ModalFooter, 10 | ModalHeader, 11 | ModalOverlay, 12 | Text, 13 | useDisclosure, 14 | } from "@chakra-ui/react"; 15 | 16 | function ProfileModal() { 17 | const { user } = useContext(UserContext) 18 | 19 | const { isOpen, onOpen, onClose } = useDisclosure(); 20 | 21 | return ( 22 | <> 23 | 31 | 32 | 33 | 34 | Your Profile 35 | 36 | 37 | 38 | Username:{" "} 39 | {user?.userName} 40 | 41 | 42 | Email: {user?.email} 43 | 44 | 45 | Unique Id: {user?.id} 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | ); 55 | } 56 | 57 | export default ProfileModal; 58 | -------------------------------------------------------------------------------- /client/src/context/context.js: -------------------------------------------------------------------------------- 1 | import { useMutation } from "@apollo/client"; 2 | import React, { useState, createContext, useEffect } from "react"; 3 | import { LOGIN, REGISTER } from "../schema/mutations"; 4 | import { useHistory } from "react-router-dom"; 5 | import { useToast } from "@chakra-ui/react"; 6 | const UserContext = createContext(); 7 | 8 | const UserProvider = ({ children }) => { 9 | const [user, setUser] = useState(null); 10 | const [userName, setUserName] = useState(""); 11 | const [email, setEmail] = useState(""); 12 | const [password, setPassword] = useState(""); 13 | const history = useHistory(); 14 | const [login] = useMutation(LOGIN); 15 | const [register] = useMutation(REGISTER); 16 | const toast = useToast(); 17 | 18 | useEffect(() => { 19 | if (user) history.push("/"); 20 | }, [user, history]); 21 | 22 | const handleLogin = async (e) => { 23 | try { 24 | e.preventDefault(); 25 | const { data } = await login({ variables: { email, password } }); 26 | setUser(data.login); 27 | toast({ 28 | title: `Login Success!`, 29 | description: `You've logged in successfully.`, 30 | status: "success", 31 | duration: 3000, 32 | isClosable: true, 33 | }); 34 | setEmail(""); 35 | setPassword(""); 36 | console.log("redirecting..."); 37 | } catch (err) { 38 | console.error(err); 39 | toast({ 40 | title: `An error occured.`, 41 | description: `${err.message}`, 42 | status: "error", 43 | duration: 3000, 44 | isClosable: true, 45 | }); 46 | } 47 | }; 48 | 49 | const handleSignup = async (e) => { 50 | try { 51 | e.preventDefault(); 52 | const { data } = await register({ 53 | variables: { userName, email, password }, 54 | }); 55 | setUser(data.register); 56 | toast({ 57 | title: "Account created.", 58 | description: "We've created your account for you.", 59 | status: "success", 60 | duration: 3000, 61 | isClosable: true, 62 | }); 63 | setEmail(""); 64 | setUserName(""); 65 | setPassword(""); 66 | console.log("redirecting..."); 67 | // history.push("/"); 68 | } catch (err) { 69 | console.error(err); 70 | toast({ 71 | title: `An error occured.`, 72 | description: `${err.message}`, 73 | status: "error", 74 | duration: 3000, 75 | isClosable: true, 76 | }); 77 | } 78 | }; 79 | 80 | return ( 81 | 96 | {children} 97 | 98 | ); 99 | }; 100 | 101 | export { UserContext, UserProvider }; 102 | -------------------------------------------------------------------------------- /client/src/draft/Draft.js: -------------------------------------------------------------------------------- 1 | import React, { useEffect, useState } from "react"; 2 | import { EditorState, convertToRaw, getDefaultKeyBinding } from "draft-js"; 3 | import { Editor } from "react-draft-wysiwyg"; 4 | import "../../node_modules/react-draft-wysiwyg/dist/react-draft-wysiwyg.css"; 5 | import toolbarConfig from "./toolbarConfig"; 6 | import hashtagConfig from "./hashtagConfig"; 7 | import draftToHtml from "draftjs-to-html"; 8 | import { Box, IconButton, useToast } from "@chakra-ui/react"; 9 | import { ArrowForwardIcon } from "@chakra-ui/icons"; 10 | import { SEND_MESSAGE } from "../schema/mutations"; 11 | import { useMutation, useQuery } from "@apollo/client"; 12 | import { GET_ALL_USERS_NAME, GET_MESSAGES } from "../schema/queries"; 13 | 14 | export default function ControlledEditor({ dummyRef, userName }) { 15 | const [editorState, setEditorState] = useState(EditorState.createEmpty()), 16 | onEditorStateChange = (editorState) => { 17 | setEditorState(editorState); 18 | }; 19 | const toast = useToast(); 20 | const [sendMessage, { loading }] = useMutation(SEND_MESSAGE, { 21 | update(cache, { data: { sendMessage }}) { 22 | cache.modify({ 23 | fields: { 24 | messages(existingMessages = []) { 25 | const newMessageRef = cache.writeQuery({ 26 | data: sendMessage, 27 | query: GET_MESSAGES 28 | }); 29 | return [...existingMessages, newMessageRef] 30 | } 31 | } 32 | }) 33 | } 34 | }); 35 | const { data } = useQuery(GET_ALL_USERS_NAME); 36 | // eslint-disable-next-line 37 | const [suggestions, setSuggestions] = useState([]); 38 | const newState = EditorState.createEmpty(); 39 | 40 | const keyBindingFn = (event) => { 41 | if (event.keyCode === 13 && event.shiftKey) { 42 | handleSubmit() 43 | } 44 | return getDefaultKeyBinding(event); 45 | }; 46 | 47 | useEffect(() => { 48 | if (data && data.users) { 49 | data.users.forEach((user) => { 50 | suggestions.push({ 51 | text: user.userName, 52 | value: user.userName, 53 | url: `#${user.userName}`, 54 | }); 55 | }); 56 | } 57 | // eslint-disable-next-line 58 | }, [data]); 59 | 60 | const handleSubmit = async () => { 61 | try { 62 | const rawContentState = convertToRaw(editorState.getCurrentContent()); 63 | if (rawContentState.blocks[0].text.trim() === "") { 64 | toast({ 65 | title: `Cannot send the message`, 66 | description: `Message can't have a newline at the beginning or be empty.`, 67 | status: "error", 68 | duration: 2000, 69 | isClosable: true, 70 | }); 71 | return; 72 | } 73 | const markup = draftToHtml(rawContentState, hashtagConfig); 74 | await sendMessage({ 75 | variables: { author: userName, message: markup.toString() }, 76 | }); 77 | setEditorState(EditorState.moveFocusToEnd(newState)); 78 | dummyRef.current.scrollIntoView({ behavior: "smooth" }); 79 | } catch (err) { 80 | toast({ 81 | title: `An error occured.`, 82 | description: `${err.message}`, 83 | status: "error", 84 | duration: 2000, 85 | isClosable: true, 86 | }); 87 | } 88 | }; 89 | 90 | return ( 91 | 98 | { 113 | return; 114 | }} 115 | keyBindingFn={keyBindingFn} 116 | readOnly={loading} 117 | /> 118 | } 122 | /> 123 | 124 | ); 125 | } 126 | -------------------------------------------------------------------------------- /client/src/draft/hashtagConfig.js: -------------------------------------------------------------------------------- 1 | const hashtagConfig = { 2 | separator: " ", 3 | trigger: "#", 4 | }; 5 | 6 | export default hashtagConfig; -------------------------------------------------------------------------------- /client/src/draft/toolbarConfig.js: -------------------------------------------------------------------------------- 1 | const toolbarConfig = { 2 | options: ["inline", "colorPicker", "link", "emoji", "image"], 3 | inline: { 4 | options: ["bold", "italic", "underline", "strikethrough", "monospace"], 5 | }, 6 | link: { 7 | popupClassName: "popup", 8 | }, 9 | image: { 10 | popupClassName: "popup", 11 | }, 12 | colorPicker: { 13 | popupClassName: "popup", 14 | }, 15 | emoji: { 16 | popupClassName: "popup", 17 | emojis: [ 18 | "😀", 19 | "😁", 20 | "😂", 21 | "😃", 22 | "😉", 23 | "😋", 24 | "😎", 25 | "😍", 26 | "😗", 27 | "🤗", 28 | "🤔", 29 | "😣", 30 | "😫", 31 | "😴", 32 | "😌", 33 | "🤓", 34 | "😛", 35 | "😜", 36 | "😠", 37 | "😇", 38 | "😷", 39 | "😈", 40 | "👻", 41 | "😺", 42 | "😸", 43 | "😹", 44 | "😻", 45 | "😼", 46 | "😽", 47 | "🙀", 48 | "🙈", 49 | "🙉", 50 | "🙊", 51 | "👼", 52 | "👮", 53 | "🕵", 54 | "💂", 55 | "👳", 56 | "🎅", 57 | "👸", 58 | "👰", 59 | "👲", 60 | "🙍", 61 | "🙇", 62 | "🚶", 63 | "🏃", 64 | "💃", 65 | "⛷", 66 | "🏂", 67 | "🏌", 68 | "🏄", 69 | "🚣", 70 | "🏊", 71 | "⛹", 72 | "🏋", 73 | "🚴", 74 | "👫", 75 | "💪", 76 | "👈", 77 | "👉", 78 | "👉", 79 | "👆", 80 | "🖕", 81 | "👇", 82 | "🖖", 83 | "👋", 84 | "🤘", 85 | "🖐", 86 | "👌", 87 | "👍", 88 | "👎", 89 | "✊", 90 | "👊", 91 | "👏", 92 | "🙌", 93 | "🙏", 94 | "🐵", 95 | "🐶", 96 | "🐇", 97 | "🐥", 98 | "🐸", 99 | "🐌", 100 | "🐛", 101 | "🐜", 102 | "🐝", 103 | "🍉", 104 | "🍄", 105 | "🍔", 106 | "🍤", 107 | "🍨", 108 | "🍪", 109 | "🎂", 110 | "🍰", 111 | "🍾", 112 | "🍷", 113 | "🍸", 114 | "🍺", 115 | "🌍", 116 | "🚑", 117 | "⏰", 118 | "🌙", 119 | "🌝", 120 | "🌞", 121 | "⭐", 122 | "🌟", 123 | "🌠", 124 | "🌨", 125 | "🌩", 126 | "⛄", 127 | "🔥", 128 | "🎄", 129 | "🎈", 130 | "🎉", 131 | "🎊", 132 | "🎁", 133 | "🎗", 134 | "🏀", 135 | "🏈", 136 | "🎲", 137 | "🔇", 138 | "🔈", 139 | "📣", 140 | "🔔", 141 | "🎵", 142 | "🎷", 143 | "💰", 144 | "🖊", 145 | "📅", 146 | "✅", 147 | "❎", 148 | "💯", 149 | ], 150 | }, 151 | }; 152 | 153 | export default toolbarConfig; -------------------------------------------------------------------------------- /client/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import App from './App'; 3 | import ReactDOM from 'react-dom'; 4 | 5 | ReactDOM.render( 6 | 7 | 8 | , 9 | document.getElementById("root") 10 | ); 11 | -------------------------------------------------------------------------------- /client/src/pages/ChatWindow.js: -------------------------------------------------------------------------------- 1 | import { Box, Button, Container, Flex, Text } from "@chakra-ui/react"; 2 | import React, { useContext, useEffect, useRef } from "react"; 3 | import Chat from "../components/Chat"; 4 | import { LOGOUT } from "../schema/mutations"; 5 | import { UserContext } from "../context/context"; 6 | import { useMutation, useQuery } from "@apollo/client"; 7 | import { useHistory } from "react-router-dom"; 8 | import "../styles.css"; 9 | import { GET_MESSAGES } from "../schema/queries"; 10 | import { 11 | SUBSCRIBE_TO_DELETED_MESSAGES, 12 | SUBSCRIBE_TO_MESSAGES, 13 | } from "../schema/subscriptions"; 14 | import Draft from "../draft/Draft"; 15 | import CommunityGuidelinesModal from "../components/CommunityGuidelinesModal"; 16 | import { ReactComponent as Github } from "../assets/github.svg"; 17 | 18 | function ChatWindow() { 19 | const { user } = useContext(UserContext); 20 | const history = useHistory(); 21 | const [logout, { client }] = useMutation(LOGOUT); 22 | const dummyRef = useRef(); 23 | const { loading, data, subscribeToMore } = useQuery(GET_MESSAGES); 24 | 25 | useEffect(() => dummyRef.current.scrollIntoView({ behavior: "smooth" }), []); 26 | 27 | const handleLogout = async (e) => { 28 | try { 29 | await logout(); 30 | await client.clearStore(); 31 | history.push("/login"); 32 | } catch (err) { 33 | console.error(err); 34 | } 35 | }; 36 | 37 | const subscribeToNewMessages = () => 38 | subscribeToMore({ 39 | document: SUBSCRIBE_TO_MESSAGES, 40 | updateQuery: (prev, { subscriptionData }) => { 41 | if (!subscriptionData.data) return prev; 42 | const newFeedItem = subscriptionData.data.newMessage; 43 | return Object.assign({}, prev, { 44 | messages: [newFeedItem, ...prev.messages], 45 | }); 46 | }, 47 | }); 48 | 49 | const subscribeToDeletedMessages = () => 50 | subscribeToMore({ 51 | document: SUBSCRIBE_TO_DELETED_MESSAGES, 52 | updateQuery: (prev, { subscriptionData }) => { 53 | if (!subscriptionData.data) return prev; 54 | const deletedItem = subscriptionData.data.deleteMessage; 55 | const messages = prev.messages.filter( 56 | (item) => item.id !== deletedItem.id 57 | ); 58 | return { messages }; 59 | }, 60 | }); 61 | 62 | return ( 63 | <> 64 | 65 | 66 | {/* */} 67 | 76 | 77 | 78 | 88 | 94 | 102 | 103 | 104 | 105 | 106 | 107 | 118 | 119 | © Faisal Sayed 120 | 121 | 126 | 127 | 128 | 129 | 130 | ); 131 | } 132 | 133 | export default ChatWindow; 134 | -------------------------------------------------------------------------------- /client/src/pages/Login.js: -------------------------------------------------------------------------------- 1 | import { useQuery } from "@apollo/client"; 2 | import { Box, Button, Center, Input, Text } from "@chakra-ui/react"; 3 | import React, { useContext } from "react"; 4 | import { Link, Redirect } from "react-router-dom"; 5 | import Loading from "../components/Loading"; 6 | import { UserContext } from "../context/context"; 7 | import { GET_USER } from "../schema/queries"; 8 | 9 | function Login() { 10 | const { handleLogin, email, password, setEmail, setPassword } = useContext( 11 | UserContext 12 | ); 13 | 14 | const { data, loading } = useQuery(GET_USER, { fetchPolicy: 'network-only' }); 15 | 16 | if (loading) return ; 17 | if (data.me?.id) return ; 18 | 19 | return ( 20 | 27 | 28 | 👋 Chathouse 29 | 30 | 31 | Public Drop-In Chat App 32 | 33 | 34 | 35 | Log in 36 | 37 | 38 | setEmail(e.target.value)} 48 | /> 49 | setPassword(e.target.value)} 58 | /> 59 | 69 | 70 |
71 | 72 | Don't have an account?{" "} 73 | 74 | Sign up 75 | 76 | 77 |
78 |
79 |
80 | ); 81 | } 82 | 83 | export default Login; 84 | -------------------------------------------------------------------------------- /client/src/pages/PrivateRoute.js: -------------------------------------------------------------------------------- 1 | import React, { useContext, useEffect } from "react"; 2 | import { Redirect, Route } from "react-router-dom"; 3 | import { useQuery } from "@apollo/client"; 4 | import { GET_USER } from "../schema/queries"; 5 | import { UserContext } from "../context/context"; 6 | import Loading from "../components/Loading"; 7 | 8 | function PrivateRoute({ children, ...rest }) { 9 | const { data, loading } = useQuery(GET_USER, { 10 | fetchPolicy: "network-only", 11 | }); 12 | const { setUser } = useContext(UserContext); 13 | 14 | useEffect(() => { 15 | setUser(data?.me); 16 | }, [data, setUser]); 17 | 18 | if (loading && !data?.me?.id) return ; 19 | if (!data?.me?.id) { 20 | return ; 21 | } 22 | return children} />; 23 | } 24 | 25 | export default PrivateRoute; -------------------------------------------------------------------------------- /client/src/pages/Signup.js: -------------------------------------------------------------------------------- 1 | import { useQuery } from "@apollo/client"; 2 | import { Box, Button, Center, Input, Text } from "@chakra-ui/react"; 3 | import React, { useContext } from "react"; 4 | import { Link, Redirect } from "react-router-dom"; 5 | import Loading from "../components/Loading"; 6 | import { UserContext } from "../context/context"; 7 | import { GET_USER } from "../schema/queries"; 8 | 9 | function Signup() { 10 | const { 11 | handleSignup, 12 | email, 13 | password, 14 | userName, 15 | setEmail, 16 | setPassword, 17 | setUserName, 18 | } = useContext(UserContext); 19 | const { data, loading } = useQuery(GET_USER); 20 | 21 | if (loading) return ; 22 | if (data.me?.id) return ; 23 | 24 | return ( 25 | 32 | 33 | 👋 Chathouse 34 | 35 | 36 | Public Drop-In Chat App 37 | 38 | 39 | 40 | Sign up 41 | 42 | 43 | setUserName(e.target.value)} 52 | /> 53 | setEmail(e.target.value)} 63 | /> 64 | setPassword(e.target.value)} 73 | /> 74 | 84 | 85 |
86 | 87 | Already have an account?{" "} 88 | 89 | Log in 90 | 91 | 92 |
93 |
94 |
95 | ); 96 | } 97 | 98 | export default Signup; 99 | -------------------------------------------------------------------------------- /client/src/schema/mutations.js: -------------------------------------------------------------------------------- 1 | import { gql } from "@apollo/client"; 2 | 3 | export const LOGIN = gql` 4 | mutation($email: String!, $password: String!) { 5 | login(email: $email, password: $password) { 6 | id 7 | userName 8 | email 9 | } 10 | } 11 | `; 12 | 13 | export const SEND_MESSAGE = gql` 14 | mutation($author: String!, $message: String!) { 15 | postMessage(author: $author, message: $message) 16 | } 17 | `; 18 | 19 | export const REGISTER = gql` 20 | mutation($userName: String!, $email: String!, $password: String!) { 21 | register(userName: $userName, email: $email, password: $password) { 22 | id 23 | userName 24 | email 25 | } 26 | } 27 | `; 28 | 29 | export const LOGOUT = gql` 30 | mutation { 31 | logout 32 | } 33 | ` 34 | 35 | export const DELETE_MESSAGE = gql` 36 | mutation($id: ID!) { 37 | deleteMessage(id: $id) 38 | } 39 | ` -------------------------------------------------------------------------------- /client/src/schema/queries.js: -------------------------------------------------------------------------------- 1 | import { gql } from "@apollo/client"; 2 | 3 | export const GET_MESSAGES = gql` 4 | { 5 | messages { 6 | id 7 | message 8 | author 9 | createdAt 10 | isVerified 11 | } 12 | } 13 | `; 14 | 15 | export const GET_USER = gql` 16 | { 17 | me { 18 | id 19 | userName 20 | email 21 | } 22 | } 23 | `; 24 | 25 | export const GET_ALL_USERS_NAME = gql` 26 | { 27 | users { 28 | userName 29 | } 30 | } 31 | `; 32 | -------------------------------------------------------------------------------- /client/src/schema/subscriptions.js: -------------------------------------------------------------------------------- 1 | import { gql } from "@apollo/client"; 2 | 3 | export const SUBSCRIBE_TO_MESSAGES = gql` 4 | subscription { 5 | newMessage { 6 | id 7 | author 8 | message 9 | } 10 | } 11 | `; 12 | 13 | export const SUBSCRIBE_TO_DELETED_MESSAGES = gql` 14 | subscription { 15 | deleteMessage { 16 | id 17 | } 18 | } 19 | `; 20 | -------------------------------------------------------------------------------- /client/src/styles.css: -------------------------------------------------------------------------------- 1 | .custom-scroll::-webkit-scrollbar { 2 | width: 10px; 3 | } 4 | 5 | .custom-scroll::-webkit-scrollbar-thumb { 6 | -webkit-border-radius: 10px; 7 | border-radius: 10px; 8 | background: rgb(244, 244, 244); 9 | box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.5); 10 | -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.5); 11 | } 12 | 13 | code { 14 | display: inline; 15 | font-family: monospace; 16 | overflow-wrap: break-word; 17 | background: rgb(88, 88, 88); 18 | border-radius: 3px; 19 | padding: 1px 3px; 20 | } 21 | 22 | /* React Draft WYSIWYG Styles */ 23 | /* You need to add !important at some places inorder to override the default styles */ 24 | 25 | .wrapper { 26 | border: 2px solid #E2E8F0; 27 | border-radius: 10px; 28 | width: 100%; 29 | margin-right: 5px; 30 | } 31 | 32 | .editor { 33 | padding: 10px; 34 | max-height: 135px; 35 | overflow-y: auto; 36 | } 37 | 38 | @media (max-width: 510px) { 39 | .editor { 40 | min-height: 50px; 41 | } 42 | } 43 | 44 | .public-DraftStyleDefault-block { 45 | margin: 0 !important; 46 | } 47 | 48 | .popup { 49 | bottom: 35px !important; 50 | top: auto !important; 51 | height: 230px !important; 52 | } 53 | 54 | .rdw-colorpicker-modal { 55 | width: 230px !important; 56 | } 57 | 58 | .rdw-colorpicker-modal-options { 59 | overflow: hidden !important; 60 | } 61 | 62 | a { 63 | color: rgb(0, 119, 255) !important; 64 | text-decoration: underline !important; 65 | } 66 | 67 | .rdw-suggestion-dropdown { 68 | position: revert !important; 69 | border-radius: 5px; 70 | background: #222529 !important; 71 | max-width: 120px; 72 | color: whitesmoke; 73 | font-weight: bold; 74 | } 75 | 76 | .wysiwyg-hashtag { 77 | background-color: #80daf8; 78 | padding: 2px; 79 | border-radius: 2px; 80 | } 81 | 82 | .wysiwyg-mention { 83 | background-color: #80daf8; 84 | padding: 2px; 85 | border-radius: 2px; 86 | } -------------------------------------------------------------------------------- /server/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .env -------------------------------------------------------------------------------- /server/index.js: -------------------------------------------------------------------------------- 1 | require("dotenv").config(); 2 | const cookieParser = require("cookie-parser"); 3 | const { verify } = require("jsonwebtoken"); 4 | const { createTokens } = require("./util/auth.js"); 5 | const { getUser } = require("./util/users.js"); 6 | const { createServer } = require("http"); 7 | // const cors = require("cors"); 8 | const app = require("express")(); 9 | app.use(cookieParser()); 10 | // app.use(cors()); 11 | const server = require("./schema/schema.js"); 12 | 13 | const startServer = async () => { 14 | app.use(async (req, res, next) => { 15 | const accessToken = req.cookies["access-token"]; 16 | const refreshToken = req.cookies["refresh-token"]; 17 | if (!refreshToken && !accessToken) { 18 | return next(); 19 | } 20 | 21 | try { 22 | const data = verify(accessToken, process.env.ACCESS_TOKEN_SECRET); 23 | req.id = data.id; 24 | return next(); 25 | } catch {} 26 | 27 | if (!refreshToken) { 28 | return next(); 29 | } 30 | 31 | let data; 32 | 33 | try { 34 | data = verify(refreshToken, process.env.REFRESH_TOKEN_SECRET); 35 | } catch { 36 | return next(); 37 | } 38 | 39 | const user = await getUser(data.id); 40 | 41 | // token is invalid 42 | if (!user || user.count !== data.count) { 43 | return next(); 44 | } 45 | 46 | const tokens = createTokens(user); 47 | 48 | res.cookie("refresh-token", tokens.refreshToken, { 49 | expires: new Date(Number(new Date()) + 604800000), 50 | sameSite: "None", 51 | secure: true, 52 | }); 53 | res.cookie("access-token", tokens.accessToken, { 54 | expires: new Date(Number(new Date()) + 900000), 55 | sameSite: "None", 56 | secure: true, 57 | }); 58 | req.id = user.id; 59 | 60 | next(); 61 | }); 62 | 63 | server.applyMiddleware({ 64 | app, 65 | cors: { 66 | credentials: true, 67 | origin: process.env.ORIGIN || "http://localhost:3000", 68 | }, 69 | }); 70 | 71 | const httpServer = createServer(app); 72 | server.installSubscriptionHandlers(httpServer); 73 | 74 | httpServer.listen({ port: process.env.PORT || 4000 }, () => { 75 | console.log( 76 | `🚀 Server ready at http://localhost:4000${server.graphqlPath}` 77 | ); 78 | console.log( 79 | `🚀 Subscriptions ready at ws://localhost:4000${server.subscriptionsPath}` 80 | ); 81 | }); 82 | }; 83 | 84 | startServer(); 85 | -------------------------------------------------------------------------------- /server/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "chat-app", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "start": "node index.js", 8 | "dev": "nodemon index.js" 9 | }, 10 | "dependencies": { 11 | "apollo-server": "^2.20.0", 12 | "apollo-server-express": "^2.19.2", 13 | "bcryptjs": "^2.4.3", 14 | "cookie-parser": "^1.4.5", 15 | "dotenv": "^8.2.0", 16 | "express": "^4.17.1", 17 | "firebase": "^8.2.4", 18 | "firebase-admin": "^9.4.2", 19 | "graphql": "^15.4.0", 20 | "jsonwebtoken": "^8.5.1", 21 | "nodemon": "^2.0.7", 22 | "cors": "^2.8.5" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /server/schema/mutationResolvers.js: -------------------------------------------------------------------------------- 1 | const { verify } = require("jsonwebtoken"); 2 | const { postMessage, deleteMessage } = require("../util/messages"); 3 | const { createUser, loginUser } = require("../util/users"); 4 | require("dotenv").config(); 5 | 6 | const MESSAGE_POSTED = "MESSAGE_POSTED"; 7 | const MESSAGE_DELETED = "MESSAGE_DELETED"; 8 | 9 | const Subscription = { 10 | newMessage: { 11 | subscribe: (_, __, { pubsub }) => pubsub.asyncIterator(MESSAGE_POSTED), 12 | }, 13 | deleteMessage: { 14 | subscribe: (_, __, { pubsub }) => pubsub.asyncIterator(MESSAGE_DELETED), 15 | }, 16 | }; 17 | 18 | const Mutation = { 19 | postMessage: (_, { message, author }, { req, res, pubsub }) => { 20 | const accessToken = req.cookies["access-token"]; 21 | const refreshToken = req.cookies["refresh-token"]; 22 | if (!refreshToken && !accessToken) { 23 | throw new Error("You are not logged in"); 24 | } 25 | 26 | let createdAt = new Date().toISOString(); 27 | const data = verify(accessToken, process.env.ACCESS_TOKEN_SECRET); 28 | 29 | const id = postMessage({ 30 | message, 31 | author, 32 | createdAt, 33 | isVerified: data.verified || false, 34 | }); 35 | 36 | const messageObject = { 37 | id, 38 | message, 39 | author, 40 | createdAt, 41 | isVerified: data.verified || false, 42 | }; 43 | 44 | pubsub.publish(MESSAGE_POSTED, { 45 | newMessage: messageObject, 46 | }); 47 | 48 | return id; 49 | }, 50 | deleteMessage: async (_, { id }, { pubsub }) => { 51 | const messageInfo = await deleteMessage(id); 52 | 53 | pubsub.publish(MESSAGE_DELETED, { 54 | deleteMessage: messageInfo, 55 | }); 56 | 57 | return "Message Successfully Deleted!"; 58 | }, 59 | register: async (_, { userName, email, password }, { req, res }) => { 60 | const response = await createUser({ userName, email, password }); 61 | if (response.message) { 62 | throw new Error(response.message); 63 | } 64 | 65 | res.cookie("refresh-token", response.refreshToken, { 66 | expires: new Date(Number(new Date()) + 604800000), 67 | sameSite: "None", 68 | secure: true, 69 | }); 70 | res.cookie("access-token", response.accessToken, { 71 | expires: new Date(Number(new Date()) + 900000), 72 | sameSite: "None", 73 | secure: true, 74 | }); 75 | 76 | return response.userDetails; 77 | }, 78 | login: async (_, { email, password }, { res }) => { 79 | const response = await loginUser(email, password); 80 | 81 | if (response.message) { 82 | throw new Error(response.message); 83 | } 84 | 85 | res.cookie("refresh-token", response.refreshToken, { 86 | expires: new Date(Number(new Date()) + 604800000), 87 | sameSite: "None", 88 | secure: true, 89 | }); 90 | res.cookie("access-token", response.accessToken, { 91 | expires: new Date(Number(new Date()) + 900000), 92 | sameSite: "None", 93 | secure: true, 94 | }); 95 | 96 | return response.user; 97 | }, 98 | logout: async (_, __, { req, res }) => { 99 | res.clearCookie("refresh-token", { 100 | sameSite: "None", 101 | secure: true, 102 | }); 103 | res.clearCookie("access-token", { 104 | sameSite: "None", 105 | secure: true, 106 | }); 107 | return true; 108 | }, 109 | }; 110 | 111 | module.exports = { Mutation, Subscription }; 112 | -------------------------------------------------------------------------------- /server/schema/queryResolvers.js: -------------------------------------------------------------------------------- 1 | const { getAllMessages } = require("../util/messages"); 2 | const { getUser, getAllUsers } = require("../util/users"); 3 | 4 | const Query = { 5 | messages: () => getAllMessages(), 6 | me: (_, __, { req }) => { 7 | if (!req.id) { 8 | return null; 9 | } 10 | 11 | return getUser(req.id); 12 | }, 13 | users: () => getAllUsers(), 14 | }; 15 | 16 | module.exports = { Query }; 17 | -------------------------------------------------------------------------------- /server/schema/schema.js: -------------------------------------------------------------------------------- 1 | const { gql, ApolloServer, PubSub } = require("apollo-server-express"); 2 | const { Mutation, Subscription } = require("./mutationResolvers"); 3 | const { Query } = require("./queryResolvers"); 4 | 5 | const typeDefs = gql` 6 | type Message { 7 | message: String 8 | author: String 9 | id: ID 10 | createdAt: String 11 | isVerified: Boolean 12 | } 13 | 14 | type User { 15 | id: ID! 16 | userName: String! 17 | email: String! 18 | isVerified: Boolean! 19 | } 20 | 21 | type Query { 22 | messages: [Message] 23 | me: User 24 | users: [User] 25 | } 26 | 27 | type Subscription { 28 | newMessage: Message 29 | deleteMessage: Message 30 | } 31 | 32 | type Mutation { 33 | postMessage(message: String!, author: String!): ID 34 | deleteMessage(id: ID!): String 35 | register(userName: String!, email: String!, password: String!): User 36 | login(email: String!, password: String!): User 37 | logout: Boolean! 38 | } 39 | `; 40 | 41 | const pubsub = new PubSub(); 42 | const resolvers = { Subscription, Query, Mutation }; 43 | 44 | module.exports = new ApolloServer({ 45 | typeDefs, 46 | resolvers, 47 | context: ({ req, res }) => ({ req, res, pubsub }), 48 | }); 49 | -------------------------------------------------------------------------------- /server/util/auth.js: -------------------------------------------------------------------------------- 1 | const { sign } = require("jsonwebtoken"); 2 | require("dotenv").config(); 3 | 4 | const createTokens = (user) => { 5 | const refreshToken = sign( 6 | { 7 | id: user.id, 8 | email: user.email, 9 | userName: user.userName, 10 | verified: user.isVerified || false, 11 | }, 12 | process.env.REFRESH_TOKEN_SECRET, 13 | { 14 | expiresIn: "7d", 15 | } 16 | ); 17 | 18 | const accessToken = sign( 19 | { 20 | id: user.id, 21 | email: user.email, 22 | userName: user.userName, 23 | verified: user.isVerified || false, 24 | }, 25 | process.env.ACCESS_TOKEN_SECRET, 26 | { 27 | expiresIn: "15min", 28 | } 29 | ); 30 | 31 | return { refreshToken, accessToken }; 32 | }; 33 | 34 | module.exports = { createTokens }; 35 | -------------------------------------------------------------------------------- /server/util/emailValidator.js: -------------------------------------------------------------------------------- 1 | const validateEmail = (email) => { 2 | const emailRegex = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 3 | const emailValidator = emailRegex.test(String(email).toLowerCase()); 4 | return emailValidator; 5 | } 6 | 7 | module.exports = { validateEmail } -------------------------------------------------------------------------------- /server/util/firebase-admin.js: -------------------------------------------------------------------------------- 1 | const admin = require("firebase-admin"); 2 | require("dotenv").config(); 3 | 4 | if (!admin.apps.length) { 5 | admin.initializeApp({ 6 | credential: admin.credential.cert({ 7 | client_email: process.env.FIREBASE_CLIENT_EMAIL, 8 | private_key: JSON.parse(process.env.FIREBASE_PRIVATE_KEY), 9 | // USE THE PRIVATE KEY THIS WAY IF YOU ARE DEVELOPING LOCALLY ⬇️ 10 | // private_key: process.env.FIREBASE_PRIVATE_KEY, 11 | project_id: process.env.FIREBASE_PROJECT_ID, 12 | }), 13 | }); 14 | } 15 | const auth = admin.auth(); 16 | const firestore = admin.firestore(); 17 | 18 | module.exports = { auth, firestore } -------------------------------------------------------------------------------- /server/util/firebase.js: -------------------------------------------------------------------------------- 1 | const firebase = require("firebase"); 2 | require("dotenv").config(); 3 | 4 | if (!firebase.apps.length) { 5 | firebase.initializeApp({ 6 | apiKey: process.env.FIREBASE_API_KEY, 7 | authDomain: process.env.FIREBASE_AUTH_DOMAIN, 8 | projectId: process.env.FIREBASE_PROJECT_ID, 9 | storageBucket: "chat-app-9cb30.appspot.com", 10 | messagingSenderId: "151353615197", 11 | appId: "1:151353615197:web:24c0d8626d92cada98feb4", 12 | }); 13 | } 14 | 15 | const auth = firebase.auth 16 | 17 | module.exports = { auth }; -------------------------------------------------------------------------------- /server/util/messages.js: -------------------------------------------------------------------------------- 1 | const { firestore } = require("./firebase-admin"); 2 | 3 | const postMessage = async (data) => { 4 | const message = await firestore.collection("messages").doc(); 5 | message.set(data); 6 | return message.id; 7 | }; 8 | 9 | const deleteMessage = async (id) => { 10 | const messageRef = await firestore.collection("messages").doc(id); 11 | const messageInfo = await { ...await (await messageRef.get()).data(), id } 12 | await messageRef.delete(); 13 | return messageInfo; 14 | }; 15 | 16 | const getAllMessages = async () => { 17 | const snapshot = await firestore.collection("messages").orderBy("createdAt", "asc").get(); 18 | const messages = []; 19 | snapshot.forEach((doc) => { 20 | messages.push({ ...doc.data(), id: doc.id }); 21 | }); 22 | 23 | return messages; 24 | }; 25 | 26 | const getMessage = async (id) => { 27 | const doc = await firestore.collection("messages").doc(id).get(); 28 | const message = { 29 | ...doc.data(), 30 | id: doc.id, 31 | }; 32 | 33 | return message; 34 | }; 35 | 36 | module.exports = { postMessage, getAllMessages, deleteMessage, getMessage }; 37 | -------------------------------------------------------------------------------- /server/util/removeEmojis.js: -------------------------------------------------------------------------------- 1 | const removeEmojis = (string) => { 2 | const regex = /(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff]|[\u0023-\u0039]\ufe0f?\u20e3|\u3299|\u3297|\u303d|\u3030|\u24c2|\ud83c[\udd70-\udd71]|\ud83c[\udd7e-\udd7f]|\ud83c\udd8e|\ud83c[\udd91-\udd9a]|\ud83c[\udde6-\uddff]|\ud83c[\ude01-\ude02]|\ud83c\ude1a|\ud83c\ude2f|\ud83c[\ude32-\ude3a]|\ud83c[\ude50-\ude51]|\u203c|\u2049|[\u25aa-\u25ab]|\u25b6|\u25c0|[\u25fb-\u25fe]|\u00a9|\u00ae|\u2122|\u2139|\ud83c\udc04|[\u2600-\u26FF]|\u2b05|\u2b06|\u2b07|\u2b1b|\u2b1c|\u2b50|\u2b55|\u231a|\u231b|\u2328|\u23cf|[\u23e9-\u23f3]|[\u23f8-\u23fa]|\ud83c\udccf|\u2934|\u2935|[\u2190-\u21ff])/g; 3 | 4 | return string.replace(regex, ""); 5 | } 6 | 7 | module.exports = { removeEmojis } -------------------------------------------------------------------------------- /server/util/userExistence.js: -------------------------------------------------------------------------------- 1 | async function searchIfEmailExists(userRef, email) { 2 | const snapshot = await userRef.where("email", "==", email).get(); 3 | let document; 4 | snapshot.forEach((doc) => { 5 | document = { ...doc.data() }; 6 | }); 7 | 8 | if (document === undefined) { 9 | return; 10 | } 11 | 12 | return { message: "Email already exists." }; 13 | } 14 | 15 | async function searchIfUserNameExists(userRef, userName) { 16 | const snapshot = await userRef.where("userName", "==", userName).get(); 17 | let document; 18 | snapshot.forEach((doc) => { 19 | document = { ...doc.data() }; 20 | }); 21 | 22 | if (document === undefined) { 23 | return; 24 | } 25 | 26 | return { message: "Username already exists." }; 27 | } 28 | 29 | module.exports = { searchIfEmailExists, searchIfUserNameExists }; 30 | -------------------------------------------------------------------------------- /server/util/users.js: -------------------------------------------------------------------------------- 1 | const bcrypt = require("bcryptjs"); 2 | const { firestore } = require("./firebase-admin"); 3 | const { createTokens } = require("./auth"); 4 | const { validateEmail } = require("./emailValidator"); 5 | const { 6 | searchIfEmailExists, 7 | searchIfUserNameExists, 8 | } = require("./userExistence"); 9 | 10 | const createUser = async (data) => { 11 | const userRef = await firestore.collection("users"); 12 | const user = await userRef.doc(); 13 | let errors; 14 | 15 | if (data.password.length < 8) { 16 | errors = { message: "Password is too short." }; 17 | return errors; 18 | } 19 | 20 | if (validateEmail(data.email) === false) { 21 | errors = { message: "Email is invalid." }; 22 | return errors; 23 | } 24 | 25 | const ifEmailExists = await searchIfEmailExists(userRef, data.email); 26 | const ifUserNameExists = await searchIfUserNameExists(userRef, data.userName); 27 | 28 | if (ifEmailExists && ifEmailExists.message) { 29 | errors = { message: ifEmailExists.message }; 30 | return errors; 31 | } 32 | 33 | if (ifUserNameExists && ifUserNameExists.message) { 34 | errors = { message: ifUserNameExists.message }; 35 | return errors; 36 | } 37 | 38 | if (data.userName.match(/(fayd)|(faisal\s?sayed)/gi)) { 39 | errors = { message: "BRUH" }; 40 | return errors; 41 | } 42 | 43 | const hashedPassword = await bcrypt.hash(data.password, 10); 44 | 45 | const userDetails = { 46 | ...data, 47 | password: hashedPassword, 48 | userName: data.userName, 49 | id: user.id, 50 | isVerified: false, 51 | }; 52 | 53 | const { accessToken, refreshToken } = createTokens(userDetails); 54 | 55 | user.set({ ...data, password: hashedPassword, isVerified: false }); 56 | return { 57 | userDetails, 58 | userName: data.userName, 59 | accessToken, 60 | refreshToken, 61 | }; 62 | }; 63 | 64 | const loginUser = async (email, password) => { 65 | const snapshot = await firestore 66 | .collection("users") 67 | .where("email", "==", email) 68 | .get(); 69 | 70 | let user; 71 | let errors; 72 | snapshot.forEach((doc) => { 73 | user = { ...doc.data(), id: doc.id }; 74 | }); 75 | 76 | if (user === undefined) { 77 | errors = { message: "No such user exists." }; 78 | return errors; 79 | } 80 | 81 | const passwordIsValid = await bcrypt.compare(password, user.password); 82 | if (!passwordIsValid) { 83 | errors = { message: "Password is incorrect." }; 84 | return errors; 85 | } 86 | 87 | const { accessToken, refreshToken } = createTokens(user); 88 | 89 | return { accessToken, refreshToken, user }; 90 | }; 91 | 92 | const getUser = async (id) => { 93 | const doc = await firestore.collection("users").doc(id).get(); 94 | const user = { 95 | ...doc.data(), 96 | id: doc.id, 97 | }; 98 | 99 | return user; 100 | }; 101 | 102 | const getAllUsers = async () => { 103 | const snapshot = await firestore.collection("users").get(); 104 | const users = []; 105 | snapshot.forEach((doc) => { 106 | users.push({ ...doc.data(), id: doc.id }); 107 | }); 108 | 109 | return users; 110 | }; 111 | 112 | module.exports = { createUser, loginUser, getUser, getAllUsers }; 113 | -------------------------------------------------------------------------------- /server/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@apollo/protobufjs@^1.0.3": 6 | version "1.0.5" 7 | resolved "https://registry.yarnpkg.com/@apollo/protobufjs/-/protobufjs-1.0.5.tgz#a78b726147efc0795e74c8cb8a11aafc6e02f773" 8 | integrity sha512-ZtyaBH1icCgqwIGb3zrtopV2D5Q8yxibkJzlaViM08eOhTQc7rACdYu0pfORFfhllvdMZ3aq69vifYHszY4gNA== 9 | dependencies: 10 | "@protobufjs/aspromise" "^1.1.2" 11 | "@protobufjs/base64" "^1.1.2" 12 | "@protobufjs/codegen" "^2.0.4" 13 | "@protobufjs/eventemitter" "^1.1.0" 14 | "@protobufjs/fetch" "^1.1.0" 15 | "@protobufjs/float" "^1.0.2" 16 | "@protobufjs/inquire" "^1.1.0" 17 | "@protobufjs/path" "^1.1.2" 18 | "@protobufjs/pool" "^1.1.0" 19 | "@protobufjs/utf8" "^1.1.0" 20 | "@types/long" "^4.0.0" 21 | "@types/node" "^10.1.0" 22 | long "^4.0.0" 23 | 24 | "@apollographql/apollo-tools@^0.4.3": 25 | version "0.4.8" 26 | resolved "https://registry.yarnpkg.com/@apollographql/apollo-tools/-/apollo-tools-0.4.8.tgz#d81da89ee880c2345eb86bddb92b35291f6135ed" 27 | integrity sha512-W2+HB8Y7ifowcf3YyPHgDI05izyRtOeZ4MqIr7LbTArtmJ0ZHULWpn84SGMW7NAvTV1tFExpHlveHhnXuJfuGA== 28 | dependencies: 29 | apollo-env "^0.6.5" 30 | 31 | "@apollographql/graphql-playground-html@1.6.26": 32 | version "1.6.26" 33 | resolved "https://registry.yarnpkg.com/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.26.tgz#2f7b610392e2a872722912fc342b43cf8d641cb3" 34 | integrity sha512-XAwXOIab51QyhBxnxySdK3nuMEUohhDsHQ5Rbco/V1vjlP75zZ0ZLHD9dTpXTN8uxKxopb2lUvJTq+M4g2Q0HQ== 35 | dependencies: 36 | xss "^1.0.6" 37 | 38 | "@firebase/analytics-types@0.4.0": 39 | version "0.4.0" 40 | resolved "https://registry.yarnpkg.com/@firebase/analytics-types/-/analytics-types-0.4.0.tgz#d6716f9fa36a6e340bc0ecfe68af325aa6f60508" 41 | integrity sha512-Jj2xW+8+8XPfWGkv9HPv/uR+Qrmq37NPYT352wf7MvE9LrstpLVmFg3LqG6MCRr5miLAom5sen2gZ+iOhVDeRA== 42 | 43 | "@firebase/analytics@0.6.2": 44 | version "0.6.2" 45 | resolved "https://registry.yarnpkg.com/@firebase/analytics/-/analytics-0.6.2.tgz#7f45675a1b524fff4d9e9fe318fd6e2ed067a325" 46 | integrity sha512-4Ceov+rPfOEPIdbjlpTim/wbcUUneIesHag4UOzvmFsRRXqbxLwQpyZQWEbTSriUeU8uTKj9yOW32hsskV9Klg== 47 | dependencies: 48 | "@firebase/analytics-types" "0.4.0" 49 | "@firebase/component" "0.1.21" 50 | "@firebase/installations" "0.4.19" 51 | "@firebase/logger" "0.2.6" 52 | "@firebase/util" "0.3.4" 53 | tslib "^1.11.1" 54 | 55 | "@firebase/app-types@0.6.1": 56 | version "0.6.1" 57 | resolved "https://registry.yarnpkg.com/@firebase/app-types/-/app-types-0.6.1.tgz#dcbd23030a71c0c74fc95d4a3f75ba81653850e9" 58 | integrity sha512-L/ZnJRAq7F++utfuoTKX4CLBG5YR7tFO3PLzG1/oXXKEezJ0kRL3CMRoueBEmTCzVb/6SIs2Qlaw++uDgi5Xyg== 59 | 60 | "@firebase/app@0.6.13": 61 | version "0.6.13" 62 | resolved "https://registry.yarnpkg.com/@firebase/app/-/app-0.6.13.tgz#f2e9fa9e75815e54161dc34659a60f1fffd9a450" 63 | integrity sha512-xGrJETzvCb89VYbGSHFHCW7O/y067HRxT7MGehUE1xMxdPVBDNayHnxEuKwzfGvXAjVmajXBKFlKxaCWpgSjCQ== 64 | dependencies: 65 | "@firebase/app-types" "0.6.1" 66 | "@firebase/component" "0.1.21" 67 | "@firebase/logger" "0.2.6" 68 | "@firebase/util" "0.3.4" 69 | dom-storage "2.1.0" 70 | tslib "^1.11.1" 71 | xmlhttprequest "1.8.0" 72 | 73 | "@firebase/auth-interop-types@0.1.5": 74 | version "0.1.5" 75 | resolved "https://registry.yarnpkg.com/@firebase/auth-interop-types/-/auth-interop-types-0.1.5.tgz#9fc9bd7c879f16b8d1bb08373a0f48c3a8b74557" 76 | integrity sha512-88h74TMQ6wXChPA6h9Q3E1Jg6TkTHep2+k63OWg3s0ozyGVMeY+TTOti7PFPzq5RhszQPQOoCi59es4MaRvgCw== 77 | 78 | "@firebase/auth-types@0.10.1": 79 | version "0.10.1" 80 | resolved "https://registry.yarnpkg.com/@firebase/auth-types/-/auth-types-0.10.1.tgz#7815e71c9c6f072034415524b29ca8f1d1770660" 81 | integrity sha512-/+gBHb1O9x/YlG7inXfxff/6X3BPZt4zgBv4kql6HEmdzNQCodIRlEYnI+/da+lN+dha7PjaFH7C7ewMmfV7rw== 82 | 83 | "@firebase/auth@0.16.2": 84 | version "0.16.2" 85 | resolved "https://registry.yarnpkg.com/@firebase/auth/-/auth-0.16.2.tgz#e8fdd65c7987276bc06676e9ed990346ebe2dc51" 86 | integrity sha512-68TlDL0yh3kF8PiCzI8m8RWd/bf/xCLUsdz1NZ2Dwea0sp6e2WAhu0sem1GfhwuEwL+Ns4jCdX7qbe/OQlkVEA== 87 | dependencies: 88 | "@firebase/auth-types" "0.10.1" 89 | 90 | "@firebase/component@0.1.21": 91 | version "0.1.21" 92 | resolved "https://registry.yarnpkg.com/@firebase/component/-/component-0.1.21.tgz#56062eb0d449dc1e7bbef3c084a9b5fa48c7c14d" 93 | integrity sha512-kd5sVmCLB95EK81Pj+yDTea8pzN2qo/1yr0ua9yVi6UgMzm6zAeih73iVUkaat96MAHy26yosMufkvd3zC4IKg== 94 | dependencies: 95 | "@firebase/util" "0.3.4" 96 | tslib "^1.11.1" 97 | 98 | "@firebase/database-types@0.6.1", "@firebase/database-types@^0.6.1": 99 | version "0.6.1" 100 | resolved "https://registry.yarnpkg.com/@firebase/database-types/-/database-types-0.6.1.tgz#cf1cfc03e617ed4c2561703781f85ba4c707ff65" 101 | integrity sha512-JtL3FUbWG+bM59iYuphfx9WOu2Mzf0OZNaqWiQ7lJR8wBe7bS9rIm9jlBFtksB7xcya1lZSQPA/GAy2jIlMIkA== 102 | dependencies: 103 | "@firebase/app-types" "0.6.1" 104 | 105 | "@firebase/database@0.9.0": 106 | version "0.9.0" 107 | resolved "https://registry.yarnpkg.com/@firebase/database/-/database-0.9.0.tgz#eaf07dbaf3433be6cc27543c1823dc3c88c47572" 108 | integrity sha512-j9NgRCsoahvAtQ8LPxMidGsiwsklbtUlDOQ6MhU6/Hk9DVYtEnVT3qSe42xOwBGDfMe191b1B2HsiEOsglWgag== 109 | dependencies: 110 | "@firebase/auth-interop-types" "0.1.5" 111 | "@firebase/component" "0.1.21" 112 | "@firebase/database-types" "0.6.1" 113 | "@firebase/logger" "0.2.6" 114 | "@firebase/util" "0.3.4" 115 | faye-websocket "0.11.3" 116 | tslib "^1.11.1" 117 | 118 | "@firebase/database@^0.8.1": 119 | version "0.8.3" 120 | resolved "https://registry.yarnpkg.com/@firebase/database/-/database-0.8.3.tgz#4e5efa8fc8df00d6febfd9c8d6d6e409596659f7" 121 | integrity sha512-i29rr3kcPltIkA8La9M1lgsSxx9bfu5lCQ0T+tbJptZ3UpqpcL1NzCcZa24cJjiLgq3HQNPyLvUvCtcPSFDlRg== 122 | dependencies: 123 | "@firebase/auth-interop-types" "0.1.5" 124 | "@firebase/component" "0.1.21" 125 | "@firebase/database-types" "0.6.1" 126 | "@firebase/logger" "0.2.6" 127 | "@firebase/util" "0.3.4" 128 | faye-websocket "0.11.3" 129 | tslib "^1.11.1" 130 | 131 | "@firebase/firestore-types@2.1.0": 132 | version "2.1.0" 133 | resolved "https://registry.yarnpkg.com/@firebase/firestore-types/-/firestore-types-2.1.0.tgz#ad406c6fd7f0eae7ea52979f712daa0166aef665" 134 | integrity sha512-jietErBWihMvJkqqEquQy5GgoEwzHnMXXC/TsVoe9FPysXm1/AeJS12taS7ZYvenAtyvL/AEJyKrRKRh4adcJQ== 135 | 136 | "@firebase/firestore@2.1.3": 137 | version "2.1.3" 138 | resolved "https://registry.yarnpkg.com/@firebase/firestore/-/firestore-2.1.3.tgz#74b99c9365a26ea101045c0600641064621cb341" 139 | integrity sha512-+No0hcaJ7hUYD/Vyv8xvEAnIqUQHJAFF5alL3clfyqmYa7bKtffjnZs2Pvm0fEIQ+LK4ovo2be2NmwK4iV0q5g== 140 | dependencies: 141 | "@firebase/component" "0.1.21" 142 | "@firebase/firestore-types" "2.1.0" 143 | "@firebase/logger" "0.2.6" 144 | "@firebase/util" "0.3.4" 145 | "@firebase/webchannel-wrapper" "0.4.1" 146 | "@grpc/grpc-js" "^1.0.0" 147 | "@grpc/proto-loader" "^0.5.0" 148 | node-fetch "2.6.1" 149 | tslib "^1.11.1" 150 | 151 | "@firebase/functions-types@0.4.0": 152 | version "0.4.0" 153 | resolved "https://registry.yarnpkg.com/@firebase/functions-types/-/functions-types-0.4.0.tgz#0b789f4fe9a9c0b987606c4da10139345b40f6b9" 154 | integrity sha512-3KElyO3887HNxtxNF1ytGFrNmqD+hheqjwmT3sI09FaDCuaxGbOnsXAXH2eQ049XRXw9YQpHMgYws/aUNgXVyQ== 155 | 156 | "@firebase/functions@0.6.1": 157 | version "0.6.1" 158 | resolved "https://registry.yarnpkg.com/@firebase/functions/-/functions-0.6.1.tgz#32640b8f877637057dfaaeb122be8c8e99ad1af7" 159 | integrity sha512-xNCAY3cLlVWE8Azf+/84OjnaXMoyUstJ3vwVRG0ie22QhsdQuPa1tXTiPX4Tmm+Hbbd/Aw0A/7dkEnuW+zYzaQ== 160 | dependencies: 161 | "@firebase/component" "0.1.21" 162 | "@firebase/functions-types" "0.4.0" 163 | "@firebase/messaging-types" "0.5.0" 164 | node-fetch "2.6.1" 165 | tslib "^1.11.1" 166 | 167 | "@firebase/installations-types@0.3.4": 168 | version "0.3.4" 169 | resolved "https://registry.yarnpkg.com/@firebase/installations-types/-/installations-types-0.3.4.tgz#589a941d713f4f64bf9f4feb7f463505bab1afa2" 170 | integrity sha512-RfePJFovmdIXb6rYwtngyxuEcWnOrzdZd9m7xAW0gRxDIjBT20n3BOhjpmgRWXo/DAxRmS7bRjWAyTHY9cqN7Q== 171 | 172 | "@firebase/installations@0.4.19": 173 | version "0.4.19" 174 | resolved "https://registry.yarnpkg.com/@firebase/installations/-/installations-0.4.19.tgz#53f50aeb022996963f89f59560d7b4cf801869da" 175 | integrity sha512-QqAQzosKVVqIx7oMt5ujF4NsIXgtlTnej4JXGJ8sQQuJoMnt3T+PFQRHbr7uOfVaBiHYhEaXCcmmhfKUHwKftw== 176 | dependencies: 177 | "@firebase/component" "0.1.21" 178 | "@firebase/installations-types" "0.3.4" 179 | "@firebase/util" "0.3.4" 180 | idb "3.0.2" 181 | tslib "^1.11.1" 182 | 183 | "@firebase/logger@0.2.6": 184 | version "0.2.6" 185 | resolved "https://registry.yarnpkg.com/@firebase/logger/-/logger-0.2.6.tgz#3aa2ca4fe10327cabf7808bd3994e88db26d7989" 186 | integrity sha512-KIxcUvW/cRGWlzK9Vd2KB864HlUnCfdTH0taHE0sXW5Xl7+W68suaeau1oKNEqmc3l45azkd4NzXTCWZRZdXrw== 187 | 188 | "@firebase/messaging-types@0.5.0": 189 | version "0.5.0" 190 | resolved "https://registry.yarnpkg.com/@firebase/messaging-types/-/messaging-types-0.5.0.tgz#c5d0ef309ced1758fda93ef3ac70a786de2e73c4" 191 | integrity sha512-QaaBswrU6umJYb/ZYvjR5JDSslCGOH6D9P136PhabFAHLTR4TWjsaACvbBXuvwrfCXu10DtcjMxqfhdNIB1Xfg== 192 | 193 | "@firebase/messaging@0.7.3": 194 | version "0.7.3" 195 | resolved "https://registry.yarnpkg.com/@firebase/messaging/-/messaging-0.7.3.tgz#31dded892455e4d0680e1452ff2fbfdfb9e4ce9b" 196 | integrity sha512-63nOP2SmQJrj9jrhV3K96L5MRKS6AqmFVLX1XbGk6K6lz38ZC4LIoCcHxzUBXY7fCAuZvNmh/YB3pE8B2mTs8A== 197 | dependencies: 198 | "@firebase/component" "0.1.21" 199 | "@firebase/installations" "0.4.19" 200 | "@firebase/messaging-types" "0.5.0" 201 | "@firebase/util" "0.3.4" 202 | idb "3.0.2" 203 | tslib "^1.11.1" 204 | 205 | "@firebase/performance-types@0.0.13": 206 | version "0.0.13" 207 | resolved "https://registry.yarnpkg.com/@firebase/performance-types/-/performance-types-0.0.13.tgz#58ce5453f57e34b18186f74ef11550dfc558ede6" 208 | integrity sha512-6fZfIGjQpwo9S5OzMpPyqgYAUZcFzZxHFqOyNtorDIgNXq33nlldTL/vtaUZA8iT9TT5cJlCrF/jthKU7X21EA== 209 | 210 | "@firebase/performance@0.4.5": 211 | version "0.4.5" 212 | resolved "https://registry.yarnpkg.com/@firebase/performance/-/performance-0.4.5.tgz#3ab89208ed6fb80165e5594058e46dc85113cd78" 213 | integrity sha512-oenEOaV/UzvV8XPi8afYQ71RzyrHoBesqOyXqb1TOg7dpU+i+UJ5PS8K64DytKUHTxQl+UJFcuxNpsoy9BpWzw== 214 | dependencies: 215 | "@firebase/component" "0.1.21" 216 | "@firebase/installations" "0.4.19" 217 | "@firebase/logger" "0.2.6" 218 | "@firebase/performance-types" "0.0.13" 219 | "@firebase/util" "0.3.4" 220 | tslib "^1.11.1" 221 | 222 | "@firebase/polyfill@0.3.36": 223 | version "0.3.36" 224 | resolved "https://registry.yarnpkg.com/@firebase/polyfill/-/polyfill-0.3.36.tgz#c057cce6748170f36966b555749472b25efdb145" 225 | integrity sha512-zMM9oSJgY6cT2jx3Ce9LYqb0eIpDE52meIzd/oe/y70F+v9u1LDqk5kUF5mf16zovGBWMNFmgzlsh6Wj0OsFtg== 226 | dependencies: 227 | core-js "3.6.5" 228 | promise-polyfill "8.1.3" 229 | whatwg-fetch "2.0.4" 230 | 231 | "@firebase/remote-config-types@0.1.9": 232 | version "0.1.9" 233 | resolved "https://registry.yarnpkg.com/@firebase/remote-config-types/-/remote-config-types-0.1.9.tgz#fe6bbe4d08f3b6e92fce30e4b7a9f4d6a96d6965" 234 | integrity sha512-G96qnF3RYGbZsTRut7NBX0sxyczxt1uyCgXQuH/eAfUCngxjEGcZQnBdy6mvSdqdJh5mC31rWPO4v9/s7HwtzA== 235 | 236 | "@firebase/remote-config@0.1.30": 237 | version "0.1.30" 238 | resolved "https://registry.yarnpkg.com/@firebase/remote-config/-/remote-config-0.1.30.tgz#2cd6bbbed526a98b154e13a2cc73e748a77d7c3d" 239 | integrity sha512-LAfLDcp1AN0V/7AkxBuTKy+Qnq9fKYKxbA5clrXRNVzJbTVnF5eFGsaUOlkes0ESG6lbqKy5ZcDgdl73zBIhAA== 240 | dependencies: 241 | "@firebase/component" "0.1.21" 242 | "@firebase/installations" "0.4.19" 243 | "@firebase/logger" "0.2.6" 244 | "@firebase/remote-config-types" "0.1.9" 245 | "@firebase/util" "0.3.4" 246 | tslib "^1.11.1" 247 | 248 | "@firebase/storage-types@0.3.13": 249 | version "0.3.13" 250 | resolved "https://registry.yarnpkg.com/@firebase/storage-types/-/storage-types-0.3.13.tgz#cd43e939a2ab5742e109eb639a313673a48b5458" 251 | integrity sha512-pL7b8d5kMNCCL0w9hF7pr16POyKkb3imOW7w0qYrhBnbyJTdVxMWZhb0HxCFyQWC0w3EiIFFmxoz8NTFZDEFog== 252 | 253 | "@firebase/storage@0.4.2": 254 | version "0.4.2" 255 | resolved "https://registry.yarnpkg.com/@firebase/storage/-/storage-0.4.2.tgz#bc5924b87bd2fdd4ab0de49851c0125ebc236b89" 256 | integrity sha512-87CrvKrf8kijVekRBmUs8htsNz7N5X/pDhv3BvJBqw8K65GsUolpyjx0f4QJRkCRUYmh3MSkpa5P08lpVbC6nQ== 257 | dependencies: 258 | "@firebase/component" "0.1.21" 259 | "@firebase/storage-types" "0.3.13" 260 | "@firebase/util" "0.3.4" 261 | tslib "^1.11.1" 262 | 263 | "@firebase/util@0.3.4": 264 | version "0.3.4" 265 | resolved "https://registry.yarnpkg.com/@firebase/util/-/util-0.3.4.tgz#e389d0e0e2aac88a5235b06ba9431db999d4892b" 266 | integrity sha512-VwjJUE2Vgr2UMfH63ZtIX9Hd7x+6gayi6RUXaTqEYxSbf/JmehLmAEYSuxS/NckfzAXWeGnKclvnXVibDgpjQQ== 267 | dependencies: 268 | tslib "^1.11.1" 269 | 270 | "@firebase/webchannel-wrapper@0.4.1": 271 | version "0.4.1" 272 | resolved "https://registry.yarnpkg.com/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.4.1.tgz#600f2275ff54739ad5ac0102f1467b8963cd5f71" 273 | integrity sha512-0yPjzuzGMkW1GkrC8yWsiN7vt1OzkMIi9HgxRmKREZl2wnNPOKo/yScTjXf/O57HM8dltqxPF6jlNLFVtc2qdw== 274 | 275 | "@google-cloud/common@^3.5.0": 276 | version "3.5.0" 277 | resolved "https://registry.yarnpkg.com/@google-cloud/common/-/common-3.5.0.tgz#0959e769e8075a06eb0823cc567eef00fd0c2d02" 278 | integrity sha512-10d7ZAvKhq47L271AqvHEd8KzJqGU45TY+rwM2Z3JHuB070FeTi7oJJd7elfrnKaEvaktw3hH2wKnRWxk/3oWQ== 279 | dependencies: 280 | "@google-cloud/projectify" "^2.0.0" 281 | "@google-cloud/promisify" "^2.0.0" 282 | arrify "^2.0.1" 283 | duplexify "^4.1.1" 284 | ent "^2.2.0" 285 | extend "^3.0.2" 286 | google-auth-library "^6.1.1" 287 | retry-request "^4.1.1" 288 | teeny-request "^7.0.0" 289 | 290 | "@google-cloud/firestore@^4.5.0": 291 | version "4.8.1" 292 | resolved "https://registry.yarnpkg.com/@google-cloud/firestore/-/firestore-4.8.1.tgz#bcba4d45d4d53dd4eaed5b19300ae238e65a3106" 293 | integrity sha512-x/8ixlYqQuH9DoluhBj/uj3MqwoQN1lSCT2v+ieOXuh2L+8eoA7H+FF7f+UJ/D6hzo0MMWJd6q7QaBkpzp203Q== 294 | dependencies: 295 | fast-deep-equal "^3.1.1" 296 | functional-red-black-tree "^1.0.1" 297 | google-gax "^2.9.2" 298 | 299 | "@google-cloud/paginator@^3.0.0": 300 | version "3.0.5" 301 | resolved "https://registry.yarnpkg.com/@google-cloud/paginator/-/paginator-3.0.5.tgz#9d6b96c421a89bd560c1bc2c197c7611ef21db6c" 302 | integrity sha512-N4Uk4BT1YuskfRhKXBs0n9Lg2YTROZc6IMpkO/8DIHODtm5s3xY8K5vVBo23v/2XulY3azwITQlYWgT4GdLsUw== 303 | dependencies: 304 | arrify "^2.0.0" 305 | extend "^3.0.2" 306 | 307 | "@google-cloud/projectify@^2.0.0": 308 | version "2.0.1" 309 | resolved "https://registry.yarnpkg.com/@google-cloud/projectify/-/projectify-2.0.1.tgz#13350ee609346435c795bbfe133a08dfeab78d65" 310 | integrity sha512-ZDG38U/Yy6Zr21LaR3BTiiLtpJl6RkPS/JwoRT453G+6Q1DhlV0waNf8Lfu+YVYGIIxgKnLayJRfYlFJfiI8iQ== 311 | 312 | "@google-cloud/promisify@^2.0.0": 313 | version "2.0.3" 314 | resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-2.0.3.tgz#f934b5cdc939e3c7039ff62b9caaf59a9d89e3a8" 315 | integrity sha512-d4VSA86eL/AFTe5xtyZX+ePUjE8dIFu2T8zmdeNBSa5/kNgXPCx/o/wbFNHAGLJdGnk1vddRuMESD9HbOC8irw== 316 | 317 | "@google-cloud/storage@^5.3.0": 318 | version "5.7.2" 319 | resolved "https://registry.yarnpkg.com/@google-cloud/storage/-/storage-5.7.2.tgz#6c1ea161b5628fdddf600d901a92e731246fe04f" 320 | integrity sha512-LEKGOe+GnD1yV5YnpAmRJFAReOYHthyC2CAdQs0wv7OJAplvJCEPHchUNC7nk0QEc23mz9cYHEnT76MP+YmBhQ== 321 | dependencies: 322 | "@google-cloud/common" "^3.5.0" 323 | "@google-cloud/paginator" "^3.0.0" 324 | "@google-cloud/promisify" "^2.0.0" 325 | arrify "^2.0.0" 326 | compressible "^2.0.12" 327 | date-and-time "^0.14.2" 328 | duplexify "^4.0.0" 329 | extend "^3.0.2" 330 | gaxios "^4.0.0" 331 | gcs-resumable-upload "^3.1.0" 332 | get-stream "^6.0.0" 333 | hash-stream-validation "^0.2.2" 334 | mime "^2.2.0" 335 | mime-types "^2.0.8" 336 | onetime "^5.1.0" 337 | p-limit "^3.0.1" 338 | pumpify "^2.0.0" 339 | snakeize "^0.1.0" 340 | stream-events "^1.0.1" 341 | xdg-basedir "^4.0.0" 342 | 343 | "@grpc/grpc-js@^1.0.0", "@grpc/grpc-js@~1.2.0": 344 | version "1.2.4" 345 | resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.2.4.tgz#04f0bbefb2636296d17e821f3d52152fbe2f6989" 346 | integrity sha512-z+EI20HYHLd3/uERtwOqP8Q4EPhGbz5RKUpiyo6xPWfR3pcjpf8sfNvY9XytDQ4xo1wNz7NqH1kh2UBonwzbfg== 347 | dependencies: 348 | "@types/node" "^12.12.47" 349 | google-auth-library "^6.1.1" 350 | semver "^6.2.0" 351 | 352 | "@grpc/proto-loader@^0.5.0", "@grpc/proto-loader@^0.5.1": 353 | version "0.5.6" 354 | resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.5.6.tgz#1dea4b8a6412b05e2d58514d507137b63a52a98d" 355 | integrity sha512-DT14xgw3PSzPxwS13auTEwxhMMOoz33DPUKNtmYK/QYbBSpLXJy78FGGs5yVoxVobEqPm4iW9MOIoz0A3bLTRQ== 356 | dependencies: 357 | lodash.camelcase "^4.3.0" 358 | protobufjs "^6.8.6" 359 | 360 | "@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": 361 | version "1.1.2" 362 | resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" 363 | integrity sha1-m4sMxmPWaafY9vXQiToU00jzD78= 364 | 365 | "@protobufjs/base64@^1.1.2": 366 | version "1.1.2" 367 | resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" 368 | integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== 369 | 370 | "@protobufjs/codegen@^2.0.4": 371 | version "2.0.4" 372 | resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" 373 | integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== 374 | 375 | "@protobufjs/eventemitter@^1.1.0": 376 | version "1.1.0" 377 | resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" 378 | integrity sha1-NVy8mLr61ZePntCV85diHx0Ga3A= 379 | 380 | "@protobufjs/fetch@^1.1.0": 381 | version "1.1.0" 382 | resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" 383 | integrity sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU= 384 | dependencies: 385 | "@protobufjs/aspromise" "^1.1.1" 386 | "@protobufjs/inquire" "^1.1.0" 387 | 388 | "@protobufjs/float@^1.0.2": 389 | version "1.0.2" 390 | resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" 391 | integrity sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E= 392 | 393 | "@protobufjs/inquire@^1.1.0": 394 | version "1.1.0" 395 | resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" 396 | integrity sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik= 397 | 398 | "@protobufjs/path@^1.1.2": 399 | version "1.1.2" 400 | resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" 401 | integrity sha1-bMKyDFya1q0NzP0hynZz2Nf79o0= 402 | 403 | "@protobufjs/pool@^1.1.0": 404 | version "1.1.0" 405 | resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" 406 | integrity sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q= 407 | 408 | "@protobufjs/utf8@^1.1.0": 409 | version "1.1.0" 410 | resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" 411 | integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= 412 | 413 | "@sindresorhus/is@^0.14.0": 414 | version "0.14.0" 415 | resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" 416 | integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== 417 | 418 | "@szmarczak/http-timer@^1.1.2": 419 | version "1.1.2" 420 | resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" 421 | integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== 422 | dependencies: 423 | defer-to-connect "^1.0.1" 424 | 425 | "@tootallnate/once@1": 426 | version "1.1.2" 427 | resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" 428 | integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== 429 | 430 | "@types/accepts@*", "@types/accepts@^1.3.5": 431 | version "1.3.5" 432 | resolved "https://registry.yarnpkg.com/@types/accepts/-/accepts-1.3.5.tgz#c34bec115cfc746e04fe5a059df4ce7e7b391575" 433 | integrity sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ== 434 | dependencies: 435 | "@types/node" "*" 436 | 437 | "@types/body-parser@*", "@types/body-parser@1.19.0": 438 | version "1.19.0" 439 | resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.0.tgz#0685b3c47eb3006ffed117cdd55164b61f80538f" 440 | integrity sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ== 441 | dependencies: 442 | "@types/connect" "*" 443 | "@types/node" "*" 444 | 445 | "@types/connect@*": 446 | version "3.4.34" 447 | resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.34.tgz#170a40223a6d666006d93ca128af2beb1d9b1901" 448 | integrity sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ== 449 | dependencies: 450 | "@types/node" "*" 451 | 452 | "@types/content-disposition@*": 453 | version "0.5.3" 454 | resolved "https://registry.yarnpkg.com/@types/content-disposition/-/content-disposition-0.5.3.tgz#0aa116701955c2faa0717fc69cd1596095e49d96" 455 | integrity sha512-P1bffQfhD3O4LW0ioENXUhZ9OIa0Zn+P7M+pWgkCKaT53wVLSq0mrKksCID/FGHpFhRSxRGhgrQmfhRuzwtKdg== 456 | 457 | "@types/cookies@*": 458 | version "0.7.6" 459 | resolved "https://registry.yarnpkg.com/@types/cookies/-/cookies-0.7.6.tgz#71212c5391a976d3bae57d4b09fac20fc6bda504" 460 | integrity sha512-FK4U5Qyn7/Sc5ih233OuHO0qAkOpEcD/eG6584yEiLKizTFRny86qHLe/rej3HFQrkBuUjF4whFliAdODbVN/w== 461 | dependencies: 462 | "@types/connect" "*" 463 | "@types/express" "*" 464 | "@types/keygrip" "*" 465 | "@types/node" "*" 466 | 467 | "@types/cors@2.8.8": 468 | version "2.8.8" 469 | resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.8.tgz#317a8d8561995c60e35b9e0fcaa8d36660c98092" 470 | integrity sha512-fO3gf3DxU2Trcbr75O7obVndW/X5k8rJNZkLXlQWStTHhP71PkRqjwPIEI0yMnJdg9R9OasjU+Bsr+Hr1xy/0w== 471 | dependencies: 472 | "@types/express" "*" 473 | 474 | "@types/express-serve-static-core@*", "@types/express-serve-static-core@4.17.18", "@types/express-serve-static-core@^4.17.18": 475 | version "4.17.18" 476 | resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.18.tgz#8371e260f40e0e1ca0c116a9afcd9426fa094c40" 477 | integrity sha512-m4JTwx5RUBNZvky/JJ8swEJPKFd8si08pPF2PfizYjGZOKr/svUWPcoUmLow6MmPzhasphB7gSTINY67xn3JNA== 478 | dependencies: 479 | "@types/node" "*" 480 | "@types/qs" "*" 481 | "@types/range-parser" "*" 482 | 483 | "@types/express-serve-static-core@4.17.17": 484 | version "4.17.17" 485 | resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.17.tgz#6ba02465165b6c9c3d8db3a28def6b16fc9b70f5" 486 | integrity sha512-YYlVaCni5dnHc+bLZfY908IG1+x5xuibKZMGv8srKkvtul3wUuanYvpIj9GXXoWkQbaAdR+kgX46IETKUALWNQ== 487 | dependencies: 488 | "@types/node" "*" 489 | "@types/qs" "*" 490 | "@types/range-parser" "*" 491 | 492 | "@types/express@*": 493 | version "4.17.11" 494 | resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.11.tgz#debe3caa6f8e5fcda96b47bd54e2f40c4ee59545" 495 | integrity sha512-no+R6rW60JEc59977wIxreQVsIEOAYwgCqldrA/vkpCnbD7MqTefO97lmoBe4WE0F156bC4uLSP1XHDOySnChg== 496 | dependencies: 497 | "@types/body-parser" "*" 498 | "@types/express-serve-static-core" "^4.17.18" 499 | "@types/qs" "*" 500 | "@types/serve-static" "*" 501 | 502 | "@types/express@4.17.7": 503 | version "4.17.7" 504 | resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.7.tgz#42045be6475636d9801369cd4418ef65cdb0dd59" 505 | integrity sha512-dCOT5lcmV/uC2J9k0rPafATeeyz+99xTt54ReX11/LObZgfzJqZNcW27zGhYyX+9iSEGXGt5qLPwRSvBZcLvtQ== 506 | dependencies: 507 | "@types/body-parser" "*" 508 | "@types/express-serve-static-core" "*" 509 | "@types/qs" "*" 510 | "@types/serve-static" "*" 511 | 512 | "@types/fs-capacitor@*": 513 | version "2.0.0" 514 | resolved "https://registry.yarnpkg.com/@types/fs-capacitor/-/fs-capacitor-2.0.0.tgz#17113e25817f584f58100fb7a08eed288b81956e" 515 | integrity sha512-FKVPOCFbhCvZxpVAMhdBdTfVfXUpsh15wFHgqOKxh9N9vzWZVuWCSijZ5T4U34XYNnuj2oduh6xcs1i+LPI+BQ== 516 | dependencies: 517 | "@types/node" "*" 518 | 519 | "@types/graphql-upload@^8.0.0": 520 | version "8.0.4" 521 | resolved "https://registry.yarnpkg.com/@types/graphql-upload/-/graphql-upload-8.0.4.tgz#23a8ffb3d2fe6e0ee07e6f16ee9d9d5e995a2f4f" 522 | integrity sha512-0TRyJD2o8vbkmJF8InppFcPVcXKk+Rvlg/xvpHBIndSJYpmDWfmtx/ZAtl4f3jR2vfarpTqYgj8MZuJssSoU7Q== 523 | dependencies: 524 | "@types/express" "*" 525 | "@types/fs-capacitor" "*" 526 | "@types/koa" "*" 527 | graphql "^15.3.0" 528 | 529 | "@types/http-assert@*": 530 | version "1.5.1" 531 | resolved "https://registry.yarnpkg.com/@types/http-assert/-/http-assert-1.5.1.tgz#d775e93630c2469c2f980fc27e3143240335db3b" 532 | integrity sha512-PGAK759pxyfXE78NbKxyfRcWYA/KwW17X290cNev/qAsn9eQIxkH4shoNBafH37wewhDG/0p1cHPbK6+SzZjWQ== 533 | 534 | "@types/http-errors@*": 535 | version "1.8.0" 536 | resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-1.8.0.tgz#682477dbbbd07cd032731cb3b0e7eaee3d026b69" 537 | integrity sha512-2aoSC4UUbHDj2uCsCxcG/vRMXey/m17bC7UwitVm5hn22nI8O8Y9iDpA76Orc+DWkQ4zZrOKEshCqR/jSuXAHA== 538 | 539 | "@types/keygrip@*": 540 | version "1.0.2" 541 | resolved "https://registry.yarnpkg.com/@types/keygrip/-/keygrip-1.0.2.tgz#513abfd256d7ad0bf1ee1873606317b33b1b2a72" 542 | integrity sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw== 543 | 544 | "@types/koa-compose@*": 545 | version "3.2.5" 546 | resolved "https://registry.yarnpkg.com/@types/koa-compose/-/koa-compose-3.2.5.tgz#85eb2e80ac50be95f37ccf8c407c09bbe3468e9d" 547 | integrity sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ== 548 | dependencies: 549 | "@types/koa" "*" 550 | 551 | "@types/koa@*": 552 | version "2.11.6" 553 | resolved "https://registry.yarnpkg.com/@types/koa/-/koa-2.11.6.tgz#b7030caa6b44af801c2aea13ba77d74aff7484d5" 554 | integrity sha512-BhyrMj06eQkk04C97fovEDQMpLpd2IxCB4ecitaXwOKGq78Wi2tooaDOWOFGajPk8IkQOAtMppApgSVkYe1F/A== 555 | dependencies: 556 | "@types/accepts" "*" 557 | "@types/content-disposition" "*" 558 | "@types/cookies" "*" 559 | "@types/http-assert" "*" 560 | "@types/http-errors" "*" 561 | "@types/keygrip" "*" 562 | "@types/koa-compose" "*" 563 | "@types/node" "*" 564 | 565 | "@types/long@^4.0.0", "@types/long@^4.0.1": 566 | version "4.0.1" 567 | resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.1.tgz#459c65fa1867dafe6a8f322c4c51695663cc55e9" 568 | integrity sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w== 569 | 570 | "@types/mime@^1": 571 | version "1.3.2" 572 | resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" 573 | integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== 574 | 575 | "@types/node-fetch@2.5.7": 576 | version "2.5.7" 577 | resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.7.tgz#20a2afffa882ab04d44ca786449a276f9f6bbf3c" 578 | integrity sha512-o2WVNf5UhWRkxlf6eq+jMZDu7kjgpgJfl4xVNlvryc95O/6F2ld8ztKX+qu+Rjyet93WAWm5LjeX9H5FGkODvw== 579 | dependencies: 580 | "@types/node" "*" 581 | form-data "^3.0.0" 582 | 583 | "@types/node@*": 584 | version "14.14.22" 585 | resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.22.tgz#0d29f382472c4ccf3bd96ff0ce47daf5b7b84b18" 586 | integrity sha512-g+f/qj/cNcqKkc3tFqlXOYjrmZA+jNBiDzbP3kH+B+otKFqAdPgVTGP1IeKRdMml/aE69as5S4FqtxAbl+LaMw== 587 | 588 | "@types/node@^10.1.0", "@types/node@^10.10.0": 589 | version "10.17.51" 590 | resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.51.tgz#639538575befbcf3d3861f95c41de8e47124d674" 591 | integrity sha512-KANw+MkL626tq90l++hGelbl67irOJzGhUJk6a1Bt8QHOeh9tztJx+L0AqttraWKinmZn7Qi5lJZJzx45Gq0dg== 592 | 593 | "@types/node@^12.12.47": 594 | version "12.19.15" 595 | resolved "https://registry.yarnpkg.com/@types/node/-/node-12.19.15.tgz#0de7e978fb43db62da369db18ea088a63673c182" 596 | integrity sha512-lowukE3GUI+VSYSu6VcBXl14d61Rp5hA1D+61r16qnwC0lYNSqdxcvRh0pswejorHfS+HgwBasM8jLXz0/aOsw== 597 | 598 | "@types/node@^13.7.0": 599 | version "13.13.40" 600 | resolved "https://registry.yarnpkg.com/@types/node/-/node-13.13.40.tgz#f655ef327362cc83912f2e69336ddc62a24a9f88" 601 | integrity sha512-eKaRo87lu1yAXrzEJl0zcJxfUMDT5/mZalFyOkT44rnQps41eS2pfWzbaulSPpQLFNy29bFqn+Y5lOTL8ATlEQ== 602 | 603 | "@types/qs@*": 604 | version "6.9.5" 605 | resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.5.tgz#434711bdd49eb5ee69d90c1d67c354a9a8ecb18b" 606 | integrity sha512-/JHkVHtx/REVG0VVToGRGH2+23hsYLHdyG+GrvoUGlGAd0ErauXDyvHtRI/7H7mzLm+tBCKA7pfcpkQ1lf58iQ== 607 | 608 | "@types/range-parser@*": 609 | version "1.2.3" 610 | resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" 611 | integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== 612 | 613 | "@types/serve-static@*": 614 | version "1.13.9" 615 | resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.9.tgz#aacf28a85a05ee29a11fb7c3ead935ac56f33e4e" 616 | integrity sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA== 617 | dependencies: 618 | "@types/mime" "^1" 619 | "@types/node" "*" 620 | 621 | "@types/ws@^7.0.0": 622 | version "7.4.0" 623 | resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.0.tgz#499690ea08736e05a8186113dac37769ab251a0e" 624 | integrity sha512-Y29uQ3Uy+58bZrFLhX36hcI3Np37nqWE7ky5tjiDoy1GDZnIwVxS0CgF+s+1bXMzjKBFy+fqaRfb708iNzdinw== 625 | dependencies: 626 | "@types/node" "*" 627 | 628 | "@wry/equality@^0.1.2": 629 | version "0.1.11" 630 | resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.1.11.tgz#35cb156e4a96695aa81a9ecc4d03787bc17f1790" 631 | integrity sha512-mwEVBDUVODlsQQ5dfuLUS5/Tf7jqUKyhKYHmVi4fPB6bDMOfWvUPJmKgS1Z7Za/sOI3vzWt4+O7yCiL/70MogA== 632 | dependencies: 633 | tslib "^1.9.3" 634 | 635 | abbrev@1: 636 | version "1.1.1" 637 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" 638 | integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== 639 | 640 | abort-controller@^3.0.0: 641 | version "3.0.0" 642 | resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" 643 | integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== 644 | dependencies: 645 | event-target-shim "^5.0.0" 646 | 647 | accepts@^1.3.5, accepts@~1.3.7: 648 | version "1.3.7" 649 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" 650 | integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== 651 | dependencies: 652 | mime-types "~2.1.24" 653 | negotiator "0.6.2" 654 | 655 | agent-base@6: 656 | version "6.0.2" 657 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" 658 | integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== 659 | dependencies: 660 | debug "4" 661 | 662 | ansi-align@^3.0.0: 663 | version "3.0.0" 664 | resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" 665 | integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== 666 | dependencies: 667 | string-width "^3.0.0" 668 | 669 | ansi-regex@^4.1.0: 670 | version "4.1.0" 671 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" 672 | integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== 673 | 674 | ansi-regex@^5.0.0: 675 | version "5.0.0" 676 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 677 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== 678 | 679 | ansi-styles@^4.1.0: 680 | version "4.3.0" 681 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 682 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 683 | dependencies: 684 | color-convert "^2.0.1" 685 | 686 | anymatch@~3.1.1: 687 | version "3.1.1" 688 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" 689 | integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== 690 | dependencies: 691 | normalize-path "^3.0.0" 692 | picomatch "^2.0.4" 693 | 694 | apollo-cache-control@^0.11.6: 695 | version "0.11.6" 696 | resolved "https://registry.yarnpkg.com/apollo-cache-control/-/apollo-cache-control-0.11.6.tgz#f7bdf924272af47ac474cf3f3f35cfc038cc9485" 697 | integrity sha512-YZ+uuIG+fPy+mkpBS2qKF0v1qlzZ3PW6xZVaDukeK3ed3iAs4L/2YnkTqau3OmoF/VPzX2FmSkocX/OVd59YSw== 698 | dependencies: 699 | apollo-server-env "^3.0.0" 700 | apollo-server-plugin-base "^0.10.4" 701 | 702 | apollo-datasource@^0.7.3: 703 | version "0.7.3" 704 | resolved "https://registry.yarnpkg.com/apollo-datasource/-/apollo-datasource-0.7.3.tgz#c824eb1457bdee5a3173ced0e35e594547e687a0" 705 | integrity sha512-PE0ucdZYjHjUyXrFWRwT02yLcx2DACsZ0jm1Mp/0m/I9nZu/fEkvJxfsryXB6JndpmQO77gQHixf/xGCN976kA== 706 | dependencies: 707 | apollo-server-caching "^0.5.3" 708 | apollo-server-env "^3.0.0" 709 | 710 | apollo-env@^0.6.5: 711 | version "0.6.5" 712 | resolved "https://registry.yarnpkg.com/apollo-env/-/apollo-env-0.6.5.tgz#5a36e699d39e2356381f7203493187260fded9f3" 713 | integrity sha512-jeBUVsGymeTHYWp3me0R2CZRZrFeuSZeICZHCeRflHTfnQtlmbSXdy5E0pOyRM9CU4JfQkKDC98S1YglQj7Bzg== 714 | dependencies: 715 | "@types/node-fetch" "2.5.7" 716 | core-js "^3.0.1" 717 | node-fetch "^2.2.0" 718 | sha.js "^2.4.11" 719 | 720 | apollo-graphql@^0.6.0: 721 | version "0.6.0" 722 | resolved "https://registry.yarnpkg.com/apollo-graphql/-/apollo-graphql-0.6.0.tgz#37bee7dc853213269137f4c60bfdf2ee28658669" 723 | integrity sha512-BxTf5LOQe649e9BNTPdyCGItVv4Ll8wZ2BKnmiYpRAocYEXAVrQPWuSr3dO4iipqAU8X0gvle/Xu9mSqg5b7Qg== 724 | dependencies: 725 | apollo-env "^0.6.5" 726 | lodash.sortby "^4.7.0" 727 | 728 | apollo-link@^1.2.14: 729 | version "1.2.14" 730 | resolved "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.2.14.tgz#3feda4b47f9ebba7f4160bef8b977ba725b684d9" 731 | integrity sha512-p67CMEFP7kOG1JZ0ZkYZwRDa369w5PIjtMjvrQd/HnIV8FRsHRqLqK+oAZQnFa1DDdZtOtHTi+aMIW6EatC2jg== 732 | dependencies: 733 | apollo-utilities "^1.3.0" 734 | ts-invariant "^0.4.0" 735 | tslib "^1.9.3" 736 | zen-observable-ts "^0.8.21" 737 | 738 | apollo-reporting-protobuf@^0.6.2: 739 | version "0.6.2" 740 | resolved "https://registry.yarnpkg.com/apollo-reporting-protobuf/-/apollo-reporting-protobuf-0.6.2.tgz#5572866be9b77f133916532b10e15fbaa4158304" 741 | integrity sha512-WJTJxLM+MRHNUxt1RTl4zD0HrLdH44F2mDzMweBj1yHL0kSt8I1WwoiF/wiGVSpnG48LZrBegCaOJeuVbJTbtw== 742 | dependencies: 743 | "@apollo/protobufjs" "^1.0.3" 744 | 745 | apollo-server-caching@^0.5.3: 746 | version "0.5.3" 747 | resolved "https://registry.yarnpkg.com/apollo-server-caching/-/apollo-server-caching-0.5.3.tgz#cf42a77ad09a46290a246810075eaa029b5305e1" 748 | integrity sha512-iMi3087iphDAI0U2iSBE9qtx9kQoMMEWr6w+LwXruBD95ek9DWyj7OeC2U/ngLjRsXM43DoBDXlu7R+uMjahrQ== 749 | dependencies: 750 | lru-cache "^6.0.0" 751 | 752 | apollo-server-core@^2.19.2: 753 | version "2.19.2" 754 | resolved "https://registry.yarnpkg.com/apollo-server-core/-/apollo-server-core-2.19.2.tgz#9a5651be233aceab6b062e82eef4c8072f6ac230" 755 | integrity sha512-liLgLhTIGWZtdQbxuxo3/Yv8j+faKQcI60kOL+uwfByGhoKLZEQp5nqi2IdMK6JXt1VuyKwKu7lTzj02a9S3jA== 756 | dependencies: 757 | "@apollographql/apollo-tools" "^0.4.3" 758 | "@apollographql/graphql-playground-html" "1.6.26" 759 | "@types/graphql-upload" "^8.0.0" 760 | "@types/ws" "^7.0.0" 761 | apollo-cache-control "^0.11.6" 762 | apollo-datasource "^0.7.3" 763 | apollo-graphql "^0.6.0" 764 | apollo-reporting-protobuf "^0.6.2" 765 | apollo-server-caching "^0.5.3" 766 | apollo-server-env "^3.0.0" 767 | apollo-server-errors "^2.4.2" 768 | apollo-server-plugin-base "^0.10.4" 769 | apollo-server-types "^0.6.3" 770 | apollo-tracing "^0.12.2" 771 | async-retry "^1.2.1" 772 | fast-json-stable-stringify "^2.0.0" 773 | graphql-extensions "^0.12.8" 774 | graphql-tag "^2.11.0" 775 | graphql-tools "^4.0.0" 776 | graphql-upload "^8.0.2" 777 | loglevel "^1.6.7" 778 | lru-cache "^6.0.0" 779 | sha.js "^2.4.11" 780 | subscriptions-transport-ws "^0.9.11" 781 | uuid "^8.0.0" 782 | ws "^6.0.0" 783 | 784 | apollo-server-core@^2.20.0: 785 | version "2.20.0" 786 | resolved "https://registry.yarnpkg.com/apollo-server-core/-/apollo-server-core-2.20.0.tgz#cba1de38c37ab64361b1870a763be21421fd2d1b" 787 | integrity sha512-tteFTl6y9c3MtuhePOs9IbCccaKVXELttLvefMzd7EfR3CPgIfIbxpy2ZEcDys8NteYXoJ+4LiM8Eh9kLgkKmQ== 788 | dependencies: 789 | "@apollographql/apollo-tools" "^0.4.3" 790 | "@apollographql/graphql-playground-html" "1.6.26" 791 | "@types/graphql-upload" "^8.0.0" 792 | "@types/ws" "^7.0.0" 793 | apollo-cache-control "^0.11.6" 794 | apollo-datasource "^0.7.3" 795 | apollo-graphql "^0.6.0" 796 | apollo-reporting-protobuf "^0.6.2" 797 | apollo-server-caching "^0.5.3" 798 | apollo-server-env "^3.0.0" 799 | apollo-server-errors "^2.4.2" 800 | apollo-server-plugin-base "^0.10.4" 801 | apollo-server-types "^0.6.3" 802 | apollo-tracing "^0.12.2" 803 | async-retry "^1.2.1" 804 | fast-json-stable-stringify "^2.0.0" 805 | graphql-extensions "^0.12.8" 806 | graphql-tag "^2.11.0" 807 | graphql-tools "^4.0.0" 808 | graphql-upload "^8.0.2" 809 | loglevel "^1.6.7" 810 | lru-cache "^6.0.0" 811 | sha.js "^2.4.11" 812 | subscriptions-transport-ws "^0.9.11" 813 | uuid "^8.0.0" 814 | ws "^6.0.0" 815 | 816 | apollo-server-env@^3.0.0: 817 | version "3.0.0" 818 | resolved "https://registry.yarnpkg.com/apollo-server-env/-/apollo-server-env-3.0.0.tgz#0157c51f52b63aee39af190760acf789ffc744d9" 819 | integrity sha512-tPSN+VttnPsoQAl/SBVUpGbLA97MXG990XIwq6YUnJyAixrrsjW1xYG7RlaOqetxm80y5mBZKLrRDiiSsW/vog== 820 | dependencies: 821 | node-fetch "^2.1.2" 822 | util.promisify "^1.0.0" 823 | 824 | apollo-server-errors@^2.4.2: 825 | version "2.4.2" 826 | resolved "https://registry.yarnpkg.com/apollo-server-errors/-/apollo-server-errors-2.4.2.tgz#1128738a1d14da989f58420896d70524784eabe5" 827 | integrity sha512-FeGxW3Batn6sUtX3OVVUm7o56EgjxDlmgpTLNyWcLb0j6P8mw9oLNyAm3B+deHA4KNdNHO5BmHS2g1SJYjqPCQ== 828 | 829 | apollo-server-express@^2.19.2: 830 | version "2.19.2" 831 | resolved "https://registry.yarnpkg.com/apollo-server-express/-/apollo-server-express-2.19.2.tgz#8b185e8fb3b71cde09ca3d5a5d5af340b0421e7b" 832 | integrity sha512-1v2H6BgDkS4QzRbJ9djn2o0yv5m/filbpiupxAsCG9f+sAoSlY3eYSj84Sbex2r5+4itAvT9y84WI7d9RBYs/Q== 833 | dependencies: 834 | "@apollographql/graphql-playground-html" "1.6.26" 835 | "@types/accepts" "^1.3.5" 836 | "@types/body-parser" "1.19.0" 837 | "@types/cors" "2.8.8" 838 | "@types/express" "4.17.7" 839 | "@types/express-serve-static-core" "4.17.17" 840 | accepts "^1.3.5" 841 | apollo-server-core "^2.19.2" 842 | apollo-server-types "^0.6.3" 843 | body-parser "^1.18.3" 844 | cors "^2.8.4" 845 | express "^4.17.1" 846 | graphql-subscriptions "^1.0.0" 847 | graphql-tools "^4.0.0" 848 | parseurl "^1.3.2" 849 | subscriptions-transport-ws "^0.9.16" 850 | type-is "^1.6.16" 851 | 852 | apollo-server-express@^2.20.0: 853 | version "2.20.0" 854 | resolved "https://registry.yarnpkg.com/apollo-server-express/-/apollo-server-express-2.20.0.tgz#be9c5012c132c25687547d6ad24bb3ca11c0ecb1" 855 | integrity sha512-Bf2c/1J/ScXmioWi+0HFIsZ1bt8zFlI2VV/7oUn+Dd/lUBHLVfMNKvEJNMwjRkIrI9b9+eqANDrO6lf2ruC52w== 856 | dependencies: 857 | "@apollographql/graphql-playground-html" "1.6.26" 858 | "@types/accepts" "^1.3.5" 859 | "@types/body-parser" "1.19.0" 860 | "@types/cors" "2.8.8" 861 | "@types/express" "4.17.7" 862 | "@types/express-serve-static-core" "4.17.18" 863 | accepts "^1.3.5" 864 | apollo-server-core "^2.20.0" 865 | apollo-server-types "^0.6.3" 866 | body-parser "^1.18.3" 867 | cors "^2.8.4" 868 | express "^4.17.1" 869 | graphql-subscriptions "^1.0.0" 870 | graphql-tools "^4.0.0" 871 | parseurl "^1.3.2" 872 | subscriptions-transport-ws "^0.9.16" 873 | type-is "^1.6.16" 874 | 875 | apollo-server-plugin-base@^0.10.4: 876 | version "0.10.4" 877 | resolved "https://registry.yarnpkg.com/apollo-server-plugin-base/-/apollo-server-plugin-base-0.10.4.tgz#fbf73f64f95537ca9f9639dd7c535eb5eeb95dcd" 878 | integrity sha512-HRhbyHgHFTLP0ImubQObYhSgpmVH4Rk1BinnceZmwudIVLKrqayIVOELdyext/QnSmmzg5W7vF3NLGBcVGMqDg== 879 | dependencies: 880 | apollo-server-types "^0.6.3" 881 | 882 | apollo-server-types@^0.6.3: 883 | version "0.6.3" 884 | resolved "https://registry.yarnpkg.com/apollo-server-types/-/apollo-server-types-0.6.3.tgz#f7aa25ff7157863264d01a77d7934aa6e13399e8" 885 | integrity sha512-aVR7SlSGGY41E1f11YYz5bvwA89uGmkVUtzMiklDhZ7IgRJhysT5Dflt5IuwDxp+NdQkIhVCErUXakopocFLAg== 886 | dependencies: 887 | apollo-reporting-protobuf "^0.6.2" 888 | apollo-server-caching "^0.5.3" 889 | apollo-server-env "^3.0.0" 890 | 891 | apollo-server@^2.20.0: 892 | version "2.20.0" 893 | resolved "https://registry.yarnpkg.com/apollo-server/-/apollo-server-2.20.0.tgz#50889a33eaa5894e64d6b599b7ccec246fc7f8ec" 894 | integrity sha512-w+Cd+P9C1JUoi/H8W0j0GP0ntdkOyn7O471+8f0wP+kwJSVp3Gsxk+4lhPhFcxuBt6/TkI+3DaD6nflxJ7rL/A== 895 | dependencies: 896 | apollo-server-core "^2.20.0" 897 | apollo-server-express "^2.20.0" 898 | express "^4.0.0" 899 | graphql-subscriptions "^1.0.0" 900 | graphql-tools "^4.0.0" 901 | stoppable "^1.1.0" 902 | 903 | apollo-tracing@^0.12.2: 904 | version "0.12.2" 905 | resolved "https://registry.yarnpkg.com/apollo-tracing/-/apollo-tracing-0.12.2.tgz#a261c3970bb421b6dadf50cd85d75b2567a7e52c" 906 | integrity sha512-SYN4o0C0wR1fyS3+P0FthyvsQVHFopdmN3IU64IaspR/RZScPxZ3Ae8uu++fTvkQflAkglnFM0aX6DkZERBp6w== 907 | dependencies: 908 | apollo-server-env "^3.0.0" 909 | apollo-server-plugin-base "^0.10.4" 910 | 911 | apollo-utilities@^1.0.1, apollo-utilities@^1.3.0: 912 | version "1.3.4" 913 | resolved "https://registry.yarnpkg.com/apollo-utilities/-/apollo-utilities-1.3.4.tgz#6129e438e8be201b6c55b0f13ce49d2c7175c9cf" 914 | integrity sha512-pk2hiWrCXMAy2fRPwEyhvka+mqwzeP60Jr1tRYi5xru+3ko94HI9o6lK0CT33/w4RDlxWchmdhDCrvdr+pHCig== 915 | dependencies: 916 | "@wry/equality" "^0.1.2" 917 | fast-json-stable-stringify "^2.0.0" 918 | ts-invariant "^0.4.0" 919 | tslib "^1.10.0" 920 | 921 | array-flatten@1.1.1: 922 | version "1.1.1" 923 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 924 | integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= 925 | 926 | arrify@^2.0.0, arrify@^2.0.1: 927 | version "2.0.1" 928 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" 929 | integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== 930 | 931 | async-limiter@~1.0.0: 932 | version "1.0.1" 933 | resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" 934 | integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== 935 | 936 | async-retry@^1.2.1: 937 | version "1.3.1" 938 | resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.1.tgz#139f31f8ddce50c0870b0ba558a6079684aaed55" 939 | integrity sha512-aiieFW/7h3hY0Bq5d+ktDBejxuwR78vRu9hDUdR8rNhSaQ29VzPL4AoIRG7D/c7tdenwOcKvgPM6tIxB3cB6HA== 940 | dependencies: 941 | retry "0.12.0" 942 | 943 | asynckit@^0.4.0: 944 | version "0.4.0" 945 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 946 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= 947 | 948 | backo2@^1.0.2: 949 | version "1.0.2" 950 | resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" 951 | integrity sha1-MasayLEpNjRj41s+u2n038+6eUc= 952 | 953 | balanced-match@^1.0.0: 954 | version "1.0.0" 955 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 956 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 957 | 958 | base64-js@^1.3.0: 959 | version "1.5.1" 960 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" 961 | integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== 962 | 963 | bcryptjs@^2.4.3: 964 | version "2.4.3" 965 | resolved "https://registry.yarnpkg.com/bcryptjs/-/bcryptjs-2.4.3.tgz#9ab5627b93e60621ff7cdac5da9733027df1d0cb" 966 | integrity sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms= 967 | 968 | bignumber.js@^9.0.0: 969 | version "9.0.1" 970 | resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.1.tgz#8d7ba124c882bfd8e43260c67475518d0689e4e5" 971 | integrity sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA== 972 | 973 | binary-extensions@^2.0.0: 974 | version "2.2.0" 975 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 976 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 977 | 978 | body-parser@1.19.0, body-parser@^1.18.3: 979 | version "1.19.0" 980 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" 981 | integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== 982 | dependencies: 983 | bytes "3.1.0" 984 | content-type "~1.0.4" 985 | debug "2.6.9" 986 | depd "~1.1.2" 987 | http-errors "1.7.2" 988 | iconv-lite "0.4.24" 989 | on-finished "~2.3.0" 990 | qs "6.7.0" 991 | raw-body "2.4.0" 992 | type-is "~1.6.17" 993 | 994 | boxen@^4.2.0: 995 | version "4.2.0" 996 | resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" 997 | integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== 998 | dependencies: 999 | ansi-align "^3.0.0" 1000 | camelcase "^5.3.1" 1001 | chalk "^3.0.0" 1002 | cli-boxes "^2.2.0" 1003 | string-width "^4.1.0" 1004 | term-size "^2.1.0" 1005 | type-fest "^0.8.1" 1006 | widest-line "^3.1.0" 1007 | 1008 | brace-expansion@^1.1.7: 1009 | version "1.1.11" 1010 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 1011 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 1012 | dependencies: 1013 | balanced-match "^1.0.0" 1014 | concat-map "0.0.1" 1015 | 1016 | braces@~3.0.2: 1017 | version "3.0.2" 1018 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 1019 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 1020 | dependencies: 1021 | fill-range "^7.0.1" 1022 | 1023 | buffer-equal-constant-time@1.0.1: 1024 | version "1.0.1" 1025 | resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" 1026 | integrity sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk= 1027 | 1028 | busboy@^0.3.1: 1029 | version "0.3.1" 1030 | resolved "https://registry.yarnpkg.com/busboy/-/busboy-0.3.1.tgz#170899274c5bf38aae27d5c62b71268cd585fd1b" 1031 | integrity sha512-y7tTxhGKXcyBxRKAni+awqx8uqaJKrSFSNFSeRG5CsWNdmy2BIK+6VGWEW7TZnIO/533mtMEA4rOevQV815YJw== 1032 | dependencies: 1033 | dicer "0.3.0" 1034 | 1035 | bytes@3.1.0: 1036 | version "3.1.0" 1037 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" 1038 | integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== 1039 | 1040 | cacheable-request@^6.0.0: 1041 | version "6.1.0" 1042 | resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" 1043 | integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== 1044 | dependencies: 1045 | clone-response "^1.0.2" 1046 | get-stream "^5.1.0" 1047 | http-cache-semantics "^4.0.0" 1048 | keyv "^3.0.0" 1049 | lowercase-keys "^2.0.0" 1050 | normalize-url "^4.1.0" 1051 | responselike "^1.0.2" 1052 | 1053 | call-bind@^1.0.0, call-bind@^1.0.2: 1054 | version "1.0.2" 1055 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 1056 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== 1057 | dependencies: 1058 | function-bind "^1.1.1" 1059 | get-intrinsic "^1.0.2" 1060 | 1061 | camelcase@^5.3.1: 1062 | version "5.3.1" 1063 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 1064 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 1065 | 1066 | chalk@^3.0.0: 1067 | version "3.0.0" 1068 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" 1069 | integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== 1070 | dependencies: 1071 | ansi-styles "^4.1.0" 1072 | supports-color "^7.1.0" 1073 | 1074 | chokidar@^3.2.2: 1075 | version "3.5.1" 1076 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" 1077 | integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== 1078 | dependencies: 1079 | anymatch "~3.1.1" 1080 | braces "~3.0.2" 1081 | glob-parent "~5.1.0" 1082 | is-binary-path "~2.1.0" 1083 | is-glob "~4.0.1" 1084 | normalize-path "~3.0.0" 1085 | readdirp "~3.5.0" 1086 | optionalDependencies: 1087 | fsevents "~2.3.1" 1088 | 1089 | ci-info@^2.0.0: 1090 | version "2.0.0" 1091 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" 1092 | integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== 1093 | 1094 | cli-boxes@^2.2.0: 1095 | version "2.2.1" 1096 | resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" 1097 | integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== 1098 | 1099 | clone-response@^1.0.2: 1100 | version "1.0.2" 1101 | resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" 1102 | integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= 1103 | dependencies: 1104 | mimic-response "^1.0.0" 1105 | 1106 | color-convert@^2.0.1: 1107 | version "2.0.1" 1108 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 1109 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 1110 | dependencies: 1111 | color-name "~1.1.4" 1112 | 1113 | color-name@~1.1.4: 1114 | version "1.1.4" 1115 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 1116 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 1117 | 1118 | combined-stream@^1.0.8: 1119 | version "1.0.8" 1120 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 1121 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 1122 | dependencies: 1123 | delayed-stream "~1.0.0" 1124 | 1125 | commander@^2.20.3: 1126 | version "2.20.3" 1127 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" 1128 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== 1129 | 1130 | compressible@^2.0.12: 1131 | version "2.0.18" 1132 | resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" 1133 | integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== 1134 | dependencies: 1135 | mime-db ">= 1.43.0 < 2" 1136 | 1137 | concat-map@0.0.1: 1138 | version "0.0.1" 1139 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 1140 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 1141 | 1142 | configstore@^5.0.0, configstore@^5.0.1: 1143 | version "5.0.1" 1144 | resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" 1145 | integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== 1146 | dependencies: 1147 | dot-prop "^5.2.0" 1148 | graceful-fs "^4.1.2" 1149 | make-dir "^3.0.0" 1150 | unique-string "^2.0.0" 1151 | write-file-atomic "^3.0.0" 1152 | xdg-basedir "^4.0.0" 1153 | 1154 | content-disposition@0.5.3: 1155 | version "0.5.3" 1156 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" 1157 | integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== 1158 | dependencies: 1159 | safe-buffer "5.1.2" 1160 | 1161 | content-type@~1.0.4: 1162 | version "1.0.4" 1163 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" 1164 | integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== 1165 | 1166 | cookie-parser@^1.4.5: 1167 | version "1.4.5" 1168 | resolved "https://registry.yarnpkg.com/cookie-parser/-/cookie-parser-1.4.5.tgz#3e572d4b7c0c80f9c61daf604e4336831b5d1d49" 1169 | integrity sha512-f13bPUj/gG/5mDr+xLmSxxDsB9DQiTIfhJS/sqjrmfAWiAN+x2O4i/XguTL9yDZ+/IFDanJ+5x7hC4CXT9Tdzw== 1170 | dependencies: 1171 | cookie "0.4.0" 1172 | cookie-signature "1.0.6" 1173 | 1174 | cookie-signature@1.0.6: 1175 | version "1.0.6" 1176 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 1177 | integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= 1178 | 1179 | cookie@0.4.0: 1180 | version "0.4.0" 1181 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" 1182 | integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== 1183 | 1184 | core-js@3.6.5: 1185 | version "3.6.5" 1186 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a" 1187 | integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA== 1188 | 1189 | core-js@^3.0.1: 1190 | version "3.8.3" 1191 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.8.3.tgz#c21906e1f14f3689f93abcc6e26883550dd92dd0" 1192 | integrity sha512-KPYXeVZYemC2TkNEkX/01I+7yd+nX3KddKwZ1Ww7SKWdI2wQprSgLmrTddT8nw92AjEklTsPBoSdQBhbI1bQ6Q== 1193 | 1194 | cors@^2.8.4, cors@^2.8.5: 1195 | version "2.8.5" 1196 | resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" 1197 | integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== 1198 | dependencies: 1199 | object-assign "^4" 1200 | vary "^1" 1201 | 1202 | crypto-random-string@^2.0.0: 1203 | version "2.0.0" 1204 | resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" 1205 | integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== 1206 | 1207 | cssfilter@0.0.10: 1208 | version "0.0.10" 1209 | resolved "https://registry.yarnpkg.com/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae" 1210 | integrity sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4= 1211 | 1212 | date-and-time@^0.14.2: 1213 | version "0.14.2" 1214 | resolved "https://registry.yarnpkg.com/date-and-time/-/date-and-time-0.14.2.tgz#a4266c3dead460f6c231fe9674e585908dac354e" 1215 | integrity sha512-EFTCh9zRSEpGPmJaexg7HTuzZHh6cnJj1ui7IGCFNXzd2QdpsNh05Db5TF3xzJm30YN+A8/6xHSuRcQqoc3kFA== 1216 | 1217 | debug@2.6.9, debug@^2.2.0: 1218 | version "2.6.9" 1219 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 1220 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 1221 | dependencies: 1222 | ms "2.0.0" 1223 | 1224 | debug@4, debug@^4.1.1: 1225 | version "4.3.1" 1226 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" 1227 | integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== 1228 | dependencies: 1229 | ms "2.1.2" 1230 | 1231 | debug@^3.2.6: 1232 | version "3.2.7" 1233 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" 1234 | integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== 1235 | dependencies: 1236 | ms "^2.1.1" 1237 | 1238 | decompress-response@^3.3.0: 1239 | version "3.3.0" 1240 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" 1241 | integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= 1242 | dependencies: 1243 | mimic-response "^1.0.0" 1244 | 1245 | deep-extend@^0.6.0: 1246 | version "0.6.0" 1247 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" 1248 | integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== 1249 | 1250 | defer-to-connect@^1.0.1: 1251 | version "1.1.3" 1252 | resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" 1253 | integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== 1254 | 1255 | define-properties@^1.1.3: 1256 | version "1.1.3" 1257 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" 1258 | integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== 1259 | dependencies: 1260 | object-keys "^1.0.12" 1261 | 1262 | delayed-stream@~1.0.0: 1263 | version "1.0.0" 1264 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 1265 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= 1266 | 1267 | depd@~1.1.2: 1268 | version "1.1.2" 1269 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" 1270 | integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= 1271 | 1272 | deprecated-decorator@^0.1.6: 1273 | version "0.1.6" 1274 | resolved "https://registry.yarnpkg.com/deprecated-decorator/-/deprecated-decorator-0.1.6.tgz#00966317b7a12fe92f3cc831f7583af329b86c37" 1275 | integrity sha1-AJZjF7ehL+kvPMgx91g68ym4bDc= 1276 | 1277 | destroy@~1.0.4: 1278 | version "1.0.4" 1279 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" 1280 | integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= 1281 | 1282 | dicer@0.3.0, dicer@^0.3.0: 1283 | version "0.3.0" 1284 | resolved "https://registry.yarnpkg.com/dicer/-/dicer-0.3.0.tgz#eacd98b3bfbf92e8ab5c2fdb71aaac44bb06b872" 1285 | integrity sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA== 1286 | dependencies: 1287 | streamsearch "0.1.2" 1288 | 1289 | dom-storage@2.1.0: 1290 | version "2.1.0" 1291 | resolved "https://registry.yarnpkg.com/dom-storage/-/dom-storage-2.1.0.tgz#00fb868bc9201357ea243c7bcfd3304c1e34ea39" 1292 | integrity sha512-g6RpyWXzl0RR6OTElHKBl7nwnK87GUyZMYC7JWsB/IA73vpqK2K6LT39x4VepLxlSsWBFrPVLnsSR5Jyty0+2Q== 1293 | 1294 | dot-prop@^5.2.0: 1295 | version "5.3.0" 1296 | resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" 1297 | integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== 1298 | dependencies: 1299 | is-obj "^2.0.0" 1300 | 1301 | dotenv@^8.2.0: 1302 | version "8.2.0" 1303 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" 1304 | integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== 1305 | 1306 | duplexer3@^0.1.4: 1307 | version "0.1.4" 1308 | resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" 1309 | integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= 1310 | 1311 | duplexify@^4.0.0, duplexify@^4.1.1: 1312 | version "4.1.1" 1313 | resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.1.tgz#7027dc374f157b122a8ae08c2d3ea4d2d953aa61" 1314 | integrity sha512-DY3xVEmVHTv1wSzKNbwoU6nVjzI369Y6sPoqfYr0/xlx3IdX2n94xIszTcjPO8W8ZIv0Wb0PXNcjuZyT4wiICA== 1315 | dependencies: 1316 | end-of-stream "^1.4.1" 1317 | inherits "^2.0.3" 1318 | readable-stream "^3.1.1" 1319 | stream-shift "^1.0.0" 1320 | 1321 | ecdsa-sig-formatter@1.0.11, ecdsa-sig-formatter@^1.0.11: 1322 | version "1.0.11" 1323 | resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" 1324 | integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== 1325 | dependencies: 1326 | safe-buffer "^5.0.1" 1327 | 1328 | ee-first@1.1.1: 1329 | version "1.1.1" 1330 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 1331 | integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= 1332 | 1333 | emoji-regex@^7.0.1: 1334 | version "7.0.3" 1335 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" 1336 | integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== 1337 | 1338 | emoji-regex@^8.0.0: 1339 | version "8.0.0" 1340 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 1341 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 1342 | 1343 | encodeurl@~1.0.2: 1344 | version "1.0.2" 1345 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 1346 | integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= 1347 | 1348 | end-of-stream@^1.1.0, end-of-stream@^1.4.1: 1349 | version "1.4.4" 1350 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 1351 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 1352 | dependencies: 1353 | once "^1.4.0" 1354 | 1355 | ent@^2.2.0: 1356 | version "2.2.0" 1357 | resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" 1358 | integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= 1359 | 1360 | es-abstract@^1.18.0-next.1: 1361 | version "1.18.0-next.2" 1362 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.2.tgz#088101a55f0541f595e7e057199e27ddc8f3a5c2" 1363 | integrity sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw== 1364 | dependencies: 1365 | call-bind "^1.0.2" 1366 | es-to-primitive "^1.2.1" 1367 | function-bind "^1.1.1" 1368 | get-intrinsic "^1.0.2" 1369 | has "^1.0.3" 1370 | has-symbols "^1.0.1" 1371 | is-callable "^1.2.2" 1372 | is-negative-zero "^2.0.1" 1373 | is-regex "^1.1.1" 1374 | object-inspect "^1.9.0" 1375 | object-keys "^1.1.1" 1376 | object.assign "^4.1.2" 1377 | string.prototype.trimend "^1.0.3" 1378 | string.prototype.trimstart "^1.0.3" 1379 | 1380 | es-to-primitive@^1.2.1: 1381 | version "1.2.1" 1382 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" 1383 | integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== 1384 | dependencies: 1385 | is-callable "^1.1.4" 1386 | is-date-object "^1.0.1" 1387 | is-symbol "^1.0.2" 1388 | 1389 | escape-goat@^2.0.0: 1390 | version "2.1.1" 1391 | resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" 1392 | integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== 1393 | 1394 | escape-html@~1.0.3: 1395 | version "1.0.3" 1396 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 1397 | integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= 1398 | 1399 | etag@~1.8.1: 1400 | version "1.8.1" 1401 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" 1402 | integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= 1403 | 1404 | event-target-shim@^5.0.0: 1405 | version "5.0.1" 1406 | resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" 1407 | integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== 1408 | 1409 | eventemitter3@^3.1.0: 1410 | version "3.1.2" 1411 | resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" 1412 | integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== 1413 | 1414 | express@^4.0.0, express@^4.17.1: 1415 | version "4.17.1" 1416 | resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" 1417 | integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== 1418 | dependencies: 1419 | accepts "~1.3.7" 1420 | array-flatten "1.1.1" 1421 | body-parser "1.19.0" 1422 | content-disposition "0.5.3" 1423 | content-type "~1.0.4" 1424 | cookie "0.4.0" 1425 | cookie-signature "1.0.6" 1426 | debug "2.6.9" 1427 | depd "~1.1.2" 1428 | encodeurl "~1.0.2" 1429 | escape-html "~1.0.3" 1430 | etag "~1.8.1" 1431 | finalhandler "~1.1.2" 1432 | fresh "0.5.2" 1433 | merge-descriptors "1.0.1" 1434 | methods "~1.1.2" 1435 | on-finished "~2.3.0" 1436 | parseurl "~1.3.3" 1437 | path-to-regexp "0.1.7" 1438 | proxy-addr "~2.0.5" 1439 | qs "6.7.0" 1440 | range-parser "~1.2.1" 1441 | safe-buffer "5.1.2" 1442 | send "0.17.1" 1443 | serve-static "1.14.1" 1444 | setprototypeof "1.1.1" 1445 | statuses "~1.5.0" 1446 | type-is "~1.6.18" 1447 | utils-merge "1.0.1" 1448 | vary "~1.1.2" 1449 | 1450 | extend@^3.0.2: 1451 | version "3.0.2" 1452 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" 1453 | integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== 1454 | 1455 | fast-deep-equal@^3.1.1: 1456 | version "3.1.3" 1457 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 1458 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 1459 | 1460 | fast-json-stable-stringify@^2.0.0: 1461 | version "2.1.0" 1462 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 1463 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 1464 | 1465 | fast-text-encoding@^1.0.0, fast-text-encoding@^1.0.3: 1466 | version "1.0.3" 1467 | resolved "https://registry.yarnpkg.com/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz#ec02ac8e01ab8a319af182dae2681213cfe9ce53" 1468 | integrity sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig== 1469 | 1470 | faye-websocket@0.11.3: 1471 | version "0.11.3" 1472 | resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" 1473 | integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== 1474 | dependencies: 1475 | websocket-driver ">=0.5.1" 1476 | 1477 | fill-range@^7.0.1: 1478 | version "7.0.1" 1479 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 1480 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 1481 | dependencies: 1482 | to-regex-range "^5.0.1" 1483 | 1484 | finalhandler@~1.1.2: 1485 | version "1.1.2" 1486 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" 1487 | integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== 1488 | dependencies: 1489 | debug "2.6.9" 1490 | encodeurl "~1.0.2" 1491 | escape-html "~1.0.3" 1492 | on-finished "~2.3.0" 1493 | parseurl "~1.3.3" 1494 | statuses "~1.5.0" 1495 | unpipe "~1.0.0" 1496 | 1497 | firebase-admin@^9.4.2: 1498 | version "9.4.2" 1499 | resolved "https://registry.yarnpkg.com/firebase-admin/-/firebase-admin-9.4.2.tgz#190d5d7ca5e3f251d99503feb6e05e7ab1623851" 1500 | integrity sha512-mRnBJbW6BAz6DJkZ0GOUTkmnmCrwVzMreMc6O+RXWukFydOzi5Xr6TKSiPKxoOQw41r9IluP2AZ3Qzvlx2SR+g== 1501 | dependencies: 1502 | "@firebase/database" "^0.8.1" 1503 | "@firebase/database-types" "^0.6.1" 1504 | "@types/node" "^10.10.0" 1505 | dicer "^0.3.0" 1506 | jsonwebtoken "^8.5.1" 1507 | node-forge "^0.10.0" 1508 | optionalDependencies: 1509 | "@google-cloud/firestore" "^4.5.0" 1510 | "@google-cloud/storage" "^5.3.0" 1511 | 1512 | firebase@^8.2.4: 1513 | version "8.2.4" 1514 | resolved "https://registry.yarnpkg.com/firebase/-/firebase-8.2.4.tgz#f30fd723ccc51535a4ec97c671ab84d1919ea0d9" 1515 | integrity sha512-+skMZY0kXKCFVAlbwoKnRDfOhmg9rp2lDZBJk/h4PYxh/joPNTXYCKFYqUkXfwSW4jQBlLP+PtjrZKeedg6mdA== 1516 | dependencies: 1517 | "@firebase/analytics" "0.6.2" 1518 | "@firebase/app" "0.6.13" 1519 | "@firebase/app-types" "0.6.1" 1520 | "@firebase/auth" "0.16.2" 1521 | "@firebase/database" "0.9.0" 1522 | "@firebase/firestore" "2.1.3" 1523 | "@firebase/functions" "0.6.1" 1524 | "@firebase/installations" "0.4.19" 1525 | "@firebase/messaging" "0.7.3" 1526 | "@firebase/performance" "0.4.5" 1527 | "@firebase/polyfill" "0.3.36" 1528 | "@firebase/remote-config" "0.1.30" 1529 | "@firebase/storage" "0.4.2" 1530 | "@firebase/util" "0.3.4" 1531 | 1532 | for-each@^0.3.3: 1533 | version "0.3.3" 1534 | resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" 1535 | integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== 1536 | dependencies: 1537 | is-callable "^1.1.3" 1538 | 1539 | form-data@^3.0.0: 1540 | version "3.0.0" 1541 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.0.tgz#31b7e39c85f1355b7139ee0c647cf0de7f83c682" 1542 | integrity sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg== 1543 | dependencies: 1544 | asynckit "^0.4.0" 1545 | combined-stream "^1.0.8" 1546 | mime-types "^2.1.12" 1547 | 1548 | forwarded@~0.1.2: 1549 | version "0.1.2" 1550 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" 1551 | integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= 1552 | 1553 | fresh@0.5.2: 1554 | version "0.5.2" 1555 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" 1556 | integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= 1557 | 1558 | fs-capacitor@^2.0.4: 1559 | version "2.0.4" 1560 | resolved "https://registry.yarnpkg.com/fs-capacitor/-/fs-capacitor-2.0.4.tgz#5a22e72d40ae5078b4fe64fe4d08c0d3fc88ad3c" 1561 | integrity sha512-8S4f4WsCryNw2mJJchi46YgB6CR5Ze+4L1h8ewl9tEpL4SJ3ZO+c/bS4BWhB8bK+O3TMqhuZarTitd0S0eh2pA== 1562 | 1563 | fsevents@~2.3.1: 1564 | version "2.3.1" 1565 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.1.tgz#b209ab14c61012636c8863507edf7fb68cc54e9f" 1566 | integrity sha512-YR47Eg4hChJGAB1O3yEAOkGO+rlzutoICGqGo9EZ4lKWokzZRSyIW1QmTzqjtw8MJdj9srP869CuWw/hyzSiBw== 1567 | 1568 | function-bind@^1.1.1: 1569 | version "1.1.1" 1570 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 1571 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 1572 | 1573 | functional-red-black-tree@^1.0.1: 1574 | version "1.0.1" 1575 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 1576 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= 1577 | 1578 | gaxios@^4.0.0: 1579 | version "4.1.0" 1580 | resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-4.1.0.tgz#e8ad466db5a4383c70b9d63bfd14dfaa87eb0099" 1581 | integrity sha512-vb0to8xzGnA2qcgywAjtshOKKVDf2eQhJoiL6fHhgW5tVN7wNk7egnYIO9zotfn3lQ3De1VPdf7V5/BWfCtCmg== 1582 | dependencies: 1583 | abort-controller "^3.0.0" 1584 | extend "^3.0.2" 1585 | https-proxy-agent "^5.0.0" 1586 | is-stream "^2.0.0" 1587 | node-fetch "^2.3.0" 1588 | 1589 | gcp-metadata@^4.2.0: 1590 | version "4.2.1" 1591 | resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-4.2.1.tgz#31849fbcf9025ef34c2297c32a89a1e7e9f2cd62" 1592 | integrity sha512-tSk+REe5iq/N+K+SK1XjZJUrFPuDqGZVzCy2vocIHIGmPlTGsa8owXMJwGkrXr73NO0AzhPW4MF2DEHz7P2AVw== 1593 | dependencies: 1594 | gaxios "^4.0.0" 1595 | json-bigint "^1.0.0" 1596 | 1597 | gcs-resumable-upload@^3.1.0: 1598 | version "3.1.2" 1599 | resolved "https://registry.yarnpkg.com/gcs-resumable-upload/-/gcs-resumable-upload-3.1.2.tgz#74ba51d791da397da6c856eabda7d059af724998" 1600 | integrity sha512-VKWP3Xju1JmNX3N4ossnGp3DfIRZjOsMj8sDGPBGnvn8YSruCOVGQBvELfStfIFPybScv/e5sEdWx/qzfnS3+w== 1601 | dependencies: 1602 | abort-controller "^3.0.0" 1603 | configstore "^5.0.0" 1604 | extend "^3.0.2" 1605 | gaxios "^4.0.0" 1606 | google-auth-library "^6.0.0" 1607 | pumpify "^2.0.0" 1608 | stream-events "^1.0.4" 1609 | 1610 | get-intrinsic@^1.0.2: 1611 | version "1.0.2" 1612 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.2.tgz#6820da226e50b24894e08859469dc68361545d49" 1613 | integrity sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg== 1614 | dependencies: 1615 | function-bind "^1.1.1" 1616 | has "^1.0.3" 1617 | has-symbols "^1.0.1" 1618 | 1619 | get-stream@^4.1.0: 1620 | version "4.1.0" 1621 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" 1622 | integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== 1623 | dependencies: 1624 | pump "^3.0.0" 1625 | 1626 | get-stream@^5.1.0: 1627 | version "5.2.0" 1628 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" 1629 | integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== 1630 | dependencies: 1631 | pump "^3.0.0" 1632 | 1633 | get-stream@^6.0.0: 1634 | version "6.0.0" 1635 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718" 1636 | integrity sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg== 1637 | 1638 | glob-parent@~5.1.0: 1639 | version "5.1.1" 1640 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" 1641 | integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== 1642 | dependencies: 1643 | is-glob "^4.0.1" 1644 | 1645 | global-dirs@^2.0.1: 1646 | version "2.1.0" 1647 | resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.1.0.tgz#e9046a49c806ff04d6c1825e196c8f0091e8df4d" 1648 | integrity sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ== 1649 | dependencies: 1650 | ini "1.3.7" 1651 | 1652 | google-auth-library@^6.0.0, google-auth-library@^6.1.1, google-auth-library@^6.1.3: 1653 | version "6.1.4" 1654 | resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-6.1.4.tgz#bc70c4f3b6681ae5273343466bcef37577b7ee44" 1655 | integrity sha512-q0kYtGWnDd9XquwiQGAZeI2Jnglk7NDi0cChE4tWp6Kpo/kbqnt9scJb0HP+/xqt03Beqw/xQah1OPrci+pOxw== 1656 | dependencies: 1657 | arrify "^2.0.0" 1658 | base64-js "^1.3.0" 1659 | ecdsa-sig-formatter "^1.0.11" 1660 | fast-text-encoding "^1.0.0" 1661 | gaxios "^4.0.0" 1662 | gcp-metadata "^4.2.0" 1663 | gtoken "^5.0.4" 1664 | jws "^4.0.0" 1665 | lru-cache "^6.0.0" 1666 | 1667 | google-gax@^2.9.2: 1668 | version "2.10.0" 1669 | resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-2.10.0.tgz#7918e5194fe3c5f4330cccb3a3b66e368ac70d8f" 1670 | integrity sha512-K+1JK5ofNl5k30LsI8UQb/DeLMEbhL/SWirCx0L9pnMcApSfAjRAO7yajXT5X1vicxDBnNSwKs+cu4elxpYraw== 1671 | dependencies: 1672 | "@grpc/grpc-js" "~1.2.0" 1673 | "@grpc/proto-loader" "^0.5.1" 1674 | "@types/long" "^4.0.0" 1675 | abort-controller "^3.0.0" 1676 | duplexify "^4.0.0" 1677 | fast-text-encoding "^1.0.3" 1678 | google-auth-library "^6.1.3" 1679 | is-stream-ended "^0.1.4" 1680 | node-fetch "^2.6.1" 1681 | protobufjs "^6.10.2" 1682 | retry-request "^4.0.0" 1683 | 1684 | google-p12-pem@^3.0.3: 1685 | version "3.0.3" 1686 | resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-3.0.3.tgz#673ac3a75d3903a87f05878f3c75e06fc151669e" 1687 | integrity sha512-wS0ek4ZtFx/ACKYF3JhyGe5kzH7pgiQ7J5otlumqR9psmWMYc+U9cErKlCYVYHoUaidXHdZ2xbo34kB+S+24hA== 1688 | dependencies: 1689 | node-forge "^0.10.0" 1690 | 1691 | got@^9.6.0: 1692 | version "9.6.0" 1693 | resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" 1694 | integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== 1695 | dependencies: 1696 | "@sindresorhus/is" "^0.14.0" 1697 | "@szmarczak/http-timer" "^1.1.2" 1698 | cacheable-request "^6.0.0" 1699 | decompress-response "^3.3.0" 1700 | duplexer3 "^0.1.4" 1701 | get-stream "^4.1.0" 1702 | lowercase-keys "^1.0.1" 1703 | mimic-response "^1.0.1" 1704 | p-cancelable "^1.0.0" 1705 | to-readable-stream "^1.0.0" 1706 | url-parse-lax "^3.0.0" 1707 | 1708 | graceful-fs@^4.1.2: 1709 | version "4.2.4" 1710 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" 1711 | integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== 1712 | 1713 | graphql-extensions@^0.12.8: 1714 | version "0.12.8" 1715 | resolved "https://registry.yarnpkg.com/graphql-extensions/-/graphql-extensions-0.12.8.tgz#9cdc2c43d8fe5e0f6c3177a004ac011da2a8aa0f" 1716 | integrity sha512-xjsSaB6yKt9jarFNNdivl2VOx52WySYhxPgf8Y16g6GKZyAzBoIFiwyGw5PJDlOSUa6cpmzn6o7z8fVMbSAbkg== 1717 | dependencies: 1718 | "@apollographql/apollo-tools" "^0.4.3" 1719 | apollo-server-env "^3.0.0" 1720 | apollo-server-types "^0.6.3" 1721 | 1722 | graphql-subscriptions@^1.0.0: 1723 | version "1.1.0" 1724 | resolved "https://registry.yarnpkg.com/graphql-subscriptions/-/graphql-subscriptions-1.1.0.tgz#5f2fa4233eda44cf7570526adfcf3c16937aef11" 1725 | integrity sha512-6WzlBFC0lWmXJbIVE8OgFgXIP4RJi3OQgTPa0DVMsDXdpRDjTsM1K9wfl5HSYX7R87QAGlvcv2Y4BIZa/ItonA== 1726 | dependencies: 1727 | iterall "^1.2.1" 1728 | 1729 | graphql-tag@^2.11.0: 1730 | version "2.11.0" 1731 | resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.11.0.tgz#1deb53a01c46a7eb401d6cb59dec86fa1cccbffd" 1732 | integrity sha512-VmsD5pJqWJnQZMUeRwrDhfgoyqcfwEkvtpANqcoUG8/tOLkwNgU9mzub/Mc78OJMhHjx7gfAMTxzdG43VGg3bA== 1733 | 1734 | graphql-tools@^4.0.0: 1735 | version "4.0.8" 1736 | resolved "https://registry.yarnpkg.com/graphql-tools/-/graphql-tools-4.0.8.tgz#e7fb9f0d43408fb0878ba66b522ce871bafe9d30" 1737 | integrity sha512-MW+ioleBrwhRjalKjYaLQbr+920pHBgy9vM/n47sswtns8+96sRn5M/G+J1eu7IMeKWiN/9p6tmwCHU7552VJg== 1738 | dependencies: 1739 | apollo-link "^1.2.14" 1740 | apollo-utilities "^1.0.1" 1741 | deprecated-decorator "^0.1.6" 1742 | iterall "^1.1.3" 1743 | uuid "^3.1.0" 1744 | 1745 | graphql-upload@^8.0.2: 1746 | version "8.1.0" 1747 | resolved "https://registry.yarnpkg.com/graphql-upload/-/graphql-upload-8.1.0.tgz#6d0ab662db5677a68bfb1f2c870ab2544c14939a" 1748 | integrity sha512-U2OiDI5VxYmzRKw0Z2dmfk0zkqMRaecH9Smh1U277gVgVe9Qn+18xqf4skwr4YJszGIh7iQDZ57+5ygOK9sM/Q== 1749 | dependencies: 1750 | busboy "^0.3.1" 1751 | fs-capacitor "^2.0.4" 1752 | http-errors "^1.7.3" 1753 | object-path "^0.11.4" 1754 | 1755 | graphql@^15.3.0, graphql@^15.4.0: 1756 | version "15.4.0" 1757 | resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.4.0.tgz#e459dea1150da5a106486ba7276518b5295a4347" 1758 | integrity sha512-EB3zgGchcabbsU9cFe1j+yxdzKQKAbGUWRb13DsrsMN1yyfmmIq+2+L5MqVWcDCE4V89R5AyUOi7sMOGxdsYtA== 1759 | 1760 | gtoken@^5.0.4: 1761 | version "5.2.0" 1762 | resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-5.2.0.tgz#7f1e029f9472bb8899d6911c03c66f7ad985c849" 1763 | integrity sha512-qbf6JWEYFMj3WMAluvYXl8GAiji6w8d9OmAGCbBg0xF4xD/yu6ZaO6BhoXNddRjKcOUpZD81iea1H5B45gAo1g== 1764 | dependencies: 1765 | gaxios "^4.0.0" 1766 | google-p12-pem "^3.0.3" 1767 | jws "^4.0.0" 1768 | mime "^2.2.0" 1769 | 1770 | has-flag@^3.0.0: 1771 | version "3.0.0" 1772 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 1773 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 1774 | 1775 | has-flag@^4.0.0: 1776 | version "4.0.0" 1777 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 1778 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 1779 | 1780 | has-symbols@^1.0.1: 1781 | version "1.0.1" 1782 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" 1783 | integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== 1784 | 1785 | has-yarn@^2.1.0: 1786 | version "2.1.0" 1787 | resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" 1788 | integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== 1789 | 1790 | has@^1.0.3: 1791 | version "1.0.3" 1792 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 1793 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 1794 | dependencies: 1795 | function-bind "^1.1.1" 1796 | 1797 | hash-stream-validation@^0.2.2: 1798 | version "0.2.4" 1799 | resolved "https://registry.yarnpkg.com/hash-stream-validation/-/hash-stream-validation-0.2.4.tgz#ee68b41bf822f7f44db1142ec28ba9ee7ccb7512" 1800 | integrity sha512-Gjzu0Xn7IagXVkSu9cSFuK1fqzwtLwFhNhVL8IFJijRNMgUttFbBSIAzKuSIrsFMO1+g1RlsoN49zPIbwPDMGQ== 1801 | 1802 | http-cache-semantics@^4.0.0: 1803 | version "4.1.0" 1804 | resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" 1805 | integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== 1806 | 1807 | http-errors@1.7.2: 1808 | version "1.7.2" 1809 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" 1810 | integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== 1811 | dependencies: 1812 | depd "~1.1.2" 1813 | inherits "2.0.3" 1814 | setprototypeof "1.1.1" 1815 | statuses ">= 1.5.0 < 2" 1816 | toidentifier "1.0.0" 1817 | 1818 | http-errors@^1.7.3: 1819 | version "1.8.0" 1820 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.0.tgz#75d1bbe497e1044f51e4ee9e704a62f28d336507" 1821 | integrity sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A== 1822 | dependencies: 1823 | depd "~1.1.2" 1824 | inherits "2.0.4" 1825 | setprototypeof "1.2.0" 1826 | statuses ">= 1.5.0 < 2" 1827 | toidentifier "1.0.0" 1828 | 1829 | http-errors@~1.7.2: 1830 | version "1.7.3" 1831 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" 1832 | integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== 1833 | dependencies: 1834 | depd "~1.1.2" 1835 | inherits "2.0.4" 1836 | setprototypeof "1.1.1" 1837 | statuses ">= 1.5.0 < 2" 1838 | toidentifier "1.0.0" 1839 | 1840 | http-parser-js@>=0.5.1: 1841 | version "0.5.3" 1842 | resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" 1843 | integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== 1844 | 1845 | http-proxy-agent@^4.0.0: 1846 | version "4.0.1" 1847 | resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" 1848 | integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== 1849 | dependencies: 1850 | "@tootallnate/once" "1" 1851 | agent-base "6" 1852 | debug "4" 1853 | 1854 | https-proxy-agent@^5.0.0: 1855 | version "5.0.0" 1856 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" 1857 | integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== 1858 | dependencies: 1859 | agent-base "6" 1860 | debug "4" 1861 | 1862 | iconv-lite@0.4.24: 1863 | version "0.4.24" 1864 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 1865 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 1866 | dependencies: 1867 | safer-buffer ">= 2.1.2 < 3" 1868 | 1869 | idb@3.0.2: 1870 | version "3.0.2" 1871 | resolved "https://registry.yarnpkg.com/idb/-/idb-3.0.2.tgz#c8e9122d5ddd40f13b60ae665e4862f8b13fa384" 1872 | integrity sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw== 1873 | 1874 | ignore-by-default@^1.0.1: 1875 | version "1.0.1" 1876 | resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" 1877 | integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= 1878 | 1879 | import-lazy@^2.1.0: 1880 | version "2.1.0" 1881 | resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" 1882 | integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= 1883 | 1884 | imurmurhash@^0.1.4: 1885 | version "0.1.4" 1886 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1887 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 1888 | 1889 | inherits@2.0.3: 1890 | version "2.0.3" 1891 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 1892 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 1893 | 1894 | inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3: 1895 | version "2.0.4" 1896 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1897 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1898 | 1899 | ini@1.3.7: 1900 | version "1.3.7" 1901 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84" 1902 | integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ== 1903 | 1904 | ini@~1.3.0: 1905 | version "1.3.8" 1906 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" 1907 | integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== 1908 | 1909 | ipaddr.js@1.9.1: 1910 | version "1.9.1" 1911 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" 1912 | integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== 1913 | 1914 | is-binary-path@~2.1.0: 1915 | version "2.1.0" 1916 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 1917 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 1918 | dependencies: 1919 | binary-extensions "^2.0.0" 1920 | 1921 | is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.2: 1922 | version "1.2.2" 1923 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" 1924 | integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA== 1925 | 1926 | is-ci@^2.0.0: 1927 | version "2.0.0" 1928 | resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" 1929 | integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== 1930 | dependencies: 1931 | ci-info "^2.0.0" 1932 | 1933 | is-date-object@^1.0.1: 1934 | version "1.0.2" 1935 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" 1936 | integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== 1937 | 1938 | is-extglob@^2.1.1: 1939 | version "2.1.1" 1940 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1941 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 1942 | 1943 | is-fullwidth-code-point@^2.0.0: 1944 | version "2.0.0" 1945 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 1946 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 1947 | 1948 | is-fullwidth-code-point@^3.0.0: 1949 | version "3.0.0" 1950 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 1951 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 1952 | 1953 | is-glob@^4.0.1, is-glob@~4.0.1: 1954 | version "4.0.1" 1955 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 1956 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 1957 | dependencies: 1958 | is-extglob "^2.1.1" 1959 | 1960 | is-installed-globally@^0.3.1: 1961 | version "0.3.2" 1962 | resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" 1963 | integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== 1964 | dependencies: 1965 | global-dirs "^2.0.1" 1966 | is-path-inside "^3.0.1" 1967 | 1968 | is-negative-zero@^2.0.1: 1969 | version "2.0.1" 1970 | resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" 1971 | integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== 1972 | 1973 | is-npm@^4.0.0: 1974 | version "4.0.0" 1975 | resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" 1976 | integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig== 1977 | 1978 | is-number@^7.0.0: 1979 | version "7.0.0" 1980 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 1981 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 1982 | 1983 | is-obj@^2.0.0: 1984 | version "2.0.0" 1985 | resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" 1986 | integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== 1987 | 1988 | is-path-inside@^3.0.1: 1989 | version "3.0.2" 1990 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" 1991 | integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== 1992 | 1993 | is-regex@^1.1.1: 1994 | version "1.1.1" 1995 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" 1996 | integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== 1997 | dependencies: 1998 | has-symbols "^1.0.1" 1999 | 2000 | is-stream-ended@^0.1.4: 2001 | version "0.1.4" 2002 | resolved "https://registry.yarnpkg.com/is-stream-ended/-/is-stream-ended-0.1.4.tgz#f50224e95e06bce0e356d440a4827cd35b267eda" 2003 | integrity sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw== 2004 | 2005 | is-stream@^2.0.0: 2006 | version "2.0.0" 2007 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" 2008 | integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== 2009 | 2010 | is-symbol@^1.0.2: 2011 | version "1.0.3" 2012 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" 2013 | integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== 2014 | dependencies: 2015 | has-symbols "^1.0.1" 2016 | 2017 | is-typedarray@^1.0.0: 2018 | version "1.0.0" 2019 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 2020 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= 2021 | 2022 | is-yarn-global@^0.3.0: 2023 | version "0.3.0" 2024 | resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" 2025 | integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== 2026 | 2027 | iterall@^1.1.3, iterall@^1.2.1: 2028 | version "1.3.0" 2029 | resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.3.0.tgz#afcb08492e2915cbd8a0884eb93a8c94d0d72fea" 2030 | integrity sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg== 2031 | 2032 | json-bigint@^1.0.0: 2033 | version "1.0.0" 2034 | resolved "https://registry.yarnpkg.com/json-bigint/-/json-bigint-1.0.0.tgz#ae547823ac0cad8398667f8cd9ef4730f5b01ff1" 2035 | integrity sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ== 2036 | dependencies: 2037 | bignumber.js "^9.0.0" 2038 | 2039 | json-buffer@3.0.0: 2040 | version "3.0.0" 2041 | resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" 2042 | integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= 2043 | 2044 | jsonwebtoken@^8.5.1: 2045 | version "8.5.1" 2046 | resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d" 2047 | integrity sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w== 2048 | dependencies: 2049 | jws "^3.2.2" 2050 | lodash.includes "^4.3.0" 2051 | lodash.isboolean "^3.0.3" 2052 | lodash.isinteger "^4.0.4" 2053 | lodash.isnumber "^3.0.3" 2054 | lodash.isplainobject "^4.0.6" 2055 | lodash.isstring "^4.0.1" 2056 | lodash.once "^4.0.0" 2057 | ms "^2.1.1" 2058 | semver "^5.6.0" 2059 | 2060 | jwa@^1.4.1: 2061 | version "1.4.1" 2062 | resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" 2063 | integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA== 2064 | dependencies: 2065 | buffer-equal-constant-time "1.0.1" 2066 | ecdsa-sig-formatter "1.0.11" 2067 | safe-buffer "^5.0.1" 2068 | 2069 | jwa@^2.0.0: 2070 | version "2.0.0" 2071 | resolved "https://registry.yarnpkg.com/jwa/-/jwa-2.0.0.tgz#a7e9c3f29dae94027ebcaf49975c9345593410fc" 2072 | integrity sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA== 2073 | dependencies: 2074 | buffer-equal-constant-time "1.0.1" 2075 | ecdsa-sig-formatter "1.0.11" 2076 | safe-buffer "^5.0.1" 2077 | 2078 | jws@^3.2.2: 2079 | version "3.2.2" 2080 | resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" 2081 | integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== 2082 | dependencies: 2083 | jwa "^1.4.1" 2084 | safe-buffer "^5.0.1" 2085 | 2086 | jws@^4.0.0: 2087 | version "4.0.0" 2088 | resolved "https://registry.yarnpkg.com/jws/-/jws-4.0.0.tgz#2d4e8cf6a318ffaa12615e9dec7e86e6c97310f4" 2089 | integrity sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg== 2090 | dependencies: 2091 | jwa "^2.0.0" 2092 | safe-buffer "^5.0.1" 2093 | 2094 | keyv@^3.0.0: 2095 | version "3.1.0" 2096 | resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" 2097 | integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== 2098 | dependencies: 2099 | json-buffer "3.0.0" 2100 | 2101 | latest-version@^5.0.0: 2102 | version "5.1.0" 2103 | resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" 2104 | integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== 2105 | dependencies: 2106 | package-json "^6.3.0" 2107 | 2108 | lodash.camelcase@^4.3.0: 2109 | version "4.3.0" 2110 | resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" 2111 | integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= 2112 | 2113 | lodash.includes@^4.3.0: 2114 | version "4.3.0" 2115 | resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" 2116 | integrity sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8= 2117 | 2118 | lodash.isboolean@^3.0.3: 2119 | version "3.0.3" 2120 | resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" 2121 | integrity sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY= 2122 | 2123 | lodash.isinteger@^4.0.4: 2124 | version "4.0.4" 2125 | resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" 2126 | integrity sha1-YZwK89A/iwTDH1iChAt3sRzWg0M= 2127 | 2128 | lodash.isnumber@^3.0.3: 2129 | version "3.0.3" 2130 | resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" 2131 | integrity sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w= 2132 | 2133 | lodash.isplainobject@^4.0.6: 2134 | version "4.0.6" 2135 | resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" 2136 | integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= 2137 | 2138 | lodash.isstring@^4.0.1: 2139 | version "4.0.1" 2140 | resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" 2141 | integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= 2142 | 2143 | lodash.once@^4.0.0: 2144 | version "4.1.1" 2145 | resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" 2146 | integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= 2147 | 2148 | lodash.sortby@^4.7.0: 2149 | version "4.7.0" 2150 | resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" 2151 | integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= 2152 | 2153 | loglevel@^1.6.7: 2154 | version "1.7.1" 2155 | resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197" 2156 | integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== 2157 | 2158 | long@^4.0.0: 2159 | version "4.0.0" 2160 | resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" 2161 | integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== 2162 | 2163 | lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: 2164 | version "1.0.1" 2165 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" 2166 | integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== 2167 | 2168 | lowercase-keys@^2.0.0: 2169 | version "2.0.0" 2170 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" 2171 | integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== 2172 | 2173 | lru-cache@^6.0.0: 2174 | version "6.0.0" 2175 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 2176 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 2177 | dependencies: 2178 | yallist "^4.0.0" 2179 | 2180 | make-dir@^3.0.0: 2181 | version "3.1.0" 2182 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" 2183 | integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== 2184 | dependencies: 2185 | semver "^6.0.0" 2186 | 2187 | media-typer@0.3.0: 2188 | version "0.3.0" 2189 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 2190 | integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= 2191 | 2192 | merge-descriptors@1.0.1: 2193 | version "1.0.1" 2194 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 2195 | integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= 2196 | 2197 | methods@~1.1.2: 2198 | version "1.1.2" 2199 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 2200 | integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= 2201 | 2202 | mime-db@1.45.0, "mime-db@>= 1.43.0 < 2": 2203 | version "1.45.0" 2204 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea" 2205 | integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w== 2206 | 2207 | mime-types@^2.0.8, mime-types@^2.1.12, mime-types@~2.1.24: 2208 | version "2.1.28" 2209 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.28.tgz#1160c4757eab2c5363888e005273ecf79d2a0ecd" 2210 | integrity sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ== 2211 | dependencies: 2212 | mime-db "1.45.0" 2213 | 2214 | mime@1.6.0: 2215 | version "1.6.0" 2216 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 2217 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 2218 | 2219 | mime@^2.2.0: 2220 | version "2.5.0" 2221 | resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.0.tgz#2b4af934401779806ee98026bb42e8c1ae1876b1" 2222 | integrity sha512-ft3WayFSFUVBuJj7BMLKAQcSlItKtfjsKDDsii3rqFDAZ7t11zRe8ASw/GlmivGwVUYtwkQrxiGGpL6gFvB0ag== 2223 | 2224 | mimic-fn@^2.1.0: 2225 | version "2.1.0" 2226 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 2227 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 2228 | 2229 | mimic-response@^1.0.0, mimic-response@^1.0.1: 2230 | version "1.0.1" 2231 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" 2232 | integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== 2233 | 2234 | minimatch@^3.0.4: 2235 | version "3.0.4" 2236 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 2237 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 2238 | dependencies: 2239 | brace-expansion "^1.1.7" 2240 | 2241 | minimist@^1.2.0: 2242 | version "1.2.5" 2243 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 2244 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 2245 | 2246 | ms@2.0.0: 2247 | version "2.0.0" 2248 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 2249 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 2250 | 2251 | ms@2.1.1: 2252 | version "2.1.1" 2253 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" 2254 | integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== 2255 | 2256 | ms@2.1.2: 2257 | version "2.1.2" 2258 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 2259 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 2260 | 2261 | ms@^2.1.1: 2262 | version "2.1.3" 2263 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 2264 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 2265 | 2266 | negotiator@0.6.2: 2267 | version "0.6.2" 2268 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" 2269 | integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== 2270 | 2271 | node-fetch@2.6.1, node-fetch@^2.1.2, node-fetch@^2.2.0, node-fetch@^2.3.0, node-fetch@^2.6.1: 2272 | version "2.6.1" 2273 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" 2274 | integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== 2275 | 2276 | node-forge@^0.10.0: 2277 | version "0.10.0" 2278 | resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" 2279 | integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== 2280 | 2281 | nodemon@^2.0.7: 2282 | version "2.0.7" 2283 | resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.7.tgz#6f030a0a0ebe3ea1ba2a38f71bf9bab4841ced32" 2284 | integrity sha512-XHzK69Awgnec9UzHr1kc8EomQh4sjTQ8oRf8TsGrSmHDx9/UmiGG9E/mM3BuTfNeFwdNBvrqQq/RHL0xIeyFOA== 2285 | dependencies: 2286 | chokidar "^3.2.2" 2287 | debug "^3.2.6" 2288 | ignore-by-default "^1.0.1" 2289 | minimatch "^3.0.4" 2290 | pstree.remy "^1.1.7" 2291 | semver "^5.7.1" 2292 | supports-color "^5.5.0" 2293 | touch "^3.1.0" 2294 | undefsafe "^2.0.3" 2295 | update-notifier "^4.1.0" 2296 | 2297 | nopt@~1.0.10: 2298 | version "1.0.10" 2299 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" 2300 | integrity sha1-bd0hvSoxQXuScn3Vhfim83YI6+4= 2301 | dependencies: 2302 | abbrev "1" 2303 | 2304 | normalize-path@^3.0.0, normalize-path@~3.0.0: 2305 | version "3.0.0" 2306 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 2307 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 2308 | 2309 | normalize-url@^4.1.0: 2310 | version "4.5.0" 2311 | resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" 2312 | integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== 2313 | 2314 | object-assign@^4: 2315 | version "4.1.1" 2316 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 2317 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 2318 | 2319 | object-inspect@^1.9.0: 2320 | version "1.9.0" 2321 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" 2322 | integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== 2323 | 2324 | object-keys@^1.0.12, object-keys@^1.1.1: 2325 | version "1.1.1" 2326 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 2327 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 2328 | 2329 | object-path@^0.11.4: 2330 | version "0.11.5" 2331 | resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.11.5.tgz#d4e3cf19601a5140a55a16ad712019a9c50b577a" 2332 | integrity sha512-jgSbThcoR/s+XumvGMTMf81QVBmah+/Q7K7YduKeKVWL7N111unR2d6pZZarSk6kY/caeNxUDyxOvMWyzoU2eg== 2333 | 2334 | object.assign@^4.1.2: 2335 | version "4.1.2" 2336 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" 2337 | integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== 2338 | dependencies: 2339 | call-bind "^1.0.0" 2340 | define-properties "^1.1.3" 2341 | has-symbols "^1.0.1" 2342 | object-keys "^1.1.1" 2343 | 2344 | object.getownpropertydescriptors@^2.1.1: 2345 | version "2.1.1" 2346 | resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz#0dfda8d108074d9c563e80490c883b6661091544" 2347 | integrity sha512-6DtXgZ/lIZ9hqx4GtZETobXLR/ZLaa0aqV0kzbn80Rf8Z2e/XFnhA0I7p07N2wH8bBBltr2xQPi6sbKWAY2Eng== 2348 | dependencies: 2349 | call-bind "^1.0.0" 2350 | define-properties "^1.1.3" 2351 | es-abstract "^1.18.0-next.1" 2352 | 2353 | on-finished@~2.3.0: 2354 | version "2.3.0" 2355 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" 2356 | integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= 2357 | dependencies: 2358 | ee-first "1.1.1" 2359 | 2360 | once@^1.3.1, once@^1.4.0: 2361 | version "1.4.0" 2362 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 2363 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 2364 | dependencies: 2365 | wrappy "1" 2366 | 2367 | onetime@^5.1.0: 2368 | version "5.1.2" 2369 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" 2370 | integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== 2371 | dependencies: 2372 | mimic-fn "^2.1.0" 2373 | 2374 | p-cancelable@^1.0.0: 2375 | version "1.1.0" 2376 | resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" 2377 | integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== 2378 | 2379 | p-limit@^3.0.1: 2380 | version "3.1.0" 2381 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 2382 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 2383 | dependencies: 2384 | yocto-queue "^0.1.0" 2385 | 2386 | package-json@^6.3.0: 2387 | version "6.5.0" 2388 | resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" 2389 | integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== 2390 | dependencies: 2391 | got "^9.6.0" 2392 | registry-auth-token "^4.0.0" 2393 | registry-url "^5.0.0" 2394 | semver "^6.2.0" 2395 | 2396 | parseurl@^1.3.2, parseurl@~1.3.3: 2397 | version "1.3.3" 2398 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" 2399 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== 2400 | 2401 | path-to-regexp@0.1.7: 2402 | version "0.1.7" 2403 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 2404 | integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= 2405 | 2406 | picomatch@^2.0.4, picomatch@^2.2.1: 2407 | version "2.2.2" 2408 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" 2409 | integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== 2410 | 2411 | prepend-http@^2.0.0: 2412 | version "2.0.0" 2413 | resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" 2414 | integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= 2415 | 2416 | promise-polyfill@8.1.3: 2417 | version "8.1.3" 2418 | resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-8.1.3.tgz#8c99b3cf53f3a91c68226ffde7bde81d7f904116" 2419 | integrity sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g== 2420 | 2421 | protobufjs@^6.10.2, protobufjs@^6.8.6: 2422 | version "6.10.2" 2423 | resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.10.2.tgz#b9cb6bd8ec8f87514592ba3fdfd28e93f33a469b" 2424 | integrity sha512-27yj+04uF6ya9l+qfpH187aqEzfCF4+Uit0I9ZBQVqK09hk/SQzKa2MUqUpXaVa7LOFRg1TSSr3lVxGOk6c0SQ== 2425 | dependencies: 2426 | "@protobufjs/aspromise" "^1.1.2" 2427 | "@protobufjs/base64" "^1.1.2" 2428 | "@protobufjs/codegen" "^2.0.4" 2429 | "@protobufjs/eventemitter" "^1.1.0" 2430 | "@protobufjs/fetch" "^1.1.0" 2431 | "@protobufjs/float" "^1.0.2" 2432 | "@protobufjs/inquire" "^1.1.0" 2433 | "@protobufjs/path" "^1.1.2" 2434 | "@protobufjs/pool" "^1.1.0" 2435 | "@protobufjs/utf8" "^1.1.0" 2436 | "@types/long" "^4.0.1" 2437 | "@types/node" "^13.7.0" 2438 | long "^4.0.0" 2439 | 2440 | proxy-addr@~2.0.5: 2441 | version "2.0.6" 2442 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" 2443 | integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== 2444 | dependencies: 2445 | forwarded "~0.1.2" 2446 | ipaddr.js "1.9.1" 2447 | 2448 | pstree.remy@^1.1.7: 2449 | version "1.1.8" 2450 | resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" 2451 | integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== 2452 | 2453 | pump@^3.0.0: 2454 | version "3.0.0" 2455 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 2456 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 2457 | dependencies: 2458 | end-of-stream "^1.1.0" 2459 | once "^1.3.1" 2460 | 2461 | pumpify@^2.0.0: 2462 | version "2.0.1" 2463 | resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-2.0.1.tgz#abfc7b5a621307c728b551decbbefb51f0e4aa1e" 2464 | integrity sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw== 2465 | dependencies: 2466 | duplexify "^4.1.1" 2467 | inherits "^2.0.3" 2468 | pump "^3.0.0" 2469 | 2470 | pupa@^2.0.1: 2471 | version "2.1.1" 2472 | resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" 2473 | integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== 2474 | dependencies: 2475 | escape-goat "^2.0.0" 2476 | 2477 | qs@6.7.0: 2478 | version "6.7.0" 2479 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" 2480 | integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== 2481 | 2482 | range-parser@~1.2.1: 2483 | version "1.2.1" 2484 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" 2485 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== 2486 | 2487 | raw-body@2.4.0: 2488 | version "2.4.0" 2489 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" 2490 | integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== 2491 | dependencies: 2492 | bytes "3.1.0" 2493 | http-errors "1.7.2" 2494 | iconv-lite "0.4.24" 2495 | unpipe "1.0.0" 2496 | 2497 | rc@^1.2.8: 2498 | version "1.2.8" 2499 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" 2500 | integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== 2501 | dependencies: 2502 | deep-extend "^0.6.0" 2503 | ini "~1.3.0" 2504 | minimist "^1.2.0" 2505 | strip-json-comments "~2.0.1" 2506 | 2507 | readable-stream@^3.1.1: 2508 | version "3.6.0" 2509 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" 2510 | integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== 2511 | dependencies: 2512 | inherits "^2.0.3" 2513 | string_decoder "^1.1.1" 2514 | util-deprecate "^1.0.1" 2515 | 2516 | readdirp@~3.5.0: 2517 | version "3.5.0" 2518 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" 2519 | integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== 2520 | dependencies: 2521 | picomatch "^2.2.1" 2522 | 2523 | registry-auth-token@^4.0.0: 2524 | version "4.2.1" 2525 | resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250" 2526 | integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw== 2527 | dependencies: 2528 | rc "^1.2.8" 2529 | 2530 | registry-url@^5.0.0: 2531 | version "5.1.0" 2532 | resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" 2533 | integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== 2534 | dependencies: 2535 | rc "^1.2.8" 2536 | 2537 | responselike@^1.0.2: 2538 | version "1.0.2" 2539 | resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" 2540 | integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= 2541 | dependencies: 2542 | lowercase-keys "^1.0.0" 2543 | 2544 | retry-request@^4.0.0, retry-request@^4.1.1: 2545 | version "4.1.3" 2546 | resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-4.1.3.tgz#d5f74daf261372cff58d08b0a1979b4d7cab0fde" 2547 | integrity sha512-QnRZUpuPNgX0+D1xVxul6DbJ9slvo4Rm6iV/dn63e048MvGbUZiKySVt6Tenp04JqmchxjiLltGerOJys7kJYQ== 2548 | dependencies: 2549 | debug "^4.1.1" 2550 | 2551 | retry@0.12.0: 2552 | version "0.12.0" 2553 | resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" 2554 | integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= 2555 | 2556 | safe-buffer@5.1.2: 2557 | version "5.1.2" 2558 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 2559 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 2560 | 2561 | safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@~5.2.0: 2562 | version "5.2.1" 2563 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 2564 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 2565 | 2566 | "safer-buffer@>= 2.1.2 < 3": 2567 | version "2.1.2" 2568 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 2569 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 2570 | 2571 | semver-diff@^3.1.1: 2572 | version "3.1.1" 2573 | resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" 2574 | integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== 2575 | dependencies: 2576 | semver "^6.3.0" 2577 | 2578 | semver@^5.6.0, semver@^5.7.1: 2579 | version "5.7.1" 2580 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 2581 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 2582 | 2583 | semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: 2584 | version "6.3.0" 2585 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 2586 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 2587 | 2588 | send@0.17.1: 2589 | version "0.17.1" 2590 | resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" 2591 | integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== 2592 | dependencies: 2593 | debug "2.6.9" 2594 | depd "~1.1.2" 2595 | destroy "~1.0.4" 2596 | encodeurl "~1.0.2" 2597 | escape-html "~1.0.3" 2598 | etag "~1.8.1" 2599 | fresh "0.5.2" 2600 | http-errors "~1.7.2" 2601 | mime "1.6.0" 2602 | ms "2.1.1" 2603 | on-finished "~2.3.0" 2604 | range-parser "~1.2.1" 2605 | statuses "~1.5.0" 2606 | 2607 | serve-static@1.14.1: 2608 | version "1.14.1" 2609 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" 2610 | integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== 2611 | dependencies: 2612 | encodeurl "~1.0.2" 2613 | escape-html "~1.0.3" 2614 | parseurl "~1.3.3" 2615 | send "0.17.1" 2616 | 2617 | setprototypeof@1.1.1: 2618 | version "1.1.1" 2619 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" 2620 | integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== 2621 | 2622 | setprototypeof@1.2.0: 2623 | version "1.2.0" 2624 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" 2625 | integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== 2626 | 2627 | sha.js@^2.4.11: 2628 | version "2.4.11" 2629 | resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" 2630 | integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== 2631 | dependencies: 2632 | inherits "^2.0.1" 2633 | safe-buffer "^5.0.1" 2634 | 2635 | signal-exit@^3.0.2: 2636 | version "3.0.3" 2637 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" 2638 | integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== 2639 | 2640 | snakeize@^0.1.0: 2641 | version "0.1.0" 2642 | resolved "https://registry.yarnpkg.com/snakeize/-/snakeize-0.1.0.tgz#10c088d8b58eb076b3229bb5a04e232ce126422d" 2643 | integrity sha1-EMCI2LWOsHazIpu1oE4jLOEmQi0= 2644 | 2645 | "statuses@>= 1.5.0 < 2", statuses@~1.5.0: 2646 | version "1.5.0" 2647 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" 2648 | integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= 2649 | 2650 | stoppable@^1.1.0: 2651 | version "1.1.0" 2652 | resolved "https://registry.yarnpkg.com/stoppable/-/stoppable-1.1.0.tgz#32da568e83ea488b08e4d7ea2c3bcc9d75015d5b" 2653 | integrity sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw== 2654 | 2655 | stream-events@^1.0.1, stream-events@^1.0.4, stream-events@^1.0.5: 2656 | version "1.0.5" 2657 | resolved "https://registry.yarnpkg.com/stream-events/-/stream-events-1.0.5.tgz#bbc898ec4df33a4902d892333d47da9bf1c406d5" 2658 | integrity sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg== 2659 | dependencies: 2660 | stubs "^3.0.0" 2661 | 2662 | stream-shift@^1.0.0: 2663 | version "1.0.1" 2664 | resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" 2665 | integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== 2666 | 2667 | streamsearch@0.1.2: 2668 | version "0.1.2" 2669 | resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-0.1.2.tgz#808b9d0e56fc273d809ba57338e929919a1a9f1a" 2670 | integrity sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo= 2671 | 2672 | string-width@^3.0.0: 2673 | version "3.1.0" 2674 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" 2675 | integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== 2676 | dependencies: 2677 | emoji-regex "^7.0.1" 2678 | is-fullwidth-code-point "^2.0.0" 2679 | strip-ansi "^5.1.0" 2680 | 2681 | string-width@^4.0.0, string-width@^4.1.0: 2682 | version "4.2.0" 2683 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" 2684 | integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== 2685 | dependencies: 2686 | emoji-regex "^8.0.0" 2687 | is-fullwidth-code-point "^3.0.0" 2688 | strip-ansi "^6.0.0" 2689 | 2690 | string.prototype.trimend@^1.0.3: 2691 | version "1.0.3" 2692 | resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz#a22bd53cca5c7cf44d7c9d5c732118873d6cd18b" 2693 | integrity sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw== 2694 | dependencies: 2695 | call-bind "^1.0.0" 2696 | define-properties "^1.1.3" 2697 | 2698 | string.prototype.trimstart@^1.0.3: 2699 | version "1.0.3" 2700 | resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz#9b4cb590e123bb36564401d59824298de50fd5aa" 2701 | integrity sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg== 2702 | dependencies: 2703 | call-bind "^1.0.0" 2704 | define-properties "^1.1.3" 2705 | 2706 | string_decoder@^1.1.1: 2707 | version "1.3.0" 2708 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 2709 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 2710 | dependencies: 2711 | safe-buffer "~5.2.0" 2712 | 2713 | strip-ansi@^5.1.0: 2714 | version "5.2.0" 2715 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 2716 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== 2717 | dependencies: 2718 | ansi-regex "^4.1.0" 2719 | 2720 | strip-ansi@^6.0.0: 2721 | version "6.0.0" 2722 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 2723 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== 2724 | dependencies: 2725 | ansi-regex "^5.0.0" 2726 | 2727 | strip-json-comments@~2.0.1: 2728 | version "2.0.1" 2729 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 2730 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= 2731 | 2732 | stubs@^3.0.0: 2733 | version "3.0.0" 2734 | resolved "https://registry.yarnpkg.com/stubs/-/stubs-3.0.0.tgz#e8d2ba1fa9c90570303c030b6900f7d5f89abe5b" 2735 | integrity sha1-6NK6H6nJBXAwPAMLaQD31fiavls= 2736 | 2737 | subscriptions-transport-ws@^0.9.11, subscriptions-transport-ws@^0.9.16: 2738 | version "0.9.18" 2739 | resolved "https://registry.yarnpkg.com/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.18.tgz#bcf02320c911fbadb054f7f928e51c6041a37b97" 2740 | integrity sha512-tztzcBTNoEbuErsVQpTN2xUNN/efAZXyCyL5m3x4t6SKrEiTL2N8SaKWBFWM4u56pL79ULif3zjyeq+oV+nOaA== 2741 | dependencies: 2742 | backo2 "^1.0.2" 2743 | eventemitter3 "^3.1.0" 2744 | iterall "^1.2.1" 2745 | symbol-observable "^1.0.4" 2746 | ws "^5.2.0" 2747 | 2748 | supports-color@^5.5.0: 2749 | version "5.5.0" 2750 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 2751 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 2752 | dependencies: 2753 | has-flag "^3.0.0" 2754 | 2755 | supports-color@^7.1.0: 2756 | version "7.2.0" 2757 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 2758 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 2759 | dependencies: 2760 | has-flag "^4.0.0" 2761 | 2762 | symbol-observable@^1.0.4: 2763 | version "1.2.0" 2764 | resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" 2765 | integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== 2766 | 2767 | teeny-request@^7.0.0: 2768 | version "7.0.1" 2769 | resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-7.0.1.tgz#bdd41fdffea5f8fbc0d29392cb47bec4f66b2b4c" 2770 | integrity sha512-sasJmQ37klOlplL4Ia/786M5YlOcoLGQyq2TE4WHSRupbAuDaQW0PfVxV4MtdBtRJ4ngzS+1qim8zP6Zp35qCw== 2771 | dependencies: 2772 | http-proxy-agent "^4.0.0" 2773 | https-proxy-agent "^5.0.0" 2774 | node-fetch "^2.6.1" 2775 | stream-events "^1.0.5" 2776 | uuid "^8.0.0" 2777 | 2778 | term-size@^2.1.0: 2779 | version "2.2.1" 2780 | resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" 2781 | integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== 2782 | 2783 | to-readable-stream@^1.0.0: 2784 | version "1.0.0" 2785 | resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" 2786 | integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== 2787 | 2788 | to-regex-range@^5.0.1: 2789 | version "5.0.1" 2790 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 2791 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 2792 | dependencies: 2793 | is-number "^7.0.0" 2794 | 2795 | toidentifier@1.0.0: 2796 | version "1.0.0" 2797 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" 2798 | integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== 2799 | 2800 | touch@^3.1.0: 2801 | version "3.1.0" 2802 | resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" 2803 | integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== 2804 | dependencies: 2805 | nopt "~1.0.10" 2806 | 2807 | ts-invariant@^0.4.0: 2808 | version "0.4.4" 2809 | resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.4.4.tgz#97a523518688f93aafad01b0e80eb803eb2abd86" 2810 | integrity sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA== 2811 | dependencies: 2812 | tslib "^1.9.3" 2813 | 2814 | tslib@^1.10.0, tslib@^1.11.1, tslib@^1.9.3: 2815 | version "1.14.1" 2816 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" 2817 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== 2818 | 2819 | type-fest@^0.8.1: 2820 | version "0.8.1" 2821 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" 2822 | integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== 2823 | 2824 | type-is@^1.6.16, type-is@~1.6.17, type-is@~1.6.18: 2825 | version "1.6.18" 2826 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" 2827 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== 2828 | dependencies: 2829 | media-typer "0.3.0" 2830 | mime-types "~2.1.24" 2831 | 2832 | typedarray-to-buffer@^3.1.5: 2833 | version "3.1.5" 2834 | resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" 2835 | integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== 2836 | dependencies: 2837 | is-typedarray "^1.0.0" 2838 | 2839 | undefsafe@^2.0.3: 2840 | version "2.0.3" 2841 | resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.3.tgz#6b166e7094ad46313b2202da7ecc2cd7cc6e7aae" 2842 | integrity sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A== 2843 | dependencies: 2844 | debug "^2.2.0" 2845 | 2846 | unique-string@^2.0.0: 2847 | version "2.0.0" 2848 | resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" 2849 | integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== 2850 | dependencies: 2851 | crypto-random-string "^2.0.0" 2852 | 2853 | unpipe@1.0.0, unpipe@~1.0.0: 2854 | version "1.0.0" 2855 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 2856 | integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= 2857 | 2858 | update-notifier@^4.1.0: 2859 | version "4.1.3" 2860 | resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.3.tgz#be86ee13e8ce48fb50043ff72057b5bd598e1ea3" 2861 | integrity sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A== 2862 | dependencies: 2863 | boxen "^4.2.0" 2864 | chalk "^3.0.0" 2865 | configstore "^5.0.1" 2866 | has-yarn "^2.1.0" 2867 | import-lazy "^2.1.0" 2868 | is-ci "^2.0.0" 2869 | is-installed-globally "^0.3.1" 2870 | is-npm "^4.0.0" 2871 | is-yarn-global "^0.3.0" 2872 | latest-version "^5.0.0" 2873 | pupa "^2.0.1" 2874 | semver-diff "^3.1.1" 2875 | xdg-basedir "^4.0.0" 2876 | 2877 | url-parse-lax@^3.0.0: 2878 | version "3.0.0" 2879 | resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" 2880 | integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= 2881 | dependencies: 2882 | prepend-http "^2.0.0" 2883 | 2884 | util-deprecate@^1.0.1: 2885 | version "1.0.2" 2886 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 2887 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 2888 | 2889 | util.promisify@^1.0.0: 2890 | version "1.1.1" 2891 | resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.1.1.tgz#77832f57ced2c9478174149cae9b96e9918cd54b" 2892 | integrity sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw== 2893 | dependencies: 2894 | call-bind "^1.0.0" 2895 | define-properties "^1.1.3" 2896 | for-each "^0.3.3" 2897 | has-symbols "^1.0.1" 2898 | object.getownpropertydescriptors "^2.1.1" 2899 | 2900 | utils-merge@1.0.1: 2901 | version "1.0.1" 2902 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" 2903 | integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= 2904 | 2905 | uuid@^3.1.0: 2906 | version "3.4.0" 2907 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" 2908 | integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== 2909 | 2910 | uuid@^8.0.0: 2911 | version "8.3.2" 2912 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" 2913 | integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== 2914 | 2915 | vary@^1, vary@~1.1.2: 2916 | version "1.1.2" 2917 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" 2918 | integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= 2919 | 2920 | websocket-driver@>=0.5.1: 2921 | version "0.7.4" 2922 | resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" 2923 | integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== 2924 | dependencies: 2925 | http-parser-js ">=0.5.1" 2926 | safe-buffer ">=5.1.0" 2927 | websocket-extensions ">=0.1.1" 2928 | 2929 | websocket-extensions@>=0.1.1: 2930 | version "0.1.4" 2931 | resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" 2932 | integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== 2933 | 2934 | whatwg-fetch@2.0.4: 2935 | version "2.0.4" 2936 | resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" 2937 | integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng== 2938 | 2939 | widest-line@^3.1.0: 2940 | version "3.1.0" 2941 | resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" 2942 | integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== 2943 | dependencies: 2944 | string-width "^4.0.0" 2945 | 2946 | wrappy@1: 2947 | version "1.0.2" 2948 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2949 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 2950 | 2951 | write-file-atomic@^3.0.0: 2952 | version "3.0.3" 2953 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" 2954 | integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== 2955 | dependencies: 2956 | imurmurhash "^0.1.4" 2957 | is-typedarray "^1.0.0" 2958 | signal-exit "^3.0.2" 2959 | typedarray-to-buffer "^3.1.5" 2960 | 2961 | ws@^5.2.0: 2962 | version "5.2.2" 2963 | resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" 2964 | integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== 2965 | dependencies: 2966 | async-limiter "~1.0.0" 2967 | 2968 | ws@^6.0.0: 2969 | version "6.2.1" 2970 | resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" 2971 | integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== 2972 | dependencies: 2973 | async-limiter "~1.0.0" 2974 | 2975 | xdg-basedir@^4.0.0: 2976 | version "4.0.0" 2977 | resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" 2978 | integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== 2979 | 2980 | xmlhttprequest@1.8.0: 2981 | version "1.8.0" 2982 | resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" 2983 | integrity sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw= 2984 | 2985 | xss@^1.0.6: 2986 | version "1.0.8" 2987 | resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.8.tgz#32feb87feb74b3dcd3d404b7a68ababf10700535" 2988 | integrity sha512-3MgPdaXV8rfQ/pNn16Eio6VXYPTkqwa0vc7GkiymmY/DqR1SE/7VPAAVZz1GJsJFrllMYO3RHfEaiUGjab6TNw== 2989 | dependencies: 2990 | commander "^2.20.3" 2991 | cssfilter "0.0.10" 2992 | 2993 | yallist@^4.0.0: 2994 | version "4.0.0" 2995 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 2996 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 2997 | 2998 | yocto-queue@^0.1.0: 2999 | version "0.1.0" 3000 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 3001 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 3002 | 3003 | zen-observable-ts@^0.8.21: 3004 | version "0.8.21" 3005 | resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-0.8.21.tgz#85d0031fbbde1eba3cd07d3ba90da241215f421d" 3006 | integrity sha512-Yj3yXweRc8LdRMrCC8nIc4kkjWecPAUVh0TI0OUrWXx6aX790vLcDlWca6I4vsyCGH3LpWxq0dJRcMOFoVqmeg== 3007 | dependencies: 3008 | tslib "^1.9.3" 3009 | zen-observable "^0.8.0" 3010 | 3011 | zen-observable@^0.8.0: 3012 | version "0.8.15" 3013 | resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15" 3014 | integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== 3015 | --------------------------------------------------------------------------------