├── .eslintignore ├── .eslintrc ├── .gitignore ├── .npmignore ├── .npmrc ├── .nvmrc ├── .prettierrc.js ├── .yarnrc ├── LICENSE ├── README.md ├── package.json ├── src ├── fixtures.ts ├── index.ts ├── remarkable.test.ts ├── remarkable.ts ├── types.ts └── utils.ts ├── tsconfig.json ├── typings └── index.d.ts └── yarn.lock /.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "root": true, 3 | "parser": "@typescript-eslint/parser", 4 | "plugins": [ 5 | "@typescript-eslint" 6 | ], 7 | "extends": [ 8 | "eslint:recommended", 9 | "plugin:@typescript-eslint/eslint-recommended", 10 | "plugin:@typescript-eslint/recommended", 11 | "prettier/@typescript-eslint", // Uses eslint-config-prettier to disable ESLint rules from @typescript-eslint/eslint-plugin that would conflict with prettier 12 | "plugin:prettier/recommended" // Enables eslint-plugin-prettier and eslint-config-prettier. This will display prettier errors as ESLint errors. Make sure this is always the last configuration in the extends array. 13 | ] 14 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | lib-cov 2 | *.seed 3 | *.log 4 | *.csv 5 | *.dat 6 | *.out 7 | *.pid 8 | *.gz 9 | *.swp 10 | 11 | pids 12 | logs 13 | results 14 | tmp 15 | 16 | # Coverage reports 17 | coverage 18 | 19 | # API keys and secrets 20 | .env 21 | 22 | # Dependency directory 23 | node_modules 24 | bower_components 25 | 26 | # Editors 27 | .idea 28 | *.iml 29 | .vscode 30 | 31 | # OS metadata 32 | .DS_Store 33 | Thumbs.db 34 | 35 | # Ignore built ts files 36 | dist/**/* -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | lib-cov 2 | *.seed 3 | *.log 4 | *.csv 5 | *.dat 6 | *.out 7 | *.pid 8 | *.gz 9 | *.swp 10 | 11 | pids 12 | logs 13 | results 14 | tmp 15 | 16 | # Coverage reports 17 | coverage 18 | 19 | # API keys and secrets 20 | .env 21 | 22 | # Dependency directory 23 | node_modules 24 | bower_components 25 | 26 | # Editors 27 | .idea 28 | *.iml 29 | .vscode 30 | 31 | # OS metadata 32 | .DS_Store 33 | Thumbs.db -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | registry=https://registry.npmjs.org/ -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | v14.5.0 -------------------------------------------------------------------------------- /.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | semi: true, 3 | trailingComma: "all", 4 | singleQuote: true, 5 | printWidth: 120, 6 | tabWidth: 2 7 | }; -------------------------------------------------------------------------------- /.yarnrc: -------------------------------------------------------------------------------- 1 | registry "https://registry.yarnpkg.com" -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Benoit Sepe 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # reMarkable-typescript 2 | 3 | This project was inspired by the work of https://github.com/kevlened/remarkable-node, adding typing and new features like the upload of a document. 4 | 5 | Unofficial reMarkable api wrapper for node.js based on [these unofficial docs](https://github.com/splitbrain/ReMarkableAPI/wiki). 6 | This module is typed for TypeScript, but you can still use JavaScript with it. 7 | 8 | ## Installation 9 | 10 | ```bash 11 | yarn add remarkable-typescript 12 | # OR 13 | npm install remarkable-typescript 14 | ``` 15 | 16 | Then, go to [reMarkable's website](https://my.remarkable.com/connect/remarkable) to genereate a code to pair your reMarkable. This code is only available 5 minutes. 17 | 18 | ## Example 19 | 20 | ```ts 21 | import { Remarkable, ItemResponse } from 'remarkable-typescript'; 22 | // const { Remarkable, ItemResponse } = require('remarkable-typescript'); 23 | const fs = require('fs'); 24 | 25 | (async () => { 26 | /* 27 | * Create the reMarkable client 28 | * Params: { deviceToken?: string } 29 | * Returns: client: Remarkable 30 | */ 31 | const client = new Remarkable(); 32 | 33 | /* 34 | * Register your reMarkable and generate a device token. You must do this first to pair your device if you didn't specify a token. This may take a few seconds to complete. It seems that the deviceToken never expires. 35 | * Params: { code: string } 36 | * Returns: deviceToken: string 37 | */ 38 | const deviceToken = await client.register({ code: 'created code' }); 39 | 40 | // (optional) skip registration in the future with `new Remarkable({deviceToken})` 41 | console.log(deviceToken); 42 | 43 | /* 44 | * (Re)generate a token from the deviceToken. You MUST call this function after creating the client. This token, used to interact with storage, is different from the deviceToken. This function is automatically called in register(). This token expires. 45 | * Params: none 46 | * Returns: token: string 47 | */ 48 | await client.refreshToken(); 49 | 50 | /* 51 | * List all items, files and folders. 52 | * Params: none 53 | * Returns: ItemResponse[] 54 | */ 55 | const items = await client.getAllItems(); 56 | 57 | /* 58 | * Get an item by id 59 | * Params: id: string 60 | * Returns: ItemResponse | null 61 | */ 62 | const item = await client.getItemWithId('some uuid'); 63 | 64 | /* 65 | * Delete an item by is ID and document version 66 | * Params: id: string, version: number 67 | * Returns: success: boolean 68 | */ 69 | await client.deleteItem('some uuid', 1); 70 | 71 | const myPDF = fs.readFileSync('./my/PDF/location.pdf'); 72 | /* 73 | * Upload a PDF to your reMarkable 74 | * Params: name: string, file: Buffer 75 | * Returns: id: string 76 | */ 77 | const pdfUploadedId = await client.uploadPDF('name of PDF document', ID: '181a124b-bbdf-4fdd-8310-64fa87bc9c7f', pdfFileBuffer, /*optional UUID of parent folder*/); 78 | 79 | /* 80 | * Download a ZIP file to your reMarkable (with the annotations) 81 | * Params: id: string 82 | * Returns: Buffer 83 | */ 84 | const zipFile = await client.downloadZip(pdfUploadedId); 85 | 86 | /* 87 | * Upload a ZIP file to your reMarkable (must be a supported reMarkable format). You can generate the ID using uuidv4. 88 | * Params: name: string, id: string, zipFile: Buffer 89 | * Returns: id: string 90 | */ 91 | const zipFileId = await client.uploadZip('My document name', ID: 'f831481c-7d2d-4776-922d-36e708d9d680', zipFile); 92 | 93 | /* 94 | * Upload an ePub file to your reMarkable (must be a supported reMarkable format). You can generate the ID using uuidv4 or v5. v5 will deterministically generate a uuid based on name and namespace . 95 | * Params: name: string, id: string, epubFileBuffer: Buffer, parent?: string 96 | * Returns: id: string 97 | */ 98 | const epubDocId = await client.uploadEPUB('name of ePub document', ID: '181a124b-bbdf-4fdd-8310-64fa87bc9c7f', epubFileBuffer, /*optional UUID of parent folder*/); 99 | 100 | /* 101 | * Create a directory 102 | * Params: name: string, id: string, epubFileBuffer: Buffer, parent?: string 103 | * Returns: id: string 104 | */ 105 | const directoryId = await client.createDirectory('testDir2', id, ID: '702ba145-0a78-4e19-9324-6f8fb3da3c1a', /*optional UUID of parent folder*/); 106 | 107 | })(); 108 | ``` 109 | 110 | ## License 111 | 112 | MIT 113 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "remarkable-typescript", 3 | "version": "1.1.3", 4 | "description": "A typescript reMarkable Cloud API", 5 | "keywords": [], 6 | "author": "Benoît Sepe", 7 | "license": "MIT", 8 | "main": "./dist/src/index.js", 9 | "types": "./dist/src/index.d.ts", 10 | "scripts": { 11 | "prepare": "npx tsc", 12 | "start": "ts-node --files src/index.ts", 13 | "lint": "eslint src/** --ext .ts,.tsx", 14 | "lint:fix": "yarn lint --fix", 15 | "test": "TS_NODE_FILES=TRUE mocha -r ts-node/register src/**/*.test.ts" 16 | }, 17 | "devDependencies": { 18 | "@types/chai": "^4.2.11", 19 | "@types/chai-as-promised": "^7.1.3", 20 | "@types/mocha": "^8.0.0", 21 | "@types/sinon": "^9.0.4", 22 | "@types/uuid": "^8.0.0", 23 | "@typescript-eslint/eslint-plugin": "^3.6.1", 24 | "@typescript-eslint/parser": "^3.6.1", 25 | "chai": "^4.2.0", 26 | "chai-as-promised": "^7.1.1", 27 | "eslint": "^7.16.0", 28 | "eslint-config-prettier": "^6.11.0", 29 | "eslint-plugin-prettier": "^3.1.4", 30 | "mocha": "^8.2.1", 31 | "prettier": "^2.0.5", 32 | "sinon": "^9.0.2", 33 | "sinon-stub-promise": "^4.0.0", 34 | "ts-node": "^8.10.2", 35 | "typescript": "^3.9.7" 36 | }, 37 | "dependencies": { 38 | "getmac": "^5.11.0", 39 | "got": "^11.5.1", 40 | "hex-lite": "^1.5.0", 41 | "jszip": "^3.5.0", 42 | "query-string": "^6.13.1", 43 | "uuid": "^8.2.0" 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/fixtures.ts: -------------------------------------------------------------------------------- 1 | import { ItemResponse, ItemType } from './types'; 2 | import { v4 as uuidv4 } from 'uuid'; // Namespace UUID 3 | 4 | export const generateItemResponse = (partial?: Partial): ItemResponse => ({ 5 | ...partial, 6 | ID: uuidv4(), 7 | Version: 1, 8 | Message: 'message', 9 | Success: true, 10 | BlobURLGet: 'https://google.com', 11 | BlobURLGetExpires: '1595257974', 12 | ModifiedClient: 'client', 13 | Type: ItemType.DocumentType, 14 | VissibleName: 'name', 15 | CurrentPage: 1, 16 | Bookmarked: false, 17 | Parent: '', 18 | }); 19 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import Remarkable from './remarkable'; 2 | import { ItemResponse } from './types'; 3 | 4 | export { Remarkable, ItemResponse }; 5 | -------------------------------------------------------------------------------- /src/remarkable.test.ts: -------------------------------------------------------------------------------- 1 | import chai, { expect } from 'chai'; 2 | import chaiAsPromised from 'chai-as-promised'; 3 | import got from 'got'; 4 | import { describe, it } from 'mocha'; 5 | import sinon from 'sinon'; 6 | import sinonStubPromise from 'sinon-stub-promise'; 7 | import { generateItemResponse } from './fixtures'; 8 | import Remarkable from './remarkable'; 9 | 10 | chai.use(chaiAsPromised); 11 | sinonStubPromise(sinon); 12 | 13 | let localSandbox: sinon.SinonSandbox; 14 | beforeEach(function () { 15 | localSandbox = sinon.createSandbox(); 16 | }); 17 | 18 | afterEach(function () { 19 | localSandbox.restore(); 20 | }); 21 | 22 | describe('Client initialization', () => { 23 | it('should not set the deviceToken if not provided', () => { 24 | const client = new Remarkable(); 25 | expect(client.deviceToken).to.be.undefined; 26 | }); 27 | it('should set the deviceToken if provided', () => { 28 | const client = new Remarkable({ deviceToken: 'test' }); 29 | expect(client.deviceToken).to.be.equal('test'); 30 | }); 31 | }); 32 | 33 | describe('Register a device', () => { 34 | it('should register a device ', async () => { 35 | localSandbox.stub(got, 'post').resolves( 36 | Promise.resolve({ 37 | body: 'token', 38 | }), 39 | ); 40 | const client = new Remarkable(); 41 | const deviceToken = await client.register({ 42 | code: 'code', 43 | }); 44 | const accessToken = client.token; 45 | expect(deviceToken).to.be.equal('token'); 46 | expect(accessToken).to.be.equal('token'); 47 | }); 48 | }); 49 | 50 | describe('Refresh token', () => { 51 | it('should throw an error if the device token is not set', async () => { 52 | const client = new Remarkable(); 53 | expect(client.refreshToken()).to.be.rejectedWith(Error); 54 | }); 55 | it('should set the token after fetching it', async () => { 56 | localSandbox.stub(got, 'post').resolves( 57 | Promise.resolve({ 58 | body: 'token', 59 | }), 60 | ); 61 | const client = new Remarkable({ deviceToken: 'test' }); 62 | const accessToken = await client.refreshToken(); 63 | expect(accessToken).to.be.equal('token'); 64 | expect(client.token).to.be.equal('token'); 65 | }); 66 | }); 67 | 68 | describe('Get items', () => { 69 | it('should throw an error if the access token is not set', async () => { 70 | const client = new Remarkable({ deviceToken: 'device-token' }); 71 | expect(client.getAllItems()).to.be.rejectedWith(Error); 72 | expect(client.getItemWithId('dsf')).to.be.rejectedWith(Error); 73 | }); 74 | it('should fetch all items', async () => { 75 | localSandbox.stub(got, 'post').resolves( 76 | Promise.resolve({ 77 | body: 'token', 78 | }), 79 | ); 80 | 81 | const client = new Remarkable({ deviceToken: 'test' }); 82 | await client.refreshToken(); 83 | 84 | const itemsToBeFetched = [generateItemResponse(), generateItemResponse()]; 85 | localSandbox.stub((client as any).gotClient, 'get').resolves(Promise.resolve({ body: itemsToBeFetched })); 86 | localSandbox.stub(client, 'getStorageUrl').resolves(await Promise.resolve('http://localhost')); 87 | 88 | const results = await client.getAllItems(); 89 | expect(results).to.be.equal(itemsToBeFetched); 90 | }); 91 | }); 92 | 93 | describe('Upload Zip', async function () { 94 | it('passes the correct parameters to remarkable API', async function () { 95 | // SETUP 96 | localSandbox.stub(got, 'post').resolves( 97 | Promise.resolve({ 98 | body: 'token', 99 | }), 100 | ); 101 | const client = new Remarkable({ 102 | deviceToken: 'stubToken', 103 | }); 104 | await client.refreshToken(); 105 | // configure stubbing for calls to the document apis 106 | const mockFileId = 'b8710f71-c86e-5037-8ef2-bac047709355'; 107 | const mockFolderId = '71e70cd9-8d72-5c8b-addc-0d18c74364bc'; 108 | const putStub = localSandbox 109 | .stub((client as any).gotClient, 'put') 110 | .resolves(Promise.resolve({ body: [{ Success: true, BlobURLPut: 'someURL' }] })) 111 | .onSecondCall() 112 | .resolves(Promise.resolve({ body: [{ Success: true, ID: mockFileId }] })); 113 | 114 | localSandbox.stub(client, 'getStorageUrl').resolves(await Promise.resolve('http://localhost')); 115 | 116 | localSandbox.stub(got, 'put').resolves( 117 | Promise.resolve({ 118 | statusCode: 200, 119 | body: mockFileId, 120 | }), 121 | ); 122 | 123 | const testEpub = Buffer.from('oogabooga'); 124 | // ACT 125 | await client.uploadZip('testID', mockFileId, testEpub, mockFolderId); 126 | // ASSERT 127 | const argsToRmAPI = putStub.getCall(1).args[1]; 128 | const unwrappedArgs = argsToRmAPI.json[0]; 129 | expect(unwrappedArgs.parent).to.be.equal(mockFolderId); 130 | expect(unwrappedArgs.ID).to.be.equal(mockFileId); 131 | expect(unwrappedArgs.VissibleName).to.be.equal('testID'); 132 | return; 133 | }); 134 | }); 135 | -------------------------------------------------------------------------------- /src/remarkable.ts: -------------------------------------------------------------------------------- 1 | import got, { Got, ExtendOptions } from 'got'; 2 | import queryString from 'query-string'; 3 | import { v4 as uuidv4 } from 'uuid'; // Namespace UUID 4 | import JSZip from 'jszip'; 5 | 6 | import { version as pkgVersion } from '../package.json'; 7 | import { ItemResponse, ReturnType, ItemType, UploadRequestReturnType } from './types'; 8 | import { generateDeviceId } from './utils'; 9 | 10 | const gotConfiguration: ExtendOptions = { 11 | responseType: 'json', 12 | headers: { 13 | 'User-Agent': `remarkable-typescript/${pkgVersion}`, 14 | }, 15 | }; 16 | 17 | const defaultPDFContent = { 18 | extraMetadata: {}, 19 | fileType: 'pdf', 20 | lastOpenedPage: 0, 21 | lineHeight: -1, 22 | margins: 180, 23 | pageCount: 0, 24 | textScale: 1, 25 | transform: {}, 26 | pages: [ 27 | "", 28 | ], 29 | }; 30 | 31 | const defaultEPUBContent = { 32 | extraMetadata: {}, 33 | fileType: 'epub', 34 | lastOpenedPage: 0, 35 | lineHeight: -1, 36 | margins: 100, 37 | pageCount: 0, 38 | textScale: 1, 39 | transform: {}, 40 | }; 41 | 42 | const defaultPDFmetadata = { 43 | deleted: false, 44 | lastModified: new Date().toISOString(), 45 | ModifiedClient: new Date().toISOString(), 46 | metadatamodified: false, 47 | modified: false, 48 | parent: '', 49 | pinned: false, 50 | synced: true, 51 | type: ItemType.DocumentType, 52 | version: 1, 53 | VissibleName: 'New Document', 54 | }; 55 | 56 | type Props = { 57 | deviceToken?: string; 58 | }; 59 | 60 | export default class Remarkable { 61 | public token?: string; 62 | public deviceToken?: string; 63 | private gotClient: Got = got.extend(gotConfiguration); 64 | private storageUrl?: string; 65 | private notificationUrl?: string; 66 | private zip: JSZip; 67 | 68 | constructor({ deviceToken }: Props = {}) { 69 | if (deviceToken) { 70 | this.deviceToken = deviceToken; 71 | } 72 | this.zip = new JSZip(); 73 | } 74 | 75 | private setToken(token: string) { 76 | this.gotClient = got.extend({ 77 | ...gotConfiguration, 78 | headers: { 79 | ...gotConfiguration.headers, 80 | Authorization: `Bearer ${token}`, 81 | }, 82 | }); 83 | this.token = token; 84 | return token; 85 | } 86 | 87 | public async refreshToken(): Promise { 88 | if (!this.deviceToken) throw new Error('You must register your reMarkable first'); 89 | const { body } = await got.post('https://webapp-production-dot-remarkable-production.appspot.com/token/json/2/user/new', { 90 | headers: { 91 | Authorization: `Bearer ${this.deviceToken}`, 92 | 'User-Agent': `remarkable-typescript/${pkgVersion}`, 93 | }, 94 | }); 95 | this.setToken(body); 96 | return body; 97 | } 98 | 99 | public async getStorageUrl({ 100 | environment = 'production', 101 | group = 'auth0|5a68dc51cb30df3877a1d7c4', 102 | apiVer = 2, 103 | } = {}): Promise { 104 | if (this.storageUrl) return this.storageUrl; 105 | if (!this.token) throw Error('You need to call refreshToken() first'); 106 | 107 | const { body } = await this.gotClient.get<{ Host: string; Status: string }>( 108 | `https://service-manager-production-dot-remarkable-production.appspot.com/service/json/1/document-storage?environment=${environment}&group=${group}&apiVer=${apiVer}`, 109 | ); 110 | this.storageUrl = `https://${body.Host}`; 111 | return this.storageUrl; 112 | } 113 | 114 | public async getNotificationsUrl({ 115 | environment = 'production', 116 | group = 'auth0|5a68dc51cb30df3877a1d7c4', 117 | apiVer = 1, 118 | } = {}): Promise { 119 | if (this.notificationUrl) return this.notificationUrl; 120 | if (!this.token) throw Error('You need to call refreshToken() first'); 121 | 122 | const { body } = await this.gotClient.get<{ Host: string; Status: string }>( 123 | `https://service-manager-production-dot-remarkable-production.appspot.com/service/json/1/notifications?environment=${environment}&group=${group}&apiVer=${apiVer}`, 124 | ); 125 | this.notificationUrl = `wss://${body.Host}`; 126 | return this.notificationUrl; 127 | } 128 | 129 | public async register({ 130 | code, 131 | deviceDesc = 'desktop-windows', 132 | deviceId = generateDeviceId(), 133 | }: { 134 | code: string; 135 | deviceDesc?: string; 136 | deviceId?: string; 137 | }): Promise { 138 | if (!code) { 139 | throw new Error('Must provide a code from https://my.remarkable.com/connect/desktop'); 140 | } 141 | 142 | // Make request 143 | return got 144 | .post('https://webapp-production-dot-remarkable-production.appspot.com/token/json/2/device/new', { 145 | json: { code, deviceDesc, deviceId }, 146 | }) 147 | .then(async ({ body }) => { 148 | this.deviceToken = body; 149 | await this.refreshToken(); 150 | return body; 151 | }); 152 | } 153 | 154 | private async listItems({ doc, withBlob = true }: { doc?: string; withBlob?: boolean } = {}): Promise< 155 | ItemResponse[] 156 | > { 157 | if (!this.token) throw Error('You need to call refreshToken() first'); 158 | const query = { 159 | doc, 160 | withBlob, 161 | }; 162 | const stringifiedQuery = queryString.stringify(query); 163 | const url = `${await this.getStorageUrl()}/document-storage/json/2/docs?${stringifiedQuery}`; 164 | 165 | const { body } = await this.gotClient.get(url); 166 | return body; 167 | } 168 | 169 | public async getItemWithId(id: string): Promise { 170 | return (await this.listItems({ doc: id }))[0]; 171 | } 172 | 173 | public async getAllItems(): Promise { 174 | return this.listItems(); 175 | } 176 | 177 | public async deleteItem(id: string, version: number): Promise { 178 | const url = `${await this.getStorageUrl()}/document-storage/json/2/delete`; 179 | const { body } = await this.gotClient.put(url, { 180 | json: [ 181 | { 182 | ID: id, 183 | Version: version, 184 | }, 185 | ], 186 | }); 187 | return body[0].Success; 188 | } 189 | 190 | public async downloadZip(id: string): Promise { 191 | if (!this.token) throw Error('You need to call refreshToken() first'); 192 | 193 | const { BlobURLGet } = await this.getItemWithId(id); 194 | if (!BlobURLGet) { 195 | throw new Error("Couldn't find BlobURLGet in response"); 196 | } 197 | 198 | const readStream = got.stream(BlobURLGet); 199 | 200 | return new Promise((resolve) => { 201 | const chunks: Uint8Array[] = []; 202 | 203 | readStream.on('data', (chunk: Uint8Array) => { 204 | chunks.push(chunk); 205 | }); 206 | 207 | // Send the buffer or you can put it into a var 208 | readStream.on('end', async () => { 209 | const zipBuffer = Buffer.concat(chunks); 210 | resolve(zipBuffer); 211 | }); 212 | }); 213 | } 214 | 215 | public async uploadZip(name: string, ID: string, zipFile: Buffer, parent?: string): Promise { 216 | if (!this.token) throw Error('You need to call refreshToken() first'); 217 | 218 | const url = `${await this.getStorageUrl()}/document-storage/json/2/upload/request`; 219 | 220 | // First, let's create an upload request 221 | const { body } = await this.gotClient.put(url, { 222 | json: [ 223 | { 224 | ID, 225 | Type: ItemType.DocumentType, 226 | Version: 1, 227 | }, 228 | ], 229 | }); 230 | if (!body[0].Success || !body[0].BlobURLPut) { 231 | console.warn('upload zip response: ', body[0]); 232 | throw new Error('Error during the creation of the upload request'); 233 | } 234 | 235 | // And we upload it 236 | const { statusCode } = await got.put(body[0].BlobURLPut, { 237 | body: zipFile, 238 | headers: { 239 | ...gotConfiguration.headers, 240 | 'Content-Type': '', 241 | Authorization: `Bearer ${this.token}`, 242 | }, 243 | }); 244 | 245 | if (statusCode !== 200) { 246 | throw new Error('Error during the upload of the document'); 247 | } 248 | 249 | // set metadata properties of the doc to create 250 | const docMetaData = { ...defaultPDFmetadata }; 251 | //If we would like the document to be in a folder the parent property of docuMetaData must be set 252 | if (parent) { 253 | docMetaData.parent = parent; 254 | } 255 | 256 | // Then we update the metadata 257 | const { body: bodyUpdateStatus } = await this.gotClient.put( 258 | `${await this.getStorageUrl()}/document-storage/json/2/upload/update-status`, 259 | { 260 | json: [ 261 | { 262 | ...docMetaData, 263 | ID, 264 | VissibleName: name, 265 | lastModified: new Date().toISOString(), 266 | ModifiedClient: new Date().toISOString(), 267 | }, 268 | ], 269 | }, 270 | ); 271 | 272 | if (!bodyUpdateStatus[0].Success) { 273 | throw new Error('Error during the update status of the metadata'); 274 | } 275 | 276 | return bodyUpdateStatus[0].ID; 277 | } 278 | 279 | /** 280 | * 281 | * @param name the display name for the document 282 | * @param id uuid string that identifies the document 283 | * @param file the file data we would like to upload 284 | * @param parentId (optional) if the document should belong to a folder the uuid of the folder must be specified 285 | */ 286 | public async uploadPDF(name: string, id: string, file: Buffer, parentId?: string): Promise { 287 | if (!this.token) throw Error('You need to call refreshToken() first'); 288 | 289 | // We create the zip file to get uploaded 290 | this.zip.file(`${id}.content`, JSON.stringify(defaultPDFContent)); 291 | this.zip.file(`${id}.pagedata`, []); 292 | this.zip.file(`${id}.pdf`, file); 293 | const zipContent = await this.zip.generateAsync({ type: 'nodebuffer' }); 294 | 295 | await this.uploadZip(name, id, zipContent, parentId); 296 | 297 | this.zip = new JSZip(); 298 | return id; 299 | } 300 | 301 | /** 302 | * 303 | * @param name the display name for the document 304 | * @param id uuid string that identifies the document 305 | * @param file the file data we would like to upload 306 | * @param parentId (optional) if the document should belong to a folder the uuid of the folder must be specified 307 | */ 308 | public async uploadEPUB(name: string, id: string, file: Buffer, parentId?: string): Promise { 309 | if (!this.token) throw Error('You need to call refreshToken() first'); 310 | 311 | // We create the zip file to get uploaded 312 | this.zip.file(`${id}.content`, JSON.stringify(defaultEPUBContent)); 313 | this.zip.file(`${id}.pagedata`, []); 314 | this.zip.file(`${id}.epub`, file); 315 | const zipContent = await this.zip.generateAsync({ type: 'nodebuffer' }); 316 | 317 | await this.uploadZip(name, id, zipContent, parentId); 318 | 319 | this.zip = new JSZip(); 320 | return id; 321 | } 322 | 323 | public async createDirectory(name: string, ID: string, parent?: string): Promise { 324 | // to create a directory we just make a file with no content 325 | this.zip.file(`${ID}.content`, '{}'); 326 | const zipContent = await this.zip.generateAsync({ type: 'nodebuffer' }); 327 | 328 | if (!this.token) throw Error('You need to call refreshToken() first'); 329 | 330 | const url = `${await this.getStorageUrl()}/document-storage/json/2/upload/request`; 331 | 332 | // create an upload request for ItemType collection 333 | const { body } = await this.gotClient.put(url, { 334 | json: [ 335 | { 336 | ID, 337 | Type: ItemType.CollectionType, 338 | Version: 1, 339 | }, 340 | ], 341 | }); 342 | if (!body[0].Success || !body[0].BlobURLPut) { 343 | console.warn('Create directory response: ', body[0]); 344 | throw new Error('Error during the creation of the upload request'); 345 | } 346 | 347 | // And we upload it 348 | const { statusCode } = await got.put(body[0].BlobURLPut, { 349 | body: zipContent, 350 | headers: { 351 | ...gotConfiguration.headers, 352 | 'Content-Type': '', 353 | Authorization: `Bearer ${this.token}`, 354 | }, 355 | }); 356 | 357 | if (statusCode !== 200) { 358 | throw new Error('Error during the upload of the document'); 359 | } 360 | 361 | // set metadata properties of the folder to create 362 | const folderMetadata = { ...defaultPDFmetadata }; 363 | folderMetadata.type = ItemType.CollectionType; 364 | folderMetadata.VissibleName = name; 365 | if (parent) { 366 | folderMetadata.parent = parent; 367 | } 368 | 369 | // Then we update the metadata 370 | const { body: bodyUpdateStatus } = await this.gotClient.put( 371 | `${await this.getStorageUrl()}/document-storage/json/2/upload/update-status`, 372 | { 373 | json: [ 374 | { 375 | ...folderMetadata, 376 | ID, 377 | VissibleName: name, 378 | lastModified: new Date().toISOString(), 379 | ModifiedClient: new Date().toISOString(), 380 | }, 381 | ], 382 | }, 383 | ); 384 | 385 | if (!bodyUpdateStatus[0].Success) { 386 | throw new Error('Error during the update status of the metadata'); 387 | } 388 | 389 | return bodyUpdateStatus[0].ID; 390 | } 391 | } 392 | -------------------------------------------------------------------------------- /src/types.ts: -------------------------------------------------------------------------------- 1 | export type ItemResponse = { 2 | ID: string, 3 | Version: number, 4 | Message: string, 5 | Success: boolean, 6 | BlobURLGet?: string, 7 | BlobURLGetExpires?: string, 8 | ModifiedClient: string, 9 | Type: ItemType, 10 | VissibleName: string, 11 | CurrentPage: number, 12 | Bookmarked: boolean, 13 | Parent: string, 14 | }; 15 | 16 | export enum ItemType { 17 | DocumentType='DocumentType', 18 | CollectionType='CollectionType', 19 | } 20 | 21 | export type ReturnType = { 22 | ID: string, 23 | Version: number, 24 | Message: string, 25 | Success: boolean, 26 | }; 27 | 28 | export type UploadRequestReturnType = { 29 | ID: string, 30 | Version: number, 31 | Message: string, 32 | Success: boolean, 33 | BlobURLPut: string, 34 | BlobURLPutExpires: string, 35 | }; 36 | -------------------------------------------------------------------------------- /src/utils.ts: -------------------------------------------------------------------------------- 1 | import os from 'os'; 2 | import { v5 as uuidv5 } from 'uuid'; // Namespace UUID 3 | import { toUint8Array } from 'hex-lite'; 4 | import getMac from 'getmac'; 5 | 6 | // Generate a deviceId that remains constant for this user on this machine 7 | const generateDeviceId = (): string => { 8 | const fingerprint = os.platform() + os.arch() + os.hostname() + os.cpus()[0].model; 9 | const namespace = new Array(10).fill(0).concat(...toUint8Array(getMac().replace(/:/g, ''))); 10 | return uuidv5(fingerprint, namespace); 11 | }; 12 | 13 | export { generateDeviceId }; 14 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "include": [ 3 | "./src/**/*.ts", 4 | "./typings/index.d.ts" 5 | ], 6 | "exclude": [ 7 | "./node_modules", 8 | "./.vscode" 9 | ], 10 | "compilerOptions": { 11 | /* Basic Options */ 12 | // "incremental": true, /* Enable incremental compilation */ 13 | "target": "es5", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */ 14 | "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */ 15 | // "lib": [], /* Specify library files to be included in the compilation. */ 16 | // "allowJs": true, /* Allow javascript files to be compiled. */ 17 | // "checkJs": true, /* Report errors in .js files. */ 18 | // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ 19 | "declaration": true, /* Generates corresponding '.d.ts' file. */ 20 | // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ 21 | "sourceMap": true, /* Generates corresponding '.map' file. */ 22 | // "outFile": "./", /* Concatenate and emit output to single file. */ 23 | "outDir": "./dist", /* Redirect output structure to the directory. */ 24 | // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ 25 | // "composite": true, /* Enable project compilation */ 26 | // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ 27 | // "removeComments": true, /* Do not emit comments to output. */ 28 | // "noEmit": true, /* Do not emit outputs. */ 29 | // "importHelpers": true, /* Import emit helpers from 'tslib'. */ 30 | // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ 31 | // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ 32 | 33 | /* Strict Type-Checking Options */ 34 | "strict": true, /* Enable all strict type-checking options. */ 35 | "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ 36 | // "strictNullChecks": true, /* Enable strict null checks. */ 37 | // "strictFunctionTypes": true, /* Enable strict checking of function types. */ 38 | // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ 39 | // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ 40 | // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ 41 | // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ 42 | 43 | /* Additional Checks */ 44 | "noUnusedLocals": false, /* Report errors on unused locals. */ 45 | "noUnusedParameters": true, /* Report errors on unused parameters. */ 46 | "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ 47 | "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ 48 | 49 | /* Module Resolution Options */ 50 | // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ 51 | // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ 52 | // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ 53 | // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ 54 | "typeRoots": ["./typings/index.d.ts", "./node_modules/@types"], /* List of folders to include type definitions from. */ 55 | // "types": [], /* Type declaration files to be included in compilation. */ 56 | // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ 57 | "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ 58 | // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ 59 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ 60 | "resolveJsonModule": true, 61 | /* Source Map Options */ 62 | // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ 63 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ 64 | // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ 65 | // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ 66 | 67 | /* Experimental Options */ 68 | // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ 69 | // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ 70 | 71 | /* Advanced Options */ 72 | "forceConsistentCasingInFileNames": true, /* Disallow inconsistently-cased references to the same file. */ 73 | "skipLibCheck": true, 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /typings/index.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'hex-lite' { 2 | export function toUint8Array(str: string): number[]; 3 | } 4 | 5 | declare module 'sinon-stub-promise'; 6 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@^7.0.0": 6 | version "7.8.3" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" 8 | integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== 9 | dependencies: 10 | "@babel/highlight" "^7.8.3" 11 | 12 | "@babel/highlight@^7.8.3": 13 | version "7.8.3" 14 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797" 15 | integrity sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg== 16 | dependencies: 17 | chalk "^2.0.0" 18 | esutils "^2.0.2" 19 | js-tokens "^4.0.0" 20 | 21 | "@eslint/eslintrc@^0.2.2": 22 | version "0.2.2" 23 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.2.2.tgz#d01fc791e2fc33e88a29d6f3dc7e93d0cd784b76" 24 | integrity sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ== 25 | dependencies: 26 | ajv "^6.12.4" 27 | debug "^4.1.1" 28 | espree "^7.3.0" 29 | globals "^12.1.0" 30 | ignore "^4.0.6" 31 | import-fresh "^3.2.1" 32 | js-yaml "^3.13.1" 33 | lodash "^4.17.19" 34 | minimatch "^3.0.4" 35 | strip-json-comments "^3.1.1" 36 | 37 | "@sindresorhus/is@^4.0.0": 38 | version "4.6.0" 39 | resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" 40 | integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== 41 | 42 | "@sinonjs/commons@^1", "@sinonjs/commons@^1.6.0", "@sinonjs/commons@^1.7.0", "@sinonjs/commons@^1.7.2": 43 | version "1.8.1" 44 | resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.1.tgz#e7df00f98a203324f6dc7cc606cad9d4a8ab2217" 45 | integrity sha512-892K+kWUUi3cl+LlqEWIDrhvLgdL79tECi8JZUyq6IviKy/DNhuzCRlbHUjxK89f4ypPMMaFnFuR9Ie6DoIMsw== 46 | dependencies: 47 | type-detect "4.0.8" 48 | 49 | "@sinonjs/fake-timers@^6.0.0", "@sinonjs/fake-timers@^6.0.1": 50 | version "6.0.1" 51 | resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" 52 | integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== 53 | dependencies: 54 | "@sinonjs/commons" "^1.7.0" 55 | 56 | "@sinonjs/formatio@^5.0.1": 57 | version "5.0.1" 58 | resolved "https://registry.yarnpkg.com/@sinonjs/formatio/-/formatio-5.0.1.tgz#f13e713cb3313b1ab965901b01b0828ea6b77089" 59 | integrity sha512-KaiQ5pBf1MpS09MuA0kp6KBQt2JUOQycqVG1NZXvzeaXe5LGFqAKueIS0bw4w0P9r7KuBSVdUk5QjXsUdu2CxQ== 60 | dependencies: 61 | "@sinonjs/commons" "^1" 62 | "@sinonjs/samsam" "^5.0.2" 63 | 64 | "@sinonjs/samsam@^5.0.2", "@sinonjs/samsam@^5.0.3": 65 | version "5.0.3" 66 | resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-5.0.3.tgz#86f21bdb3d52480faf0892a480c9906aa5a52938" 67 | integrity sha512-QucHkc2uMJ0pFGjJUDP3F9dq5dx8QIaqISl9QgwLOh6P9yv877uONPGXh/OH/0zmM3tW1JjuJltAZV2l7zU+uQ== 68 | dependencies: 69 | "@sinonjs/commons" "^1.6.0" 70 | lodash.get "^4.4.2" 71 | type-detect "^4.0.8" 72 | 73 | "@sinonjs/text-encoding@^0.7.1": 74 | version "0.7.1" 75 | resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5" 76 | integrity sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ== 77 | 78 | "@szmarczak/http-timer@^4.0.5": 79 | version "4.0.5" 80 | resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.5.tgz#bfbd50211e9dfa51ba07da58a14cdfd333205152" 81 | integrity sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ== 82 | dependencies: 83 | defer-to-connect "^2.0.0" 84 | 85 | "@types/cacheable-request@^6.0.1": 86 | version "6.0.1" 87 | resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.1.tgz#5d22f3dded1fd3a84c0bbeb5039a7419c2c91976" 88 | integrity sha512-ykFq2zmBGOCbpIXtoVbz4SKY5QriWPh3AjyU4G74RYbtt5yOc5OfaY75ftjg7mikMOla1CTGpX3lLbuJh8DTrQ== 89 | dependencies: 90 | "@types/http-cache-semantics" "*" 91 | "@types/keyv" "*" 92 | "@types/node" "*" 93 | "@types/responselike" "*" 94 | 95 | "@types/chai-as-promised@^7.1.3": 96 | version "7.1.3" 97 | resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-7.1.3.tgz#779166b90fda611963a3adbfd00b339d03b747bd" 98 | integrity sha512-FQnh1ohPXJELpKhzjuDkPLR2BZCAqed+a6xV4MI/T3XzHfd2FlarfUGUdZYgqYe8oxkYn0fchHEeHfHqdZ96sg== 99 | dependencies: 100 | "@types/chai" "*" 101 | 102 | "@types/chai@*", "@types/chai@^4.2.11": 103 | version "4.2.11" 104 | resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.11.tgz#d3614d6c5f500142358e6ed24e1bf16657536c50" 105 | integrity sha512-t7uW6eFafjO+qJ3BIV2gGUyZs27egcNRkUdalkud+Qa3+kg//f129iuOFivHDXQ+vnU3fDXuwgv0cqMCbcE8sw== 106 | 107 | "@types/color-name@^1.1.1": 108 | version "1.1.1" 109 | resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" 110 | integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== 111 | 112 | "@types/eslint-visitor-keys@^1.0.0": 113 | version "1.0.0" 114 | resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" 115 | integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== 116 | 117 | "@types/http-cache-semantics@*": 118 | version "4.0.0" 119 | resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz#9140779736aa2655635ee756e2467d787cfe8a2a" 120 | integrity sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A== 121 | 122 | "@types/json-schema@^7.0.3": 123 | version "7.0.4" 124 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" 125 | integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA== 126 | 127 | "@types/keyv@*": 128 | version "3.1.1" 129 | resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.1.tgz#e45a45324fca9dab716ab1230ee249c9fb52cfa7" 130 | integrity sha512-MPtoySlAZQ37VoLaPcTHCu1RWJ4llDkULYZIzOYxlhxBqYPB0RsRlmMU0R6tahtFe27mIdkHV+551ZWV4PLmVw== 131 | dependencies: 132 | "@types/node" "*" 133 | 134 | "@types/mocha@^8.0.0": 135 | version "8.0.0" 136 | resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-8.0.0.tgz#b0ba1c5b4cb3880c51a6b488ad007a657d1be888" 137 | integrity sha512-jWeYcTo3sCH/rMgsdYXDTO85GNRyTCII5dayMIu/ZO4zbEot1E3iNGaOwpLReLUHjeNQFkgeNNVYlY4dX6azQQ== 138 | 139 | "@types/node@*": 140 | version "13.1.7" 141 | resolved "https://registry.yarnpkg.com/@types/node/-/node-13.1.7.tgz#db51d28b8dfacfe4fb2d0da88f5eb0a2eca00675" 142 | integrity sha512-HU0q9GXazqiKwviVxg9SI/+t/nAsGkvLDkIdxz+ObejG2nX6Si00TeLqHMoS+a/1tjH7a8YpKVQwtgHuMQsldg== 143 | 144 | "@types/node@^14.0.14": 145 | version "14.0.23" 146 | resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.23.tgz#676fa0883450ed9da0bb24156213636290892806" 147 | integrity sha512-Z4U8yDAl5TFkmYsZdFPdjeMa57NOvnaf1tljHzhouaPEp7LCj2JKkejpI1ODviIAQuW4CcQmxkQ77rnLsOOoKw== 148 | 149 | "@types/responselike@*", "@types/responselike@^1.0.0": 150 | version "1.0.0" 151 | resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" 152 | integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== 153 | dependencies: 154 | "@types/node" "*" 155 | 156 | "@types/sinon@^9.0.4": 157 | version "9.0.4" 158 | resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-9.0.4.tgz#e934f904606632287a6e7f7ab0ce3f08a0dad4b1" 159 | integrity sha512-sJmb32asJZY6Z2u09bl0G2wglSxDlROlAejCjsnor+LzBMz17gu8IU7vKC/vWDnv9zEq2wqADHVXFjf4eE8Gdw== 160 | dependencies: 161 | "@types/sinonjs__fake-timers" "*" 162 | 163 | "@types/sinonjs__fake-timers@*": 164 | version "6.0.1" 165 | resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.1.tgz#681df970358c82836b42f989188d133e218c458e" 166 | integrity sha512-yYezQwGWty8ziyYLdZjwxyMb0CZR49h8JALHGrxjQHWlqGgc8kLdHEgWrgL0uZ29DMvEVBDnHU2Wg36zKSIUtA== 167 | 168 | "@types/uuid@^8.0.0": 169 | version "8.0.0" 170 | resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.0.0.tgz#165aae4819ad2174a17476dbe66feebd549556c0" 171 | integrity sha512-xSQfNcvOiE5f9dyd4Kzxbof1aTrLobL278pGLKOZI6esGfZ7ts9Ka16CzIN6Y8hFHE1C7jIBZokULhK1bOgjRw== 172 | 173 | "@typescript-eslint/eslint-plugin@^3.6.1": 174 | version "3.6.1" 175 | resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.6.1.tgz#5ced8fd2087fbb83a76973dea4a0d39d9cb4a642" 176 | integrity sha512-06lfjo76naNeOMDl+mWG9Fh/a0UHKLGhin+mGaIw72FUMbMGBkdi/FEJmgEDzh4eE73KIYzHWvOCYJ0ak7nrJQ== 177 | dependencies: 178 | "@typescript-eslint/experimental-utils" "3.6.1" 179 | debug "^4.1.1" 180 | functional-red-black-tree "^1.0.1" 181 | regexpp "^3.0.0" 182 | semver "^7.3.2" 183 | tsutils "^3.17.1" 184 | 185 | "@typescript-eslint/experimental-utils@3.6.1": 186 | version "3.6.1" 187 | resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.6.1.tgz#b5a2738ebbceb3fa90c5b07d50bb1225403c4a54" 188 | integrity sha512-oS+hihzQE5M84ewXrTlVx7eTgc52eu+sVmG7ayLfOhyZmJ8Unvf3osyFQNADHP26yoThFfbxcibbO0d2FjnYhg== 189 | dependencies: 190 | "@types/json-schema" "^7.0.3" 191 | "@typescript-eslint/types" "3.6.1" 192 | "@typescript-eslint/typescript-estree" "3.6.1" 193 | eslint-scope "^5.0.0" 194 | eslint-utils "^2.0.0" 195 | 196 | "@typescript-eslint/parser@^3.6.1": 197 | version "3.6.1" 198 | resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-3.6.1.tgz#216e8adf4ee9c629f77c985476a2ea07fb80e1dc" 199 | integrity sha512-SLihQU8RMe77YJ/jGTqOt0lMq7k3hlPVfp7v/cxMnXA9T0bQYoMDfTsNgHXpwSJM1Iq2aAJ8WqekxUwGv5F67Q== 200 | dependencies: 201 | "@types/eslint-visitor-keys" "^1.0.0" 202 | "@typescript-eslint/experimental-utils" "3.6.1" 203 | "@typescript-eslint/types" "3.6.1" 204 | "@typescript-eslint/typescript-estree" "3.6.1" 205 | eslint-visitor-keys "^1.1.0" 206 | 207 | "@typescript-eslint/types@3.6.1": 208 | version "3.6.1" 209 | resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.6.1.tgz#87600fe79a1874235d3cc1cf5c7e1a12eea69eee" 210 | integrity sha512-NPxd5yXG63gx57WDTW1rp0cF3XlNuuFFB5G+Kc48zZ+51ZnQn9yjDEsjTPQ+aWM+V+Z0I4kuTFKjKvgcT1F7xQ== 211 | 212 | "@typescript-eslint/typescript-estree@3.6.1": 213 | version "3.6.1" 214 | resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.6.1.tgz#a5c91fcc5497cce7922ff86bc37d5e5891dcdefa" 215 | integrity sha512-G4XRe/ZbCZkL1fy09DPN3U0mR6SayIv1zSeBNquRFRk7CnVLgkC2ZPj8llEMJg5Y8dJ3T76SvTGtceytniaztQ== 216 | dependencies: 217 | "@typescript-eslint/types" "3.6.1" 218 | "@typescript-eslint/visitor-keys" "3.6.1" 219 | debug "^4.1.1" 220 | glob "^7.1.6" 221 | is-glob "^4.0.1" 222 | lodash "^4.17.15" 223 | semver "^7.3.2" 224 | tsutils "^3.17.1" 225 | 226 | "@typescript-eslint/visitor-keys@3.6.1": 227 | version "3.6.1" 228 | resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-3.6.1.tgz#5c57a7772f4dd623cfeacc219303e7d46f963b37" 229 | integrity sha512-qC8Olwz5ZyMTZrh4Wl3K4U6tfms0R/mzU4/5W3XeUZptVraGVmbptJbn6h2Ey6Rb3hOs3zWoAUebZk8t47KGiQ== 230 | dependencies: 231 | eslint-visitor-keys "^1.1.0" 232 | 233 | "@ungap/promise-all-settled@1.1.2": 234 | version "1.1.2" 235 | resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" 236 | integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== 237 | 238 | acorn-jsx@^5.3.1: 239 | version "5.3.1" 240 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" 241 | integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== 242 | 243 | acorn@^7.4.0: 244 | version "7.4.1" 245 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" 246 | integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== 247 | 248 | ajv@^6.10.0, ajv@^6.12.4: 249 | version "6.12.6" 250 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 251 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 252 | dependencies: 253 | fast-deep-equal "^3.1.1" 254 | fast-json-stable-stringify "^2.0.0" 255 | json-schema-traverse "^0.4.1" 256 | uri-js "^4.2.2" 257 | 258 | ansi-colors@4.1.1, ansi-colors@^4.1.1: 259 | version "4.1.1" 260 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" 261 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== 262 | 263 | ansi-regex@^3.0.0: 264 | version "3.0.1" 265 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" 266 | integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== 267 | 268 | ansi-regex@^4.1.0: 269 | version "4.1.0" 270 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" 271 | integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== 272 | 273 | ansi-regex@^5.0.0: 274 | version "5.0.0" 275 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 276 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== 277 | 278 | ansi-styles@^3.2.0, ansi-styles@^3.2.1: 279 | version "3.2.1" 280 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 281 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 282 | dependencies: 283 | color-convert "^1.9.0" 284 | 285 | ansi-styles@^4.0.0: 286 | version "4.3.0" 287 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 288 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 289 | dependencies: 290 | color-convert "^2.0.1" 291 | 292 | ansi-styles@^4.1.0: 293 | version "4.2.1" 294 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" 295 | integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== 296 | dependencies: 297 | "@types/color-name" "^1.1.1" 298 | color-convert "^2.0.1" 299 | 300 | anymatch@~3.1.1: 301 | version "3.1.1" 302 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" 303 | integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== 304 | dependencies: 305 | normalize-path "^3.0.0" 306 | picomatch "^2.0.4" 307 | 308 | arg@^4.1.0: 309 | version "4.1.2" 310 | resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.2.tgz#e70c90579e02c63d80e3ad4e31d8bfdb8bd50064" 311 | integrity sha512-+ytCkGcBtHZ3V2r2Z06AncYO8jz46UEamcspGoU8lHcEbpn6J77QK0vdWvChsclg/tM5XIJC5tnjmPp7Eq6Obg== 312 | 313 | argparse@^1.0.7: 314 | version "1.0.10" 315 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 316 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 317 | dependencies: 318 | sprintf-js "~1.0.2" 319 | 320 | assertion-error@^1.1.0: 321 | version "1.1.0" 322 | resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" 323 | integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== 324 | 325 | astral-regex@^2.0.0: 326 | version "2.0.0" 327 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" 328 | integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== 329 | 330 | balanced-match@^1.0.0: 331 | version "1.0.0" 332 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 333 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 334 | 335 | binary-extensions@^2.0.0: 336 | version "2.1.0" 337 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" 338 | integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== 339 | 340 | brace-expansion@^1.1.7: 341 | version "1.1.11" 342 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 343 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 344 | dependencies: 345 | balanced-match "^1.0.0" 346 | concat-map "0.0.1" 347 | 348 | braces@~3.0.2: 349 | version "3.0.2" 350 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 351 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 352 | dependencies: 353 | fill-range "^7.0.1" 354 | 355 | browser-stdout@1.3.1: 356 | version "1.3.1" 357 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" 358 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== 359 | 360 | buffer-from@^1.0.0: 361 | version "1.1.1" 362 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 363 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== 364 | 365 | cacheable-lookup@^5.0.3: 366 | version "5.0.3" 367 | resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.3.tgz#049fdc59dffdd4fc285e8f4f82936591bd59fec3" 368 | integrity sha512-W+JBqF9SWe18A72XFzN/V/CULFzPm7sBXzzR6ekkE+3tLG72wFZrBiBZhrZuDoYexop4PHJVdFAKb/Nj9+tm9w== 369 | 370 | cacheable-request@^7.0.2: 371 | version "7.0.2" 372 | resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27" 373 | integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew== 374 | dependencies: 375 | clone-response "^1.0.2" 376 | get-stream "^5.1.0" 377 | http-cache-semantics "^4.0.0" 378 | keyv "^4.0.0" 379 | lowercase-keys "^2.0.0" 380 | normalize-url "^6.0.1" 381 | responselike "^2.0.0" 382 | 383 | callsites@^3.0.0: 384 | version "3.1.0" 385 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 386 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 387 | 388 | camelcase@^5.0.0: 389 | version "5.3.1" 390 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 391 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 392 | 393 | camelcase@^6.0.0: 394 | version "6.2.0" 395 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" 396 | integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== 397 | 398 | chai-as-promised@^7.1.1: 399 | version "7.1.1" 400 | resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-7.1.1.tgz#08645d825deb8696ee61725dbf590c012eb00ca0" 401 | integrity sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA== 402 | dependencies: 403 | check-error "^1.0.2" 404 | 405 | chai@^4.2.0: 406 | version "4.2.0" 407 | resolved "https://registry.yarnpkg.com/chai/-/chai-4.2.0.tgz#760aa72cf20e3795e84b12877ce0e83737aa29e5" 408 | integrity sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw== 409 | dependencies: 410 | assertion-error "^1.1.0" 411 | check-error "^1.0.2" 412 | deep-eql "^3.0.1" 413 | get-func-name "^2.0.0" 414 | pathval "^1.1.0" 415 | type-detect "^4.0.5" 416 | 417 | chalk@^2.0.0: 418 | version "2.4.2" 419 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 420 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 421 | dependencies: 422 | ansi-styles "^3.2.1" 423 | escape-string-regexp "^1.0.5" 424 | supports-color "^5.3.0" 425 | 426 | chalk@^4.0.0: 427 | version "4.1.0" 428 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" 429 | integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== 430 | dependencies: 431 | ansi-styles "^4.1.0" 432 | supports-color "^7.1.0" 433 | 434 | check-error@^1.0.2: 435 | version "1.0.2" 436 | resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" 437 | integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= 438 | 439 | chokidar@3.4.3: 440 | version "3.4.3" 441 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b" 442 | integrity sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ== 443 | dependencies: 444 | anymatch "~3.1.1" 445 | braces "~3.0.2" 446 | glob-parent "~5.1.0" 447 | is-binary-path "~2.1.0" 448 | is-glob "~4.0.1" 449 | normalize-path "~3.0.0" 450 | readdirp "~3.5.0" 451 | optionalDependencies: 452 | fsevents "~2.1.2" 453 | 454 | cliui@^5.0.0: 455 | version "5.0.0" 456 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" 457 | integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== 458 | dependencies: 459 | string-width "^3.1.0" 460 | strip-ansi "^5.2.0" 461 | wrap-ansi "^5.1.0" 462 | 463 | clone-response@^1.0.2: 464 | version "1.0.2" 465 | resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" 466 | integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= 467 | dependencies: 468 | mimic-response "^1.0.0" 469 | 470 | color-convert@^1.9.0: 471 | version "1.9.3" 472 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 473 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 474 | dependencies: 475 | color-name "1.1.3" 476 | 477 | color-convert@^2.0.1: 478 | version "2.0.1" 479 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 480 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 481 | dependencies: 482 | color-name "~1.1.4" 483 | 484 | color-name@1.1.3: 485 | version "1.1.3" 486 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 487 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 488 | 489 | color-name@~1.1.4: 490 | version "1.1.4" 491 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 492 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 493 | 494 | concat-map@0.0.1: 495 | version "0.0.1" 496 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 497 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 498 | 499 | core-util-is@~1.0.0: 500 | version "1.0.2" 501 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 502 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 503 | 504 | cross-spawn@^7.0.2: 505 | version "7.0.3" 506 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 507 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 508 | dependencies: 509 | path-key "^3.1.0" 510 | shebang-command "^2.0.0" 511 | which "^2.0.1" 512 | 513 | debug@4.2.0: 514 | version "4.2.0" 515 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" 516 | integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg== 517 | dependencies: 518 | ms "2.1.2" 519 | 520 | debug@^4.0.1, debug@^4.1.1: 521 | version "4.1.1" 522 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" 523 | integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== 524 | dependencies: 525 | ms "^2.1.1" 526 | 527 | decamelize@^1.2.0: 528 | version "1.2.0" 529 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 530 | integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= 531 | 532 | decamelize@^4.0.0: 533 | version "4.0.0" 534 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" 535 | integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== 536 | 537 | decode-uri-component@^0.2.0: 538 | version "0.2.0" 539 | resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" 540 | integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= 541 | 542 | decompress-response@^6.0.0: 543 | version "6.0.0" 544 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" 545 | integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== 546 | dependencies: 547 | mimic-response "^3.1.0" 548 | 549 | deep-eql@^3.0.1: 550 | version "3.0.1" 551 | resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" 552 | integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== 553 | dependencies: 554 | type-detect "^4.0.0" 555 | 556 | deep-is@^0.1.3: 557 | version "0.1.3" 558 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 559 | integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= 560 | 561 | defer-to-connect@^2.0.0: 562 | version "2.0.0" 563 | resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.0.tgz#83d6b199db041593ac84d781b5222308ccf4c2c1" 564 | integrity sha512-bYL2d05vOSf1JEZNx5vSAtPuBMkX8K9EUutg7zlKvTqKXHt7RhWJFbmd7qakVuf13i+IkGmp6FwSsONOf6VYIg== 565 | 566 | diff@4.0.2, diff@^4.0.1, diff@^4.0.2: 567 | version "4.0.2" 568 | resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" 569 | integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== 570 | 571 | doctrine@^3.0.0: 572 | version "3.0.0" 573 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 574 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 575 | dependencies: 576 | esutils "^2.0.2" 577 | 578 | emoji-regex@^7.0.1: 579 | version "7.0.3" 580 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" 581 | integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== 582 | 583 | emoji-regex@^8.0.0: 584 | version "8.0.0" 585 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 586 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 587 | 588 | end-of-stream@^1.1.0: 589 | version "1.4.4" 590 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 591 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 592 | dependencies: 593 | once "^1.4.0" 594 | 595 | enquirer@^2.3.5: 596 | version "2.3.6" 597 | resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" 598 | integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== 599 | dependencies: 600 | ansi-colors "^4.1.1" 601 | 602 | escape-string-regexp@4.0.0: 603 | version "4.0.0" 604 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 605 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 606 | 607 | escape-string-regexp@^1.0.5: 608 | version "1.0.5" 609 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 610 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 611 | 612 | eslint-config-prettier@^6.11.0: 613 | version "6.11.0" 614 | resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz#f6d2238c1290d01c859a8b5c1f7d352a0b0da8b1" 615 | integrity sha512-oB8cpLWSAjOVFEJhhyMZh6NOEOtBVziaqdDQ86+qhDHFbZXoRTM7pNSvFRfW/W/L/LrQ38C99J5CGuRBBzBsdA== 616 | dependencies: 617 | get-stdin "^6.0.0" 618 | 619 | eslint-plugin-prettier@^3.1.4: 620 | version "3.1.4" 621 | resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz#168ab43154e2ea57db992a2cd097c828171f75c2" 622 | integrity sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg== 623 | dependencies: 624 | prettier-linter-helpers "^1.0.0" 625 | 626 | eslint-scope@^5.0.0: 627 | version "5.0.0" 628 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" 629 | integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== 630 | dependencies: 631 | esrecurse "^4.1.0" 632 | estraverse "^4.1.1" 633 | 634 | eslint-scope@^5.1.1: 635 | version "5.1.1" 636 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" 637 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== 638 | dependencies: 639 | esrecurse "^4.3.0" 640 | estraverse "^4.1.1" 641 | 642 | eslint-utils@^2.0.0, eslint-utils@^2.1.0: 643 | version "2.1.0" 644 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" 645 | integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== 646 | dependencies: 647 | eslint-visitor-keys "^1.1.0" 648 | 649 | eslint-visitor-keys@^1.1.0: 650 | version "1.1.0" 651 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" 652 | integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== 653 | 654 | eslint-visitor-keys@^1.3.0: 655 | version "1.3.0" 656 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" 657 | integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== 658 | 659 | eslint-visitor-keys@^2.0.0: 660 | version "2.0.0" 661 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" 662 | integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== 663 | 664 | eslint@^7.16.0: 665 | version "7.16.0" 666 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.16.0.tgz#a761605bf9a7b32d24bb7cde59aeb0fd76f06092" 667 | integrity sha512-iVWPS785RuDA4dWuhhgXTNrGxHHK3a8HLSMBgbbU59ruJDubUraXN8N5rn7kb8tG6sjg74eE0RA3YWT51eusEw== 668 | dependencies: 669 | "@babel/code-frame" "^7.0.0" 670 | "@eslint/eslintrc" "^0.2.2" 671 | ajv "^6.10.0" 672 | chalk "^4.0.0" 673 | cross-spawn "^7.0.2" 674 | debug "^4.0.1" 675 | doctrine "^3.0.0" 676 | enquirer "^2.3.5" 677 | eslint-scope "^5.1.1" 678 | eslint-utils "^2.1.0" 679 | eslint-visitor-keys "^2.0.0" 680 | espree "^7.3.1" 681 | esquery "^1.2.0" 682 | esutils "^2.0.2" 683 | file-entry-cache "^6.0.0" 684 | functional-red-black-tree "^1.0.1" 685 | glob-parent "^5.0.0" 686 | globals "^12.1.0" 687 | ignore "^4.0.6" 688 | import-fresh "^3.0.0" 689 | imurmurhash "^0.1.4" 690 | is-glob "^4.0.0" 691 | js-yaml "^3.13.1" 692 | json-stable-stringify-without-jsonify "^1.0.1" 693 | levn "^0.4.1" 694 | lodash "^4.17.19" 695 | minimatch "^3.0.4" 696 | natural-compare "^1.4.0" 697 | optionator "^0.9.1" 698 | progress "^2.0.0" 699 | regexpp "^3.1.0" 700 | semver "^7.2.1" 701 | strip-ansi "^6.0.0" 702 | strip-json-comments "^3.1.0" 703 | table "^6.0.4" 704 | text-table "^0.2.0" 705 | v8-compile-cache "^2.0.3" 706 | 707 | espree@^7.3.0, espree@^7.3.1: 708 | version "7.3.1" 709 | resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" 710 | integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== 711 | dependencies: 712 | acorn "^7.4.0" 713 | acorn-jsx "^5.3.1" 714 | eslint-visitor-keys "^1.3.0" 715 | 716 | esprima@^4.0.0: 717 | version "4.0.1" 718 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 719 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 720 | 721 | esquery@^1.2.0: 722 | version "1.3.1" 723 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" 724 | integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== 725 | dependencies: 726 | estraverse "^5.1.0" 727 | 728 | esrecurse@^4.1.0: 729 | version "4.2.1" 730 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" 731 | integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== 732 | dependencies: 733 | estraverse "^4.1.0" 734 | 735 | esrecurse@^4.3.0: 736 | version "4.3.0" 737 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 738 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 739 | dependencies: 740 | estraverse "^5.2.0" 741 | 742 | estraverse@^4.1.0, estraverse@^4.1.1: 743 | version "4.3.0" 744 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 745 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 746 | 747 | estraverse@^5.1.0: 748 | version "5.1.0" 749 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642" 750 | integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw== 751 | 752 | estraverse@^5.2.0: 753 | version "5.2.0" 754 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" 755 | integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== 756 | 757 | esutils@^2.0.2: 758 | version "2.0.3" 759 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 760 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 761 | 762 | fast-deep-equal@^3.1.1: 763 | version "3.1.3" 764 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 765 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 766 | 767 | fast-diff@^1.1.2: 768 | version "1.2.0" 769 | resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" 770 | integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== 771 | 772 | fast-json-stable-stringify@^2.0.0: 773 | version "2.1.0" 774 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 775 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 776 | 777 | fast-levenshtein@^2.0.6: 778 | version "2.0.6" 779 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 780 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 781 | 782 | file-entry-cache@^6.0.0: 783 | version "6.0.0" 784 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.0.tgz#7921a89c391c6d93efec2169ac6bf300c527ea0a" 785 | integrity sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA== 786 | dependencies: 787 | flat-cache "^3.0.4" 788 | 789 | fill-range@^7.0.1: 790 | version "7.0.1" 791 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 792 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 793 | dependencies: 794 | to-regex-range "^5.0.1" 795 | 796 | find-up@5.0.0: 797 | version "5.0.0" 798 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" 799 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 800 | dependencies: 801 | locate-path "^6.0.0" 802 | path-exists "^4.0.0" 803 | 804 | find-up@^3.0.0: 805 | version "3.0.0" 806 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" 807 | integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== 808 | dependencies: 809 | locate-path "^3.0.0" 810 | 811 | flat-cache@^3.0.4: 812 | version "3.0.4" 813 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" 814 | integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== 815 | dependencies: 816 | flatted "^3.1.0" 817 | rimraf "^3.0.2" 818 | 819 | flat@^5.0.2: 820 | version "5.0.2" 821 | resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" 822 | integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== 823 | 824 | flatted@^3.1.0: 825 | version "3.1.0" 826 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.0.tgz#a5d06b4a8b01e3a63771daa5cb7a1903e2e57067" 827 | integrity sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA== 828 | 829 | fs.realpath@^1.0.0: 830 | version "1.0.0" 831 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 832 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 833 | 834 | fsevents@~2.1.2: 835 | version "2.1.3" 836 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" 837 | integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== 838 | 839 | functional-red-black-tree@^1.0.1: 840 | version "1.0.1" 841 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 842 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= 843 | 844 | get-caller-file@^2.0.1: 845 | version "2.0.5" 846 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 847 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 848 | 849 | get-func-name@^2.0.0: 850 | version "2.0.0" 851 | resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" 852 | integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= 853 | 854 | get-stdin@^6.0.0: 855 | version "6.0.0" 856 | resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" 857 | integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== 858 | 859 | get-stream@^5.1.0: 860 | version "5.1.0" 861 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" 862 | integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== 863 | dependencies: 864 | pump "^3.0.0" 865 | 866 | getmac@^5.11.0: 867 | version "5.11.0" 868 | resolved "https://registry.yarnpkg.com/getmac/-/getmac-5.11.0.tgz#327b30efbe70868598eca8e68187fff1915b22c4" 869 | integrity sha512-p3g41fJt9du5KKkIXaJm7bcUrwUxn8Jg/8AVBgUmBNdCCorczRJXHLqWSETJuib9dptwNuNcfbct/OoM/meiMA== 870 | dependencies: 871 | "@types/node" "^14.0.14" 872 | 873 | glob-parent@^5.0.0, glob-parent@~5.1.0: 874 | version "5.1.2" 875 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 876 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 877 | dependencies: 878 | is-glob "^4.0.1" 879 | 880 | glob@7.1.6, glob@^7.1.3, glob@^7.1.6: 881 | version "7.1.6" 882 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 883 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== 884 | dependencies: 885 | fs.realpath "^1.0.0" 886 | inflight "^1.0.4" 887 | inherits "2" 888 | minimatch "^3.0.4" 889 | once "^1.3.0" 890 | path-is-absolute "^1.0.0" 891 | 892 | globals@^12.1.0: 893 | version "12.3.0" 894 | resolved "https://registry.yarnpkg.com/globals/-/globals-12.3.0.tgz#1e564ee5c4dded2ab098b0f88f24702a3c56be13" 895 | integrity sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw== 896 | dependencies: 897 | type-fest "^0.8.1" 898 | 899 | got@^11.5.1: 900 | version "11.8.5" 901 | resolved "https://registry.yarnpkg.com/got/-/got-11.8.5.tgz#ce77d045136de56e8f024bebb82ea349bc730046" 902 | integrity sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ== 903 | dependencies: 904 | "@sindresorhus/is" "^4.0.0" 905 | "@szmarczak/http-timer" "^4.0.5" 906 | "@types/cacheable-request" "^6.0.1" 907 | "@types/responselike" "^1.0.0" 908 | cacheable-lookup "^5.0.3" 909 | cacheable-request "^7.0.2" 910 | decompress-response "^6.0.0" 911 | http2-wrapper "^1.0.0-beta.5.2" 912 | lowercase-keys "^2.0.0" 913 | p-cancelable "^2.0.0" 914 | responselike "^2.0.0" 915 | 916 | growl@1.10.5: 917 | version "1.10.5" 918 | resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" 919 | integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== 920 | 921 | has-flag@^3.0.0: 922 | version "3.0.0" 923 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 924 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 925 | 926 | has-flag@^4.0.0: 927 | version "4.0.0" 928 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 929 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 930 | 931 | he@1.2.0: 932 | version "1.2.0" 933 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" 934 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 935 | 936 | hex-lite@^1.5.0: 937 | version "1.5.0" 938 | resolved "https://registry.yarnpkg.com/hex-lite/-/hex-lite-1.5.0.tgz#482db64f673dcacdb8be93c629a799ce5a76b24d" 939 | integrity sha512-bXFMCFoKcksmJ1kDRq6B0+Go5Wgq84Dq/3rX99+0OzBQZKUBEMLguPd1lZSpvmzJACb516n07eyswF4KHAF9cg== 940 | 941 | http-cache-semantics@^4.0.0: 942 | version "4.0.3" 943 | resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz#495704773277eeef6e43f9ab2c2c7d259dda25c5" 944 | integrity sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew== 945 | 946 | http2-wrapper@^1.0.0-beta.5.2: 947 | version "1.0.3" 948 | resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" 949 | integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== 950 | dependencies: 951 | quick-lru "^5.1.1" 952 | resolve-alpn "^1.0.0" 953 | 954 | ignore@^4.0.6: 955 | version "4.0.6" 956 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" 957 | integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== 958 | 959 | immediate@~3.0.5: 960 | version "3.0.6" 961 | resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" 962 | integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= 963 | 964 | import-fresh@^3.0.0: 965 | version "3.2.1" 966 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" 967 | integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== 968 | dependencies: 969 | parent-module "^1.0.0" 970 | resolve-from "^4.0.0" 971 | 972 | import-fresh@^3.2.1: 973 | version "3.3.0" 974 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 975 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 976 | dependencies: 977 | parent-module "^1.0.0" 978 | resolve-from "^4.0.0" 979 | 980 | imurmurhash@^0.1.4: 981 | version "0.1.4" 982 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 983 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 984 | 985 | inflight@^1.0.4: 986 | version "1.0.6" 987 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 988 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 989 | dependencies: 990 | once "^1.3.0" 991 | wrappy "1" 992 | 993 | inherits@2, inherits@~2.0.3: 994 | version "2.0.4" 995 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 996 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 997 | 998 | is-binary-path@~2.1.0: 999 | version "2.1.0" 1000 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 1001 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 1002 | dependencies: 1003 | binary-extensions "^2.0.0" 1004 | 1005 | is-extglob@^2.1.1: 1006 | version "2.1.1" 1007 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1008 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 1009 | 1010 | is-fullwidth-code-point@^2.0.0: 1011 | version "2.0.0" 1012 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 1013 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 1014 | 1015 | is-fullwidth-code-point@^3.0.0: 1016 | version "3.0.0" 1017 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 1018 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 1019 | 1020 | is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: 1021 | version "4.0.1" 1022 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 1023 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 1024 | dependencies: 1025 | is-extglob "^2.1.1" 1026 | 1027 | is-number@^7.0.0: 1028 | version "7.0.0" 1029 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 1030 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 1031 | 1032 | is-plain-obj@^2.1.0: 1033 | version "2.1.0" 1034 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" 1035 | integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== 1036 | 1037 | isarray@0.0.1: 1038 | version "0.0.1" 1039 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" 1040 | integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= 1041 | 1042 | isarray@~1.0.0: 1043 | version "1.0.0" 1044 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1045 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 1046 | 1047 | isexe@^2.0.0: 1048 | version "2.0.0" 1049 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1050 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 1051 | 1052 | js-tokens@^4.0.0: 1053 | version "4.0.0" 1054 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1055 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1056 | 1057 | js-yaml@3.14.0: 1058 | version "3.14.0" 1059 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" 1060 | integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== 1061 | dependencies: 1062 | argparse "^1.0.7" 1063 | esprima "^4.0.0" 1064 | 1065 | js-yaml@^3.13.1: 1066 | version "3.13.1" 1067 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" 1068 | integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== 1069 | dependencies: 1070 | argparse "^1.0.7" 1071 | esprima "^4.0.0" 1072 | 1073 | json-buffer@3.0.1: 1074 | version "3.0.1" 1075 | resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" 1076 | integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== 1077 | 1078 | json-schema-traverse@^0.4.1: 1079 | version "0.4.1" 1080 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 1081 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 1082 | 1083 | json-stable-stringify-without-jsonify@^1.0.1: 1084 | version "1.0.1" 1085 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 1086 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= 1087 | 1088 | jszip@^3.5.0: 1089 | version "3.7.0" 1090 | resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.7.0.tgz#9b8b995a4e7c9024653ce743e902076a82fdf4e6" 1091 | integrity sha512-Y2OlFIzrDOPWUnpU0LORIcDn2xN7rC9yKffFM/7pGhQuhO+SUhfm2trkJ/S5amjFvem0Y+1EALz/MEPkvHXVNw== 1092 | dependencies: 1093 | lie "~3.3.0" 1094 | pako "~1.0.2" 1095 | readable-stream "~2.3.6" 1096 | set-immediate-shim "~1.0.1" 1097 | 1098 | just-extend@^4.0.2: 1099 | version "4.1.0" 1100 | resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-4.1.0.tgz#7278a4027d889601640ee0ce0e5a00b992467da4" 1101 | integrity sha512-ApcjaOdVTJ7y4r08xI5wIqpvwS48Q0PBG4DJROcEkH1f8MdAiNFyFxz3xoL0LWAVwjrwPYZdVHHxhRHcx/uGLA== 1102 | 1103 | keyv@^4.0.0: 1104 | version "4.0.1" 1105 | resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.0.1.tgz#9fe703cb4a94d6d11729d320af033307efd02ee6" 1106 | integrity sha512-xz6Jv6oNkbhrFCvCP7HQa8AaII8y8LRpoSm661NOKLr4uHuBwhX4epXrPQgF3+xdJnN4Esm5X0xwY4bOlALOtw== 1107 | dependencies: 1108 | json-buffer "3.0.1" 1109 | 1110 | levn@^0.4.1: 1111 | version "0.4.1" 1112 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 1113 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 1114 | dependencies: 1115 | prelude-ls "^1.2.1" 1116 | type-check "~0.4.0" 1117 | 1118 | lie@~3.3.0: 1119 | version "3.3.0" 1120 | resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" 1121 | integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== 1122 | dependencies: 1123 | immediate "~3.0.5" 1124 | 1125 | locate-path@^3.0.0: 1126 | version "3.0.0" 1127 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" 1128 | integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== 1129 | dependencies: 1130 | p-locate "^3.0.0" 1131 | path-exists "^3.0.0" 1132 | 1133 | locate-path@^6.0.0: 1134 | version "6.0.0" 1135 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" 1136 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 1137 | dependencies: 1138 | p-locate "^5.0.0" 1139 | 1140 | lodash.get@^4.4.2: 1141 | version "4.4.2" 1142 | resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" 1143 | integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= 1144 | 1145 | lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20: 1146 | version "4.17.21" 1147 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 1148 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 1149 | 1150 | log-symbols@4.0.0: 1151 | version "4.0.0" 1152 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" 1153 | integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== 1154 | dependencies: 1155 | chalk "^4.0.0" 1156 | 1157 | lowercase-keys@^2.0.0: 1158 | version "2.0.0" 1159 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" 1160 | integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== 1161 | 1162 | make-error@^1.1.1: 1163 | version "1.3.5" 1164 | resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" 1165 | integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g== 1166 | 1167 | mimic-response@^1.0.0: 1168 | version "1.0.1" 1169 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" 1170 | integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== 1171 | 1172 | mimic-response@^3.1.0: 1173 | version "3.1.0" 1174 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" 1175 | integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== 1176 | 1177 | minimatch@3.0.4, minimatch@^3.0.4: 1178 | version "3.0.4" 1179 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1180 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 1181 | dependencies: 1182 | brace-expansion "^1.1.7" 1183 | 1184 | mocha@^8.2.1: 1185 | version "8.2.1" 1186 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-8.2.1.tgz#f2fa68817ed0e53343d989df65ccd358bc3a4b39" 1187 | integrity sha512-cuLBVfyFfFqbNR0uUKbDGXKGk+UDFe6aR4os78XIrMQpZl/nv7JYHcvP5MFIAb374b2zFXsdgEGwmzMtP0Xg8w== 1188 | dependencies: 1189 | "@ungap/promise-all-settled" "1.1.2" 1190 | ansi-colors "4.1.1" 1191 | browser-stdout "1.3.1" 1192 | chokidar "3.4.3" 1193 | debug "4.2.0" 1194 | diff "4.0.2" 1195 | escape-string-regexp "4.0.0" 1196 | find-up "5.0.0" 1197 | glob "7.1.6" 1198 | growl "1.10.5" 1199 | he "1.2.0" 1200 | js-yaml "3.14.0" 1201 | log-symbols "4.0.0" 1202 | minimatch "3.0.4" 1203 | ms "2.1.2" 1204 | nanoid "3.1.12" 1205 | serialize-javascript "5.0.1" 1206 | strip-json-comments "3.1.1" 1207 | supports-color "7.2.0" 1208 | which "2.0.2" 1209 | wide-align "1.1.3" 1210 | workerpool "6.0.2" 1211 | yargs "13.3.2" 1212 | yargs-parser "13.1.2" 1213 | yargs-unparser "2.0.0" 1214 | 1215 | ms@2.1.2, ms@^2.1.1: 1216 | version "2.1.2" 1217 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1218 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1219 | 1220 | nanoid@3.1.12: 1221 | version "3.1.12" 1222 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.12.tgz#6f7736c62e8d39421601e4a0c77623a97ea69654" 1223 | integrity sha512-1qstj9z5+x491jfiC4Nelk+f8XBad7LN20PmyWINJEMRSf3wcAjAWysw1qaA8z6NSKe2sjq1hRSDpBH5paCb6A== 1224 | 1225 | natural-compare@^1.4.0: 1226 | version "1.4.0" 1227 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 1228 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= 1229 | 1230 | nise@^4.0.1: 1231 | version "4.0.4" 1232 | resolved "https://registry.yarnpkg.com/nise/-/nise-4.0.4.tgz#d73dea3e5731e6561992b8f570be9e363c4512dd" 1233 | integrity sha512-bTTRUNlemx6deJa+ZyoCUTRvH3liK5+N6VQZ4NIw90AgDXY6iPnsqplNFf6STcj+ePk0H/xqxnP75Lr0J0Fq3A== 1234 | dependencies: 1235 | "@sinonjs/commons" "^1.7.0" 1236 | "@sinonjs/fake-timers" "^6.0.0" 1237 | "@sinonjs/text-encoding" "^0.7.1" 1238 | just-extend "^4.0.2" 1239 | path-to-regexp "^1.7.0" 1240 | 1241 | normalize-path@^3.0.0, normalize-path@~3.0.0: 1242 | version "3.0.0" 1243 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 1244 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 1245 | 1246 | normalize-url@^6.0.1: 1247 | version "6.1.0" 1248 | resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" 1249 | integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== 1250 | 1251 | once@^1.3.0, once@^1.3.1, once@^1.4.0: 1252 | version "1.4.0" 1253 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1254 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1255 | dependencies: 1256 | wrappy "1" 1257 | 1258 | optionator@^0.9.1: 1259 | version "0.9.1" 1260 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" 1261 | integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== 1262 | dependencies: 1263 | deep-is "^0.1.3" 1264 | fast-levenshtein "^2.0.6" 1265 | levn "^0.4.1" 1266 | prelude-ls "^1.2.1" 1267 | type-check "^0.4.0" 1268 | word-wrap "^1.2.3" 1269 | 1270 | p-cancelable@^2.0.0: 1271 | version "2.0.0" 1272 | resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.0.0.tgz#4a3740f5bdaf5ed5d7c3e34882c6fb5d6b266a6e" 1273 | integrity sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg== 1274 | 1275 | p-limit@^2.0.0: 1276 | version "2.3.0" 1277 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" 1278 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== 1279 | dependencies: 1280 | p-try "^2.0.0" 1281 | 1282 | p-limit@^3.0.2: 1283 | version "3.1.0" 1284 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 1285 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 1286 | dependencies: 1287 | yocto-queue "^0.1.0" 1288 | 1289 | p-locate@^3.0.0: 1290 | version "3.0.0" 1291 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" 1292 | integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== 1293 | dependencies: 1294 | p-limit "^2.0.0" 1295 | 1296 | p-locate@^5.0.0: 1297 | version "5.0.0" 1298 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" 1299 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 1300 | dependencies: 1301 | p-limit "^3.0.2" 1302 | 1303 | p-try@^2.0.0: 1304 | version "2.2.0" 1305 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 1306 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 1307 | 1308 | pako@~1.0.2: 1309 | version "1.0.10" 1310 | resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" 1311 | integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw== 1312 | 1313 | parent-module@^1.0.0: 1314 | version "1.0.1" 1315 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 1316 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 1317 | dependencies: 1318 | callsites "^3.0.0" 1319 | 1320 | path-exists@^3.0.0: 1321 | version "3.0.0" 1322 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 1323 | integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= 1324 | 1325 | path-exists@^4.0.0: 1326 | version "4.0.0" 1327 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 1328 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 1329 | 1330 | path-is-absolute@^1.0.0: 1331 | version "1.0.1" 1332 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1333 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1334 | 1335 | path-key@^3.1.0: 1336 | version "3.1.1" 1337 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1338 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1339 | 1340 | path-to-regexp@^1.7.0: 1341 | version "1.8.0" 1342 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" 1343 | integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== 1344 | dependencies: 1345 | isarray "0.0.1" 1346 | 1347 | pathval@^1.1.0: 1348 | version "1.1.1" 1349 | resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" 1350 | integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== 1351 | 1352 | picomatch@^2.0.4, picomatch@^2.2.1: 1353 | version "2.2.2" 1354 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" 1355 | integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== 1356 | 1357 | prelude-ls@^1.2.1: 1358 | version "1.2.1" 1359 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 1360 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 1361 | 1362 | prettier-linter-helpers@^1.0.0: 1363 | version "1.0.0" 1364 | resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" 1365 | integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== 1366 | dependencies: 1367 | fast-diff "^1.1.2" 1368 | 1369 | prettier@^2.0.5: 1370 | version "2.0.5" 1371 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.5.tgz#d6d56282455243f2f92cc1716692c08aa31522d4" 1372 | integrity sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg== 1373 | 1374 | process-nextick-args@~2.0.0: 1375 | version "2.0.1" 1376 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 1377 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 1378 | 1379 | progress@^2.0.0: 1380 | version "2.0.3" 1381 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 1382 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== 1383 | 1384 | pump@^3.0.0: 1385 | version "3.0.0" 1386 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 1387 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 1388 | dependencies: 1389 | end-of-stream "^1.1.0" 1390 | once "^1.3.1" 1391 | 1392 | punycode@^2.1.0: 1393 | version "2.1.1" 1394 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 1395 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 1396 | 1397 | query-string@^6.13.1: 1398 | version "6.13.1" 1399 | resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.13.1.tgz#d913ccfce3b4b3a713989fe6d39466d92e71ccad" 1400 | integrity sha512-RfoButmcK+yCta1+FuU8REvisx1oEzhMKwhLUNcepQTPGcNMp1sIqjnfCtfnvGSQZQEhaBHvccujtWoUV3TTbA== 1401 | dependencies: 1402 | decode-uri-component "^0.2.0" 1403 | split-on-first "^1.0.0" 1404 | strict-uri-encode "^2.0.0" 1405 | 1406 | quick-lru@^5.1.1: 1407 | version "5.1.1" 1408 | resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" 1409 | integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== 1410 | 1411 | randombytes@^2.1.0: 1412 | version "2.1.0" 1413 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" 1414 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 1415 | dependencies: 1416 | safe-buffer "^5.1.0" 1417 | 1418 | readable-stream@~2.3.6: 1419 | version "2.3.7" 1420 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" 1421 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== 1422 | dependencies: 1423 | core-util-is "~1.0.0" 1424 | inherits "~2.0.3" 1425 | isarray "~1.0.0" 1426 | process-nextick-args "~2.0.0" 1427 | safe-buffer "~5.1.1" 1428 | string_decoder "~1.1.1" 1429 | util-deprecate "~1.0.1" 1430 | 1431 | readdirp@~3.5.0: 1432 | version "3.5.0" 1433 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" 1434 | integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== 1435 | dependencies: 1436 | picomatch "^2.2.1" 1437 | 1438 | regexpp@^3.0.0: 1439 | version "3.0.0" 1440 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.0.0.tgz#dd63982ee3300e67b41c1956f850aa680d9d330e" 1441 | integrity sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g== 1442 | 1443 | regexpp@^3.1.0: 1444 | version "3.1.0" 1445 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" 1446 | integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== 1447 | 1448 | require-directory@^2.1.1: 1449 | version "2.1.1" 1450 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 1451 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 1452 | 1453 | require-main-filename@^2.0.0: 1454 | version "2.0.0" 1455 | resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" 1456 | integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== 1457 | 1458 | resolve-alpn@^1.0.0: 1459 | version "1.0.0" 1460 | resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.0.0.tgz#745ad60b3d6aff4b4a48e01b8c0bdc70959e0e8c" 1461 | integrity sha512-rTuiIEqFmGxne4IovivKSDzld2lWW9QCjqv80SYjPgf+gS35eaCAjaP54CCwGAwBtnCsvNLYtqxe1Nw+i6JEmA== 1462 | 1463 | resolve-from@^4.0.0: 1464 | version "4.0.0" 1465 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 1466 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 1467 | 1468 | responselike@^2.0.0: 1469 | version "2.0.0" 1470 | resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.0.tgz#26391bcc3174f750f9a79eacc40a12a5c42d7723" 1471 | integrity sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw== 1472 | dependencies: 1473 | lowercase-keys "^2.0.0" 1474 | 1475 | rimraf@^3.0.2: 1476 | version "3.0.2" 1477 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 1478 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 1479 | dependencies: 1480 | glob "^7.1.3" 1481 | 1482 | safe-buffer@^5.1.0: 1483 | version "5.2.1" 1484 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1485 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1486 | 1487 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 1488 | version "5.1.2" 1489 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 1490 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 1491 | 1492 | semver@^7.2.1, semver@^7.3.2: 1493 | version "7.3.2" 1494 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" 1495 | integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== 1496 | 1497 | serialize-javascript@5.0.1: 1498 | version "5.0.1" 1499 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" 1500 | integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== 1501 | dependencies: 1502 | randombytes "^2.1.0" 1503 | 1504 | set-blocking@^2.0.0: 1505 | version "2.0.0" 1506 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 1507 | integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= 1508 | 1509 | set-immediate-shim@~1.0.1: 1510 | version "1.0.1" 1511 | resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" 1512 | integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= 1513 | 1514 | shebang-command@^2.0.0: 1515 | version "2.0.0" 1516 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1517 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1518 | dependencies: 1519 | shebang-regex "^3.0.0" 1520 | 1521 | shebang-regex@^3.0.0: 1522 | version "3.0.0" 1523 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1524 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1525 | 1526 | sinon-stub-promise@^4.0.0: 1527 | version "4.0.0" 1528 | resolved "https://registry.yarnpkg.com/sinon-stub-promise/-/sinon-stub-promise-4.0.0.tgz#6d498ba1198557cd01e3466af92dc7df725192c2" 1529 | integrity sha1-bUmLoRmFV80B40Zq+S3H33JRksI= 1530 | 1531 | sinon@^9.0.2: 1532 | version "9.0.2" 1533 | resolved "https://registry.yarnpkg.com/sinon/-/sinon-9.0.2.tgz#b9017e24633f4b1c98dfb6e784a5f0509f5fd85d" 1534 | integrity sha512-0uF8Q/QHkizNUmbK3LRFqx5cpTttEVXudywY9Uwzy8bTfZUhljZ7ARzSxnRHWYWtVTeh4Cw+tTb3iU21FQVO9A== 1535 | dependencies: 1536 | "@sinonjs/commons" "^1.7.2" 1537 | "@sinonjs/fake-timers" "^6.0.1" 1538 | "@sinonjs/formatio" "^5.0.1" 1539 | "@sinonjs/samsam" "^5.0.3" 1540 | diff "^4.0.2" 1541 | nise "^4.0.1" 1542 | supports-color "^7.1.0" 1543 | 1544 | slice-ansi@^4.0.0: 1545 | version "4.0.0" 1546 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" 1547 | integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== 1548 | dependencies: 1549 | ansi-styles "^4.0.0" 1550 | astral-regex "^2.0.0" 1551 | is-fullwidth-code-point "^3.0.0" 1552 | 1553 | source-map-support@^0.5.17: 1554 | version "0.5.19" 1555 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" 1556 | integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== 1557 | dependencies: 1558 | buffer-from "^1.0.0" 1559 | source-map "^0.6.0" 1560 | 1561 | source-map@^0.6.0: 1562 | version "0.6.1" 1563 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 1564 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 1565 | 1566 | split-on-first@^1.0.0: 1567 | version "1.1.0" 1568 | resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" 1569 | integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== 1570 | 1571 | sprintf-js@~1.0.2: 1572 | version "1.0.3" 1573 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 1574 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 1575 | 1576 | strict-uri-encode@^2.0.0: 1577 | version "2.0.0" 1578 | resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" 1579 | integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY= 1580 | 1581 | "string-width@^1.0.2 || 2": 1582 | version "2.1.1" 1583 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 1584 | integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== 1585 | dependencies: 1586 | is-fullwidth-code-point "^2.0.0" 1587 | strip-ansi "^4.0.0" 1588 | 1589 | string-width@^3.0.0, string-width@^3.1.0: 1590 | version "3.1.0" 1591 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" 1592 | integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== 1593 | dependencies: 1594 | emoji-regex "^7.0.1" 1595 | is-fullwidth-code-point "^2.0.0" 1596 | strip-ansi "^5.1.0" 1597 | 1598 | string-width@^4.2.0: 1599 | version "4.2.0" 1600 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" 1601 | integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== 1602 | dependencies: 1603 | emoji-regex "^8.0.0" 1604 | is-fullwidth-code-point "^3.0.0" 1605 | strip-ansi "^6.0.0" 1606 | 1607 | string_decoder@~1.1.1: 1608 | version "1.1.1" 1609 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 1610 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 1611 | dependencies: 1612 | safe-buffer "~5.1.0" 1613 | 1614 | strip-ansi@^4.0.0: 1615 | version "4.0.0" 1616 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 1617 | integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= 1618 | dependencies: 1619 | ansi-regex "^3.0.0" 1620 | 1621 | strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: 1622 | version "5.2.0" 1623 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 1624 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== 1625 | dependencies: 1626 | ansi-regex "^4.1.0" 1627 | 1628 | strip-ansi@^6.0.0: 1629 | version "6.0.0" 1630 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 1631 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== 1632 | dependencies: 1633 | ansi-regex "^5.0.0" 1634 | 1635 | strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: 1636 | version "3.1.1" 1637 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 1638 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1639 | 1640 | supports-color@7.2.0: 1641 | version "7.2.0" 1642 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1643 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1644 | dependencies: 1645 | has-flag "^4.0.0" 1646 | 1647 | supports-color@^5.3.0: 1648 | version "5.5.0" 1649 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1650 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1651 | dependencies: 1652 | has-flag "^3.0.0" 1653 | 1654 | supports-color@^7.1.0: 1655 | version "7.1.0" 1656 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" 1657 | integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== 1658 | dependencies: 1659 | has-flag "^4.0.0" 1660 | 1661 | table@^6.0.4: 1662 | version "6.0.4" 1663 | resolved "https://registry.yarnpkg.com/table/-/table-6.0.4.tgz#c523dd182177e926c723eb20e1b341238188aa0d" 1664 | integrity sha512-sBT4xRLdALd+NFBvwOz8bw4b15htyythha+q+DVZqy2RS08PPC8O2sZFgJYEY7bJvbCFKccs+WIZ/cd+xxTWCw== 1665 | dependencies: 1666 | ajv "^6.12.4" 1667 | lodash "^4.17.20" 1668 | slice-ansi "^4.0.0" 1669 | string-width "^4.2.0" 1670 | 1671 | text-table@^0.2.0: 1672 | version "0.2.0" 1673 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 1674 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= 1675 | 1676 | to-regex-range@^5.0.1: 1677 | version "5.0.1" 1678 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1679 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1680 | dependencies: 1681 | is-number "^7.0.0" 1682 | 1683 | ts-node@^8.10.2: 1684 | version "8.10.2" 1685 | resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.10.2.tgz#eee03764633b1234ddd37f8db9ec10b75ec7fb8d" 1686 | integrity sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA== 1687 | dependencies: 1688 | arg "^4.1.0" 1689 | diff "^4.0.1" 1690 | make-error "^1.1.1" 1691 | source-map-support "^0.5.17" 1692 | yn "3.1.1" 1693 | 1694 | tslib@^1.8.1: 1695 | version "1.10.0" 1696 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" 1697 | integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== 1698 | 1699 | tsutils@^3.17.1: 1700 | version "3.17.1" 1701 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" 1702 | integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== 1703 | dependencies: 1704 | tslib "^1.8.1" 1705 | 1706 | type-check@^0.4.0, type-check@~0.4.0: 1707 | version "0.4.0" 1708 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 1709 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 1710 | dependencies: 1711 | prelude-ls "^1.2.1" 1712 | 1713 | type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.5, type-detect@^4.0.8: 1714 | version "4.0.8" 1715 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" 1716 | integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== 1717 | 1718 | type-fest@^0.8.1: 1719 | version "0.8.1" 1720 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" 1721 | integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== 1722 | 1723 | typescript@^3.9.7: 1724 | version "3.9.7" 1725 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa" 1726 | integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw== 1727 | 1728 | uri-js@^4.2.2: 1729 | version "4.4.1" 1730 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 1731 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 1732 | dependencies: 1733 | punycode "^2.1.0" 1734 | 1735 | util-deprecate@~1.0.1: 1736 | version "1.0.2" 1737 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1738 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 1739 | 1740 | uuid@^8.2.0: 1741 | version "8.2.0" 1742 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.2.0.tgz#cb10dd6b118e2dada7d0cd9730ba7417c93d920e" 1743 | integrity sha512-CYpGiFTUrmI6OBMkAdjSDM0k5h8SkkiTP4WAjQgDgNB1S3Ou9VBEvr6q0Kv2H1mMk7IWfxYGpMH5sd5AvcIV2Q== 1744 | 1745 | v8-compile-cache@^2.0.3: 1746 | version "2.1.0" 1747 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" 1748 | integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== 1749 | 1750 | which-module@^2.0.0: 1751 | version "2.0.0" 1752 | resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" 1753 | integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= 1754 | 1755 | which@2.0.2, which@^2.0.1: 1756 | version "2.0.2" 1757 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1758 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1759 | dependencies: 1760 | isexe "^2.0.0" 1761 | 1762 | wide-align@1.1.3: 1763 | version "1.1.3" 1764 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" 1765 | integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== 1766 | dependencies: 1767 | string-width "^1.0.2 || 2" 1768 | 1769 | word-wrap@^1.2.3: 1770 | version "1.2.3" 1771 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" 1772 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== 1773 | 1774 | workerpool@6.0.2: 1775 | version "6.0.2" 1776 | resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.0.2.tgz#e241b43d8d033f1beb52c7851069456039d1d438" 1777 | integrity sha512-DSNyvOpFKrNusaaUwk+ej6cBj1bmhLcBfj80elGk+ZIo5JSkq+unB1dLKEOcNfJDZgjGICfhQ0Q5TbP0PvF4+Q== 1778 | 1779 | wrap-ansi@^5.1.0: 1780 | version "5.1.0" 1781 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" 1782 | integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== 1783 | dependencies: 1784 | ansi-styles "^3.2.0" 1785 | string-width "^3.0.0" 1786 | strip-ansi "^5.0.0" 1787 | 1788 | wrappy@1: 1789 | version "1.0.2" 1790 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1791 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1792 | 1793 | y18n@^4.0.0: 1794 | version "4.0.1" 1795 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" 1796 | integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== 1797 | 1798 | yargs-parser@13.1.2, yargs-parser@^13.1.2: 1799 | version "13.1.2" 1800 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" 1801 | integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== 1802 | dependencies: 1803 | camelcase "^5.0.0" 1804 | decamelize "^1.2.0" 1805 | 1806 | yargs-unparser@2.0.0: 1807 | version "2.0.0" 1808 | resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" 1809 | integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== 1810 | dependencies: 1811 | camelcase "^6.0.0" 1812 | decamelize "^4.0.0" 1813 | flat "^5.0.2" 1814 | is-plain-obj "^2.1.0" 1815 | 1816 | yargs@13.3.2: 1817 | version "13.3.2" 1818 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" 1819 | integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== 1820 | dependencies: 1821 | cliui "^5.0.0" 1822 | find-up "^3.0.0" 1823 | get-caller-file "^2.0.1" 1824 | require-directory "^2.1.1" 1825 | require-main-filename "^2.0.0" 1826 | set-blocking "^2.0.0" 1827 | string-width "^3.0.0" 1828 | which-module "^2.0.0" 1829 | y18n "^4.0.0" 1830 | yargs-parser "^13.1.2" 1831 | 1832 | yn@3.1.1: 1833 | version "3.1.1" 1834 | resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" 1835 | integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== 1836 | 1837 | yocto-queue@^0.1.0: 1838 | version "0.1.0" 1839 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 1840 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 1841 | --------------------------------------------------------------------------------