├── .gitignore
├── README.md
├── package.json
├── src
├── auth.ts
├── config.ts
├── database.ts
├── express.d.ts
├── server.ts
└── types.ts
├── tsconfig.json
└── yarn.lock
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | ## 💻 Projeto
12 |
13 | ignite-reactjs-auth-backend
14 |
15 | ## 📝 Licença
16 |
17 | Esse projeto está sob a licença MIT. Veja o arquivo [LICENSE](LICENSE) para mais detalhes.
18 |
19 | ---
20 |
21 |
22 | Feito com 💜 by Rocketseat
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "auth-backend",
3 | "version": "1.0.0",
4 | "main": "index.js",
5 | "license": "MIT",
6 | "scripts": {
7 | "dev": "tsnd --ignore-watch node_modules --respawn --transpile-only src/server.ts"
8 | },
9 | "devDependencies": {
10 | "@types/cors": "^2.8.10",
11 | "@types/express": "^4.17.11",
12 | "@types/jsonwebtoken": "^8.5.1",
13 | "@types/uuid": "^8.3.0",
14 | "ts-node-dev": "^1.1.6",
15 | "typescript": "^4.2.4"
16 | },
17 | "dependencies": {
18 | "cors": "^2.8.5",
19 | "express": "^4.17.1",
20 | "jsonwebtoken": "^8.5.1",
21 | "jwt-decode": "^3.1.2",
22 | "uuid": "^8.3.2"
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/auth.ts:
--------------------------------------------------------------------------------
1 | import jwt from 'jsonwebtoken'
2 |
3 | import { auth } from './config';
4 | import { createRefreshToken } from './database';
5 |
6 | export function generateJwtAndRefreshToken(email: string, payload: object = {}) {
7 | const token = jwt.sign(payload, auth.secret, {
8 | subject: email,
9 | expiresIn: 5, // 15 minutes
10 | });
11 |
12 | const refreshToken = createRefreshToken(email)
13 |
14 | return {
15 | token,
16 | refreshToken,
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/config.ts:
--------------------------------------------------------------------------------
1 | export const auth = {
2 | secret: 'supersecret'
3 | } as const;
--------------------------------------------------------------------------------
/src/database.ts:
--------------------------------------------------------------------------------
1 | import { RefreshTokensStore, UsersStore } from "./types"
2 | import { v4 as uuid } from 'uuid'
3 |
4 | export const users: UsersStore = new Map()
5 |
6 | export const tokens: RefreshTokensStore = new Map()
7 |
8 | export function seedUserStore() {
9 | users.set('diego@rocketseat.team', {
10 | password: '123456',
11 | permissions: ['users.list', 'users.create', 'metrics.list'],
12 | roles: ['administrator']
13 | })
14 |
15 | users.set('estagiario@rocketseat.team', {
16 | password: '123456',
17 | permissions: ['users.list', 'metrics.list'],
18 | roles: ['editor']
19 | })
20 | }
21 |
22 | export function createRefreshToken(email: string) {
23 | const currentUserTokens = tokens.get(email) ?? []
24 | const refreshToken = uuid()
25 |
26 | tokens.set(email, [...currentUserTokens, refreshToken])
27 |
28 | return refreshToken;
29 | }
30 |
31 | export function checkRefreshTokenIsValid(email: string, refreshToken: string) {
32 | const storedRefreshTokens = tokens.get(email) ?? []
33 |
34 | return storedRefreshTokens.some(token => token === refreshToken)
35 | }
36 |
37 | export function invalidateRefreshToken(email: string, refreshToken: string) {
38 | const storedRefreshTokens = tokens.get(email) ?? []
39 |
40 | tokens.set(email, storedRefreshTokens.filter(token => token !== refreshToken));
41 | }
--------------------------------------------------------------------------------
/src/express.d.ts:
--------------------------------------------------------------------------------
1 | declare namespace Express {
2 | export interface Request {
3 | user: string
4 | }
5 | }
--------------------------------------------------------------------------------
/src/server.ts:
--------------------------------------------------------------------------------
1 | import cors from 'cors';
2 | import express, { NextFunction, Request, Response } from 'express';
3 | import jwt from 'jsonwebtoken'
4 | import decode from 'jwt-decode'
5 | import { generateJwtAndRefreshToken } from './auth';
6 | import { auth } from './config';
7 |
8 | import { checkRefreshTokenIsValid, users, seedUserStore, invalidateRefreshToken } from './database';
9 | import { CreateSessionDTO, DecodedToken } from './types';
10 |
11 | const app = express();
12 |
13 | app.use(express.json());
14 | app.use(cors())
15 |
16 | seedUserStore();
17 |
18 | function checkAuthMiddleware(request: Request, response: Response, next: NextFunction) {
19 | const { authorization } = request.headers;
20 |
21 | if (!authorization) {
22 | return response
23 | .status(401)
24 | .json({ error: true, code: 'token.invalid', message: 'Token not present.' })
25 | }
26 |
27 | const [, token] = authorization?.split(' ');
28 |
29 | if (!token) {
30 | return response
31 | .status(401)
32 | .json({ error: true, code: 'token.invalid', message: 'Token not present.' })
33 | }
34 |
35 | try {
36 | const decoded = jwt.verify(token as string, auth.secret) as DecodedToken;
37 |
38 | request.user = decoded.sub;
39 |
40 | return next();
41 | } catch (err) {
42 |
43 | return response
44 | .status(401)
45 | .json({ error: true, code: 'token.expired', message: 'Token invalid.' })
46 | }
47 | }
48 |
49 | function addUserInformationToRequest(request: Request, response: Response, next: NextFunction) {
50 | const { authorization } = request.headers;
51 |
52 | if (!authorization) {
53 | return response
54 | .status(401)
55 | .json({ error: true, code: 'token.invalid', message: 'Token not present.' })
56 | }
57 |
58 | const [, token] = authorization?.split(' ');
59 |
60 | if (!token) {
61 | return response
62 | .status(401)
63 | .json({ error: true, code: 'token.invalid', message: 'Token not present.' })
64 | }
65 |
66 | try {
67 | const decoded = decode(token as string) as DecodedToken;
68 |
69 | request.user = decoded.sub;
70 |
71 | return next();
72 | } catch (err) {
73 | return response
74 | .status(401)
75 | .json({ error: true, code: 'token.invalid', message: 'Invalid token format.' })
76 | }
77 | }
78 |
79 | app.post('/sessions', (request, response) => {
80 | const { email, password } = request.body as CreateSessionDTO;
81 |
82 | const user = users.get(email);
83 |
84 | if (!user || password !== user.password) {
85 | return response
86 | .status(401)
87 | .json({
88 | error: true,
89 | message: 'E-mail or password incorrect.'
90 | });
91 | }
92 |
93 | const { token, refreshToken } = generateJwtAndRefreshToken(email, {
94 | permissions: user.permissions,
95 | roles: user.roles,
96 | })
97 |
98 | return response.json({
99 | token,
100 | refreshToken,
101 | permissions: user.permissions,
102 | roles: user.roles,
103 | });
104 | });
105 |
106 | app.post('/refresh', addUserInformationToRequest, (request, response) => {
107 | const email = request.user;
108 | const { refreshToken } = request.body;
109 |
110 | const user = users.get(email);
111 |
112 | if (!user) {
113 | return response
114 | .status(401)
115 | .json({
116 | error: true,
117 | message: 'User not found.'
118 | });
119 | }
120 |
121 | if (!refreshToken) {
122 | return response
123 | .status(401)
124 | .json({ error: true, message: 'Refresh token is required.' });
125 | }
126 |
127 | const isValidRefreshToken = checkRefreshTokenIsValid(email, refreshToken)
128 |
129 | if (!isValidRefreshToken) {
130 | return response
131 | .status(401)
132 | .json({ error: true, message: 'Refresh token is invalid.' });
133 | }
134 |
135 | invalidateRefreshToken(email, refreshToken)
136 |
137 | const { token, refreshToken: newRefreshToken } = generateJwtAndRefreshToken(email, {
138 | permissions: user.permissions,
139 | roles: user.roles,
140 | })
141 |
142 | return response.json({
143 | token,
144 | refreshToken: newRefreshToken,
145 | permissions: user.permissions,
146 | roles: user.roles,
147 | });
148 | });
149 |
150 | app.get('/me', checkAuthMiddleware, (request, response) => {
151 | const email = request.user;
152 |
153 | const user = users.get(email);
154 |
155 | if (!user) {
156 | return response
157 | .status(400)
158 | .json({ error: true, message: 'User not found.' });
159 | }
160 |
161 | return response.json({
162 | email,
163 | permissions: user.permissions,
164 | roles: user.roles,
165 | })
166 | });
167 |
168 | app.listen(3333);
--------------------------------------------------------------------------------
/src/types.ts:
--------------------------------------------------------------------------------
1 | export type CreateSessionDTO = {
2 | email: string;
3 | password: string;
4 | }
5 |
6 | type UserData = {
7 | password: string;
8 | permissions: string[];
9 | roles: string[];
10 | }
11 |
12 | export type UsersStore = Map
13 |
14 | export type RefreshTokensStore = Map
15 |
16 | export type DecodedToken = {
17 | sub: string;
18 | }
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | /* Visit https://aka.ms/tsconfig.json to read more about this file */
4 |
5 | /* Basic Options */
6 | // "incremental": true, /* Enable incremental compilation */
7 | "target": "es2015", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */
8 | "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */
9 | // "lib": [], /* Specify library files to be included in the compilation. */
10 | // "allowJs": true, /* Allow javascript files to be compiled. */
11 | // "checkJs": true, /* Report errors in .js files. */
12 | // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', 'react', 'react-jsx' or 'react-jsxdev'. */
13 | // "declaration": true, /* Generates corresponding '.d.ts' file. */
14 | // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */
15 | // "sourceMap": true, /* Generates corresponding '.map' file. */
16 | // "outFile": "./", /* Concatenate and emit output to single file. */
17 | // "outDir": "./", /* Redirect output structure to the directory. */
18 | // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
19 | // "composite": true, /* Enable project compilation */
20 | // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */
21 | // "removeComments": true, /* Do not emit comments to output. */
22 | // "noEmit": true, /* Do not emit outputs. */
23 | // "importHelpers": true, /* Import emit helpers from 'tslib'. */
24 | // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */
25 | // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */
26 |
27 | /* Strict Type-Checking Options */
28 | "strict": true, /* Enable all strict type-checking options. */
29 | // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */
30 | // "strictNullChecks": true, /* Enable strict null checks. */
31 | // "strictFunctionTypes": true, /* Enable strict checking of function types. */
32 | // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */
33 | // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */
34 | // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */
35 | // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */
36 |
37 | /* Additional Checks */
38 | // "noUnusedLocals": true, /* Report errors on unused locals. */
39 | // "noUnusedParameters": true, /* Report errors on unused parameters. */
40 | // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */
41 | // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */
42 | // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */
43 | // "noPropertyAccessFromIndexSignature": true, /* Require undeclared properties from index signatures to use element accesses. */
44 |
45 | /* Module Resolution Options */
46 | // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
47 | // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */
48 | // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */
49 | // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */
50 | // "typeRoots": [], /* List of folders to include type definitions from. */
51 | // "types": [], /* Type declaration files to be included in compilation. */
52 | // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */
53 | "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
54 | // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */
55 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
56 |
57 | /* Source Map Options */
58 | // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
59 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
60 | // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */
61 | // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
62 |
63 | /* Experimental Options */
64 | // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
65 | // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
66 |
67 | /* Advanced Options */
68 | "skipLibCheck": true, /* Skip type checking of declaration files. */
69 | "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@types/body-parser@*":
6 | version "1.19.0"
7 | resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.0.tgz#0685b3c47eb3006ffed117cdd55164b61f80538f"
8 | integrity sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==
9 | dependencies:
10 | "@types/connect" "*"
11 | "@types/node" "*"
12 |
13 | "@types/connect@*":
14 | version "3.4.34"
15 | resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.34.tgz#170a40223a6d666006d93ca128af2beb1d9b1901"
16 | integrity sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ==
17 | dependencies:
18 | "@types/node" "*"
19 |
20 | "@types/cors@^2.8.10":
21 | version "2.8.10"
22 | resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.10.tgz#61cc8469849e5bcdd0c7044122265c39cec10cf4"
23 | integrity sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ==
24 |
25 | "@types/express-serve-static-core@^4.17.18":
26 | version "4.17.19"
27 | resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.19.tgz#00acfc1632e729acac4f1530e9e16f6dd1508a1d"
28 | integrity sha512-DJOSHzX7pCiSElWaGR8kCprwibCB/3yW6vcT8VG3P0SJjnv19gnWG/AZMfM60Xj/YJIp/YCaDHyvzsFVeniARA==
29 | dependencies:
30 | "@types/node" "*"
31 | "@types/qs" "*"
32 | "@types/range-parser" "*"
33 |
34 | "@types/express@^4.17.11":
35 | version "4.17.11"
36 | resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.11.tgz#debe3caa6f8e5fcda96b47bd54e2f40c4ee59545"
37 | integrity sha512-no+R6rW60JEc59977wIxreQVsIEOAYwgCqldrA/vkpCnbD7MqTefO97lmoBe4WE0F156bC4uLSP1XHDOySnChg==
38 | dependencies:
39 | "@types/body-parser" "*"
40 | "@types/express-serve-static-core" "^4.17.18"
41 | "@types/qs" "*"
42 | "@types/serve-static" "*"
43 |
44 | "@types/jsonwebtoken@^8.5.1":
45 | version "8.5.1"
46 | resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#56958cb2d80f6d74352bd2e501a018e2506a8a84"
47 | integrity sha512-rNAPdomlIUX0i0cg2+I+Q1wOUr531zHBQ+cV/28PJ39bSPKjahatZZ2LMuhiguETkCgLVzfruw/ZvNMNkKoSzw==
48 | dependencies:
49 | "@types/node" "*"
50 |
51 | "@types/mime@^1":
52 | version "1.3.2"
53 | resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a"
54 | integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==
55 |
56 | "@types/node@*":
57 | version "14.14.41"
58 | resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.41.tgz#d0b939d94c1d7bd53d04824af45f1139b8c45615"
59 | integrity sha512-dueRKfaJL4RTtSa7bWeTK1M+VH+Gns73oCgzvYfHZywRCoPSd8EkXBL0mZ9unPTveBn+D9phZBaxuzpwjWkW0g==
60 |
61 | "@types/qs@*":
62 | version "6.9.6"
63 | resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.6.tgz#df9c3c8b31a247ec315e6996566be3171df4b3b1"
64 | integrity sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA==
65 |
66 | "@types/range-parser@*":
67 | version "1.2.3"
68 | resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c"
69 | integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==
70 |
71 | "@types/serve-static@*":
72 | version "1.13.9"
73 | resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.9.tgz#aacf28a85a05ee29a11fb7c3ead935ac56f33e4e"
74 | integrity sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA==
75 | dependencies:
76 | "@types/mime" "^1"
77 | "@types/node" "*"
78 |
79 | "@types/strip-bom@^3.0.0":
80 | version "3.0.0"
81 | resolved "https://registry.yarnpkg.com/@types/strip-bom/-/strip-bom-3.0.0.tgz#14a8ec3956c2e81edb7520790aecf21c290aebd2"
82 | integrity sha1-FKjsOVbC6B7bdSB5CuzyHCkK69I=
83 |
84 | "@types/strip-json-comments@0.0.30":
85 | version "0.0.30"
86 | resolved "https://registry.yarnpkg.com/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz#9aa30c04db212a9a0649d6ae6fd50accc40748a1"
87 | integrity sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==
88 |
89 | "@types/uuid@^8.3.0":
90 | version "8.3.0"
91 | resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.0.tgz#215c231dff736d5ba92410e6d602050cce7e273f"
92 | integrity sha512-eQ9qFW/fhfGJF8WKHGEHZEyVWfZxrT+6CLIJGBcZPfxUh/+BnEj+UCGYMlr9qZuX/2AltsvwrGqp0LhEW8D0zQ==
93 |
94 | accepts@~1.3.7:
95 | version "1.3.7"
96 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
97 | integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==
98 | dependencies:
99 | mime-types "~2.1.24"
100 | negotiator "0.6.2"
101 |
102 | anymatch@~3.1.1:
103 | version "3.1.2"
104 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
105 | integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
106 | dependencies:
107 | normalize-path "^3.0.0"
108 | picomatch "^2.0.4"
109 |
110 | arg@^4.1.0:
111 | version "4.1.3"
112 | resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089"
113 | integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==
114 |
115 | array-find-index@^1.0.1:
116 | version "1.0.2"
117 | resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
118 | integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=
119 |
120 | array-flatten@1.1.1:
121 | version "1.1.1"
122 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
123 | integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=
124 |
125 | balanced-match@^1.0.0:
126 | version "1.0.2"
127 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
128 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
129 |
130 | binary-extensions@^2.0.0:
131 | version "2.2.0"
132 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
133 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
134 |
135 | body-parser@1.19.0:
136 | version "1.19.0"
137 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a"
138 | integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==
139 | dependencies:
140 | bytes "3.1.0"
141 | content-type "~1.0.4"
142 | debug "2.6.9"
143 | depd "~1.1.2"
144 | http-errors "1.7.2"
145 | iconv-lite "0.4.24"
146 | on-finished "~2.3.0"
147 | qs "6.7.0"
148 | raw-body "2.4.0"
149 | type-is "~1.6.17"
150 |
151 | brace-expansion@^1.1.7:
152 | version "1.1.11"
153 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
154 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
155 | dependencies:
156 | balanced-match "^1.0.0"
157 | concat-map "0.0.1"
158 |
159 | braces@~3.0.2:
160 | version "3.0.2"
161 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
162 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
163 | dependencies:
164 | fill-range "^7.0.1"
165 |
166 | buffer-equal-constant-time@1.0.1:
167 | version "1.0.1"
168 | resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819"
169 | integrity sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=
170 |
171 | buffer-from@^1.0.0:
172 | version "1.1.1"
173 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
174 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
175 |
176 | bytes@3.1.0:
177 | version "3.1.0"
178 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6"
179 | integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==
180 |
181 | camelcase-keys@^2.0.0:
182 | version "2.1.0"
183 | resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
184 | integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc=
185 | dependencies:
186 | camelcase "^2.0.0"
187 | map-obj "^1.0.0"
188 |
189 | camelcase@^2.0.0:
190 | version "2.1.1"
191 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
192 | integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=
193 |
194 | chokidar@^3.5.1:
195 | version "3.5.1"
196 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a"
197 | integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==
198 | dependencies:
199 | anymatch "~3.1.1"
200 | braces "~3.0.2"
201 | glob-parent "~5.1.0"
202 | is-binary-path "~2.1.0"
203 | is-glob "~4.0.1"
204 | normalize-path "~3.0.0"
205 | readdirp "~3.5.0"
206 | optionalDependencies:
207 | fsevents "~2.3.1"
208 |
209 | concat-map@0.0.1:
210 | version "0.0.1"
211 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
212 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
213 |
214 | content-disposition@0.5.3:
215 | version "0.5.3"
216 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd"
217 | integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==
218 | dependencies:
219 | safe-buffer "5.1.2"
220 |
221 | content-type@~1.0.4:
222 | version "1.0.4"
223 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
224 | integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
225 |
226 | cookie-signature@1.0.6:
227 | version "1.0.6"
228 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
229 | integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw=
230 |
231 | cookie@0.4.0:
232 | version "0.4.0"
233 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba"
234 | integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==
235 |
236 | cors@^2.8.5:
237 | version "2.8.5"
238 | resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29"
239 | integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==
240 | dependencies:
241 | object-assign "^4"
242 | vary "^1"
243 |
244 | create-require@^1.1.0:
245 | version "1.1.1"
246 | resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333"
247 | integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==
248 |
249 | currently-unhandled@^0.4.1:
250 | version "0.4.1"
251 | resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
252 | integrity sha1-mI3zP+qxke95mmE2nddsF635V+o=
253 | dependencies:
254 | array-find-index "^1.0.1"
255 |
256 | dateformat@~1.0.4-1.2.3:
257 | version "1.0.12"
258 | resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9"
259 | integrity sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=
260 | dependencies:
261 | get-stdin "^4.0.1"
262 | meow "^3.3.0"
263 |
264 | debug@2.6.9:
265 | version "2.6.9"
266 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
267 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
268 | dependencies:
269 | ms "2.0.0"
270 |
271 | decamelize@^1.1.2:
272 | version "1.2.0"
273 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
274 | integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
275 |
276 | depd@~1.1.2:
277 | version "1.1.2"
278 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
279 | integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
280 |
281 | destroy@~1.0.4:
282 | version "1.0.4"
283 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
284 | integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
285 |
286 | diff@^4.0.1:
287 | version "4.0.2"
288 | resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
289 | integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
290 |
291 | dynamic-dedupe@^0.3.0:
292 | version "0.3.0"
293 | resolved "https://registry.yarnpkg.com/dynamic-dedupe/-/dynamic-dedupe-0.3.0.tgz#06e44c223f5e4e94d78ef9db23a6515ce2f962a1"
294 | integrity sha1-BuRMIj9eTpTXjvnbI6ZRXOL5YqE=
295 | dependencies:
296 | xtend "^4.0.0"
297 |
298 | ecdsa-sig-formatter@1.0.11:
299 | version "1.0.11"
300 | resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf"
301 | integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==
302 | dependencies:
303 | safe-buffer "^5.0.1"
304 |
305 | ee-first@1.1.1:
306 | version "1.1.1"
307 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
308 | integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
309 |
310 | encodeurl@~1.0.2:
311 | version "1.0.2"
312 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
313 | integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
314 |
315 | error-ex@^1.2.0:
316 | version "1.3.2"
317 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
318 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
319 | dependencies:
320 | is-arrayish "^0.2.1"
321 |
322 | escape-html@~1.0.3:
323 | version "1.0.3"
324 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
325 | integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
326 |
327 | etag@~1.8.1:
328 | version "1.8.1"
329 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
330 | integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
331 |
332 | express@^4.17.1:
333 | version "4.17.1"
334 | resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134"
335 | integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==
336 | dependencies:
337 | accepts "~1.3.7"
338 | array-flatten "1.1.1"
339 | body-parser "1.19.0"
340 | content-disposition "0.5.3"
341 | content-type "~1.0.4"
342 | cookie "0.4.0"
343 | cookie-signature "1.0.6"
344 | debug "2.6.9"
345 | depd "~1.1.2"
346 | encodeurl "~1.0.2"
347 | escape-html "~1.0.3"
348 | etag "~1.8.1"
349 | finalhandler "~1.1.2"
350 | fresh "0.5.2"
351 | merge-descriptors "1.0.1"
352 | methods "~1.1.2"
353 | on-finished "~2.3.0"
354 | parseurl "~1.3.3"
355 | path-to-regexp "0.1.7"
356 | proxy-addr "~2.0.5"
357 | qs "6.7.0"
358 | range-parser "~1.2.1"
359 | safe-buffer "5.1.2"
360 | send "0.17.1"
361 | serve-static "1.14.1"
362 | setprototypeof "1.1.1"
363 | statuses "~1.5.0"
364 | type-is "~1.6.18"
365 | utils-merge "1.0.1"
366 | vary "~1.1.2"
367 |
368 | fill-range@^7.0.1:
369 | version "7.0.1"
370 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
371 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
372 | dependencies:
373 | to-regex-range "^5.0.1"
374 |
375 | finalhandler@~1.1.2:
376 | version "1.1.2"
377 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d"
378 | integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==
379 | dependencies:
380 | debug "2.6.9"
381 | encodeurl "~1.0.2"
382 | escape-html "~1.0.3"
383 | on-finished "~2.3.0"
384 | parseurl "~1.3.3"
385 | statuses "~1.5.0"
386 | unpipe "~1.0.0"
387 |
388 | find-up@^1.0.0:
389 | version "1.1.2"
390 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
391 | integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=
392 | dependencies:
393 | path-exists "^2.0.0"
394 | pinkie-promise "^2.0.0"
395 |
396 | forwarded@~0.1.2:
397 | version "0.1.2"
398 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
399 | integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=
400 |
401 | fresh@0.5.2:
402 | version "0.5.2"
403 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
404 | integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
405 |
406 | fs.realpath@^1.0.0:
407 | version "1.0.0"
408 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
409 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
410 |
411 | fsevents@~2.3.1:
412 | version "2.3.2"
413 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
414 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
415 |
416 | function-bind@^1.1.1:
417 | version "1.1.1"
418 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
419 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
420 |
421 | get-stdin@^4.0.1:
422 | version "4.0.1"
423 | resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
424 | integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=
425 |
426 | glob-parent@~5.1.0:
427 | version "5.1.2"
428 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
429 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
430 | dependencies:
431 | is-glob "^4.0.1"
432 |
433 | glob@^7.1.3:
434 | version "7.1.6"
435 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
436 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
437 | dependencies:
438 | fs.realpath "^1.0.0"
439 | inflight "^1.0.4"
440 | inherits "2"
441 | minimatch "^3.0.4"
442 | once "^1.3.0"
443 | path-is-absolute "^1.0.0"
444 |
445 | graceful-fs@^4.1.2:
446 | version "4.2.6"
447 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee"
448 | integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==
449 |
450 | has@^1.0.3:
451 | version "1.0.3"
452 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
453 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
454 | dependencies:
455 | function-bind "^1.1.1"
456 |
457 | hosted-git-info@^2.1.4:
458 | version "2.8.9"
459 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9"
460 | integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==
461 |
462 | http-errors@1.7.2:
463 | version "1.7.2"
464 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f"
465 | integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==
466 | dependencies:
467 | depd "~1.1.2"
468 | inherits "2.0.3"
469 | setprototypeof "1.1.1"
470 | statuses ">= 1.5.0 < 2"
471 | toidentifier "1.0.0"
472 |
473 | http-errors@~1.7.2:
474 | version "1.7.3"
475 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06"
476 | integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==
477 | dependencies:
478 | depd "~1.1.2"
479 | inherits "2.0.4"
480 | setprototypeof "1.1.1"
481 | statuses ">= 1.5.0 < 2"
482 | toidentifier "1.0.0"
483 |
484 | iconv-lite@0.4.24:
485 | version "0.4.24"
486 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
487 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
488 | dependencies:
489 | safer-buffer ">= 2.1.2 < 3"
490 |
491 | indent-string@^2.1.0:
492 | version "2.1.0"
493 | resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
494 | integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=
495 | dependencies:
496 | repeating "^2.0.0"
497 |
498 | inflight@^1.0.4:
499 | version "1.0.6"
500 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
501 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
502 | dependencies:
503 | once "^1.3.0"
504 | wrappy "1"
505 |
506 | inherits@2, inherits@2.0.4:
507 | version "2.0.4"
508 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
509 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
510 |
511 | inherits@2.0.3:
512 | version "2.0.3"
513 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
514 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
515 |
516 | ipaddr.js@1.9.1:
517 | version "1.9.1"
518 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
519 | integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
520 |
521 | is-arrayish@^0.2.1:
522 | version "0.2.1"
523 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
524 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
525 |
526 | is-binary-path@~2.1.0:
527 | version "2.1.0"
528 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
529 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
530 | dependencies:
531 | binary-extensions "^2.0.0"
532 |
533 | is-core-module@^2.2.0:
534 | version "2.2.0"
535 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a"
536 | integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==
537 | dependencies:
538 | has "^1.0.3"
539 |
540 | is-extglob@^2.1.1:
541 | version "2.1.1"
542 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
543 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
544 |
545 | is-finite@^1.0.0:
546 | version "1.1.0"
547 | resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3"
548 | integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==
549 |
550 | is-glob@^4.0.1, is-glob@~4.0.1:
551 | version "4.0.1"
552 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
553 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
554 | dependencies:
555 | is-extglob "^2.1.1"
556 |
557 | is-number@^7.0.0:
558 | version "7.0.0"
559 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
560 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
561 |
562 | is-utf8@^0.2.0:
563 | version "0.2.1"
564 | resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
565 | integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
566 |
567 | jsonwebtoken@^8.5.1:
568 | version "8.5.1"
569 | resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d"
570 | integrity sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==
571 | dependencies:
572 | jws "^3.2.2"
573 | lodash.includes "^4.3.0"
574 | lodash.isboolean "^3.0.3"
575 | lodash.isinteger "^4.0.4"
576 | lodash.isnumber "^3.0.3"
577 | lodash.isplainobject "^4.0.6"
578 | lodash.isstring "^4.0.1"
579 | lodash.once "^4.0.0"
580 | ms "^2.1.1"
581 | semver "^5.6.0"
582 |
583 | jwa@^1.4.1:
584 | version "1.4.1"
585 | resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a"
586 | integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==
587 | dependencies:
588 | buffer-equal-constant-time "1.0.1"
589 | ecdsa-sig-formatter "1.0.11"
590 | safe-buffer "^5.0.1"
591 |
592 | jws@^3.2.2:
593 | version "3.2.2"
594 | resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304"
595 | integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==
596 | dependencies:
597 | jwa "^1.4.1"
598 | safe-buffer "^5.0.1"
599 |
600 | jwt-decode@^3.1.2:
601 | version "3.1.2"
602 | resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-3.1.2.tgz#3fb319f3675a2df0c2895c8f5e9fa4b67b04ed59"
603 | integrity sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==
604 |
605 | load-json-file@^1.0.0:
606 | version "1.1.0"
607 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
608 | integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=
609 | dependencies:
610 | graceful-fs "^4.1.2"
611 | parse-json "^2.2.0"
612 | pify "^2.0.0"
613 | pinkie-promise "^2.0.0"
614 | strip-bom "^2.0.0"
615 |
616 | lodash.includes@^4.3.0:
617 | version "4.3.0"
618 | resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f"
619 | integrity sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=
620 |
621 | lodash.isboolean@^3.0.3:
622 | version "3.0.3"
623 | resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6"
624 | integrity sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=
625 |
626 | lodash.isinteger@^4.0.4:
627 | version "4.0.4"
628 | resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343"
629 | integrity sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=
630 |
631 | lodash.isnumber@^3.0.3:
632 | version "3.0.3"
633 | resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc"
634 | integrity sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=
635 |
636 | lodash.isplainobject@^4.0.6:
637 | version "4.0.6"
638 | resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb"
639 | integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=
640 |
641 | lodash.isstring@^4.0.1:
642 | version "4.0.1"
643 | resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451"
644 | integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=
645 |
646 | lodash.once@^4.0.0:
647 | version "4.1.1"
648 | resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac"
649 | integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=
650 |
651 | loud-rejection@^1.0.0:
652 | version "1.6.0"
653 | resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
654 | integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=
655 | dependencies:
656 | currently-unhandled "^0.4.1"
657 | signal-exit "^3.0.0"
658 |
659 | make-error@^1.1.1:
660 | version "1.3.6"
661 | resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
662 | integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
663 |
664 | map-obj@^1.0.0, map-obj@^1.0.1:
665 | version "1.0.1"
666 | resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
667 | integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=
668 |
669 | media-typer@0.3.0:
670 | version "0.3.0"
671 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
672 | integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
673 |
674 | meow@^3.3.0:
675 | version "3.7.0"
676 | resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
677 | integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=
678 | dependencies:
679 | camelcase-keys "^2.0.0"
680 | decamelize "^1.1.2"
681 | loud-rejection "^1.0.0"
682 | map-obj "^1.0.1"
683 | minimist "^1.1.3"
684 | normalize-package-data "^2.3.4"
685 | object-assign "^4.0.1"
686 | read-pkg-up "^1.0.1"
687 | redent "^1.0.0"
688 | trim-newlines "^1.0.0"
689 |
690 | merge-descriptors@1.0.1:
691 | version "1.0.1"
692 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
693 | integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=
694 |
695 | methods@~1.1.2:
696 | version "1.1.2"
697 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
698 | integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
699 |
700 | mime-db@1.47.0:
701 | version "1.47.0"
702 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c"
703 | integrity sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==
704 |
705 | mime-types@~2.1.24:
706 | version "2.1.30"
707 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.30.tgz#6e7be8b4c479825f85ed6326695db73f9305d62d"
708 | integrity sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==
709 | dependencies:
710 | mime-db "1.47.0"
711 |
712 | mime@1.6.0:
713 | version "1.6.0"
714 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
715 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
716 |
717 | minimatch@^3.0.4:
718 | version "3.0.4"
719 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
720 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
721 | dependencies:
722 | brace-expansion "^1.1.7"
723 |
724 | minimist@^1.1.3, minimist@^1.2.5:
725 | version "1.2.5"
726 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
727 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
728 |
729 | mkdirp@^1.0.4:
730 | version "1.0.4"
731 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
732 | integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
733 |
734 | ms@2.0.0:
735 | version "2.0.0"
736 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
737 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
738 |
739 | ms@2.1.1:
740 | version "2.1.1"
741 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
742 | integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
743 |
744 | ms@^2.1.1:
745 | version "2.1.3"
746 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
747 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
748 |
749 | negotiator@0.6.2:
750 | version "0.6.2"
751 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
752 | integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
753 |
754 | normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
755 | version "2.5.0"
756 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
757 | integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
758 | dependencies:
759 | hosted-git-info "^2.1.4"
760 | resolve "^1.10.0"
761 | semver "2 || 3 || 4 || 5"
762 | validate-npm-package-license "^3.0.1"
763 |
764 | normalize-path@^3.0.0, normalize-path@~3.0.0:
765 | version "3.0.0"
766 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
767 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
768 |
769 | object-assign@^4, object-assign@^4.0.1:
770 | version "4.1.1"
771 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
772 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
773 |
774 | on-finished@~2.3.0:
775 | version "2.3.0"
776 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
777 | integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
778 | dependencies:
779 | ee-first "1.1.1"
780 |
781 | once@^1.3.0:
782 | version "1.4.0"
783 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
784 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
785 | dependencies:
786 | wrappy "1"
787 |
788 | parse-json@^2.2.0:
789 | version "2.2.0"
790 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
791 | integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
792 | dependencies:
793 | error-ex "^1.2.0"
794 |
795 | parseurl@~1.3.3:
796 | version "1.3.3"
797 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
798 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
799 |
800 | path-exists@^2.0.0:
801 | version "2.1.0"
802 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
803 | integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=
804 | dependencies:
805 | pinkie-promise "^2.0.0"
806 |
807 | path-is-absolute@^1.0.0:
808 | version "1.0.1"
809 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
810 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
811 |
812 | path-parse@^1.0.6:
813 | version "1.0.6"
814 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
815 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
816 |
817 | path-to-regexp@0.1.7:
818 | version "0.1.7"
819 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
820 | integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=
821 |
822 | path-type@^1.0.0:
823 | version "1.1.0"
824 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
825 | integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=
826 | dependencies:
827 | graceful-fs "^4.1.2"
828 | pify "^2.0.0"
829 | pinkie-promise "^2.0.0"
830 |
831 | picomatch@^2.0.4, picomatch@^2.2.1:
832 | version "2.2.3"
833 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.3.tgz#465547f359ccc206d3c48e46a1bcb89bf7ee619d"
834 | integrity sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==
835 |
836 | pify@^2.0.0:
837 | version "2.3.0"
838 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
839 | integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
840 |
841 | pinkie-promise@^2.0.0:
842 | version "2.0.1"
843 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
844 | integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o=
845 | dependencies:
846 | pinkie "^2.0.0"
847 |
848 | pinkie@^2.0.0:
849 | version "2.0.4"
850 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
851 | integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
852 |
853 | proxy-addr@~2.0.5:
854 | version "2.0.6"
855 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf"
856 | integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==
857 | dependencies:
858 | forwarded "~0.1.2"
859 | ipaddr.js "1.9.1"
860 |
861 | qs@6.7.0:
862 | version "6.7.0"
863 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
864 | integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==
865 |
866 | range-parser@~1.2.1:
867 | version "1.2.1"
868 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
869 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
870 |
871 | raw-body@2.4.0:
872 | version "2.4.0"
873 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332"
874 | integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==
875 | dependencies:
876 | bytes "3.1.0"
877 | http-errors "1.7.2"
878 | iconv-lite "0.4.24"
879 | unpipe "1.0.0"
880 |
881 | read-pkg-up@^1.0.1:
882 | version "1.0.1"
883 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
884 | integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=
885 | dependencies:
886 | find-up "^1.0.0"
887 | read-pkg "^1.0.0"
888 |
889 | read-pkg@^1.0.0:
890 | version "1.1.0"
891 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
892 | integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=
893 | dependencies:
894 | load-json-file "^1.0.0"
895 | normalize-package-data "^2.3.2"
896 | path-type "^1.0.0"
897 |
898 | readdirp@~3.5.0:
899 | version "3.5.0"
900 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e"
901 | integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==
902 | dependencies:
903 | picomatch "^2.2.1"
904 |
905 | redent@^1.0.0:
906 | version "1.0.0"
907 | resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"
908 | integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=
909 | dependencies:
910 | indent-string "^2.1.0"
911 | strip-indent "^1.0.1"
912 |
913 | repeating@^2.0.0:
914 | version "2.0.1"
915 | resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
916 | integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=
917 | dependencies:
918 | is-finite "^1.0.0"
919 |
920 | resolve@^1.0.0, resolve@^1.10.0:
921 | version "1.20.0"
922 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
923 | integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==
924 | dependencies:
925 | is-core-module "^2.2.0"
926 | path-parse "^1.0.6"
927 |
928 | rimraf@^2.6.1:
929 | version "2.7.1"
930 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
931 | integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
932 | dependencies:
933 | glob "^7.1.3"
934 |
935 | safe-buffer@5.1.2:
936 | version "5.1.2"
937 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
938 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
939 |
940 | safe-buffer@^5.0.1:
941 | version "5.2.1"
942 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
943 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
944 |
945 | "safer-buffer@>= 2.1.2 < 3":
946 | version "2.1.2"
947 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
948 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
949 |
950 | "semver@2 || 3 || 4 || 5", semver@^5.6.0:
951 | version "5.7.1"
952 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
953 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
954 |
955 | send@0.17.1:
956 | version "0.17.1"
957 | resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8"
958 | integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==
959 | dependencies:
960 | debug "2.6.9"
961 | depd "~1.1.2"
962 | destroy "~1.0.4"
963 | encodeurl "~1.0.2"
964 | escape-html "~1.0.3"
965 | etag "~1.8.1"
966 | fresh "0.5.2"
967 | http-errors "~1.7.2"
968 | mime "1.6.0"
969 | ms "2.1.1"
970 | on-finished "~2.3.0"
971 | range-parser "~1.2.1"
972 | statuses "~1.5.0"
973 |
974 | serve-static@1.14.1:
975 | version "1.14.1"
976 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9"
977 | integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==
978 | dependencies:
979 | encodeurl "~1.0.2"
980 | escape-html "~1.0.3"
981 | parseurl "~1.3.3"
982 | send "0.17.1"
983 |
984 | setprototypeof@1.1.1:
985 | version "1.1.1"
986 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"
987 | integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==
988 |
989 | signal-exit@^3.0.0:
990 | version "3.0.3"
991 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
992 | integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
993 |
994 | source-map-support@^0.5.12, source-map-support@^0.5.17:
995 | version "0.5.19"
996 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61"
997 | integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==
998 | dependencies:
999 | buffer-from "^1.0.0"
1000 | source-map "^0.6.0"
1001 |
1002 | source-map@^0.6.0:
1003 | version "0.6.1"
1004 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
1005 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
1006 |
1007 | spdx-correct@^3.0.0:
1008 | version "3.1.1"
1009 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9"
1010 | integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==
1011 | dependencies:
1012 | spdx-expression-parse "^3.0.0"
1013 | spdx-license-ids "^3.0.0"
1014 |
1015 | spdx-exceptions@^2.1.0:
1016 | version "2.3.0"
1017 | resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d"
1018 | integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==
1019 |
1020 | spdx-expression-parse@^3.0.0:
1021 | version "3.0.1"
1022 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679"
1023 | integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==
1024 | dependencies:
1025 | spdx-exceptions "^2.1.0"
1026 | spdx-license-ids "^3.0.0"
1027 |
1028 | spdx-license-ids@^3.0.0:
1029 | version "3.0.7"
1030 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65"
1031 | integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==
1032 |
1033 | "statuses@>= 1.5.0 < 2", statuses@~1.5.0:
1034 | version "1.5.0"
1035 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
1036 | integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
1037 |
1038 | strip-bom@^2.0.0:
1039 | version "2.0.0"
1040 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
1041 | integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=
1042 | dependencies:
1043 | is-utf8 "^0.2.0"
1044 |
1045 | strip-bom@^3.0.0:
1046 | version "3.0.0"
1047 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
1048 | integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=
1049 |
1050 | strip-indent@^1.0.1:
1051 | version "1.0.1"
1052 | resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2"
1053 | integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=
1054 | dependencies:
1055 | get-stdin "^4.0.1"
1056 |
1057 | strip-json-comments@^2.0.0:
1058 | version "2.0.1"
1059 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
1060 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
1061 |
1062 | to-regex-range@^5.0.1:
1063 | version "5.0.1"
1064 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
1065 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
1066 | dependencies:
1067 | is-number "^7.0.0"
1068 |
1069 | toidentifier@1.0.0:
1070 | version "1.0.0"
1071 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
1072 | integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
1073 |
1074 | tree-kill@^1.2.2:
1075 | version "1.2.2"
1076 | resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc"
1077 | integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==
1078 |
1079 | trim-newlines@^1.0.0:
1080 | version "1.0.0"
1081 | resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
1082 | integrity sha1-WIeWa7WCpFA6QetST301ARgVphM=
1083 |
1084 | ts-node-dev@^1.1.6:
1085 | version "1.1.6"
1086 | resolved "https://registry.yarnpkg.com/ts-node-dev/-/ts-node-dev-1.1.6.tgz#ee2113718cb5a92c1c8f4229123ad6afbeba01f8"
1087 | integrity sha512-RTUi7mHMNQospArGz07KiraQcdgUVNXKsgO2HAi7FoiyPMdTDqdniB6K1dqyaIxT7c9v/VpSbfBZPS6uVpaFLQ==
1088 | dependencies:
1089 | chokidar "^3.5.1"
1090 | dateformat "~1.0.4-1.2.3"
1091 | dynamic-dedupe "^0.3.0"
1092 | minimist "^1.2.5"
1093 | mkdirp "^1.0.4"
1094 | resolve "^1.0.0"
1095 | rimraf "^2.6.1"
1096 | source-map-support "^0.5.12"
1097 | tree-kill "^1.2.2"
1098 | ts-node "^9.0.0"
1099 | tsconfig "^7.0.0"
1100 |
1101 | ts-node@^9.0.0:
1102 | version "9.1.1"
1103 | resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.1.1.tgz#51a9a450a3e959401bda5f004a72d54b936d376d"
1104 | integrity sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==
1105 | dependencies:
1106 | arg "^4.1.0"
1107 | create-require "^1.1.0"
1108 | diff "^4.0.1"
1109 | make-error "^1.1.1"
1110 | source-map-support "^0.5.17"
1111 | yn "3.1.1"
1112 |
1113 | tsconfig@^7.0.0:
1114 | version "7.0.0"
1115 | resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-7.0.0.tgz#84538875a4dc216e5c4a5432b3a4dec3d54e91b7"
1116 | integrity sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==
1117 | dependencies:
1118 | "@types/strip-bom" "^3.0.0"
1119 | "@types/strip-json-comments" "0.0.30"
1120 | strip-bom "^3.0.0"
1121 | strip-json-comments "^2.0.0"
1122 |
1123 | type-is@~1.6.17, type-is@~1.6.18:
1124 | version "1.6.18"
1125 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
1126 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
1127 | dependencies:
1128 | media-typer "0.3.0"
1129 | mime-types "~2.1.24"
1130 |
1131 | typescript@^4.2.4:
1132 | version "4.2.4"
1133 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.2.4.tgz#8610b59747de028fda898a8aef0e103f156d0961"
1134 | integrity sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==
1135 |
1136 | unpipe@1.0.0, unpipe@~1.0.0:
1137 | version "1.0.0"
1138 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
1139 | integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
1140 |
1141 | utils-merge@1.0.1:
1142 | version "1.0.1"
1143 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
1144 | integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
1145 |
1146 | uuid@^8.3.2:
1147 | version "8.3.2"
1148 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
1149 | integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
1150 |
1151 | validate-npm-package-license@^3.0.1:
1152 | version "3.0.4"
1153 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
1154 | integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
1155 | dependencies:
1156 | spdx-correct "^3.0.0"
1157 | spdx-expression-parse "^3.0.0"
1158 |
1159 | vary@^1, vary@~1.1.2:
1160 | version "1.1.2"
1161 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
1162 | integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
1163 |
1164 | wrappy@1:
1165 | version "1.0.2"
1166 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
1167 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
1168 |
1169 | xtend@^4.0.0:
1170 | version "4.0.2"
1171 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
1172 | integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
1173 |
1174 | yn@3.1.1:
1175 | version "3.1.1"
1176 | resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
1177 | integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==
1178 |
--------------------------------------------------------------------------------