├── .gitignore ├── README.md ├── package.json ├── src ├── app.ts ├── utils │ ├── filename-generator.ts │ ├── hasOwnProperty.ts │ ├── kana-transformations.ts │ ├── kindle-dict-entry.ts │ ├── load-dict.ts │ └── merge-dict-data.ts └── yomichan │ ├── schema.json │ ├── yomichan-formatter.ts │ └── yomichan-types.ts ├── tsconfig.json └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | dist/ 3 | output/ 4 | dicts/ 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Convert Yomichan dictionary to Kindle dictionary (MOBI) 2 | 3 | Usage: 4 | 1. `npx ts-node ./src/app.ts -i "dicts/jmdict" -o "output" -t "JMDict"` 5 | 2. `kindlegen "output/JMDict.opf"` 6 | 7 | 8 | References: 9 | - [Creating Dictionaries (Amazon Kindle)](https://kdp.amazon.com/en_US/help/topic/G2HXJS944GL88DNV) 10 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "yomi2mobi", 3 | "version": "1.0.0", 4 | "license": "MIT", 5 | "private": true, 6 | "scripts": { 7 | "dev": "ts-node ./src/app.ts", 8 | "build": "rimraf dist && tsc" 9 | }, 10 | "dependencies": { 11 | "argparse": "^2.0.1", 12 | "easyimage": "^3.1.1", 13 | "fs-extra": "^10.0.0", 14 | "html-minifier": "^4.0.0", 15 | "imagemin": "7", 16 | "imagemin-mozjpeg": "^9.0.0", 17 | "lodash": "^4.17.21", 18 | "mime-types": "^2.1.32", 19 | "source-map-support": "^0.5.19", 20 | "xmlbuilder2": "^2.4.1" 21 | }, 22 | "devDependencies": { 23 | "@types/argparse": "^2.0.8", 24 | "@types/fs-extra": "^9.0.11", 25 | "@types/html-minifier": "^4.0.1", 26 | "@types/imagemin-mozjpeg": "^8.0.1", 27 | "@types/lodash": "^4.14.170", 28 | "@types/mime-types": "^2.1.0", 29 | "@types/node": "^15.6.0", 30 | "rimraf": "^3.0.2", 31 | "ts-node": "^10.0.0", 32 | "typescript": "^4.2.4" 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/app.ts: -------------------------------------------------------------------------------- 1 | import { ArgumentParser } from 'argparse'; 2 | import * as easyImage from 'easyimage'; 3 | import fsExtra from 'fs-extra'; 4 | import htmlMinifier from 'html-minifier'; 5 | import imagemin from 'imagemin'; 6 | import imageminMozjpeg from 'imagemin-mozjpeg'; 7 | import * as _ from 'lodash'; 8 | import mime from 'mime-types'; 9 | import path from 'path'; 10 | import process from 'process'; 11 | import { fragment } from 'xmlbuilder2'; 12 | import { loadDict } from './utils/load-dict'; 13 | import { mergeDictData } from './utils/merge-dict-data'; 14 | import { 15 | combineDefinitions, 16 | KindleDictEntry, 17 | kindleEntriesToXHtml, 18 | yomichanEntryToKindle, 19 | } from './utils/kindle-dict-entry'; 20 | import { YomichanEntry } from './yomichan/yomichan-formatter'; 21 | import { Definition, StructuredContentItem } from './yomichan/yomichan-types'; 22 | import { FilenameGenerator } from './utils/filename-generator'; 23 | 24 | 25 | function getFilePaths(definitions: Definition[]): string[] { 26 | const copySingleDef = (def: Definition | StructuredContentItem): string[] => { 27 | if (typeof def !== 'object') { 28 | return []; 29 | } 30 | if ('content' in def) { 31 | if (Array.isArray(def.content)) { 32 | return def.content.flatMap(copySingleDef); 33 | } 34 | return copySingleDef(def.content); 35 | } 36 | if ('path' in def) { 37 | return [def.path]; 38 | } 39 | return []; 40 | } 41 | return definitions.flatMap(copySingleDef); 42 | } 43 | 44 | async function copyAndConvertFormats( 45 | input: string, 46 | output: string, 47 | yomiEntries: YomichanEntry[], 48 | options: { 49 | imageQuality: number; 50 | maxHeight?: number; 51 | }, 52 | ) { 53 | const filePathMap: Record = {}; 54 | let allFilePaths: string[] = []; 55 | for (const yomiEntry of yomiEntries) { 56 | allFilePaths.push(...getFilePaths(yomiEntry.definitions)); 57 | } 58 | allFilePaths = _.uniq(allFilePaths); 59 | const chunkedFilePaths = _.chunk(allFilePaths, 30); 60 | const filenameGenerator = new FilenameGenerator(); 61 | const outputRelativeDir = 'i'; 62 | for (let i = 0; i < chunkedFilePaths.length; i += 1) { 63 | const sysPathToRelativePath: Record = {}; 64 | const inputFiles = await Promise.all(chunkedFilePaths[i] 65 | .map(async (filePath) => { 66 | const inputPath = path.join(input, filePath); 67 | let outputPath: string; 68 | const supportedTypeRegex = /\.((gif)|(jpe?g)|(png))$/i; 69 | if (!supportedTypeRegex.test(filePath)) { 70 | outputPath = path.join( 71 | output, 72 | outputRelativeDir, 73 | filenameGenerator.generate() + '.jpg', 74 | ); 75 | } else { 76 | outputPath = path.join( 77 | output, 78 | outputRelativeDir, 79 | filePath.replace(/[^.]+/, filenameGenerator.generate()), 80 | ); 81 | } 82 | 83 | fsExtra.mkdirpSync(path.dirname(outputPath)); 84 | const additionalArgs: string[] = []; 85 | if (options.maxHeight) { 86 | additionalArgs.push('-resize'); 87 | if (process.platform === 'win32') { 88 | additionalArgs.push(`x${options.maxHeight}^>`); 89 | } else { 90 | additionalArgs.push(`x${options.maxHeight}\\>`); 91 | } 92 | } 93 | // moz has better (quality-based) compression, ignore for this step 94 | await easyImage.execute('convert', [ 95 | inputPath, 96 | '-background', 97 | 'white', 98 | '-flatten', 99 | ...additionalArgs, 100 | outputPath, 101 | ]); 102 | 103 | const imageminInputPathFixed = outputPath.replace(/\\/g, '/'); 104 | sysPathToRelativePath[imageminInputPathFixed] = filePath; 105 | return imageminInputPathFixed; 106 | }) 107 | ); 108 | 109 | const conversionResults = await imagemin(inputFiles, { 110 | destination: `${output}/.tmp`, 111 | plugins: [ 112 | imageminMozjpeg({ 113 | quality: options.imageQuality, 114 | }), 115 | ], 116 | }); 117 | await Promise.all(conversionResults.map((conversionResult) => { 118 | const originalRelativePath = sysPathToRelativePath[conversionResult.sourcePath]; 119 | const newFilename = path.basename(conversionResult.sourcePath); 120 | const newRelativePath = path.join(outputRelativeDir, newFilename); 121 | filePathMap[originalRelativePath] = newRelativePath.replace(/\\/g, '/'); 122 | 123 | const copyToPath = path.join(output, newRelativePath); 124 | fsExtra.mkdirpSync(path.dirname(copyToPath)); 125 | return fsExtra.rename( 126 | conversionResult.destinationPath, 127 | copyToPath, 128 | ); 129 | })); 130 | console.log(`Progress (Image): ${i}/${chunkedFilePaths.length} (${(i / chunkedFilePaths.length * 100).toFixed(2)}%)`); 131 | } 132 | return filePathMap; 133 | } 134 | 135 | // For unsupported characters (personal use) 136 | function customReplacements(value: string) { 137 | value = value.replace(/1️⃣/g, '[一]'); 138 | value = value.replace(/2️⃣/g, '[二]'); 139 | value = value.replace(/3️⃣/g, '[三]'); 140 | value = value.replace(/4️⃣/g, '[四]'); 141 | value = value.replace(/5️⃣/g, '[五]'); 142 | value = value.replace(/6️⃣/g, '[六]'); 143 | return value; 144 | } 145 | 146 | async function main(args: Partial<{ 147 | input: string; 148 | output: string; 149 | title: string; 150 | author: string; 151 | cover_image: string; 152 | main_dict: string; 153 | debug: boolean; 154 | max_height: number; 155 | }> & { 156 | image_quality: number; 157 | }) { 158 | if (!args.input || !args.output || !args.title) { 159 | parser.print_help(); 160 | return; 161 | } 162 | const input: string = args.input; 163 | const output: string = args.output; 164 | let yomiEntries = await loadDict(args.input); 165 | console.log('loaded dict') 166 | if (args.main_dict) { 167 | yomiEntries = await mergeDictData(yomiEntries, args.main_dict); 168 | } 169 | 170 | let coverImageName: string | undefined; 171 | if (args.cover_image) { 172 | console.log('Copying cover image'); 173 | coverImageName = 'cover'; 174 | if (args.cover_image.includes('.')) { 175 | coverImageName += '.' + args.cover_image.replace(/.+\./, ''); 176 | } 177 | fsExtra.copyFileSync(args.cover_image, path.join(args.output, coverImageName)); 178 | } 179 | 180 | 181 | console.log(`Copying/converting images (Quality: ${args.image_quality})`); 182 | const filePathMap = await copyAndConvertFormats(input, output, yomiEntries, { 183 | imageQuality: args.image_quality, 184 | maxHeight: args.max_height, 185 | }); 186 | 187 | let kindleEntries: KindleDictEntry[] = []; 188 | 189 | for (const yomiEntry of yomiEntries) { 190 | kindleEntries.push(yomichanEntryToKindle(yomiEntry, true, filePathMap)); 191 | } 192 | 193 | const groupedKindleEntries = _.groupBy(kindleEntries, (kindleEntry): string => combineDefinitions(kindleEntry.definitions).end()); 194 | kindleEntries = Object.values(groupedKindleEntries).map((similarKindleEntries): KindleDictEntry => { 195 | const mergedSearchDataList = similarKindleEntries.flatMap((x) => x.searchDataList); 196 | 197 | return { 198 | headwords: _.uniq(similarKindleEntries.flatMap((x) => x.headwords)), 199 | boldHeadword: similarKindleEntries[0].boldHeadword, 200 | searchDataList: _.uniqBy(mergedSearchDataList, (x) => x.term), 201 | definitions: similarKindleEntries[0].definitions, 202 | frequency: similarKindleEntries.map((x) => x.frequency).reduce((a, b) => Math.max(a, b)), 203 | }; 204 | }); 205 | 206 | kindleEntries = kindleEntries.sort((a, b) => b.frequency - a.frequency); 207 | 208 | const contents: { 209 | id: string; 210 | filename: string; 211 | }[] = []; 212 | 213 | const outputDir = args.output; 214 | fsExtra.mkdirpSync(outputDir); 215 | const chunkedKindleEntries = _.chunk(kindleEntries, 10000); 216 | console.log("writing html files") 217 | for (let i = 0; i < chunkedKindleEntries.length; i += 1) { 218 | const doc = kindleEntriesToXHtml(chunkedKindleEntries[i]); 219 | const outputFilename = `entries-${i}.html`; 220 | contents.push({ 221 | id: `entries-${i}`, 222 | filename: outputFilename, 223 | }); 224 | let value = doc.end({ prettyPrint: args.debug }); 225 | value = customReplacements(value); 226 | value = htmlMinifier.minify(value); 227 | fsExtra.writeFileSync(path.join(outputDir, outputFilename), value); 228 | 229 | console.log(`Progress: ${i}/${chunkedKindleEntries.length} (${(i / chunkedKindleEntries.length * 100).toFixed(2)}%)`); 230 | } 231 | 232 | let opfXml = fragment() 233 | .ele('package', { 234 | version: '2.0', 235 | xmlns: 'http://www.idpf.org/2007/opf', 236 | }) 237 | .ele('metadata') 238 | .ele('dc:title').txt(args.title).up(); 239 | if (args.author) { 240 | opfXml = opfXml.ele('dc:creator', { 241 | 'opf:role': 'aut', 242 | }).txt(args.author).up(); 243 | } 244 | opfXml = opfXml 245 | .ele('dc:language').txt('ja').up() 246 | .ele('x-metadata') 247 | .ele('DictionaryInLanguage').txt('ja').up() 248 | .ele('DictionaryOutLanguage').txt('ja').up() 249 | .ele('DefaultLookupIndex').txt('j').up() 250 | .up() 251 | .up(); 252 | 253 | opfXml = opfXml.ele('manifest'); 254 | for (const content of contents) { 255 | opfXml = opfXml.ele('item', { 256 | id: content.id, 257 | href: content.filename, 258 | 'media-type': 'application/xhtml+xml', 259 | }).up(); 260 | } 261 | 262 | if (coverImageName) { 263 | opfXml = opfXml.ele('item', { 264 | id: 'cover', 265 | href: coverImageName, 266 | 'media-type': mime.lookup(coverImageName), 267 | properties: 'cover-image', 268 | }).up(); 269 | } 270 | 271 | let resourceCount = 0; 272 | for (const resourceFile of Object.values(filePathMap)) { 273 | opfXml = opfXml.ele('item', { 274 | id: `r-${resourceCount.toString(36)}`, 275 | href: resourceFile, 276 | 'media-type': mime.lookup(resourceFile), 277 | }).up(); 278 | resourceCount += 1; 279 | } 280 | opfXml = opfXml.up(); 281 | 282 | opfXml = opfXml.ele('spine'); 283 | for (const content of contents) { 284 | opfXml = opfXml.ele('itemref', { 285 | idref: content.id, 286 | }).up(); 287 | } 288 | opfXml = opfXml.up(); 289 | 290 | fsExtra.writeFileSync(path.join(outputDir, `${args.title}.opf`), opfXml.end( { 291 | prettyPrint: args.debug, 292 | })); 293 | 294 | } 295 | 296 | 297 | const parser = new ArgumentParser({ 298 | description: 'Argparse example' 299 | }); 300 | 301 | parser.add_argument('-i', '--input', { help: 'Input directory' }); 302 | parser.add_argument('-o', '--output', { help: 'Output directory' }); 303 | parser.add_argument('-t', '--title', { help: 'Title of the dictionary' }); 304 | parser.add_argument('-a', '--author', { help: 'Author' }); 305 | parser.add_argument('-c', '--cover_image', { help: 'Image for the cover' }); 306 | parser.add_argument('-m', '--main_dict', { help: 'Main dictionary to use as reference (for alt writing and frequency)' }); 307 | parser.add_argument('--debug', { const: true, action: 'store_const', help: 'Print in a readable format' }); 308 | parser.add_argument('--image_quality', { default: 75, help: 'Quality of image' }); 309 | parser.add_argument('--max_height', { type: 'int', help: 'Max height of image' }); 310 | main(parser.parse_args()); 311 | 312 | 313 | -------------------------------------------------------------------------------- /src/utils/filename-generator.ts: -------------------------------------------------------------------------------- 1 | export class FilenameGenerator { 2 | 3 | private count = 0; 4 | 5 | generate(): string { 6 | // not radix 36 to avoid Windows reserved words 7 | // https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file#naming-conventions 8 | const result = this.count.toString(16); 9 | this.count += 1; 10 | return result; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/utils/hasOwnProperty.ts: -------------------------------------------------------------------------------- 1 | export function hasOwnProperty(obj: X, prop: Y): obj is X & Record { 2 | return obj.hasOwnProperty(prop); 3 | } 4 | -------------------------------------------------------------------------------- /src/utils/kana-transformations.ts: -------------------------------------------------------------------------------- 1 | // Mostly from https://github.com/hexenq/kuroshiro/blob/master/src/util.js 2 | 3 | const KATAKANA_HIRAGANA_SHIFT = '\u3041'.charCodeAt(0) - '\u30a1'.charCodeAt(0); 4 | const HIRAGANA_KATAKANA_SHIFT = '\u30a1'.charCodeAt(0) - '\u3041'.charCodeAt(0); 5 | 6 | export function toHiragana(str: string) { 7 | return [...str].map((ch) => { 8 | if (ch > '\u30a0' && ch < '\u30f7') { 9 | return String.fromCharCode(ch.charCodeAt(0) + KATAKANA_HIRAGANA_SHIFT); 10 | } 11 | return ch; 12 | }).join(''); 13 | }; 14 | 15 | export function toKatakana(str: string) { 16 | return [...str].map((ch) => { 17 | if (ch > '\u3040' && ch < '\u3097') { 18 | return String.fromCharCode(ch.charCodeAt(0) + HIRAGANA_KATAKANA_SHIFT); 19 | } 20 | return ch; 21 | }).join(''); 22 | }; -------------------------------------------------------------------------------- /src/utils/kindle-dict-entry.ts: -------------------------------------------------------------------------------- 1 | import { fragment } from 'xmlbuilder2'; 2 | import { XMLBuilder } from 'xmlbuilder2/lib/interfaces'; 3 | import { YomichanEntry } from '../yomichan/yomichan-formatter'; 4 | import { 5 | Definition, 6 | ImageDefinition, 7 | InflectionRuleEnum, 8 | StructuredContentItem, 9 | StructuredContentItemObject, 10 | StructuredContentItemObjectImage, 11 | StructuredContentItemStyle, 12 | } from '../yomichan/yomichan-types'; 13 | import { hasOwnProperty } from './hasOwnProperty'; 14 | import * as _ from 'lodash'; 15 | 16 | export interface KindleInflection { 17 | name: string; 18 | value: string; 19 | } 20 | 21 | export interface KindleSearchData { 22 | term: string; 23 | inflections: KindleInflection[]; 24 | } 25 | 26 | export interface KindleDictEntry { 27 | headwords: string[]; 28 | boldHeadword: boolean; 29 | searchDataList: KindleSearchData[]; 30 | definitions: XMLBuilder[]; 31 | frequency: number; 32 | } 33 | 34 | function stringDefinitionToHtmlText(item: string, headword: boolean): [XMLBuilder, boolean] { 35 | let f = fragment(); 36 | const lines = item.split('\n'); 37 | for (let i = 0; i < lines.length; i += 1) { 38 | if (headword && i === 0) { 39 | f = f.ele('b').txt(lines[i]).up(); 40 | } else { 41 | f = f.txt(lines[i]); 42 | } 43 | if (i < lines.length - 1) { 44 | f = f.ele('br').up(); 45 | } 46 | } 47 | return [f, !/\n/.test(item) && headword]; 48 | } 49 | 50 | function structuredContentItemToHtmlText(item: StructuredContentItem, headword: boolean, filePathMap: Record): [XMLBuilder, boolean] { 51 | let f = fragment(); 52 | if (typeof item === 'string') { 53 | return stringDefinitionToHtmlText(item, headword); 54 | } else if (Array.isArray(item)) { 55 | let currentHeadword = headword; 56 | for (const subItem of item) { 57 | const [subF, subHeadword] = structuredContentItemToHtmlText(subItem, currentHeadword, filePathMap); 58 | f.import(subF.doc()); 59 | currentHeadword = subHeadword; 60 | } 61 | return [f, currentHeadword]; 62 | } else if (item.tag == 'img' && hasOwnProperty(item, 'path')) { 63 | return [imgToXML(item, filePathMap), headword] 64 | } else { 65 | return tagToXML(item, headword, filePathMap); 66 | } 67 | } 68 | 69 | function imgToXML(s: ImageDefinition | StructuredContentItemObjectImage, filePathMap: Record): XMLBuilder { 70 | let f = fragment(); 71 | let conf :{[x:string] : any} = { 72 | 'src': filePathMap[s.path] || s.path, 73 | 'alt': s.title, 74 | }; 75 | 76 | const unit = (s as StructuredContentItemObjectImage).sizeUnits || 'px' 77 | let style: any = {}; 78 | if (s.width) 79 | style = {...style, width: s.width.toString() + unit} 80 | if (s.height) 81 | style = {...style, height: s.height.toString() + unit} 82 | if (s.imageRendering) 83 | style = {...style, imageRendering: s.imageRendering} 84 | if ('verticalAlign' in s) 85 | style = {...style, verticalAlign: s.verticalAlign} 86 | 87 | if (Object.keys(style).length) { 88 | const sstyle = flatten_css(style) 89 | if (sstyle.length > 0) 90 | conf['style'] = sstyle 91 | } 92 | 93 | f.ele('img', conf) 94 | return f; 95 | } 96 | function flatten_css(obj_style: Record) : string{ 97 | let style = Object.entries(obj_style). 98 | map(([k, v]) => 99 | `${k.replace(/[A-Z]/g,match => `-${match.toLowerCase()}`)}:${v}`).join(';'); 100 | if (style.length > 0) 101 | style += ';'; 102 | return style.replace(/;$/, ''); 103 | } 104 | const tag_saved_prop = ['tag', 'style', 'content'] 105 | function tagToXML(item: StructuredContentItemObject & { 106 | content?: StructuredContentItem; 107 | style?: StructuredContentItemStyle; 108 | }, headword: boolean, filePathMap: Record): [XMLBuilder, boolean] { 109 | const handledStyles: (keyof StructuredContentItemStyle)[] = [ 110 | 'fontStyle', 111 | 'fontWeight', 112 | 'textDecorationLine', 113 | 'verticalAlign', 114 | ]; 115 | let f = fragment() 116 | let conf: {[x: string]: any} = {} 117 | for (const k of Object.keys(item)) { 118 | if (tag_saved_prop.filter(x => x == k).length > 0) 119 | continue 120 | // @ts-ignore 121 | conf[k] = item[k] 122 | } 123 | 124 | if (item.style) { 125 | const filteredStyle = Object.entries(item.style) 126 | .filter(([k]) => !handledStyles.includes(k as any)) 127 | .reduce>((acc, [k, v]) => { 128 | acc[k] = v; 129 | return acc; 130 | }, {}); 131 | const style = flatten_css(filteredStyle); 132 | if (style.length > 0) { 133 | conf['style'] = style; 134 | } 135 | } 136 | 137 | let addedTags: string[] = []; 138 | if (item.style) { 139 | for (const handledStyle of handledStyles) { 140 | const propVal = item.style[handledStyle]; 141 | if (propVal) { 142 | switch (handledStyle) { 143 | case 'fontStyle': 144 | if (propVal === 'italic') { 145 | addedTags.push('i'); 146 | } 147 | break; 148 | case 'fontWeight': 149 | if (propVal === 'bold') { 150 | addedTags.push('b'); 151 | } 152 | break; 153 | case 'textDecorationLine': 154 | switch (propVal) { 155 | case 'underline': 156 | addedTags.push('u'); 157 | break; 158 | case 'line-through': 159 | addedTags.push('s'); 160 | break; 161 | } 162 | break; 163 | case 'verticalAlign': 164 | switch (propVal) { 165 | case 'super': 166 | addedTags.push('sup'); 167 | break; 168 | case 'sub': 169 | addedTags.push('sub'); 170 | break; 171 | } 172 | break; 173 | } 174 | } 175 | } 176 | } 177 | 178 | if (item.tag === 'span' && addedTags.length) { 179 | f = f.ele(addedTags[0], conf); 180 | addedTags = addedTags.slice(1); 181 | } else { 182 | f = f.ele(item.tag, conf) 183 | } 184 | 185 | for (const addedTag of addedTags) { 186 | f = f.ele(addedTag); 187 | } 188 | 189 | let currentHeadword = headword; 190 | if (item.content) { 191 | const [subF, subHeadword] = structuredContentItemToHtmlText(item.content, currentHeadword, filePathMap); 192 | f = f.import(subF.doc()); 193 | currentHeadword = subHeadword; 194 | } 195 | return [f, item.tag !== 'br' && currentHeadword]; 196 | } 197 | 198 | function yomichanDefinitionToHtmlText(definition: Definition, headword: boolean, filePathMap: Record): [XMLBuilder, boolean] { 199 | if (typeof definition === 'string') { 200 | return stringDefinitionToHtmlText(definition, headword); 201 | } else if (definition.type === 'text') { 202 | return stringDefinitionToHtmlText(definition.text, headword); 203 | } else if (definition.type === 'image') { 204 | let f = imgToXML(definition, filePathMap); 205 | f = f.ele('br').up(); 206 | if (definition.description) { 207 | f = f.txt(definition.description); 208 | } 209 | return [f, headword]; 210 | } 211 | return structuredContentItemToHtmlText(definition.content, headword, filePathMap); 212 | } 213 | 214 | function convertToDan(changingKana: string, newDan: 'あ' | 'い' | 'う' | 'え' | 'お') { 215 | if (changingKana.length !== 1) { 216 | return; 217 | } 218 | const kanaTable = ` 219 | あいうえお 220 | かきくけこ 221 | さしすせそ 222 | たちつてと 223 | なにぬねの 224 | はひふへほ 225 | まみむめも 226 | やいゆえよ 227 | らりるれろ 228 | わゐうゑを 229 | がぎぐげご 230 | ざじずぜぞ 231 | だぢづでど 232 | ばびぶべぼ 233 | ぱぴぷぺぽ` 234 | .replace(/\s/g, '') 235 | .match(/.{1,5}/g)!; 236 | const matchingRow = kanaTable.find((row) => row.includes(changingKana)); 237 | if (matchingRow) { 238 | switch (newDan) { 239 | case 'あ': 240 | return matchingRow.charAt(0); 241 | case 'い': 242 | return matchingRow.charAt(1); 243 | case 'う': 244 | return matchingRow.charAt(2); 245 | case 'え': 246 | return matchingRow.charAt(3); 247 | case 'お': 248 | return matchingRow.charAt(4); 249 | } 250 | } 251 | } 252 | 253 | 254 | 255 | function generateJiruZuruInflections(term: string) { 256 | const inflections: KindleInflection[] = []; 257 | inflections.push({ 258 | name: '未然形・連用形', 259 | value: term.replace(/[ずじ]る$/u, 'じ'), 260 | }); 261 | inflections.push({ 262 | name: '未然形', 263 | value: term.replace(/[ずじ]る$/u, 'ぜ'), 264 | }); 265 | inflections.push({ 266 | name: '未然形', 267 | value: term.replace(/[ずじ]る$/u, 'ざ'), 268 | }); 269 | inflections.push({ 270 | name: '終止形・連体形', 271 | value: term.replace(/[ずじ]る$/u, 'ずる'), 272 | }); 273 | inflections.push({ 274 | name: '終止形・連体形', 275 | value: term.replace(/[ずじ]る$/u, 'じる'), 276 | }); 277 | inflections.push({ 278 | name: '終止形・連体形', 279 | value: term.replace(/[ずじ]る$/u, 'ず'), 280 | }); 281 | inflections.push({ 282 | name: '仮定形', 283 | value: term.replace(/[ずじ]る$/u, 'ずれ'), 284 | }); 285 | inflections.push({ 286 | name: '仮定形', 287 | value: term.replace(/[ずじ]る$/u, 'じれ'), 288 | }); 289 | inflections.push({ 290 | name: '命令形', 291 | value: term.replace(/[ずじ]る$/u, 'じろ'), 292 | }); 293 | inflections.push({ 294 | name: '命令形', 295 | value: term.replace(/[ずじ]る$/u, 'じよ'), 296 | }); 297 | inflections.push({ 298 | name: '命令形', 299 | value: term.replace(/[ずじ]る$/u, 'ぜよ'), 300 | }); 301 | return inflections.filter((inf) => inf.value !== term); 302 | } 303 | 304 | function generateInflections(data: { term: string; inflectionRule: string; origTerm: string }) { 305 | const { term, inflectionRule, origTerm } = data; 306 | const inflections: KindleInflection[] = []; 307 | 308 | for (const yomiInflection of inflectionRule.split(' ')) { 309 | // Common inflections 310 | switch (yomiInflection) { 311 | case InflectionRuleEnum.Godan: { 312 | if (/[うくすつぬふむるぐずづぶぷ]$/.test(term)) { 313 | const pushGodanGeneralInflections = (word: string) => { 314 | if (word.length === 0) { 315 | return; 316 | } 317 | const wordBrokenDown = Array.from(word); 318 | 319 | const aForm = convertToDan(wordBrokenDown.slice(-1)[0], 'あ'); 320 | if (aForm) { 321 | inflections.push({ 322 | name: '未然形', 323 | value: word.replace(/.$/u, aForm), 324 | }); 325 | } 326 | 327 | const oForm = convertToDan(wordBrokenDown.slice(-1)[0], 'お'); 328 | if (oForm) { 329 | inflections.push({ 330 | name: '未然形', 331 | value: word.replace(/.$/u, oForm), 332 | }); 333 | } 334 | 335 | const eForm = convertToDan(wordBrokenDown.slice(-1)[0], 'え'); 336 | if (eForm) { 337 | inflections.push({ 338 | name: '仮定形・命令形', 339 | value: word.replace(/.$/u, eForm), 340 | }); 341 | } 342 | }; 343 | 344 | 345 | const termBrokenDown = Array.from(term); 346 | const iForm = convertToDan(termBrokenDown.slice(-1)[0], 'い'); 347 | if (iForm) { 348 | inflections.push({ 349 | name: '連用形', 350 | value: term.replace(/.$/u, iForm), 351 | }); 352 | } 353 | 354 | if (/[くぐ]$/.test(term)) { 355 | inflections.push({ 356 | name: '連用形', 357 | value: term.replace(/.$/u, 'い'), 358 | }); 359 | 360 | } else if (/[うつる]$/.test(term) || /行く$/.test(origTerm)) { 361 | inflections.push({ 362 | name: '連用形', 363 | value: term.replace(/.$/u, 'っ'), 364 | }); 365 | } else if (/[ぬぶむ]$/.test(term)) { 366 | inflections.push({ 367 | name: '連用形', 368 | value: term.replace(/.$/u, 'ん'), 369 | }); 370 | } 371 | pushGodanGeneralInflections(term); 372 | } 373 | break; 374 | } 375 | case InflectionRuleEnum.Ichidan: { 376 | const pushIchidanGeneralInflections = (word: string) => { 377 | inflections.push({ 378 | name: '未然形・連用形', 379 | value: word.replace(/る$/u, ''), 380 | }); 381 | inflections.push({ 382 | name: '仮定形', 383 | value: word.replace(/る$/u, 'れ'), 384 | }); 385 | inflections.push({ 386 | name: '命令形', 387 | value: word.replace(/る$/u, 'ろ'), 388 | }); 389 | inflections.push({ 390 | name: '命令形', 391 | value: word.replace(/る$/u, 'よ'), 392 | }); 393 | }; 394 | pushIchidanGeneralInflections(term); 395 | break; 396 | } 397 | case InflectionRuleEnum.Kuru: { 398 | const pushKuruGeneralInflections = (word: string) => { 399 | // Handle all cases as term may be in hiragana form 400 | inflections.push({ 401 | name: '未然形・連用形', 402 | value: word.replace(/来る$/u, '来'), 403 | }); 404 | inflections.push({ 405 | name: '仮定形', 406 | value: word.replace(/来る$/u, '来れ'), 407 | }); 408 | inflections.push({ 409 | name: '命令形', 410 | value: word.replace(/来る$/u, '来い'), 411 | }); 412 | inflections.push({ 413 | name: 'て形', 414 | value: word.replace(/来る$/u, '来て'), 415 | }); 416 | inflections.push({ 417 | name: '未然形', 418 | value: word.replace(/くる$/u, 'こ'), 419 | }); 420 | inflections.push({ 421 | name: '連用形', 422 | value: word.replace(/くる$/u, 'き'), 423 | }); 424 | inflections.push({ 425 | name: '仮定形', 426 | value: word.replace(/くる$/u, 'くれ'), 427 | }); 428 | inflections.push({ 429 | name: '命令形', 430 | value: word.replace(/くる$/u, 'こい'), 431 | }); 432 | inflections.push({ 433 | name: 'て形', 434 | value: word.replace(/くる$/u, 'きて'), 435 | }); 436 | }; 437 | pushKuruGeneralInflections(term); 438 | break; 439 | } 440 | case InflectionRuleEnum.Suru: { 441 | const pushSuruGeneralInflections = (word: string) => { 442 | inflections.push({ 443 | name: '未然形・連用形', 444 | value: word.replace(/する$/u, 'し'), 445 | }); 446 | inflections.push({ 447 | name: '未然形', 448 | value: word.replace(/する$/u, 'せ'), 449 | }); 450 | inflections.push({ 451 | name: '未然形', 452 | value: word.replace(/する$/u, 'さ'), 453 | }); 454 | inflections.push({ 455 | name: '終止形・連体形', 456 | value: word.replace(/する$/u, 'す'), 457 | }); 458 | inflections.push({ 459 | name: '仮定形', 460 | value: word.replace(/する$/u, 'すれ'), 461 | }); 462 | inflections.push({ 463 | name: '命令形', 464 | value: word.replace(/する$/u, 'しろ'), 465 | }); 466 | inflections.push({ 467 | name: '命令形', 468 | value: word.replace(/する$/u, 'せよ'), 469 | }); 470 | inflections.push({ 471 | name: 'て形', 472 | value: word.replace(/する$/u, 'して'), 473 | }); 474 | }; 475 | pushSuruGeneralInflections(term); 476 | break; 477 | } 478 | case InflectionRuleEnum.Zuru: { 479 | inflections.push(...generateJiruZuruInflections(term)); 480 | break; 481 | } 482 | case InflectionRuleEnum.IAdjective: { 483 | const pushIAdjectiveGeneralInflections = (word: string) => { 484 | inflections.push({ 485 | name: '未然形', 486 | value: word.replace(/い$/u, 'かろ'), 487 | }); 488 | inflections.push({ 489 | name: '連用形', 490 | value: word.replace(/い$/u, 'かっ'), 491 | }); 492 | inflections.push({ 493 | name: '連用形', 494 | value: word.replace(/い$/u, 'く'), 495 | }); 496 | inflections.push({ 497 | name: '仮定形', 498 | value: word.replace(/い$/u, 'けれ'), 499 | }); 500 | // Need this if the original contains し/しく entry but we want modern usage 501 | inflections.push({ 502 | name: '派生', 503 | value: word.replace(/い$/u, ''), 504 | }); 505 | }; 506 | pushIAdjectiveGeneralInflections(term); 507 | break; 508 | } 509 | } 510 | 511 | // Custom inflections 512 | if (/じる$/.test(term)) { 513 | // 投じる -> 投ずる 514 | switch (yomiInflection) { 515 | case InflectionRuleEnum.Ichidan: 516 | case InflectionRuleEnum.Godan: 517 | case InflectionRuleEnum.Zuru: { 518 | inflections.push(...generateJiruZuruInflections(term)); 519 | break; 520 | } 521 | } 522 | } else if (/ずる$/.test(term)) { 523 | // 投ずる -> 投じる 524 | switch (yomiInflection) { 525 | case InflectionRuleEnum.Ichidan: 526 | case InflectionRuleEnum.Godan: 527 | case InflectionRuleEnum.Zuru: { 528 | inflections.push(...generateJiruZuruInflections(term)); 529 | break; 530 | } 531 | } 532 | } 533 | } 534 | 535 | return _.uniqBy(inflections, (inf) => inf.value) 536 | .filter((inf) => inf.value !== term && inf.value.length); 537 | } 538 | 539 | export function yomichanEntryToKindle(yomiEntry: YomichanEntry, firstLineAsHeadword: boolean, filePathMap: Record): KindleDictEntry { 540 | let headword = yomiEntry.term; 541 | let updatedDefinitions = yomiEntry.definitions; 542 | 543 | let searchDataList: KindleSearchData[] = [ 544 | yomiEntry.term, 545 | yomiEntry.reading, 546 | ].filter((term) => !!term) 547 | .map((term) => ({ 548 | term, 549 | inflections: [], 550 | })); 551 | 552 | for (let i = 0; i < yomiEntry.term.length - 1; i++) { 553 | let term = Array.from(yomiEntry.term); 554 | if (yomiEntry.term[i] === yomiEntry.term[i + 1] && /(\p{Unified_Ideograph})/u.test(yomiEntry.term[i])) { 555 | term[i + 1] = '々'; 556 | searchDataList.push({ 557 | term: term.join(''), 558 | inflections: [], 559 | }); 560 | } 561 | } 562 | 563 | for (const searchData of searchDataList) { 564 | searchData.inflections = generateInflections({ 565 | term: searchData.term, 566 | inflectionRule: yomiEntry.inflectionRule, 567 | origTerm: yomiEntry.term, 568 | }); 569 | } 570 | let definitions: XMLBuilder[] = [] 571 | let boldHeadword = true 572 | if (updatedDefinitions.length > 0) { 573 | const [head, ...tail] = updatedDefinitions 574 | const [firstDef, stat] = yomichanDefinitionToHtmlText(head, firstLineAsHeadword, filePathMap) 575 | boldHeadword = stat; 576 | definitions.push(firstDef) 577 | definitions.push(...tail.map((d) => yomichanDefinitionToHtmlText(d, false, filePathMap)[0])) 578 | } 579 | return { 580 | headwords: [headword], 581 | boldHeadword, 582 | searchDataList: _.uniqBy(searchDataList, (x) => x.term), 583 | definitions, 584 | frequency: yomiEntry.frequency, 585 | } 586 | } 587 | 588 | export function combineDefinitions(definitions: XMLBuilder[]) { 589 | let result = fragment(); 590 | for (let i = 0; i < definitions.length; i += 1) { 591 | if (i > 0) 592 | result = result.ele('br').up(); 593 | result = result.import(definitions[i].doc()); 594 | } 595 | return result; 596 | } 597 | 598 | export function kindleEntriesToXHtml(kindleEntries: KindleDictEntry[]): XMLBuilder { 599 | const xmlEntries: XMLBuilder[] = []; 600 | for (const kindleEntry of kindleEntries) { 601 | let xmlEntry = fragment() 602 | .ele('idx:entry', { 603 | name: 'j', 604 | scriptable: 'yes', 605 | }) 606 | .ele('idx:short'); 607 | 608 | const possibleForms: string[] = []; 609 | for (const searchData of kindleEntry.searchDataList) { 610 | possibleForms.push(searchData.term); 611 | // Treat inflections as new writing as idx:infl doesn't deinflect 敗北 -> 敗北る 612 | for (const inflection of searchData.inflections) { 613 | possibleForms.push(inflection.value); 614 | } 615 | } 616 | 617 | for (const value of _.uniq(possibleForms)) { 618 | xmlEntry = xmlEntry.ele('idx:orth', { 619 | value: value, 620 | }).up(); 621 | } 622 | 623 | if (kindleEntry.boldHeadword) { 624 | xmlEntry = xmlEntry.ele('b').txt(_.uniq(kindleEntry.headwords).join('・')).up(); 625 | } 626 | 627 | xmlEntry = xmlEntry.ele('div') 628 | .import(combineDefinitions(kindleEntry.definitions).doc()) 629 | .up(); 630 | xmlEntries.push(xmlEntry); 631 | } 632 | let finalResult = fragment() 633 | .ele('html', { 634 | 'xmlns:math': 'http://exslt.org/math', 635 | 'xmlns:svg': 'http://www.w3.org/2000/svg', 636 | 'xmlns:tl': 'https://kindlegen.s3.amazonaws.com/AmazonKindlePublishingGuidelines.pdf', 637 | 'xmlns:saxon': 'http://saxon.sf.net/', 638 | 'xmlns:xs': 'http://www.w3.org/2001/XMLSchema', 639 | 'xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance', 640 | 'xmlns:cx': 'https://kindlegen.s3.amazonaws.com/AmazonKindlePublishingGuidelines.pdf', 641 | 'xmlns:dc': 'http://purl.org/dc/elements/1.1/', 642 | 'xmlns:mbp': 'https://kindlegen.s3.amazonaws.com/AmazonKindlePublishingGuidelines.pdf', 643 | 'xmlns:mmc': 'https://kindlegen.s3.amazonaws.com/AmazonKindlePublishingGuidelines.pdf', 644 | 'xmlns:idx': 'https://kindlegen.s3.amazonaws.com/AmazonKindlePublishingGuidelines.pdf', 645 | }) 646 | .ele('head').ele('meta', { 647 | 'http-equiv': 'Content-Type', 648 | 'content': 'text/html; charset=utf-8', 649 | }).up().up() 650 | .ele('body') 651 | .ele('mbp:frameset'); 652 | for (const xmlEntry of xmlEntries) { 653 | finalResult = finalResult.import(xmlEntry.doc()); 654 | } 655 | return finalResult; 656 | } 657 | -------------------------------------------------------------------------------- /src/utils/load-dict.ts: -------------------------------------------------------------------------------- 1 | import fsExtra from 'fs-extra'; 2 | import path from 'path'; 3 | import { YomichanEntry } from '../yomichan/yomichan-formatter'; 4 | import { Definition, YomichanSchemaV3 } from '../yomichan/yomichan-types'; 5 | 6 | 7 | 8 | export async function loadDict(dictPath: string) { 9 | const yomiEntries: YomichanEntry[] = []; 10 | const files = fsExtra.readdirSync(dictPath); 11 | for (const file of files.sort((a, b) => a.localeCompare(b, undefined, {numeric: true, sensitivity: 'base'}))) { 12 | if (!file.startsWith('term_bank')) { 13 | continue; 14 | } 15 | 16 | const data: YomichanSchemaV3[] = JSON.parse(fsExtra.readFileSync(path.join(dictPath, file), 'utf-8')); 17 | 18 | for (const entry of data) { 19 | yomiEntries.push(new YomichanEntry({ 20 | term: entry[0], 21 | reading: entry[1], 22 | definitionTag: entry[2], 23 | inflectionRule: entry[3], 24 | frequency: entry[4], 25 | definitions: entry[5], 26 | sequence: entry[6], 27 | tag: entry[7], 28 | })); 29 | } 30 | } 31 | return yomiEntries; 32 | } 33 | -------------------------------------------------------------------------------- /src/utils/merge-dict-data.ts: -------------------------------------------------------------------------------- 1 | import * as _ from 'lodash'; 2 | import { YomichanEntry } from "../yomichan/yomichan-formatter"; 3 | import { loadDict } from "./load-dict"; 4 | 5 | function generateTermMap(entries: YomichanEntry[]): { 6 | [term: string]: { 7 | [reading: string]: YomichanEntry[]; 8 | }; 9 | } { 10 | const result: { 11 | [term: string]: { 12 | [reading: string]: YomichanEntry[]; 13 | }; 14 | } = {}; 15 | for (const yomiEntry of entries) { 16 | const termObj = result[yomiEntry.term] || {}; 17 | result[yomiEntry.term] = termObj; 18 | const readingList = termObj[yomiEntry.reading] || []; 19 | termObj[yomiEntry.reading] = readingList; 20 | 21 | readingList.push(yomiEntry); 22 | } 23 | return result; 24 | } 25 | 26 | function generateMapBySequence(entries: YomichanEntry[]): { 27 | [sequence: number]: YomichanEntry[]; 28 | } { 29 | const result: { 30 | [sequence: number]: YomichanEntry[]; 31 | } = {}; 32 | for (const yomiEntry of entries) { 33 | const sequenceList = result[yomiEntry.sequence] || []; 34 | result[yomiEntry.sequence] = sequenceList; 35 | sequenceList.push(yomiEntry); 36 | } 37 | return result; 38 | } 39 | 40 | export async function mergeDictData(currentEntries: YomichanEntry[], dictPath: string) { 41 | const data = await loadDict(dictPath); 42 | const refDictEntryMap = generateTermMap(data); 43 | const refDictSequenceMap = generateMapBySequence(data); 44 | const currentEntryMap = generateTermMap(currentEntries); 45 | 46 | const newValues: YomichanEntry[] = []; 47 | 48 | const processRefDictInfo = (currentEntry: YomichanEntry, refDictEntryList: YomichanEntry[]) => { 49 | currentEntry.frequency = refDictEntryList 50 | .map((x) => x.frequency) 51 | .reduce((a, b) => Math.max(a, b)); 52 | 53 | if (!currentEntry.inflectionRule) { 54 | currentEntry.inflectionRule = _.uniq( 55 | refDictEntryList 56 | .flatMap((x) => x.inflectionRule.split(' ')) 57 | .filter(x => !!x) 58 | ).join(' '); 59 | } 60 | 61 | for (const refDictEntry of refDictEntryList) { 62 | const possibleTerms = refDictSequenceMap[refDictEntry.sequence]; 63 | 64 | for (const refDictAltTerm of possibleTerms) { 65 | if (refDictAltTerm.term !== currentEntry.term && !currentEntryMap[refDictAltTerm.term]) { 66 | newValues.push(new YomichanEntry({ 67 | term: refDictAltTerm.term, 68 | reading: currentEntry.reading, 69 | definitionTag: currentEntry.definitionTag, 70 | inflectionRule: currentEntry.inflectionRule, 71 | frequency: currentEntry.frequency, 72 | definitions: currentEntry.definitions, 73 | sequence: currentEntry.sequence, 74 | tag: currentEntry.tag, 75 | })); 76 | } 77 | } 78 | } 79 | }; 80 | 81 | for (const yomiEntry of currentEntries) { 82 | const refDictTermObj = refDictEntryMap[yomiEntry.term]; 83 | if (refDictTermObj) { 84 | if (yomiEntry.reading) { 85 | const refDictEntryList = refDictTermObj[yomiEntry.reading]; 86 | if (refDictEntryList) { 87 | processRefDictInfo(yomiEntry, refDictEntryList); 88 | } 89 | } else { 90 | const firstList = Object.values(refDictTermObj)[0]; 91 | processRefDictInfo(yomiEntry, firstList); 92 | } 93 | } 94 | } 95 | 96 | return currentEntries.concat(newValues); 97 | } -------------------------------------------------------------------------------- /src/yomichan/schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json-schema.org/draft-07/schema#", 3 | "definitions": { 4 | "structuredContent": { 5 | "oneOf": [ 6 | { 7 | "type": "string", 8 | "description": "Represents a text node." 9 | }, 10 | { 11 | "type": "array", 12 | "items": { 13 | "$ref": "#/definitions/structuredContent", 14 | "description": "An array of child content." 15 | } 16 | }, 17 | { 18 | "type": "object", 19 | "oneOf": [ 20 | { 21 | "type": "object", 22 | "description": "Empty tags.", 23 | "required": [ 24 | "tag" 25 | ], 26 | "additionalProperties": false, 27 | "properties": { 28 | "tag": { 29 | "type": "string", 30 | "enum": ["br"] 31 | } 32 | } 33 | }, 34 | { 35 | "type": "object", 36 | "description": "Generic container tags.", 37 | "required": [ 38 | "tag" 39 | ], 40 | "additionalProperties": false, 41 | "properties": { 42 | "tag": { 43 | "type": "string", 44 | "enum": ["ruby", "rt", "rp", "table", "thead", "tbody", "tfoot", "tr"] 45 | }, 46 | "content": { 47 | "$ref": "#/definitions/structuredContent" 48 | } 49 | } 50 | }, 51 | { 52 | "type": "object", 53 | "description": "Table tags.", 54 | "required": [ 55 | "tag" 56 | ], 57 | "additionalProperties": false, 58 | "properties": { 59 | "tag": { 60 | "type": "string", 61 | "enum": ["td", "th"] 62 | }, 63 | "content": { 64 | "$ref": "#/definitions/structuredContent" 65 | }, 66 | "colSpan": { 67 | "type": "integer", 68 | "minimum": 1 69 | }, 70 | "rowSpan": { 71 | "type": "integer", 72 | "minimum": 1 73 | }, 74 | "style": { 75 | "$ref": "#/definitions/structuredContentStyle" 76 | } 77 | } 78 | }, 79 | { 80 | "type": "object", 81 | "description": "Container tags supporting configurable styles.", 82 | "required": [ 83 | "tag" 84 | ], 85 | "additionalProperties": false, 86 | "properties": { 87 | "tag": { 88 | "type": "string", 89 | "enum": ["span", "div"] 90 | }, 91 | "content": { 92 | "$ref": "#/definitions/structuredContent" 93 | }, 94 | "style": { 95 | "$ref": "#/definitions/structuredContentStyle" 96 | } 97 | } 98 | }, 99 | { 100 | "type": "object", 101 | "description": "Image tag.", 102 | "required": [ 103 | "tag", 104 | "path" 105 | ], 106 | "additionalProperties": false, 107 | "properties": { 108 | "tag": { 109 | "type": "string", 110 | "const": "img" 111 | }, 112 | "path": { 113 | "type": "string", 114 | "description": "Path to the image file in the archive." 115 | }, 116 | "width": { 117 | "type": "number", 118 | "description": "Preferred width of the image.", 119 | "minimum": 0 120 | }, 121 | "height": { 122 | "type": "number", 123 | "description": "Preferred width of the image.", 124 | "minimum": 0 125 | }, 126 | "title": { 127 | "type": "string", 128 | "description": "Hover text for the image." 129 | }, 130 | "pixelated": { 131 | "type": "boolean", 132 | "description": "Whether or not the image should appear pixelated at sizes larger than the image's native resolution.", 133 | "default": false 134 | }, 135 | "imageRendering": { 136 | "type": "string", 137 | "description": "Controls how the image is rendered. The value of this field supersedes the pixelated field.", 138 | "enum": ["auto", "pixelated", "crisp-edges"], 139 | "default": "auto" 140 | }, 141 | "appearance": { 142 | "type": "string", 143 | "description": "Controls the appearance of the image. The \"monochrome\" value will mask the opaque parts of the image using the current text color.", 144 | "enum": ["auto", "monochrome"], 145 | "default": "auto" 146 | }, 147 | "background": { 148 | "type": "boolean", 149 | "description": "Whether or not a background color is displayed behind the image.", 150 | "default": true 151 | }, 152 | "collapsed": { 153 | "type": "boolean", 154 | "description": "Whether or not the image is collapsed by default.", 155 | "default": false 156 | }, 157 | "collapsible": { 158 | "type": "boolean", 159 | "description": "Whether or not the image can be collapsed.", 160 | "default": false 161 | }, 162 | "verticalAlign": { 163 | "type": "string", 164 | "description": "The vertical alignment of the image.", 165 | "enum": ["baseline", "sub", "super", "text-top", "text-bottom", "middle", "top", "bottom"] 166 | }, 167 | "sizeUnits": { 168 | "type": "string", 169 | "description": "The units for the width and height.", 170 | "enum": ["px", "em"] 171 | } 172 | } 173 | } 174 | ] 175 | } 176 | ] 177 | }, 178 | "structuredContentStyle": { 179 | "type": "object", 180 | "additionalProperties": false, 181 | "properties": { 182 | "fontStyle": { 183 | "type": "string", 184 | "enum": ["normal", "italic"], 185 | "default": "normal" 186 | }, 187 | "fontWeight": { 188 | "type": "string", 189 | "enum": ["normal", "bold"], 190 | "default": "normal" 191 | }, 192 | "fontSize": { 193 | "type": "string", 194 | "enum": ["xx-small", "x-small", "small", "medium", "large", "x-large", "xx-large", "xxx-large"], 195 | "default": "medium" 196 | }, 197 | "textDecorationLine": { 198 | "oneOf": [ 199 | { 200 | "type": "string", 201 | "enum": ["none", "underline", "overline", "line-through"], 202 | "default": "none" 203 | }, 204 | { 205 | "type": "array", 206 | "items": { 207 | "type": "string", 208 | "enum": ["underline", "overline", "line-through"], 209 | "default": "none" 210 | } 211 | } 212 | ] 213 | }, 214 | "verticalAlign": { 215 | "type": "string", 216 | "enum": ["baseline", "sub", "super", "text-top", "text-bottom", "middle", "top", "bottom"], 217 | "default": "baseline" 218 | } 219 | } 220 | } 221 | }, 222 | "type": "array", 223 | "description": "Data file containing term information.", 224 | "additionalItems": { 225 | "type": "array", 226 | "description": "Information about a single term.", 227 | "minItems": 8, 228 | "items": [ 229 | { 230 | "type": "string", 231 | "description": "The text for the term." 232 | }, 233 | { 234 | "type": "string", 235 | "description": "Reading of the term, or an empty string if the reading is the same as the term." 236 | }, 237 | { 238 | "type": ["string", "null"], 239 | "description": "String of space-separated tags for the definition. An empty string is treated as no tags." 240 | }, 241 | { 242 | "type": "string", 243 | "description": "String of space-separated rule identifiers for the definition which is used to validate delinflection. Valid rule identifiers are: v1: ichidan verb; v5: godan verb; vs: suru verb; vk: kuru verb; adj-i: i-adjective. An empty string corresponds to words which aren't inflected, such as nouns." 244 | }, 245 | { 246 | "type": "number", 247 | "description": "Score used to determine popularity. Negative values are more rare and positive values are more frequent. This score is also used to sort search results." 248 | }, 249 | { 250 | "type": "array", 251 | "description": "Array of definitions for the term.", 252 | "items": { 253 | "oneOf": [ 254 | { 255 | "type": "string", 256 | "description": "Single definition for the term." 257 | }, 258 | { 259 | "type": "object", 260 | "description": "Single detailed definition for the term.", 261 | "required": [ 262 | "type" 263 | ], 264 | "properties": { 265 | "type": { 266 | "type": "string", 267 | "description": "The type of the data for this definition.", 268 | "enum": ["text", "image", "structured-content"] 269 | } 270 | }, 271 | "oneOf": [ 272 | { 273 | "required": [ 274 | "type", 275 | "text" 276 | ], 277 | "additionalProperties": false, 278 | "properties": { 279 | "type": { 280 | "type": "string", 281 | "enum": ["text"] 282 | }, 283 | "text": { 284 | "type": "string", 285 | "description": "Single definition for the term." 286 | } 287 | } 288 | }, 289 | { 290 | "required": [ 291 | "type", 292 | "content" 293 | ], 294 | "additionalProperties": false, 295 | "properties": { 296 | "type": { 297 | "type": "string", 298 | "enum": ["structured-content"] 299 | }, 300 | "content": { 301 | "$ref": "#/definitions/structuredContent", 302 | "description": "Single definition for the term using a structured content object." 303 | } 304 | } 305 | }, 306 | { 307 | "required": [ 308 | "type", 309 | "path" 310 | ], 311 | "additionalProperties": false, 312 | "properties": { 313 | "type": { 314 | "type": "string", 315 | "enum": ["image"] 316 | }, 317 | "path": { 318 | "type": "string", 319 | "description": "Path to the image file in the archive." 320 | }, 321 | "width": { 322 | "type": "integer", 323 | "description": "Preferred width of the image.", 324 | "minimum": 1 325 | }, 326 | "height": { 327 | "type": "integer", 328 | "description": "Preferred width of the image.", 329 | "minimum": 1 330 | }, 331 | "title": { 332 | "type": "string", 333 | "description": "Hover text for the image." 334 | }, 335 | "description": { 336 | "type": "string", 337 | "description": "Description of the image." 338 | }, 339 | "pixelated": { 340 | "type": "boolean", 341 | "description": "Whether or not the image should appear pixelated at sizes larger than the image's native resolution.", 342 | "default": false 343 | }, 344 | "imageRendering": { 345 | "type": "string", 346 | "description": "Controls how the image is rendered. The value of this field supersedes the pixelated field.", 347 | "enum": ["auto", "pixelated", "crisp-edges"], 348 | "default": "auto" 349 | }, 350 | "appearance": { 351 | "type": "string", 352 | "description": "Controls the appearance of the image. The \"monochrome\" value will mask the opaque parts of the image using the current text color.", 353 | "enum": ["auto", "monochrome"], 354 | "default": "auto" 355 | }, 356 | "background": { 357 | "type": "boolean", 358 | "description": "Whether or not a background color is displayed behind the image.", 359 | "default": true 360 | }, 361 | "collapsed": { 362 | "type": "boolean", 363 | "description": "Whether or not the image is collapsed by default.", 364 | "default": false 365 | }, 366 | "collapsible": { 367 | "type": "boolean", 368 | "description": "Whether or not the image can be collapsed.", 369 | "default": true 370 | } 371 | } 372 | } 373 | ] 374 | } 375 | ] 376 | } 377 | }, 378 | { 379 | "type": "integer", 380 | "description": "Sequence number for the term. Terms with the same sequence number can be shown together when the \"resultOutputMode\" option is set to \"merge\"." 381 | }, 382 | { 383 | "type": "string", 384 | "description": "String of space-separated tags for the term. An empty string is treated as no tags." 385 | } 386 | ] 387 | } 388 | } 389 | -------------------------------------------------------------------------------- /src/yomichan/yomichan-formatter.ts: -------------------------------------------------------------------------------- 1 | import { Definition, InflectionRuleEnum, YomichanSchemaV3 } from "./yomichan-types"; 2 | 3 | interface IYomichanDictionaryEntry { 4 | term: string; 5 | reading: string; 6 | definitionTag: string | null; 7 | inflectionRule: string; 8 | frequency: number; 9 | definitions: Definition[]; 10 | sequence: number; 11 | tag: string; 12 | } 13 | 14 | const allowedInflectionValues = Object.values(InflectionRuleEnum) as string[]; 15 | 16 | export class YomichanEntry implements IYomichanDictionaryEntry { 17 | term: string; 18 | reading: string; 19 | definitionTag: string | null; 20 | inflectionRule: string; 21 | frequency: number; 22 | definitions: Definition[]; 23 | sequence: number; 24 | tag: string; 25 | 26 | constructor(data: IYomichanDictionaryEntry) { 27 | this.term = data.term; 28 | this.reading = data.reading; 29 | this.definitionTag = data.definitionTag; 30 | this.inflectionRule = data.inflectionRule; 31 | this.frequency = data.frequency; 32 | this.definitions = data.definitions; 33 | this.sequence = data.sequence; 34 | this.tag = data.tag; 35 | } 36 | 37 | toJSON(): YomichanSchemaV3 { 38 | if (this.inflectionRule && !this.inflectionRule.split(' ').every((rule) => allowedInflectionValues.includes(rule))) { 39 | throw new Error(`"${this.inflectionRule}" invalid rule`); 40 | } 41 | 42 | return [ 43 | this.term, 44 | this.reading, 45 | this.definitionTag, 46 | this.inflectionRule, 47 | this.frequency, 48 | this.definitions, 49 | this.sequence, 50 | this.tag, 51 | ]; 52 | } 53 | } -------------------------------------------------------------------------------- /src/yomichan/yomichan-types.ts: -------------------------------------------------------------------------------- 1 | type Term = string; 2 | type Reading = string; 3 | type DefinitionTag = string | null; 4 | type InflectionRule = string; 5 | export enum InflectionRuleEnum { 6 | Ichidan = 'v1', 7 | Godan = 'v5', 8 | Suru = 'vs', 9 | Kuru = 'vk', 10 | Zuru = 'vz', 11 | IAdjective = 'adj-i', 12 | } 13 | export const specialInflectionRule = '情報なし'; 14 | type Frequency = number; 15 | export type Definition = string | TextDefinition | ImageDefinition | StructuredDefinition; 16 | type SequenceNumber = number; // same number = same entry if option is merge 17 | type Tag = string; 18 | 19 | export type YomichanSchemaV3 = [ 20 | Term, 21 | Reading, 22 | DefinitionTag, 23 | InflectionRule, 24 | Frequency, 25 | Definition[], 26 | SequenceNumber, 27 | Tag, 28 | ]; 29 | 30 | interface TextDefinition { 31 | type: 'text'; 32 | text: string; 33 | } 34 | 35 | interface ImageOptions { 36 | path: string; 37 | width?: number; 38 | height?: number; 39 | title?: string; 40 | description?: string; 41 | pixelated?: boolean; // Whether the image should scale to parent container 42 | imageRendering?: 'auto' | 'pixelated' | 'crisp-edges'; 43 | appearance?: 'auto' | 'monochrome'; 44 | background?: boolean; 45 | collapsed?: boolean; 46 | collapsible?: boolean; 47 | } 48 | 49 | export interface ImageDefinition extends ImageOptions { 50 | type: 'image'; 51 | } 52 | 53 | export interface StructuredDefinition { 54 | type: 'structured-content'; 55 | content: StructuredContentItem; 56 | } 57 | 58 | export type StructuredContentItem = string | StructuredContentItem[] | StructuredContentItemObject; 59 | 60 | export type StructuredContentItemObject = StructuredContentItemObjectBr | 61 | StructuredContentItemObjectGeneric | 62 | StructuredContentItemObjectTableItem | 63 | StructuredContentItemObjectStylableGeneric | 64 | StructuredContentItemObjectImage; 65 | 66 | interface StructuredContentItemObjectBr { 67 | tag: 'br'; 68 | } 69 | 70 | interface StructuredContentItemObjectGeneric { 71 | tag: 'ruby' | 'rt' | 'rp' | 'table' | 'thead' | 'tbody' | 'tfoot' | 'tr'; 72 | content: StructuredContentItem; 73 | } 74 | 75 | interface StructuredContentItemObjectTableItem { 76 | tag: 'td' | 'th'; 77 | content: StructuredContentItem; 78 | colSpan?: number; 79 | rowSpan?: number; 80 | style?: StructuredContentItemStyle; 81 | } 82 | 83 | interface StructuredContentItemObjectStylableGeneric { 84 | tag: 'span' | 'div'; 85 | content: StructuredContentItem; 86 | style?: StructuredContentItemStyle; 87 | } 88 | 89 | export interface StructuredContentItemObjectImage extends ImageOptions { 90 | tag: 'img'; 91 | verticalAlign?: 'baseline' | 'sub' | 'super' | 'text-top' | 'text-bottom' | 'middle' | 'top' | 'bottom'; 92 | sizeUnits?: 'px' | 'em'; 93 | } 94 | 95 | export interface StructuredContentItemStyle { 96 | fontStyle?: 'normal' | 'italic'; 97 | fontWeight?: 'normal' | 'bold'; 98 | fontSize?: 'xx-small' | 'x-small' | 'small' | 'medium' | 'large' | 'x-large' | 'xx-large' | 'xxx-large'; 99 | textDecorationLine?: StyleTextDecorationLine | StyleTextDecorationLine[]; 100 | verticalAlign?: 'baseline' | 'sub' | 'super' | 'text-top' | 'text-bottom' | 'middle' | 'top' | 'bottom'; 101 | } 102 | 103 | type StyleTextDecorationLine = 'none' | 'underline' | 'overline' | 'line-through'; 104 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "lib": ["es2020"], 4 | "module": "commonjs", 5 | "outDir": "dist", 6 | "target": "es2019", 7 | "esModuleInterop": true, 8 | "sourceMap": true, 9 | "strict": true 10 | }, 11 | "include": [ 12 | "src/**/*" 13 | ], 14 | } -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@nodelib/fs.scandir@2.1.5": 6 | version "2.1.5" 7 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" 8 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== 9 | dependencies: 10 | "@nodelib/fs.stat" "2.0.5" 11 | run-parallel "^1.1.9" 12 | 13 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": 14 | version "2.0.5" 15 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" 16 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== 17 | 18 | "@nodelib/fs.walk@^1.2.3": 19 | version "1.2.8" 20 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" 21 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== 22 | dependencies: 23 | "@nodelib/fs.scandir" "2.1.5" 24 | fastq "^1.6.0" 25 | 26 | "@oozcitak/dom@1.15.8": 27 | version "1.15.8" 28 | resolved "https://registry.yarnpkg.com/@oozcitak/dom/-/dom-1.15.8.tgz#0c0c7bb54cfdaadc07fd637913e706101721d15d" 29 | integrity sha512-MoOnLBNsF+ok0HjpAvxYxR4piUhRDCEWK0ot3upwOOHYudJd30j6M+LNcE8RKpwfnclAX9T66nXXzkytd29XSw== 30 | dependencies: 31 | "@oozcitak/infra" "1.0.8" 32 | "@oozcitak/url" "1.0.4" 33 | "@oozcitak/util" "8.3.8" 34 | 35 | "@oozcitak/infra@1.0.8": 36 | version "1.0.8" 37 | resolved "https://registry.yarnpkg.com/@oozcitak/infra/-/infra-1.0.8.tgz#b0b089421f7d0f6878687608301fbaba837a7d17" 38 | integrity sha512-JRAUc9VR6IGHOL7OGF+yrvs0LO8SlqGnPAMqyzOuFZPSZSXI7Xf2O9+awQPSMXgIWGtgUf/dA6Hs6X6ySEaWTg== 39 | dependencies: 40 | "@oozcitak/util" "8.3.8" 41 | 42 | "@oozcitak/url@1.0.4": 43 | version "1.0.4" 44 | resolved "https://registry.yarnpkg.com/@oozcitak/url/-/url-1.0.4.tgz#ca8b1c876319cf5a648dfa1123600a6aa5cda6ba" 45 | integrity sha512-kDcD8y+y3FCSOvnBI6HJgl00viO/nGbQoCINmQ0h98OhnGITrWR3bOGfwYCthgcrV8AnTJz8MzslTQbC3SOAmw== 46 | dependencies: 47 | "@oozcitak/infra" "1.0.8" 48 | "@oozcitak/util" "8.3.8" 49 | 50 | "@oozcitak/util@8.3.8": 51 | version "8.3.8" 52 | resolved "https://registry.yarnpkg.com/@oozcitak/util/-/util-8.3.8.tgz#10f65fe1891fd8cde4957360835e78fd1936bfdd" 53 | integrity sha512-T8TbSnGsxo6TDBJx/Sgv/BlVJL3tshxZP7Aq5R1mSnM5OcHY2dQaxLMu2+E8u3gN0MLOzdjurqN4ZRVuzQycOQ== 54 | 55 | "@sindresorhus/is@^0.7.0": 56 | version "0.7.0" 57 | resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd" 58 | integrity sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow== 59 | 60 | "@tsconfig/node10@^1.0.7": 61 | version "1.0.8" 62 | resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.8.tgz#c1e4e80d6f964fbecb3359c43bd48b40f7cadad9" 63 | integrity sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg== 64 | 65 | "@tsconfig/node12@^1.0.7": 66 | version "1.0.9" 67 | resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.9.tgz#62c1f6dee2ebd9aead80dc3afa56810e58e1a04c" 68 | integrity sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw== 69 | 70 | "@tsconfig/node14@^1.0.0": 71 | version "1.0.1" 72 | resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.1.tgz#95f2d167ffb9b8d2068b0b235302fafd4df711f2" 73 | integrity sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg== 74 | 75 | "@tsconfig/node16@^1.0.1": 76 | version "1.0.1" 77 | resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.1.tgz#a6ca6a9a0ff366af433f42f5f0e124794ff6b8f1" 78 | integrity sha512-FTgBI767POY/lKNDNbIzgAX6miIDBs6NTCbdlDb8TrWovHsSvaVIZDlTqym29C6UqhzwcJx4CYr+AlrMywA0cA== 79 | 80 | "@types/argparse@^2.0.8": 81 | version "2.0.8" 82 | resolved "https://registry.yarnpkg.com/@types/argparse/-/argparse-2.0.8.tgz#14bebdb0479b610bf11fae8b2d59d6a1a09dc1e5" 83 | integrity sha512-H/YVlchGvyHN2LSD3gRueCe8mo5zC0lU505LYqpQL75SMOIIZmtyronj/tETOCUVRzeMp4PHW02BaGWMSuNcxA== 84 | 85 | "@types/clean-css@*": 86 | version "4.2.5" 87 | resolved "https://registry.yarnpkg.com/@types/clean-css/-/clean-css-4.2.5.tgz#69ce62cc13557c90ca40460133f672dc52ceaf89" 88 | integrity sha512-NEzjkGGpbs9S9fgC4abuBvTpVwE3i+Acu9BBod3PUyjDVZcNsGx61b8r2PphR61QGPnn0JHVs5ey6/I4eTrkxw== 89 | dependencies: 90 | "@types/node" "*" 91 | source-map "^0.6.0" 92 | 93 | "@types/fs-extra@^9.0.11": 94 | version "9.0.11" 95 | resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.11.tgz#8cc99e103499eab9f347dbc6ca4e99fb8d2c2b87" 96 | integrity sha512-mZsifGG4QeQ7hlkhO56u7zt/ycBgGxSVsFI/6lGTU34VtwkiqrrSDgw0+ygs8kFGWcXnFQWMrzF2h7TtDFNixA== 97 | dependencies: 98 | "@types/node" "*" 99 | 100 | "@types/glob@^7.1.1": 101 | version "7.1.4" 102 | resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.4.tgz#ea59e21d2ee5c517914cb4bc8e4153b99e566672" 103 | integrity sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA== 104 | dependencies: 105 | "@types/minimatch" "*" 106 | "@types/node" "*" 107 | 108 | "@types/html-minifier@^4.0.1": 109 | version "4.0.1" 110 | resolved "https://registry.yarnpkg.com/@types/html-minifier/-/html-minifier-4.0.1.tgz#9486ffc144f8d7b8f75b07939c500ac3d73617a0" 111 | integrity sha512-6u58FWQbWP45bsxVeMJo0yk2LEsjjZsCwn0JDe/i5Edk3L+b9TR5eZ2FGaMCrLdtGYpME5AGxUqv8o+3hWKogw== 112 | dependencies: 113 | "@types/clean-css" "*" 114 | "@types/relateurl" "*" 115 | "@types/uglify-js" "*" 116 | 117 | "@types/imagemin-mozjpeg@^8.0.1": 118 | version "8.0.1" 119 | resolved "https://registry.yarnpkg.com/@types/imagemin-mozjpeg/-/imagemin-mozjpeg-8.0.1.tgz#eaf2f07aea3a317a1710ef2c763ec53f3bcfcdc5" 120 | integrity sha512-kMQWEoKxxhlnH4POI3qfW9DjXlQfi80ux3l2b3j5R3eudSCoUIzKQLkfMjNJ6eMYnMWBcB+rfQOWqIzdIwFGKw== 121 | dependencies: 122 | "@types/imagemin" "*" 123 | 124 | "@types/imagemin@*": 125 | version "7.0.1" 126 | resolved "https://registry.yarnpkg.com/@types/imagemin/-/imagemin-7.0.1.tgz#11ca1e65ccb3871a8469d9b23033b95d3838eda0" 127 | integrity sha512-xEn5+M3lDBtI3JxLy6eU3ksoVurygnlG7OYhTqJfGGP4PcvYnfn+IABCmMve7ziM/SneHDm5xgJFKC8hCYPicw== 128 | dependencies: 129 | "@types/node" "*" 130 | 131 | "@types/lodash@^4.14.170": 132 | version "4.14.170" 133 | resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.170.tgz#0d67711d4bf7f4ca5147e9091b847479b87925d6" 134 | integrity sha512-bpcvu/MKHHeYX+qeEN8GE7DIravODWdACVA1ctevD8CN24RhPZIKMn9ntfAsrvLfSX3cR5RrBKAbYm9bGs0A+Q== 135 | 136 | "@types/mime-types@^2.1.0": 137 | version "2.1.0" 138 | resolved "https://registry.yarnpkg.com/@types/mime-types/-/mime-types-2.1.0.tgz#9ca52cda363f699c69466c2a6ccdaad913ea7a73" 139 | integrity sha1-nKUs2jY/aZxpRmwqbM2q2RPqenM= 140 | 141 | "@types/minimatch@*": 142 | version "3.0.5" 143 | resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" 144 | integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== 145 | 146 | "@types/node@*": 147 | version "16.0.0" 148 | resolved "https://registry.yarnpkg.com/@types/node/-/node-16.0.0.tgz#067a6c49dc7a5c2412a505628e26902ae967bf6f" 149 | integrity sha512-TmCW5HoZ2o2/z2EYi109jLqIaPIi9y/lc2LmDCWzuCi35bcaQ+OtUh6nwBiFK7SOu25FAU5+YKdqFZUwtqGSdg== 150 | 151 | "@types/node@^15.6.0": 152 | version "15.14.1" 153 | resolved "https://registry.yarnpkg.com/@types/node/-/node-15.14.1.tgz#4f9d3689532499fdda1c898e19f4593718655e36" 154 | integrity sha512-wF6hazbsnwaW3GhK4jFuw5NaLDQVRQ6pWQUGAUrJzxixFkTaODSiAKMPXuHwPEPkAKQWHAzj6uJ5h+3zU9gQxg== 155 | 156 | "@types/relateurl@*": 157 | version "0.2.29" 158 | resolved "https://registry.yarnpkg.com/@types/relateurl/-/relateurl-0.2.29.tgz#68ccecec3d4ffdafb9c577fe764f912afc050fe6" 159 | integrity sha512-QSvevZ+IRww2ldtfv1QskYsqVVVwCKQf1XbwtcyyoRvLIQzfyPhj/C+3+PKzSDRdiyejaiLgnq//XTkleorpLg== 160 | 161 | "@types/uglify-js@*": 162 | version "3.13.1" 163 | resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.13.1.tgz#5e889e9e81e94245c75b6450600e1c5ea2878aea" 164 | integrity sha512-O3MmRAk6ZuAKa9CHgg0Pr0+lUOqoMLpc9AS4R8ano2auvsg7IE8syF3Xh/NPr26TWklxYcqoEEFdzLLs1fV9PQ== 165 | dependencies: 166 | source-map "^0.6.1" 167 | 168 | ansi-regex@^2.0.0: 169 | version "2.1.1" 170 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 171 | integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= 172 | 173 | ansi-styles@^2.2.1: 174 | version "2.2.1" 175 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 176 | integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= 177 | 178 | arch@^2.1.0: 179 | version "2.2.0" 180 | resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" 181 | integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== 182 | 183 | archive-type@^4.0.0: 184 | version "4.0.0" 185 | resolved "https://registry.yarnpkg.com/archive-type/-/archive-type-4.0.0.tgz#f92e72233056dfc6969472749c267bdb046b1d70" 186 | integrity sha1-+S5yIzBW38aWlHJ0nCZ72wRrHXA= 187 | dependencies: 188 | file-type "^4.2.0" 189 | 190 | arg@^4.1.0: 191 | version "4.1.3" 192 | resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" 193 | integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== 194 | 195 | argparse@^1.0.7: 196 | version "1.0.10" 197 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 198 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 199 | dependencies: 200 | sprintf-js "~1.0.2" 201 | 202 | argparse@^2.0.1: 203 | version "2.0.1" 204 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 205 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 206 | 207 | array-find-index@^1.0.1: 208 | version "1.0.2" 209 | resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" 210 | integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= 211 | 212 | array-union@^2.1.0: 213 | version "2.1.0" 214 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" 215 | integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== 216 | 217 | balanced-match@^1.0.0: 218 | version "1.0.2" 219 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 220 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 221 | 222 | base64-js@^1.3.1: 223 | version "1.5.1" 224 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" 225 | integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== 226 | 227 | bin-build@^3.0.0: 228 | version "3.0.0" 229 | resolved "https://registry.yarnpkg.com/bin-build/-/bin-build-3.0.0.tgz#c5780a25a8a9f966d8244217e6c1f5082a143861" 230 | integrity sha512-jcUOof71/TNAI2uM5uoUaDq2ePcVBQ3R/qhxAz1rX7UfvduAL/RXD3jXzvn8cVcDJdGVkiR1shal3OH0ImpuhA== 231 | dependencies: 232 | decompress "^4.0.0" 233 | download "^6.2.2" 234 | execa "^0.7.0" 235 | p-map-series "^1.0.0" 236 | tempfile "^2.0.0" 237 | 238 | bin-check@^4.1.0: 239 | version "4.1.0" 240 | resolved "https://registry.yarnpkg.com/bin-check/-/bin-check-4.1.0.tgz#fc495970bdc88bb1d5a35fc17e65c4a149fc4a49" 241 | integrity sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA== 242 | dependencies: 243 | execa "^0.7.0" 244 | executable "^4.1.0" 245 | 246 | bin-version-check@^4.0.0: 247 | version "4.0.0" 248 | resolved "https://registry.yarnpkg.com/bin-version-check/-/bin-version-check-4.0.0.tgz#7d819c62496991f80d893e6e02a3032361608f71" 249 | integrity sha512-sR631OrhC+1f8Cvs8WyVWOA33Y8tgwjETNPyyD/myRBXLkfS/vl74FmH/lFcRl9KY3zwGh7jFhvyk9vV3/3ilQ== 250 | dependencies: 251 | bin-version "^3.0.0" 252 | semver "^5.6.0" 253 | semver-truncate "^1.1.2" 254 | 255 | bin-version@^3.0.0: 256 | version "3.1.0" 257 | resolved "https://registry.yarnpkg.com/bin-version/-/bin-version-3.1.0.tgz#5b09eb280752b1bd28f0c9db3f96f2f43b6c0839" 258 | integrity sha512-Mkfm4iE1VFt4xd4vH+gx+0/71esbfus2LsnCGe8Pi4mndSPyT+NGES/Eg99jx8/lUGWfu3z2yuB/bt5UB+iVbQ== 259 | dependencies: 260 | execa "^1.0.0" 261 | find-versions "^3.0.0" 262 | 263 | bin-wrapper@^4.0.0: 264 | version "4.1.0" 265 | resolved "https://registry.yarnpkg.com/bin-wrapper/-/bin-wrapper-4.1.0.tgz#99348f2cf85031e3ef7efce7e5300aeaae960605" 266 | integrity sha512-hfRmo7hWIXPkbpi0ZltboCMVrU+0ClXR/JgbCKKjlDjQf6igXa7OwdqNcFWQZPZTgiY7ZpzE3+LjjkLiTN2T7Q== 267 | dependencies: 268 | bin-check "^4.1.0" 269 | bin-version-check "^4.0.0" 270 | download "^7.1.0" 271 | import-lazy "^3.1.0" 272 | os-filter-obj "^2.0.0" 273 | pify "^4.0.1" 274 | 275 | bl@^1.0.0: 276 | version "1.2.3" 277 | resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.3.tgz#1e8dd80142eac80d7158c9dccc047fb620e035e7" 278 | integrity sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww== 279 | dependencies: 280 | readable-stream "^2.3.5" 281 | safe-buffer "^5.1.1" 282 | 283 | bluebird@^3.5.1: 284 | version "3.7.2" 285 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" 286 | integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== 287 | 288 | brace-expansion@^1.1.7: 289 | version "1.1.11" 290 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 291 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 292 | dependencies: 293 | balanced-match "^1.0.0" 294 | concat-map "0.0.1" 295 | 296 | braces@^3.0.1: 297 | version "3.0.2" 298 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 299 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 300 | dependencies: 301 | fill-range "^7.0.1" 302 | 303 | buffer-alloc-unsafe@^1.1.0: 304 | version "1.1.0" 305 | resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" 306 | integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== 307 | 308 | buffer-alloc@^1.2.0: 309 | version "1.2.0" 310 | resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" 311 | integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== 312 | dependencies: 313 | buffer-alloc-unsafe "^1.1.0" 314 | buffer-fill "^1.0.0" 315 | 316 | buffer-crc32@~0.2.3: 317 | version "0.2.13" 318 | resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" 319 | integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= 320 | 321 | buffer-fill@^1.0.0: 322 | version "1.0.0" 323 | resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" 324 | integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= 325 | 326 | buffer-from@^1.0.0: 327 | version "1.1.1" 328 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 329 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== 330 | 331 | buffer@^5.2.1: 332 | version "5.7.1" 333 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" 334 | integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== 335 | dependencies: 336 | base64-js "^1.3.1" 337 | ieee754 "^1.1.13" 338 | 339 | cacheable-request@^2.1.1: 340 | version "2.1.4" 341 | resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-2.1.4.tgz#0d808801b6342ad33c91df9d0b44dc09b91e5c3d" 342 | integrity sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0= 343 | dependencies: 344 | clone-response "1.0.2" 345 | get-stream "3.0.0" 346 | http-cache-semantics "3.8.1" 347 | keyv "3.0.0" 348 | lowercase-keys "1.0.0" 349 | normalize-url "2.0.1" 350 | responselike "1.0.2" 351 | 352 | camel-case@^3.0.0: 353 | version "3.0.0" 354 | resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" 355 | integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= 356 | dependencies: 357 | no-case "^2.2.0" 358 | upper-case "^1.1.1" 359 | 360 | camelcase-keys@^2.0.0: 361 | version "2.1.0" 362 | resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" 363 | integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= 364 | dependencies: 365 | camelcase "^2.0.0" 366 | map-obj "^1.0.0" 367 | 368 | camelcase@^2.0.0: 369 | version "2.1.1" 370 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" 371 | integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= 372 | 373 | caw@^2.0.0, caw@^2.0.1: 374 | version "2.0.1" 375 | resolved "https://registry.yarnpkg.com/caw/-/caw-2.0.1.tgz#6c3ca071fc194720883c2dc5da9b074bfc7e9e95" 376 | integrity sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA== 377 | dependencies: 378 | get-proxy "^2.0.0" 379 | isurl "^1.0.0-alpha5" 380 | tunnel-agent "^0.6.0" 381 | url-to-options "^1.0.1" 382 | 383 | chalk@^1.0.0: 384 | version "1.1.3" 385 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 386 | integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= 387 | dependencies: 388 | ansi-styles "^2.2.1" 389 | escape-string-regexp "^1.0.2" 390 | has-ansi "^2.0.0" 391 | strip-ansi "^3.0.0" 392 | supports-color "^2.0.0" 393 | 394 | clean-css@^4.2.1: 395 | version "4.2.3" 396 | resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" 397 | integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== 398 | dependencies: 399 | source-map "~0.6.0" 400 | 401 | clone-response@1.0.2: 402 | version "1.0.2" 403 | resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" 404 | integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= 405 | dependencies: 406 | mimic-response "^1.0.0" 407 | 408 | commander@^2.19.0, commander@^2.8.1: 409 | version "2.20.3" 410 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" 411 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== 412 | 413 | concat-map@0.0.1: 414 | version "0.0.1" 415 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 416 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 417 | 418 | config-chain@^1.1.11: 419 | version "1.1.13" 420 | resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" 421 | integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== 422 | dependencies: 423 | ini "^1.3.4" 424 | proto-list "~1.2.1" 425 | 426 | console-stream@^0.1.1: 427 | version "0.1.1" 428 | resolved "https://registry.yarnpkg.com/console-stream/-/console-stream-0.1.1.tgz#a095fe07b20465955f2fafd28b5d72bccd949d44" 429 | integrity sha1-oJX+B7IEZZVfL6/Si11yvM2UnUQ= 430 | 431 | content-disposition@^0.5.2: 432 | version "0.5.3" 433 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" 434 | integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== 435 | dependencies: 436 | safe-buffer "5.1.2" 437 | 438 | core-util-is@~1.0.0: 439 | version "1.0.2" 440 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 441 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 442 | 443 | create-require@^1.1.0: 444 | version "1.1.1" 445 | resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" 446 | integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== 447 | 448 | cross-spawn@^5.0.1: 449 | version "5.1.0" 450 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" 451 | integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= 452 | dependencies: 453 | lru-cache "^4.0.1" 454 | shebang-command "^1.2.0" 455 | which "^1.2.9" 456 | 457 | cross-spawn@^6.0.0: 458 | version "6.0.5" 459 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" 460 | integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== 461 | dependencies: 462 | nice-try "^1.0.4" 463 | path-key "^2.0.1" 464 | semver "^5.5.0" 465 | shebang-command "^1.2.0" 466 | which "^1.2.9" 467 | 468 | cross-spawn@^7.0.0: 469 | version "7.0.3" 470 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 471 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 472 | dependencies: 473 | path-key "^3.1.0" 474 | shebang-command "^2.0.0" 475 | which "^2.0.1" 476 | 477 | currently-unhandled@^0.4.1: 478 | version "0.4.1" 479 | resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" 480 | integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= 481 | dependencies: 482 | array-find-index "^1.0.1" 483 | 484 | decamelize@^1.1.2: 485 | version "1.2.0" 486 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 487 | integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= 488 | 489 | decode-uri-component@^0.2.0: 490 | version "0.2.0" 491 | resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" 492 | integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= 493 | 494 | decompress-response@^3.2.0, decompress-response@^3.3.0: 495 | version "3.3.0" 496 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" 497 | integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= 498 | dependencies: 499 | mimic-response "^1.0.0" 500 | 501 | decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1: 502 | version "4.1.1" 503 | resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-4.1.1.tgz#718cbd3fcb16209716e70a26b84e7ba4592e5af1" 504 | integrity sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ== 505 | dependencies: 506 | file-type "^5.2.0" 507 | is-stream "^1.1.0" 508 | tar-stream "^1.5.2" 509 | 510 | decompress-tarbz2@^4.0.0: 511 | version "4.1.1" 512 | resolved "https://registry.yarnpkg.com/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz#3082a5b880ea4043816349f378b56c516be1a39b" 513 | integrity sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A== 514 | dependencies: 515 | decompress-tar "^4.1.0" 516 | file-type "^6.1.0" 517 | is-stream "^1.1.0" 518 | seek-bzip "^1.0.5" 519 | unbzip2-stream "^1.0.9" 520 | 521 | decompress-targz@^4.0.0: 522 | version "4.1.1" 523 | resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-4.1.1.tgz#c09bc35c4d11f3de09f2d2da53e9de23e7ce1eee" 524 | integrity sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w== 525 | dependencies: 526 | decompress-tar "^4.1.1" 527 | file-type "^5.2.0" 528 | is-stream "^1.1.0" 529 | 530 | decompress-unzip@^4.0.1: 531 | version "4.0.1" 532 | resolved "https://registry.yarnpkg.com/decompress-unzip/-/decompress-unzip-4.0.1.tgz#deaaccdfd14aeaf85578f733ae8210f9b4848f69" 533 | integrity sha1-3qrM39FK6vhVePczroIQ+bSEj2k= 534 | dependencies: 535 | file-type "^3.8.0" 536 | get-stream "^2.2.0" 537 | pify "^2.3.0" 538 | yauzl "^2.4.2" 539 | 540 | decompress@^4.0.0, decompress@^4.2.0: 541 | version "4.2.1" 542 | resolved "https://registry.yarnpkg.com/decompress/-/decompress-4.2.1.tgz#007f55cc6a62c055afa37c07eb6a4ee1b773f118" 543 | integrity sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ== 544 | dependencies: 545 | decompress-tar "^4.0.0" 546 | decompress-tarbz2 "^4.0.0" 547 | decompress-targz "^4.0.0" 548 | decompress-unzip "^4.0.1" 549 | graceful-fs "^4.1.10" 550 | make-dir "^1.0.0" 551 | pify "^2.3.0" 552 | strip-dirs "^2.0.0" 553 | 554 | diff@^4.0.1: 555 | version "4.0.2" 556 | resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" 557 | integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== 558 | 559 | dir-glob@^3.0.1: 560 | version "3.0.1" 561 | resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" 562 | integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== 563 | dependencies: 564 | path-type "^4.0.0" 565 | 566 | download@^6.2.2: 567 | version "6.2.5" 568 | resolved "https://registry.yarnpkg.com/download/-/download-6.2.5.tgz#acd6a542e4cd0bb42ca70cfc98c9e43b07039714" 569 | integrity sha512-DpO9K1sXAST8Cpzb7kmEhogJxymyVUd5qz/vCOSyvwtp2Klj2XcDt5YUuasgxka44SxF0q5RriKIwJmQHG2AuA== 570 | dependencies: 571 | caw "^2.0.0" 572 | content-disposition "^0.5.2" 573 | decompress "^4.0.0" 574 | ext-name "^5.0.0" 575 | file-type "5.2.0" 576 | filenamify "^2.0.0" 577 | get-stream "^3.0.0" 578 | got "^7.0.0" 579 | make-dir "^1.0.0" 580 | p-event "^1.0.0" 581 | pify "^3.0.0" 582 | 583 | download@^7.1.0: 584 | version "7.1.0" 585 | resolved "https://registry.yarnpkg.com/download/-/download-7.1.0.tgz#9059aa9d70b503ee76a132897be6dec8e5587233" 586 | integrity sha512-xqnBTVd/E+GxJVrX5/eUJiLYjCGPwMpdL+jGhGU57BvtcA7wwhtHVbXBeUk51kOpW3S7Jn3BQbN9Q1R1Km2qDQ== 587 | dependencies: 588 | archive-type "^4.0.0" 589 | caw "^2.0.1" 590 | content-disposition "^0.5.2" 591 | decompress "^4.2.0" 592 | ext-name "^5.0.0" 593 | file-type "^8.1.0" 594 | filenamify "^2.0.0" 595 | get-stream "^3.0.0" 596 | got "^8.3.1" 597 | make-dir "^1.2.0" 598 | p-event "^2.1.0" 599 | pify "^3.0.0" 600 | 601 | duplexer3@^0.1.4: 602 | version "0.1.4" 603 | resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" 604 | integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= 605 | 606 | easyimage@^3.1.1: 607 | version "3.1.1" 608 | resolved "https://registry.yarnpkg.com/easyimage/-/easyimage-3.1.1.tgz#26bbdfe37e400f7fd1b1aa267423a49ee3cd0282" 609 | integrity sha512-W9QFelSdXjDK7ja0+jkDKwtJSrSggN/GDzgDY4+QguF9YElVkcbMZp64H8OinBI0ajow/h2p/MukdFOzpH1Mng== 610 | dependencies: 611 | bluebird "^3.5.1" 612 | mkdirp "^0.5.0" 613 | nanoid "^1.0.2" 614 | tslib "^1.8.1" 615 | typescript "^3.3.0" 616 | 617 | end-of-stream@^1.0.0, end-of-stream@^1.1.0: 618 | version "1.4.4" 619 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 620 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 621 | dependencies: 622 | once "^1.4.0" 623 | 624 | error-ex@^1.2.0: 625 | version "1.3.2" 626 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 627 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 628 | dependencies: 629 | is-arrayish "^0.2.1" 630 | 631 | escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: 632 | version "1.0.5" 633 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 634 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 635 | 636 | esprima@^4.0.0: 637 | version "4.0.1" 638 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 639 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 640 | 641 | execa@^0.7.0: 642 | version "0.7.0" 643 | resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" 644 | integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= 645 | dependencies: 646 | cross-spawn "^5.0.1" 647 | get-stream "^3.0.0" 648 | is-stream "^1.1.0" 649 | npm-run-path "^2.0.0" 650 | p-finally "^1.0.0" 651 | signal-exit "^3.0.0" 652 | strip-eof "^1.0.0" 653 | 654 | execa@^1.0.0: 655 | version "1.0.0" 656 | resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" 657 | integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== 658 | dependencies: 659 | cross-spawn "^6.0.0" 660 | get-stream "^4.0.0" 661 | is-stream "^1.1.0" 662 | npm-run-path "^2.0.0" 663 | p-finally "^1.0.0" 664 | signal-exit "^3.0.0" 665 | strip-eof "^1.0.0" 666 | 667 | execa@^4.0.0: 668 | version "4.1.0" 669 | resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" 670 | integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== 671 | dependencies: 672 | cross-spawn "^7.0.0" 673 | get-stream "^5.0.0" 674 | human-signals "^1.1.1" 675 | is-stream "^2.0.0" 676 | merge-stream "^2.0.0" 677 | npm-run-path "^4.0.0" 678 | onetime "^5.1.0" 679 | signal-exit "^3.0.2" 680 | strip-final-newline "^2.0.0" 681 | 682 | executable@^4.1.0: 683 | version "4.1.1" 684 | resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c" 685 | integrity sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg== 686 | dependencies: 687 | pify "^2.2.0" 688 | 689 | ext-list@^2.0.0: 690 | version "2.2.2" 691 | resolved "https://registry.yarnpkg.com/ext-list/-/ext-list-2.2.2.tgz#0b98e64ed82f5acf0f2931babf69212ef52ddd37" 692 | integrity sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA== 693 | dependencies: 694 | mime-db "^1.28.0" 695 | 696 | ext-name@^5.0.0: 697 | version "5.0.0" 698 | resolved "https://registry.yarnpkg.com/ext-name/-/ext-name-5.0.0.tgz#70781981d183ee15d13993c8822045c506c8f0a6" 699 | integrity sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ== 700 | dependencies: 701 | ext-list "^2.0.0" 702 | sort-keys-length "^1.0.0" 703 | 704 | fast-glob@^3.0.3: 705 | version "3.2.7" 706 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" 707 | integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== 708 | dependencies: 709 | "@nodelib/fs.stat" "^2.0.2" 710 | "@nodelib/fs.walk" "^1.2.3" 711 | glob-parent "^5.1.2" 712 | merge2 "^1.3.0" 713 | micromatch "^4.0.4" 714 | 715 | fastq@^1.6.0: 716 | version "1.11.1" 717 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.1.tgz#5d8175aae17db61947f8b162cfc7f63264d22807" 718 | integrity sha512-HOnr8Mc60eNYl1gzwp6r5RoUyAn5/glBolUzP/Ez6IFVPMPirxn/9phgL6zhOtaTy7ISwPvQ+wT+hfcRZh/bzw== 719 | dependencies: 720 | reusify "^1.0.4" 721 | 722 | fd-slicer@~1.1.0: 723 | version "1.1.0" 724 | resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" 725 | integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= 726 | dependencies: 727 | pend "~1.2.0" 728 | 729 | figures@^1.3.5: 730 | version "1.7.0" 731 | resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" 732 | integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= 733 | dependencies: 734 | escape-string-regexp "^1.0.5" 735 | object-assign "^4.1.0" 736 | 737 | file-type@5.2.0, file-type@^5.2.0: 738 | version "5.2.0" 739 | resolved "https://registry.yarnpkg.com/file-type/-/file-type-5.2.0.tgz#2ddbea7c73ffe36368dfae49dc338c058c2b8ad6" 740 | integrity sha1-LdvqfHP/42No365J3DOMBYwritY= 741 | 742 | file-type@^12.0.0: 743 | version "12.4.2" 744 | resolved "https://registry.yarnpkg.com/file-type/-/file-type-12.4.2.tgz#a344ea5664a1d01447ee7fb1b635f72feb6169d9" 745 | integrity sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg== 746 | 747 | file-type@^3.8.0: 748 | version "3.9.0" 749 | resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" 750 | integrity sha1-JXoHg4TR24CHvESdEH1SpSZyuek= 751 | 752 | file-type@^4.2.0: 753 | version "4.4.0" 754 | resolved "https://registry.yarnpkg.com/file-type/-/file-type-4.4.0.tgz#1b600e5fca1fbdc6e80c0a70c71c8dba5f7906c5" 755 | integrity sha1-G2AOX8ofvcboDApwxxyNul95BsU= 756 | 757 | file-type@^6.1.0: 758 | version "6.2.0" 759 | resolved "https://registry.yarnpkg.com/file-type/-/file-type-6.2.0.tgz#e50cd75d356ffed4e306dc4f5bcf52a79903a919" 760 | integrity sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg== 761 | 762 | file-type@^8.1.0: 763 | version "8.1.0" 764 | resolved "https://registry.yarnpkg.com/file-type/-/file-type-8.1.0.tgz#244f3b7ef641bbe0cca196c7276e4b332399f68c" 765 | integrity sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ== 766 | 767 | filename-reserved-regex@^2.0.0: 768 | version "2.0.0" 769 | resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz#abf73dfab735d045440abfea2d91f389ebbfa229" 770 | integrity sha1-q/c9+rc10EVECr/qLZHzieu/oik= 771 | 772 | filenamify@^2.0.0: 773 | version "2.1.0" 774 | resolved "https://registry.yarnpkg.com/filenamify/-/filenamify-2.1.0.tgz#88faf495fb1b47abfd612300002a16228c677ee9" 775 | integrity sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA== 776 | dependencies: 777 | filename-reserved-regex "^2.0.0" 778 | strip-outer "^1.0.0" 779 | trim-repeated "^1.0.0" 780 | 781 | fill-range@^7.0.1: 782 | version "7.0.1" 783 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 784 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 785 | dependencies: 786 | to-regex-range "^5.0.1" 787 | 788 | find-up@^1.0.0: 789 | version "1.1.2" 790 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" 791 | integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= 792 | dependencies: 793 | path-exists "^2.0.0" 794 | pinkie-promise "^2.0.0" 795 | 796 | find-versions@^3.0.0: 797 | version "3.2.0" 798 | resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-3.2.0.tgz#10297f98030a786829681690545ef659ed1d254e" 799 | integrity sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww== 800 | dependencies: 801 | semver-regex "^2.0.0" 802 | 803 | from2@^2.1.1: 804 | version "2.3.0" 805 | resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" 806 | integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= 807 | dependencies: 808 | inherits "^2.0.1" 809 | readable-stream "^2.0.0" 810 | 811 | fs-constants@^1.0.0: 812 | version "1.0.0" 813 | resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" 814 | integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== 815 | 816 | fs-extra@^10.0.0: 817 | version "10.0.0" 818 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1" 819 | integrity sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ== 820 | dependencies: 821 | graceful-fs "^4.2.0" 822 | jsonfile "^6.0.1" 823 | universalify "^2.0.0" 824 | 825 | fs.realpath@^1.0.0: 826 | version "1.0.0" 827 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 828 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 829 | 830 | function-bind@^1.1.1: 831 | version "1.1.1" 832 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 833 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 834 | 835 | get-proxy@^2.0.0: 836 | version "2.1.0" 837 | resolved "https://registry.yarnpkg.com/get-proxy/-/get-proxy-2.1.0.tgz#349f2b4d91d44c4d4d4e9cba2ad90143fac5ef93" 838 | integrity sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw== 839 | dependencies: 840 | npm-conf "^1.1.0" 841 | 842 | get-stdin@^4.0.1: 843 | version "4.0.1" 844 | resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" 845 | integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= 846 | 847 | get-stream@3.0.0, get-stream@^3.0.0: 848 | version "3.0.0" 849 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" 850 | integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= 851 | 852 | get-stream@^2.2.0: 853 | version "2.3.1" 854 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" 855 | integrity sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4= 856 | dependencies: 857 | object-assign "^4.0.1" 858 | pinkie-promise "^2.0.0" 859 | 860 | get-stream@^4.0.0: 861 | version "4.1.0" 862 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" 863 | integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== 864 | dependencies: 865 | pump "^3.0.0" 866 | 867 | get-stream@^5.0.0: 868 | version "5.2.0" 869 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" 870 | integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== 871 | dependencies: 872 | pump "^3.0.0" 873 | 874 | glob-parent@^5.1.2: 875 | version "5.1.2" 876 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 877 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 878 | dependencies: 879 | is-glob "^4.0.1" 880 | 881 | glob@^7.1.3: 882 | version "7.1.7" 883 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" 884 | integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== 885 | dependencies: 886 | fs.realpath "^1.0.0" 887 | inflight "^1.0.4" 888 | inherits "2" 889 | minimatch "^3.0.4" 890 | once "^1.3.0" 891 | path-is-absolute "^1.0.0" 892 | 893 | globby@^10.0.0: 894 | version "10.0.2" 895 | resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543" 896 | integrity sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg== 897 | dependencies: 898 | "@types/glob" "^7.1.1" 899 | array-union "^2.1.0" 900 | dir-glob "^3.0.1" 901 | fast-glob "^3.0.3" 902 | glob "^7.1.3" 903 | ignore "^5.1.1" 904 | merge2 "^1.2.3" 905 | slash "^3.0.0" 906 | 907 | got@^7.0.0: 908 | version "7.1.0" 909 | resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" 910 | integrity sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw== 911 | dependencies: 912 | decompress-response "^3.2.0" 913 | duplexer3 "^0.1.4" 914 | get-stream "^3.0.0" 915 | is-plain-obj "^1.1.0" 916 | is-retry-allowed "^1.0.0" 917 | is-stream "^1.0.0" 918 | isurl "^1.0.0-alpha5" 919 | lowercase-keys "^1.0.0" 920 | p-cancelable "^0.3.0" 921 | p-timeout "^1.1.1" 922 | safe-buffer "^5.0.1" 923 | timed-out "^4.0.0" 924 | url-parse-lax "^1.0.0" 925 | url-to-options "^1.0.1" 926 | 927 | got@^8.3.1: 928 | version "8.3.2" 929 | resolved "https://registry.yarnpkg.com/got/-/got-8.3.2.tgz#1d23f64390e97f776cac52e5b936e5f514d2e937" 930 | integrity sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw== 931 | dependencies: 932 | "@sindresorhus/is" "^0.7.0" 933 | cacheable-request "^2.1.1" 934 | decompress-response "^3.3.0" 935 | duplexer3 "^0.1.4" 936 | get-stream "^3.0.0" 937 | into-stream "^3.1.0" 938 | is-retry-allowed "^1.1.0" 939 | isurl "^1.0.0-alpha5" 940 | lowercase-keys "^1.0.0" 941 | mimic-response "^1.0.0" 942 | p-cancelable "^0.4.0" 943 | p-timeout "^2.0.1" 944 | pify "^3.0.0" 945 | safe-buffer "^5.1.1" 946 | timed-out "^4.0.1" 947 | url-parse-lax "^3.0.0" 948 | url-to-options "^1.0.1" 949 | 950 | graceful-fs@^4.1.10, graceful-fs@^4.1.2, graceful-fs@^4.2.2: 951 | version "4.2.8" 952 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" 953 | integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== 954 | 955 | graceful-fs@^4.1.6, graceful-fs@^4.2.0: 956 | version "4.2.6" 957 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" 958 | integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== 959 | 960 | has-ansi@^2.0.0: 961 | version "2.0.0" 962 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 963 | integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= 964 | dependencies: 965 | ansi-regex "^2.0.0" 966 | 967 | has-symbol-support-x@^1.4.1: 968 | version "1.4.2" 969 | resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" 970 | integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== 971 | 972 | has-to-string-tag-x@^1.2.0: 973 | version "1.4.1" 974 | resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" 975 | integrity sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw== 976 | dependencies: 977 | has-symbol-support-x "^1.4.1" 978 | 979 | has@^1.0.3: 980 | version "1.0.3" 981 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 982 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 983 | dependencies: 984 | function-bind "^1.1.1" 985 | 986 | he@^1.2.0: 987 | version "1.2.0" 988 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" 989 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 990 | 991 | hosted-git-info@^2.1.4: 992 | version "2.8.9" 993 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" 994 | integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== 995 | 996 | html-minifier@^4.0.0: 997 | version "4.0.0" 998 | resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-4.0.0.tgz#cca9aad8bce1175e02e17a8c33e46d8988889f56" 999 | integrity sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig== 1000 | dependencies: 1001 | camel-case "^3.0.0" 1002 | clean-css "^4.2.1" 1003 | commander "^2.19.0" 1004 | he "^1.2.0" 1005 | param-case "^2.1.1" 1006 | relateurl "^0.2.7" 1007 | uglify-js "^3.5.1" 1008 | 1009 | http-cache-semantics@3.8.1: 1010 | version "3.8.1" 1011 | resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" 1012 | integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== 1013 | 1014 | human-signals@^1.1.1: 1015 | version "1.1.1" 1016 | resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" 1017 | integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== 1018 | 1019 | ieee754@^1.1.13: 1020 | version "1.2.1" 1021 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" 1022 | integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== 1023 | 1024 | ignore@^5.1.1: 1025 | version "5.1.8" 1026 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" 1027 | integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== 1028 | 1029 | imagemin-mozjpeg@^9.0.0: 1030 | version "9.0.0" 1031 | resolved "https://registry.yarnpkg.com/imagemin-mozjpeg/-/imagemin-mozjpeg-9.0.0.tgz#d1af26d0b43d75a41c211051c1910da59d9d2324" 1032 | integrity sha512-TwOjTzYqCFRgROTWpVSt5UTT0JeCuzF1jswPLKALDd89+PmrJ2PdMMYeDLYZ1fs9cTovI9GJd68mRSnuVt691w== 1033 | dependencies: 1034 | execa "^4.0.0" 1035 | is-jpg "^2.0.0" 1036 | mozjpeg "^7.0.0" 1037 | 1038 | imagemin@7: 1039 | version "7.0.1" 1040 | resolved "https://registry.yarnpkg.com/imagemin/-/imagemin-7.0.1.tgz#f6441ca647197632e23db7d971fffbd530c87dbf" 1041 | integrity sha512-33AmZ+xjZhg2JMCe+vDf6a9mzWukE7l+wAtesjE7KyteqqKjzxv7aVQeWnul1Ve26mWvEQqyPwl0OctNBfSR9w== 1042 | dependencies: 1043 | file-type "^12.0.0" 1044 | globby "^10.0.0" 1045 | graceful-fs "^4.2.2" 1046 | junk "^3.1.0" 1047 | make-dir "^3.0.0" 1048 | p-pipe "^3.0.0" 1049 | replace-ext "^1.0.0" 1050 | 1051 | import-lazy@^3.1.0: 1052 | version "3.1.0" 1053 | resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-3.1.0.tgz#891279202c8a2280fdbd6674dbd8da1a1dfc67cc" 1054 | integrity sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ== 1055 | 1056 | indent-string@^2.1.0: 1057 | version "2.1.0" 1058 | resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" 1059 | integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= 1060 | dependencies: 1061 | repeating "^2.0.0" 1062 | 1063 | inflight@^1.0.4: 1064 | version "1.0.6" 1065 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1066 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 1067 | dependencies: 1068 | once "^1.3.0" 1069 | wrappy "1" 1070 | 1071 | inherits@2, inherits@^2.0.1, inherits@~2.0.3: 1072 | version "2.0.4" 1073 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1074 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1075 | 1076 | ini@^1.3.4: 1077 | version "1.3.8" 1078 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" 1079 | integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== 1080 | 1081 | into-stream@^3.1.0: 1082 | version "3.1.0" 1083 | resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-3.1.0.tgz#96fb0a936c12babd6ff1752a17d05616abd094c6" 1084 | integrity sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY= 1085 | dependencies: 1086 | from2 "^2.1.1" 1087 | p-is-promise "^1.1.0" 1088 | 1089 | is-arrayish@^0.2.1: 1090 | version "0.2.1" 1091 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 1092 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= 1093 | 1094 | is-core-module@^2.2.0: 1095 | version "2.5.0" 1096 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.5.0.tgz#f754843617c70bfd29b7bd87327400cda5c18491" 1097 | integrity sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg== 1098 | dependencies: 1099 | has "^1.0.3" 1100 | 1101 | is-extglob@^2.1.1: 1102 | version "2.1.1" 1103 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1104 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 1105 | 1106 | is-finite@^1.0.0: 1107 | version "1.1.0" 1108 | resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" 1109 | integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== 1110 | 1111 | is-glob@^4.0.1: 1112 | version "4.0.1" 1113 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 1114 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 1115 | dependencies: 1116 | is-extglob "^2.1.1" 1117 | 1118 | is-jpg@^2.0.0: 1119 | version "2.0.0" 1120 | resolved "https://registry.yarnpkg.com/is-jpg/-/is-jpg-2.0.0.tgz#2e1997fa6e9166eaac0242daae443403e4ef1d97" 1121 | integrity sha1-LhmX+m6RZuqsAkLarkQ0A+TvHZc= 1122 | 1123 | is-natural-number@^4.0.1: 1124 | version "4.0.1" 1125 | resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8" 1126 | integrity sha1-q5124dtM7VHjXeDHLr7PCfc0zeg= 1127 | 1128 | is-number@^7.0.0: 1129 | version "7.0.0" 1130 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 1131 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 1132 | 1133 | is-object@^1.0.1: 1134 | version "1.0.2" 1135 | resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf" 1136 | integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== 1137 | 1138 | is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: 1139 | version "1.1.0" 1140 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" 1141 | integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= 1142 | 1143 | is-retry-allowed@^1.0.0, is-retry-allowed@^1.1.0: 1144 | version "1.2.0" 1145 | resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" 1146 | integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== 1147 | 1148 | is-stream@^1.0.0, is-stream@^1.1.0: 1149 | version "1.1.0" 1150 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" 1151 | integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= 1152 | 1153 | is-stream@^2.0.0: 1154 | version "2.0.1" 1155 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" 1156 | integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== 1157 | 1158 | is-utf8@^0.2.0: 1159 | version "0.2.1" 1160 | resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" 1161 | integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= 1162 | 1163 | isarray@~1.0.0: 1164 | version "1.0.0" 1165 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1166 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 1167 | 1168 | isexe@^2.0.0: 1169 | version "2.0.0" 1170 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1171 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 1172 | 1173 | isurl@^1.0.0-alpha5: 1174 | version "1.0.0" 1175 | resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" 1176 | integrity sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w== 1177 | dependencies: 1178 | has-to-string-tag-x "^1.2.0" 1179 | is-object "^1.0.1" 1180 | 1181 | js-yaml@3.14.0: 1182 | version "3.14.0" 1183 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" 1184 | integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== 1185 | dependencies: 1186 | argparse "^1.0.7" 1187 | esprima "^4.0.0" 1188 | 1189 | json-buffer@3.0.0: 1190 | version "3.0.0" 1191 | resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" 1192 | integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= 1193 | 1194 | jsonfile@^6.0.1: 1195 | version "6.1.0" 1196 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" 1197 | integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== 1198 | dependencies: 1199 | universalify "^2.0.0" 1200 | optionalDependencies: 1201 | graceful-fs "^4.1.6" 1202 | 1203 | junk@^3.1.0: 1204 | version "3.1.0" 1205 | resolved "https://registry.yarnpkg.com/junk/-/junk-3.1.0.tgz#31499098d902b7e98c5d9b9c80f43457a88abfa1" 1206 | integrity sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ== 1207 | 1208 | keyv@3.0.0: 1209 | version "3.0.0" 1210 | resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.0.0.tgz#44923ba39e68b12a7cec7df6c3268c031f2ef373" 1211 | integrity sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA== 1212 | dependencies: 1213 | json-buffer "3.0.0" 1214 | 1215 | load-json-file@^1.0.0: 1216 | version "1.1.0" 1217 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" 1218 | integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= 1219 | dependencies: 1220 | graceful-fs "^4.1.2" 1221 | parse-json "^2.2.0" 1222 | pify "^2.0.0" 1223 | pinkie-promise "^2.0.0" 1224 | strip-bom "^2.0.0" 1225 | 1226 | lodash@^4.17.21: 1227 | version "4.17.21" 1228 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 1229 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 1230 | 1231 | logalot@^2.1.0: 1232 | version "2.1.0" 1233 | resolved "https://registry.yarnpkg.com/logalot/-/logalot-2.1.0.tgz#5f8e8c90d304edf12530951a5554abb8c5e3f552" 1234 | integrity sha1-X46MkNME7fElMJUaVVSruMXj9VI= 1235 | dependencies: 1236 | figures "^1.3.5" 1237 | squeak "^1.0.0" 1238 | 1239 | longest@^1.0.0: 1240 | version "1.0.1" 1241 | resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" 1242 | integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= 1243 | 1244 | loud-rejection@^1.0.0: 1245 | version "1.6.0" 1246 | resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" 1247 | integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= 1248 | dependencies: 1249 | currently-unhandled "^0.4.1" 1250 | signal-exit "^3.0.0" 1251 | 1252 | lower-case@^1.1.1: 1253 | version "1.1.4" 1254 | resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" 1255 | integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= 1256 | 1257 | lowercase-keys@1.0.0: 1258 | version "1.0.0" 1259 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" 1260 | integrity sha1-TjNms55/VFfjXxMkvfb4jQv8cwY= 1261 | 1262 | lowercase-keys@^1.0.0: 1263 | version "1.0.1" 1264 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" 1265 | integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== 1266 | 1267 | lpad-align@^1.0.1: 1268 | version "1.1.2" 1269 | resolved "https://registry.yarnpkg.com/lpad-align/-/lpad-align-1.1.2.tgz#21f600ac1c3095c3c6e497ee67271ee08481fe9e" 1270 | integrity sha1-IfYArBwwlcPG5JfuZyce4ISB/p4= 1271 | dependencies: 1272 | get-stdin "^4.0.1" 1273 | indent-string "^2.1.0" 1274 | longest "^1.0.0" 1275 | meow "^3.3.0" 1276 | 1277 | lru-cache@^4.0.1: 1278 | version "4.1.5" 1279 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" 1280 | integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== 1281 | dependencies: 1282 | pseudomap "^1.0.2" 1283 | yallist "^2.1.2" 1284 | 1285 | make-dir@^1.0.0, make-dir@^1.2.0: 1286 | version "1.3.0" 1287 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" 1288 | integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== 1289 | dependencies: 1290 | pify "^3.0.0" 1291 | 1292 | make-dir@^3.0.0: 1293 | version "3.1.0" 1294 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" 1295 | integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== 1296 | dependencies: 1297 | semver "^6.0.0" 1298 | 1299 | make-error@^1.1.1: 1300 | version "1.3.6" 1301 | resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" 1302 | integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== 1303 | 1304 | map-obj@^1.0.0, map-obj@^1.0.1: 1305 | version "1.0.1" 1306 | resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" 1307 | integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= 1308 | 1309 | meow@^3.3.0: 1310 | version "3.7.0" 1311 | resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" 1312 | integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= 1313 | dependencies: 1314 | camelcase-keys "^2.0.0" 1315 | decamelize "^1.1.2" 1316 | loud-rejection "^1.0.0" 1317 | map-obj "^1.0.1" 1318 | minimist "^1.1.3" 1319 | normalize-package-data "^2.3.4" 1320 | object-assign "^4.0.1" 1321 | read-pkg-up "^1.0.1" 1322 | redent "^1.0.0" 1323 | trim-newlines "^1.0.0" 1324 | 1325 | merge-stream@^2.0.0: 1326 | version "2.0.0" 1327 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 1328 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 1329 | 1330 | merge2@^1.2.3, merge2@^1.3.0: 1331 | version "1.4.1" 1332 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" 1333 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 1334 | 1335 | micromatch@^4.0.4: 1336 | version "4.0.4" 1337 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" 1338 | integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== 1339 | dependencies: 1340 | braces "^3.0.1" 1341 | picomatch "^2.2.3" 1342 | 1343 | mime-db@1.49.0, mime-db@^1.28.0: 1344 | version "1.49.0" 1345 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.49.0.tgz#f3dfde60c99e9cf3bc9701d687778f537001cbed" 1346 | integrity sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA== 1347 | 1348 | mime-types@^2.1.32: 1349 | version "2.1.32" 1350 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.32.tgz#1d00e89e7de7fe02008db61001d9e02852670fd5" 1351 | integrity sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A== 1352 | dependencies: 1353 | mime-db "1.49.0" 1354 | 1355 | mimic-fn@^2.1.0: 1356 | version "2.1.0" 1357 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 1358 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 1359 | 1360 | mimic-response@^1.0.0: 1361 | version "1.0.1" 1362 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" 1363 | integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== 1364 | 1365 | minimatch@^3.0.4: 1366 | version "3.0.4" 1367 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1368 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 1369 | dependencies: 1370 | brace-expansion "^1.1.7" 1371 | 1372 | minimist@^1.1.3, minimist@^1.2.5: 1373 | version "1.2.5" 1374 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 1375 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 1376 | 1377 | mkdirp@^0.5.0: 1378 | version "0.5.5" 1379 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" 1380 | integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== 1381 | dependencies: 1382 | minimist "^1.2.5" 1383 | 1384 | mozjpeg@^7.0.0: 1385 | version "7.1.0" 1386 | resolved "https://registry.yarnpkg.com/mozjpeg/-/mozjpeg-7.1.0.tgz#23f202f3e48e98f02ed84f415358d4cbfab66c19" 1387 | integrity sha512-A6nVpI33DVi04HxatRx3PZTeVAOP1AC/T/5kXEvP0U8F+J11mmFFDv46BM2j5/cEyzDDtK8ptHeBSphNMrQLqA== 1388 | dependencies: 1389 | bin-build "^3.0.0" 1390 | bin-wrapper "^4.0.0" 1391 | logalot "^2.1.0" 1392 | 1393 | nanoid@^1.0.2: 1394 | version "1.3.4" 1395 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-1.3.4.tgz#ad89f62c9d1f4fd69710d4a90953d2893d2d31f4" 1396 | integrity sha512-4ug4BsuHxiVHoRUe1ud6rUFT3WUMmjXt1W0quL0CviZQANdan7D8kqN5/maw53hmAApY/jfzMRkC57BNNs60ZQ== 1397 | 1398 | nice-try@^1.0.4: 1399 | version "1.0.5" 1400 | resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" 1401 | integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== 1402 | 1403 | no-case@^2.2.0: 1404 | version "2.3.2" 1405 | resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" 1406 | integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== 1407 | dependencies: 1408 | lower-case "^1.1.1" 1409 | 1410 | normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: 1411 | version "2.5.0" 1412 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" 1413 | integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== 1414 | dependencies: 1415 | hosted-git-info "^2.1.4" 1416 | resolve "^1.10.0" 1417 | semver "2 || 3 || 4 || 5" 1418 | validate-npm-package-license "^3.0.1" 1419 | 1420 | normalize-url@2.0.1: 1421 | version "2.0.1" 1422 | resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-2.0.1.tgz#835a9da1551fa26f70e92329069a23aa6574d7e6" 1423 | integrity sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw== 1424 | dependencies: 1425 | prepend-http "^2.0.0" 1426 | query-string "^5.0.1" 1427 | sort-keys "^2.0.0" 1428 | 1429 | npm-conf@^1.1.0: 1430 | version "1.1.3" 1431 | resolved "https://registry.yarnpkg.com/npm-conf/-/npm-conf-1.1.3.tgz#256cc47bd0e218c259c4e9550bf413bc2192aff9" 1432 | integrity sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw== 1433 | dependencies: 1434 | config-chain "^1.1.11" 1435 | pify "^3.0.0" 1436 | 1437 | npm-run-path@^2.0.0: 1438 | version "2.0.2" 1439 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" 1440 | integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= 1441 | dependencies: 1442 | path-key "^2.0.0" 1443 | 1444 | npm-run-path@^4.0.0: 1445 | version "4.0.1" 1446 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" 1447 | integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== 1448 | dependencies: 1449 | path-key "^3.0.0" 1450 | 1451 | object-assign@^4.0.1, object-assign@^4.1.0: 1452 | version "4.1.1" 1453 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1454 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 1455 | 1456 | once@^1.3.0, once@^1.3.1, once@^1.4.0: 1457 | version "1.4.0" 1458 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1459 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1460 | dependencies: 1461 | wrappy "1" 1462 | 1463 | onetime@^5.1.0: 1464 | version "5.1.2" 1465 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" 1466 | integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== 1467 | dependencies: 1468 | mimic-fn "^2.1.0" 1469 | 1470 | os-filter-obj@^2.0.0: 1471 | version "2.0.0" 1472 | resolved "https://registry.yarnpkg.com/os-filter-obj/-/os-filter-obj-2.0.0.tgz#1c0b62d5f3a2442749a2d139e6dddee6e81d8d16" 1473 | integrity sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg== 1474 | dependencies: 1475 | arch "^2.1.0" 1476 | 1477 | p-cancelable@^0.3.0: 1478 | version "0.3.0" 1479 | resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" 1480 | integrity sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw== 1481 | 1482 | p-cancelable@^0.4.0: 1483 | version "0.4.1" 1484 | resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.4.1.tgz#35f363d67d52081c8d9585e37bcceb7e0bbcb2a0" 1485 | integrity sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ== 1486 | 1487 | p-event@^1.0.0: 1488 | version "1.3.0" 1489 | resolved "https://registry.yarnpkg.com/p-event/-/p-event-1.3.0.tgz#8e6b4f4f65c72bc5b6fe28b75eda874f96a4a085" 1490 | integrity sha1-jmtPT2XHK8W2/ii3XtqHT5akoIU= 1491 | dependencies: 1492 | p-timeout "^1.1.1" 1493 | 1494 | p-event@^2.1.0: 1495 | version "2.3.1" 1496 | resolved "https://registry.yarnpkg.com/p-event/-/p-event-2.3.1.tgz#596279ef169ab2c3e0cae88c1cfbb08079993ef6" 1497 | integrity sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA== 1498 | dependencies: 1499 | p-timeout "^2.0.1" 1500 | 1501 | p-finally@^1.0.0: 1502 | version "1.0.0" 1503 | resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" 1504 | integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= 1505 | 1506 | p-is-promise@^1.1.0: 1507 | version "1.1.0" 1508 | resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" 1509 | integrity sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4= 1510 | 1511 | p-map-series@^1.0.0: 1512 | version "1.0.0" 1513 | resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-1.0.0.tgz#bf98fe575705658a9e1351befb85ae4c1f07bdca" 1514 | integrity sha1-v5j+V1cFZYqeE1G++4WuTB8Hvco= 1515 | dependencies: 1516 | p-reduce "^1.0.0" 1517 | 1518 | p-pipe@^3.0.0: 1519 | version "3.1.0" 1520 | resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-3.1.0.tgz#48b57c922aa2e1af6a6404cb7c6bf0eb9cc8e60e" 1521 | integrity sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw== 1522 | 1523 | p-reduce@^1.0.0: 1524 | version "1.0.0" 1525 | resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" 1526 | integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= 1527 | 1528 | p-timeout@^1.1.1: 1529 | version "1.2.1" 1530 | resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" 1531 | integrity sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y= 1532 | dependencies: 1533 | p-finally "^1.0.0" 1534 | 1535 | p-timeout@^2.0.1: 1536 | version "2.0.1" 1537 | resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-2.0.1.tgz#d8dd1979595d2dc0139e1fe46b8b646cb3cdf038" 1538 | integrity sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA== 1539 | dependencies: 1540 | p-finally "^1.0.0" 1541 | 1542 | param-case@^2.1.1: 1543 | version "2.1.1" 1544 | resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" 1545 | integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= 1546 | dependencies: 1547 | no-case "^2.2.0" 1548 | 1549 | parse-json@^2.2.0: 1550 | version "2.2.0" 1551 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" 1552 | integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= 1553 | dependencies: 1554 | error-ex "^1.2.0" 1555 | 1556 | path-exists@^2.0.0: 1557 | version "2.1.0" 1558 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" 1559 | integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= 1560 | dependencies: 1561 | pinkie-promise "^2.0.0" 1562 | 1563 | path-is-absolute@^1.0.0: 1564 | version "1.0.1" 1565 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1566 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1567 | 1568 | path-key@^2.0.0, path-key@^2.0.1: 1569 | version "2.0.1" 1570 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" 1571 | integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= 1572 | 1573 | path-key@^3.0.0, path-key@^3.1.0: 1574 | version "3.1.1" 1575 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1576 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1577 | 1578 | path-parse@^1.0.6: 1579 | version "1.0.7" 1580 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 1581 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 1582 | 1583 | path-type@^1.0.0: 1584 | version "1.1.0" 1585 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" 1586 | integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= 1587 | dependencies: 1588 | graceful-fs "^4.1.2" 1589 | pify "^2.0.0" 1590 | pinkie-promise "^2.0.0" 1591 | 1592 | path-type@^4.0.0: 1593 | version "4.0.0" 1594 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 1595 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 1596 | 1597 | pend@~1.2.0: 1598 | version "1.2.0" 1599 | resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" 1600 | integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= 1601 | 1602 | picomatch@^2.2.3: 1603 | version "2.3.0" 1604 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" 1605 | integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== 1606 | 1607 | pify@^2.0.0, pify@^2.2.0, pify@^2.3.0: 1608 | version "2.3.0" 1609 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 1610 | integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= 1611 | 1612 | pify@^3.0.0: 1613 | version "3.0.0" 1614 | resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" 1615 | integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= 1616 | 1617 | pify@^4.0.1: 1618 | version "4.0.1" 1619 | resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" 1620 | integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== 1621 | 1622 | pinkie-promise@^2.0.0: 1623 | version "2.0.1" 1624 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" 1625 | integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= 1626 | dependencies: 1627 | pinkie "^2.0.0" 1628 | 1629 | pinkie@^2.0.0: 1630 | version "2.0.4" 1631 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" 1632 | integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= 1633 | 1634 | prepend-http@^1.0.1: 1635 | version "1.0.4" 1636 | resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" 1637 | integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= 1638 | 1639 | prepend-http@^2.0.0: 1640 | version "2.0.0" 1641 | resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" 1642 | integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= 1643 | 1644 | process-nextick-args@~2.0.0: 1645 | version "2.0.1" 1646 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 1647 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 1648 | 1649 | proto-list@~1.2.1: 1650 | version "1.2.4" 1651 | resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" 1652 | integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= 1653 | 1654 | pseudomap@^1.0.2: 1655 | version "1.0.2" 1656 | resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" 1657 | integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= 1658 | 1659 | pump@^3.0.0: 1660 | version "3.0.0" 1661 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 1662 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 1663 | dependencies: 1664 | end-of-stream "^1.1.0" 1665 | once "^1.3.1" 1666 | 1667 | query-string@^5.0.1: 1668 | version "5.1.1" 1669 | resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" 1670 | integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== 1671 | dependencies: 1672 | decode-uri-component "^0.2.0" 1673 | object-assign "^4.1.0" 1674 | strict-uri-encode "^1.0.0" 1675 | 1676 | queue-microtask@^1.2.2: 1677 | version "1.2.3" 1678 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" 1679 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== 1680 | 1681 | read-pkg-up@^1.0.1: 1682 | version "1.0.1" 1683 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" 1684 | integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= 1685 | dependencies: 1686 | find-up "^1.0.0" 1687 | read-pkg "^1.0.0" 1688 | 1689 | read-pkg@^1.0.0: 1690 | version "1.1.0" 1691 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" 1692 | integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= 1693 | dependencies: 1694 | load-json-file "^1.0.0" 1695 | normalize-package-data "^2.3.2" 1696 | path-type "^1.0.0" 1697 | 1698 | readable-stream@^2.0.0, readable-stream@^2.3.0, readable-stream@^2.3.5: 1699 | version "2.3.7" 1700 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" 1701 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== 1702 | dependencies: 1703 | core-util-is "~1.0.0" 1704 | inherits "~2.0.3" 1705 | isarray "~1.0.0" 1706 | process-nextick-args "~2.0.0" 1707 | safe-buffer "~5.1.1" 1708 | string_decoder "~1.1.1" 1709 | util-deprecate "~1.0.1" 1710 | 1711 | redent@^1.0.0: 1712 | version "1.0.0" 1713 | resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" 1714 | integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= 1715 | dependencies: 1716 | indent-string "^2.1.0" 1717 | strip-indent "^1.0.1" 1718 | 1719 | relateurl@^0.2.7: 1720 | version "0.2.7" 1721 | resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" 1722 | integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= 1723 | 1724 | repeating@^2.0.0: 1725 | version "2.0.1" 1726 | resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" 1727 | integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= 1728 | dependencies: 1729 | is-finite "^1.0.0" 1730 | 1731 | replace-ext@^1.0.0: 1732 | version "1.0.1" 1733 | resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.1.tgz#2d6d996d04a15855d967443631dd5f77825b016a" 1734 | integrity sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw== 1735 | 1736 | resolve@^1.10.0: 1737 | version "1.20.0" 1738 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" 1739 | integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== 1740 | dependencies: 1741 | is-core-module "^2.2.0" 1742 | path-parse "^1.0.6" 1743 | 1744 | responselike@1.0.2: 1745 | version "1.0.2" 1746 | resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" 1747 | integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= 1748 | dependencies: 1749 | lowercase-keys "^1.0.0" 1750 | 1751 | reusify@^1.0.4: 1752 | version "1.0.4" 1753 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" 1754 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 1755 | 1756 | rimraf@^3.0.2: 1757 | version "3.0.2" 1758 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 1759 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 1760 | dependencies: 1761 | glob "^7.1.3" 1762 | 1763 | run-parallel@^1.1.9: 1764 | version "1.2.0" 1765 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" 1766 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 1767 | dependencies: 1768 | queue-microtask "^1.2.2" 1769 | 1770 | safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: 1771 | version "5.1.2" 1772 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 1773 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 1774 | 1775 | safe-buffer@^5.0.1, safe-buffer@^5.1.1: 1776 | version "5.2.1" 1777 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1778 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1779 | 1780 | seek-bzip@^1.0.5: 1781 | version "1.0.6" 1782 | resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.6.tgz#35c4171f55a680916b52a07859ecf3b5857f21c4" 1783 | integrity sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ== 1784 | dependencies: 1785 | commander "^2.8.1" 1786 | 1787 | semver-regex@^2.0.0: 1788 | version "2.0.0" 1789 | resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" 1790 | integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== 1791 | 1792 | semver-truncate@^1.1.2: 1793 | version "1.1.2" 1794 | resolved "https://registry.yarnpkg.com/semver-truncate/-/semver-truncate-1.1.2.tgz#57f41de69707a62709a7e0104ba2117109ea47e8" 1795 | integrity sha1-V/Qd5pcHpicJp+AQS6IRcQnqR+g= 1796 | dependencies: 1797 | semver "^5.3.0" 1798 | 1799 | "semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0, semver@^5.6.0: 1800 | version "5.7.1" 1801 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 1802 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 1803 | 1804 | semver@^6.0.0: 1805 | version "6.3.0" 1806 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 1807 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 1808 | 1809 | shebang-command@^1.2.0: 1810 | version "1.2.0" 1811 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 1812 | integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= 1813 | dependencies: 1814 | shebang-regex "^1.0.0" 1815 | 1816 | shebang-command@^2.0.0: 1817 | version "2.0.0" 1818 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1819 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1820 | dependencies: 1821 | shebang-regex "^3.0.0" 1822 | 1823 | shebang-regex@^1.0.0: 1824 | version "1.0.0" 1825 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 1826 | integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= 1827 | 1828 | shebang-regex@^3.0.0: 1829 | version "3.0.0" 1830 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1831 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1832 | 1833 | signal-exit@^3.0.0, signal-exit@^3.0.2: 1834 | version "3.0.3" 1835 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" 1836 | integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== 1837 | 1838 | slash@^3.0.0: 1839 | version "3.0.0" 1840 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" 1841 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== 1842 | 1843 | sort-keys-length@^1.0.0: 1844 | version "1.0.1" 1845 | resolved "https://registry.yarnpkg.com/sort-keys-length/-/sort-keys-length-1.0.1.tgz#9cb6f4f4e9e48155a6aa0671edd336ff1479a188" 1846 | integrity sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg= 1847 | dependencies: 1848 | sort-keys "^1.0.0" 1849 | 1850 | sort-keys@^1.0.0: 1851 | version "1.1.2" 1852 | resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" 1853 | integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= 1854 | dependencies: 1855 | is-plain-obj "^1.0.0" 1856 | 1857 | sort-keys@^2.0.0: 1858 | version "2.0.0" 1859 | resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" 1860 | integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg= 1861 | dependencies: 1862 | is-plain-obj "^1.0.0" 1863 | 1864 | source-map-support@^0.5.17, source-map-support@^0.5.19: 1865 | version "0.5.19" 1866 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" 1867 | integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== 1868 | dependencies: 1869 | buffer-from "^1.0.0" 1870 | source-map "^0.6.0" 1871 | 1872 | source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0: 1873 | version "0.6.1" 1874 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 1875 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 1876 | 1877 | spdx-correct@^3.0.0: 1878 | version "3.1.1" 1879 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" 1880 | integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== 1881 | dependencies: 1882 | spdx-expression-parse "^3.0.0" 1883 | spdx-license-ids "^3.0.0" 1884 | 1885 | spdx-exceptions@^2.1.0: 1886 | version "2.3.0" 1887 | resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" 1888 | integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== 1889 | 1890 | spdx-expression-parse@^3.0.0: 1891 | version "3.0.1" 1892 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" 1893 | integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== 1894 | dependencies: 1895 | spdx-exceptions "^2.1.0" 1896 | spdx-license-ids "^3.0.0" 1897 | 1898 | spdx-license-ids@^3.0.0: 1899 | version "3.0.10" 1900 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz#0d9becccde7003d6c658d487dd48a32f0bf3014b" 1901 | integrity sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA== 1902 | 1903 | sprintf-js@~1.0.2: 1904 | version "1.0.3" 1905 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 1906 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 1907 | 1908 | squeak@^1.0.0: 1909 | version "1.3.0" 1910 | resolved "https://registry.yarnpkg.com/squeak/-/squeak-1.3.0.tgz#33045037b64388b567674b84322a6521073916c3" 1911 | integrity sha1-MwRQN7ZDiLVnZ0uEMiplIQc5FsM= 1912 | dependencies: 1913 | chalk "^1.0.0" 1914 | console-stream "^0.1.1" 1915 | lpad-align "^1.0.1" 1916 | 1917 | strict-uri-encode@^1.0.0: 1918 | version "1.1.0" 1919 | resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" 1920 | integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= 1921 | 1922 | string_decoder@~1.1.1: 1923 | version "1.1.1" 1924 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 1925 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 1926 | dependencies: 1927 | safe-buffer "~5.1.0" 1928 | 1929 | strip-ansi@^3.0.0: 1930 | version "3.0.1" 1931 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 1932 | integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= 1933 | dependencies: 1934 | ansi-regex "^2.0.0" 1935 | 1936 | strip-bom@^2.0.0: 1937 | version "2.0.0" 1938 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" 1939 | integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= 1940 | dependencies: 1941 | is-utf8 "^0.2.0" 1942 | 1943 | strip-dirs@^2.0.0: 1944 | version "2.1.0" 1945 | resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5" 1946 | integrity sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g== 1947 | dependencies: 1948 | is-natural-number "^4.0.1" 1949 | 1950 | strip-eof@^1.0.0: 1951 | version "1.0.0" 1952 | resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" 1953 | integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= 1954 | 1955 | strip-final-newline@^2.0.0: 1956 | version "2.0.0" 1957 | resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" 1958 | integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== 1959 | 1960 | strip-indent@^1.0.1: 1961 | version "1.0.1" 1962 | resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" 1963 | integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= 1964 | dependencies: 1965 | get-stdin "^4.0.1" 1966 | 1967 | strip-outer@^1.0.0: 1968 | version "1.0.1" 1969 | resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.1.tgz#b2fd2abf6604b9d1e6013057195df836b8a9d631" 1970 | integrity sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg== 1971 | dependencies: 1972 | escape-string-regexp "^1.0.2" 1973 | 1974 | supports-color@^2.0.0: 1975 | version "2.0.0" 1976 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 1977 | integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= 1978 | 1979 | tar-stream@^1.5.2: 1980 | version "1.6.2" 1981 | resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" 1982 | integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== 1983 | dependencies: 1984 | bl "^1.0.0" 1985 | buffer-alloc "^1.2.0" 1986 | end-of-stream "^1.0.0" 1987 | fs-constants "^1.0.0" 1988 | readable-stream "^2.3.0" 1989 | to-buffer "^1.1.1" 1990 | xtend "^4.0.0" 1991 | 1992 | temp-dir@^1.0.0: 1993 | version "1.0.0" 1994 | resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" 1995 | integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= 1996 | 1997 | tempfile@^2.0.0: 1998 | version "2.0.0" 1999 | resolved "https://registry.yarnpkg.com/tempfile/-/tempfile-2.0.0.tgz#6b0446856a9b1114d1856ffcbe509cccb0977265" 2000 | integrity sha1-awRGhWqbERTRhW/8vlCczLCXcmU= 2001 | dependencies: 2002 | temp-dir "^1.0.0" 2003 | uuid "^3.0.1" 2004 | 2005 | through@^2.3.8: 2006 | version "2.3.8" 2007 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 2008 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= 2009 | 2010 | timed-out@^4.0.0, timed-out@^4.0.1: 2011 | version "4.0.1" 2012 | resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" 2013 | integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= 2014 | 2015 | to-buffer@^1.1.1: 2016 | version "1.1.1" 2017 | resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" 2018 | integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== 2019 | 2020 | to-regex-range@^5.0.1: 2021 | version "5.0.1" 2022 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 2023 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 2024 | dependencies: 2025 | is-number "^7.0.0" 2026 | 2027 | trim-newlines@^1.0.0: 2028 | version "1.0.0" 2029 | resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" 2030 | integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= 2031 | 2032 | trim-repeated@^1.0.0: 2033 | version "1.0.0" 2034 | resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21" 2035 | integrity sha1-42RqLqTokTEr9+rObPsFOAvAHCE= 2036 | dependencies: 2037 | escape-string-regexp "^1.0.2" 2038 | 2039 | ts-node@^10.0.0: 2040 | version "10.0.0" 2041 | resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.0.0.tgz#05f10b9a716b0b624129ad44f0ea05dac84ba3be" 2042 | integrity sha512-ROWeOIUvfFbPZkoDis0L/55Fk+6gFQNZwwKPLinacRl6tsxstTF1DbAcLKkovwnpKMVvOMHP1TIbnwXwtLg1gg== 2043 | dependencies: 2044 | "@tsconfig/node10" "^1.0.7" 2045 | "@tsconfig/node12" "^1.0.7" 2046 | "@tsconfig/node14" "^1.0.0" 2047 | "@tsconfig/node16" "^1.0.1" 2048 | arg "^4.1.0" 2049 | create-require "^1.1.0" 2050 | diff "^4.0.1" 2051 | make-error "^1.1.1" 2052 | source-map-support "^0.5.17" 2053 | yn "3.1.1" 2054 | 2055 | tslib@^1.8.1: 2056 | version "1.14.1" 2057 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" 2058 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== 2059 | 2060 | tunnel-agent@^0.6.0: 2061 | version "0.6.0" 2062 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 2063 | integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= 2064 | dependencies: 2065 | safe-buffer "^5.0.1" 2066 | 2067 | typescript@^3.3.0: 2068 | version "3.9.10" 2069 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.10.tgz#70f3910ac7a51ed6bef79da7800690b19bf778b8" 2070 | integrity sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q== 2071 | 2072 | typescript@^4.2.4: 2073 | version "4.3.5" 2074 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4" 2075 | integrity sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA== 2076 | 2077 | uglify-js@^3.5.1: 2078 | version "3.14.1" 2079 | resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.14.1.tgz#e2cb9fe34db9cb4cf7e35d1d26dfea28e09a7d06" 2080 | integrity sha512-JhS3hmcVaXlp/xSo3PKY5R0JqKs5M3IV+exdLHW99qKvKivPO4Z8qbej6mte17SOPqAOVMjt/XGgWacnFSzM3g== 2081 | 2082 | unbzip2-stream@^1.0.9: 2083 | version "1.4.3" 2084 | resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" 2085 | integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== 2086 | dependencies: 2087 | buffer "^5.2.1" 2088 | through "^2.3.8" 2089 | 2090 | universalify@^2.0.0: 2091 | version "2.0.0" 2092 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" 2093 | integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== 2094 | 2095 | upper-case@^1.1.1: 2096 | version "1.1.3" 2097 | resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" 2098 | integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= 2099 | 2100 | url-parse-lax@^1.0.0: 2101 | version "1.0.0" 2102 | resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" 2103 | integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= 2104 | dependencies: 2105 | prepend-http "^1.0.1" 2106 | 2107 | url-parse-lax@^3.0.0: 2108 | version "3.0.0" 2109 | resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" 2110 | integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= 2111 | dependencies: 2112 | prepend-http "^2.0.0" 2113 | 2114 | url-to-options@^1.0.1: 2115 | version "1.0.1" 2116 | resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" 2117 | integrity sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k= 2118 | 2119 | util-deprecate@~1.0.1: 2120 | version "1.0.2" 2121 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 2122 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 2123 | 2124 | uuid@^3.0.1: 2125 | version "3.4.0" 2126 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" 2127 | integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== 2128 | 2129 | validate-npm-package-license@^3.0.1: 2130 | version "3.0.4" 2131 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" 2132 | integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== 2133 | dependencies: 2134 | spdx-correct "^3.0.0" 2135 | spdx-expression-parse "^3.0.0" 2136 | 2137 | which@^1.2.9: 2138 | version "1.3.1" 2139 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 2140 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 2141 | dependencies: 2142 | isexe "^2.0.0" 2143 | 2144 | which@^2.0.1: 2145 | version "2.0.2" 2146 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 2147 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 2148 | dependencies: 2149 | isexe "^2.0.0" 2150 | 2151 | wrappy@1: 2152 | version "1.0.2" 2153 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2154 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 2155 | 2156 | xmlbuilder2@^2.4.1: 2157 | version "2.4.1" 2158 | resolved "https://registry.yarnpkg.com/xmlbuilder2/-/xmlbuilder2-2.4.1.tgz#899c783a833188c5a5aa6f3c5428a3963f3e479d" 2159 | integrity sha512-vliUplZsk5vJnhxXN/mRcij/AE24NObTUm/Zo4vkLusgayO6s3Et5zLEA14XZnY1c3hX5o1ToR0m0BJOPy0UvQ== 2160 | dependencies: 2161 | "@oozcitak/dom" "1.15.8" 2162 | "@oozcitak/infra" "1.0.8" 2163 | "@oozcitak/util" "8.3.8" 2164 | "@types/node" "*" 2165 | js-yaml "3.14.0" 2166 | 2167 | xtend@^4.0.0: 2168 | version "4.0.2" 2169 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" 2170 | integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== 2171 | 2172 | yallist@^2.1.2: 2173 | version "2.1.2" 2174 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" 2175 | integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= 2176 | 2177 | yauzl@^2.4.2: 2178 | version "2.10.0" 2179 | resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" 2180 | integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= 2181 | dependencies: 2182 | buffer-crc32 "~0.2.3" 2183 | fd-slicer "~1.1.0" 2184 | 2185 | yn@3.1.1: 2186 | version "3.1.1" 2187 | resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" 2188 | integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== 2189 | --------------------------------------------------------------------------------