├── .eslintrc.js ├── .gitignore ├── LICENSE ├── README.md ├── package.json ├── src └── index.ts ├── tsconfig.eslint.json ├── tsconfig.json └── yarn.lock /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | env: { 4 | 'es2020': true 5 | }, 6 | parser: '@typescript-eslint/parser', 7 | 'parserOptions': { 8 | sourceType: "module", 9 | ecmaVersion: 2019, 10 | tsconfigRootDir: __dirname, 11 | project: ['./tsconfig.eslint.json'] 12 | }, 13 | plugins: [ 14 | '@typescript-eslint' 15 | ], 16 | extends: [ 17 | 'eslint:recommended', 18 | 'plugin:@typescript-eslint/recommended', 19 | 'plugin:@typescript-eslint/recommended-requiring-type-checking', 20 | 'prettier', 21 | 'prettier/@typescript-eslint' 22 | ], 23 | rules: { 24 | }, 25 | }; 26 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | dist/ 4 | d.ts/ 5 | npm-debug.log* 6 | yarn-debug.log* 7 | yarn-error.log* 8 | 9 | .node-version 10 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 もにょ~ん 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # node-ts-fragmenter 2 | 3 | MPEGTS fragmenter for Low Latency HLS 4 | 5 | ## Feature 6 | 7 | * fragment to stream 8 | * partial segment callback supports 9 | 10 | ## Usage 11 | 12 | ```bash 13 | npm install @monyone/ts-fragmenter 14 | ``` 15 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@monyone/ts-fragmenter", 3 | "version": "0.0.4", 4 | "main": "dist/index.js", 5 | "types": "d.ts/index.d.ts", 6 | "files": [ 7 | "dist/**/*", 8 | "d.ts/**/*", 9 | "src/**/*", 10 | "tsconfig.json" 11 | ], 12 | "author": "monyone ", 13 | "description": "convert mpegts to fragments for ll-hls", 14 | "keywords": [ 15 | "mpegts" 16 | ], 17 | "repository": { 18 | "type": "git", 19 | "url": "https://github.com/monyone/node-ts-fragmenter" 20 | }, 21 | "license": "MIT", 22 | "engines": { 23 | "node": ">=12" 24 | }, 25 | "scripts": { 26 | "tsc": "tsc", 27 | "build": "npm-run-all clean tsc", 28 | "format": "prettier --write src/**/*.ts", 29 | "lint:tsc": "tsc --noEmit", 30 | "lint:eslint": "eslint src/**/*.ts", 31 | "lint:prettier": "prettier --check src/**/*.ts", 32 | "clean": "rimraf dist d.ts" 33 | }, 34 | "devDependencies": { 35 | "@types/node": "12", 36 | "@typescript-eslint/eslint-plugin": "^4.17.0", 37 | "@typescript-eslint/parser": "^4.17.0", 38 | "eslint": "^7.22.0", 39 | "eslint-config-prettier": "^8.1.0", 40 | "npm-run-all": "^4.1.5", 41 | "prettier": "^2.2.1", 42 | "rimraf": "^3.0.2", 43 | "typescript": "^4.2.3" 44 | }, 45 | "dependencies": { 46 | "arib-mpeg2ts-parser": "^3.0.15" 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | import { Writable, WritableOptions } from 'stream' 4 | 5 | import { TSPacket, TSPacketQueue } from 'arib-mpeg2ts-parser'; 6 | import { TSSection, TSSectionQueue, TSSectionPacketizer } from 'arib-mpeg2ts-parser'; 7 | import { TSPES, TSPESQueue, TSPESPacketizer } from 'arib-mpeg2ts-parser'; 8 | 9 | class PartialSegment { 10 | private beginPTS: number; 11 | private endPTS: number | null; 12 | private hasIFrame: boolean; 13 | private completed: Buffer; 14 | private retains: Buffer[]; 15 | private complete_callbacks: ((this: PartialSegment) => void)[]; 16 | 17 | constructor (beginPTS: number, hasIFrame?: boolean) { 18 | this.beginPTS = beginPTS; 19 | this.endPTS = null; 20 | this.hasIFrame = hasIFrame ?? false; 21 | this.completed = Buffer.from([]); 22 | this.retains = []; 23 | this.complete_callbacks = []; 24 | } 25 | 26 | public addPacket(packet: Buffer): void { 27 | this.retains.push(packet); 28 | } 29 | 30 | public addCallback(cb: (() => void)): void { 31 | this.complete_callbacks.push(cb); 32 | } 33 | 34 | public isCompleted(): boolean { 35 | return this.endPTS != null; 36 | } 37 | 38 | public complete(endPTS: number): void { 39 | this.endPTS = endPTS; 40 | 41 | this.completed = Buffer.concat([this.completed, ... this.retains]); 42 | this.retains = []; 43 | 44 | this.complete_callbacks.forEach((cb) => cb.call(this)); 45 | this.complete_callbacks = []; 46 | } 47 | 48 | public getBuffer(): Buffer { 49 | return this.completed; 50 | } 51 | 52 | public getSeconds(): number | null { 53 | if (this.endPTS == null) { return null; } 54 | 55 | return (this.endPTS - this.beginPTS + (2 ** 33)) % (2 ** 33) / 90000; 56 | } 57 | 58 | public estimateSeconds(endPTS: number): number { 59 | return (endPTS - this.beginPTS + (2 ** 33)) % (2 ** 33) / 90000; 60 | } 61 | 62 | public getHasIFrame(): boolean { 63 | return this.hasIFrame; 64 | } 65 | } 66 | 67 | class Segment extends PartialSegment { 68 | private parts: PartialSegment[] = []; 69 | private programDateTime: string; 70 | 71 | constructor (beginPTS: number, hasIFrame?: boolean) { 72 | super(beginPTS, hasIFrame); 73 | this.newPartial(beginPTS, hasIFrame); 74 | 75 | this.programDateTime = new Date().toISOString(); 76 | } 77 | 78 | public complete(endPTS: number) { 79 | super.complete(endPTS); 80 | this.completePartial(endPTS); 81 | } 82 | 83 | public addPacket(packet: Buffer){ 84 | super.addPacket(packet); 85 | 86 | const lastPart = this.parts[this.parts.length - 1] 87 | lastPart.addPacket(packet); 88 | } 89 | 90 | public getLength() { 91 | return this.parts.length; 92 | } 93 | 94 | public getPartial(index: number): PartialSegment | undefined { 95 | return this.parts[index] 96 | } 97 | 98 | public getProgramDateTime() { 99 | return this.programDateTime; 100 | } 101 | 102 | public completePartial(endPTS: number) { 103 | if (this.parts.length === 0) { return; } 104 | 105 | const lastPart = this.parts[this.parts.length - 1]; 106 | lastPart.complete(endPTS); 107 | } 108 | 109 | public newPartial(beginPTS: number, hasIFrame?: boolean) { 110 | this.parts.push(new PartialSegment(beginPTS, hasIFrame)); 111 | } 112 | } 113 | 114 | type TSFragmenterOptions = WritableOptions & { 115 | length?: number, 116 | lowLatencyMode?: boolean, 117 | partTarget?: number, 118 | } 119 | 120 | export default class TSFragmenter extends Writable { 121 | private packetQueue = new TSPacketQueue(); 122 | 123 | private Packet_TransportErrorIndicator: boolean = false; 124 | private Packet_TransportPriority: boolean = false; 125 | private Packet_TransportScramblingControl: number = 0; 126 | 127 | private PAT_TSSectionQueue = new TSSectionQueue(); 128 | private PAT_lastPAT: Buffer | null = null; 129 | private PAT_Continuous_Counter: number = 0; 130 | private PAT_TargetSID: number | null = null; 131 | private PAT_TargetPMTPid: number | null = null; 132 | 133 | private PMT_TSSectionQueue = new TSSectionQueue(); 134 | private PMT_lastPMT: Buffer | null = null; 135 | private PMT_Continuous_Counter: number = 0; 136 | private PMT_VideoPid: number | null = null; 137 | private PMT_AudioPid: number | null = null; 138 | private PMT_PCRPid: number | null = null; 139 | 140 | private Video_TSPESQueue = new TSPESQueue(); 141 | private Video_Continuous_Counter: number = 0; 142 | 143 | private Audio_TSPESQueue = new TSPESQueue(); 144 | private Audio_Continuous_Counter: number = 0; 145 | 146 | private M3U8_Segments_Length: number; 147 | private M3U8_Low_Latency_Mode: boolean; 148 | private M3U8_Part_Target: number; 149 | private M3U8_Begin_Sequence_Number: number = 0; 150 | private M3U8_End_Sequence_Number: number = 0; 151 | private M3U8_Segments: Segment[] = []; 152 | 153 | private M3U8_Initial_PAT_Detected: boolean = false; 154 | private M3U8_Initial_PMT_Detected: boolean = false; 155 | private M3U8_Initial_IDR_Detected: boolean = false; 156 | 157 | public constructor(options?: TSFragmenterOptions) { 158 | super(options); 159 | this.M3U8_Segments_Length = options?.length ?? 3; 160 | this.M3U8_Low_Latency_Mode = options?.lowLatencyMode ?? true; 161 | this.M3U8_Part_Target = options?.partTarget ?? 1; 162 | } 163 | 164 | public getManifest(): string { 165 | let m3u8 = ''; 166 | 167 | m3u8 += `#EXTM3U\n` 168 | m3u8 += `#EXT-X-VERSION:6\n` 169 | m3u8 += `#EXT-X-TARGETDURATION:${this.getTargetDuration()}\n` 170 | if (this.M3U8_Low_Latency_Mode) { 171 | m3u8 += `#EXT-X-PART-INF:PART-TARGET=${this.M3U8_Part_Target.toFixed(3)}\n` 172 | m3u8 += `#EXT-X-SERVER-CONTROL:CAN-BLOCK-RELOAD=YES,PART-HOLD-BACK=${(this.M3U8_Part_Target * 3.5).toFixed(3)}\n` 173 | } 174 | m3u8 += `#EXT-X-MEDIA-SEQUENCE:${this.M3U8_Begin_Sequence_Number}\n` 175 | for (let media_sequence = this.M3U8_Begin_Sequence_Number; media_sequence < this.M3U8_End_Sequence_Number; media_sequence++) { 176 | const index = media_sequence - this.M3U8_Begin_Sequence_Number; 177 | const segment = this.M3U8_Segments[index]; 178 | let extinf = 0; 179 | 180 | m3u8 += `\n`; 181 | m3u8 += `#EXT-X-PROGRAM-DATE-TIME:${segment.getProgramDateTime()}\n` 182 | if (this.M3U8_Low_Latency_Mode) { 183 | for (let p = 0; p < segment.getLength(); p++) { 184 | const part = segment.getPartial(p); 185 | if (!part) { break; } 186 | 187 | // FIXME: segment 完了通知が飛んだ際に、ここでまだ part が終了してない。なんで、segment で待つのは推奨しない状態になってる。 188 | if (!part.isCompleted()) { 189 | m3u8 += `#EXT-X-PRELOAD-HINT:TYPE=PART,URI="part?msn=${media_sequence}&part.ts=${p}"${part.getHasIFrame() ? ",INDEPENDENT=YES" : ""}\n` 190 | } else { 191 | m3u8 += `#EXT-X-PART:DURATION=${part.getSeconds()!.toFixed(3)},URI="part?msn=${media_sequence}&part=${p}"${part.getHasIFrame() ? ",INDEPENDENT=YES" : ""}\n` 192 | extinf += Number.parseFloat(part.getSeconds()?.toFixed(3) ?? "0"); 193 | } 194 | } 195 | } else { 196 | extinf = segment.getSeconds() ?? 0; 197 | } 198 | 199 | if (segment.isCompleted()) { 200 | m3u8 += `#EXTINF:${extinf.toFixed(3)}\n` 201 | m3u8 += `segment?msn=${media_sequence}\n`; 202 | } 203 | } 204 | 205 | return m3u8 206 | } 207 | 208 | private getTargetDuration() { 209 | let max = 1; 210 | for (let media_sequence = this.M3U8_Begin_Sequence_Number; media_sequence < this.M3U8_End_Sequence_Number; media_sequence++) { 211 | const index = media_sequence - this.M3U8_Begin_Sequence_Number; 212 | const segment = this.M3U8_Segments[index]; 213 | max = Math.max(max, segment.getSeconds() ?? 0); 214 | } 215 | 216 | return Math.ceil(max) 217 | } 218 | 219 | public inRangeSegment(msn: number): boolean { 220 | if (msn < this.M3U8_Begin_Sequence_Number) { return false; } 221 | if (this.M3U8_End_Sequence_Number <= msn) { return false; } 222 | return true; 223 | } 224 | public isFulfilledSegment(msn: number): boolean { 225 | const segment = this.M3U8_Get_Segment(msn); 226 | if (!segment) { return true; } 227 | 228 | return segment.isCompleted(); 229 | } 230 | public getSegment(msn: number): Buffer { 231 | const segment = this.M3U8_Get_Segment(msn); 232 | if (!segment) { return Buffer.from([]); } 233 | 234 | return segment.getBuffer(); 235 | } 236 | public addSegmentCallback(msn: number, cb: () => void): boolean { 237 | const segment = this.M3U8_Get_Segment(msn); 238 | if (!segment) { return false; } 239 | 240 | segment.addCallback(cb); 241 | 242 | return true; 243 | } 244 | 245 | public inRangePartial(msn: number, part: number): boolean { 246 | if (!this.inRangeSegment(msn)) { return false; } 247 | 248 | const index = msn - this.M3U8_Begin_Sequence_Number; 249 | const segment = this.M3U8_Segments[index]; 250 | const partial = segment.getPartial(part); 251 | if (!partial) { return false; } 252 | 253 | return true; 254 | } 255 | public isFulfilledPartial(msn: number, part: number): boolean { 256 | const partial = this.M3U8_Get_Partial(msn, part); 257 | if (!partial) { return true; } 258 | 259 | return partial.isCompleted(); 260 | } 261 | public getPartial(msn: number, part: number): Buffer { 262 | const partial = this.M3U8_Get_Partial(msn, part); 263 | if (!partial) { return Buffer.from([]); } 264 | 265 | return partial.getBuffer(); 266 | } 267 | public addPartialCallback(msn: number, part: number, cb: () => void) { 268 | const partial = this.M3U8_Get_Partial(msn, part); 269 | if (!partial) { return false; } 270 | 271 | partial.addCallback(cb); 272 | 273 | return true; 274 | } 275 | 276 | private M3U8_Add_PAT(PAT: Buffer) { 277 | const packets = TSSectionPacketizer.packetize( 278 | PAT, 279 | this.Packet_TransportErrorIndicator, 280 | this.Packet_TransportPriority, 281 | 0, 282 | this.Packet_TransportScramblingControl, 283 | this.PAT_Continuous_Counter 284 | ); 285 | this.PAT_Continuous_Counter = (this.PAT_Continuous_Counter + packets.length) & 0x0F; 286 | 287 | packets.forEach((packet) => this.M3U8_Add_Packet(packet)); 288 | } 289 | 290 | private M3U8_Add_PMT(PMT: Buffer) { 291 | if (!this.PAT_TargetPMTPid) { return } 292 | 293 | const packets = TSSectionPacketizer.packetize( 294 | PMT, 295 | this.Packet_TransportErrorIndicator, 296 | this.Packet_TransportPriority, 297 | this.PAT_TargetPMTPid, 298 | this.Packet_TransportScramblingControl, 299 | this.PMT_Continuous_Counter 300 | ); 301 | this.PMT_Continuous_Counter = (this.PMT_Continuous_Counter + packets.length) & 0x0F; 302 | 303 | packets.forEach((packet) => this.M3U8_Add_Packet(packet)); 304 | } 305 | 306 | private M3U8_Add_Packet(packet: Buffer) { 307 | const size = this.M3U8_End_Sequence_Number - this.M3U8_Begin_Sequence_Number; 308 | if (size <= 0) { return; } 309 | 310 | const lastSegment = this.M3U8_Segments[size - 1]; 311 | lastSegment.addPacket(packet); 312 | } 313 | 314 | private M3U8_Get_Segment(msn: number): Segment | null { 315 | if (!this.inRangeSegment(msn)) { return null; } 316 | 317 | const index = msn - this.M3U8_Begin_Sequence_Number; 318 | const segment = this.M3U8_Segments[index]; 319 | return segment; 320 | } 321 | 322 | private M3U8_Get_Partial(msn: number, part: number): PartialSegment | null { 323 | if (!this.inRangePartial(msn, part)) { return null; } 324 | 325 | const index = msn - this.M3U8_Begin_Sequence_Number; 326 | const segment = this.M3U8_Segments[index]; 327 | const partial = segment.getPartial(part); 328 | if (!partial) { return null; } 329 | 330 | return partial; 331 | } 332 | 333 | private M3U8_Get_Last_Partial() { 334 | const size = this.M3U8_End_Sequence_Number - this.M3U8_Begin_Sequence_Number; 335 | if (size <= 0) { return null; } 336 | 337 | const lastSegment = this.M3U8_Segments[size - 1]; 338 | const length = lastSegment.getLength(); 339 | 340 | const lastPart = lastSegment.getPartial(length - 1); 341 | return lastPart; 342 | } 343 | 344 | private M3U8_New_Partial(beginPTS: number) { 345 | const size = this.M3U8_End_Sequence_Number - this.M3U8_Begin_Sequence_Number; 346 | if (size <= 0) { return; } 347 | 348 | const lastSegment = this.M3U8_Segments[size - 1]; 349 | lastSegment.completePartial(beginPTS); 350 | lastSegment.newPartial(beginPTS); 351 | } 352 | 353 | private M3U8_New_Segment(beginPTS: number) { 354 | if (!this.PAT_lastPAT) { return; } 355 | if (!this.PMT_lastPMT) { return; } 356 | 357 | // 完了通知を飛ばしておく 358 | { 359 | const size = this.M3U8_End_Sequence_Number - this.M3U8_Begin_Sequence_Number; 360 | if (size > 0) { // not is Empty 361 | const lastSegment = this.M3U8_Segments[size - 1]; 362 | lastSegment.complete(beginPTS); 363 | } 364 | } 365 | 366 | // 新規セグメント追加 367 | this.M3U8_Segments.push(new Segment(beginPTS, true)); 368 | this.M3U8_End_Sequence_Number += 1; 369 | 370 | // 消し込み 371 | { 372 | const size = this.M3U8_End_Sequence_Number - this.M3U8_Begin_Sequence_Number; 373 | if (size > this.M3U8_Segments_Length) { 374 | this.M3U8_Segments.shift(); 375 | this.M3U8_Begin_Sequence_Number += 1; 376 | } 377 | } 378 | 379 | // 作ったセグメントの先頭に PAT, PMT を追加しないと仕様に違反する 380 | this.M3U8_Add_PAT(this.PAT_lastPAT); 381 | this.M3U8_Add_PMT(this.PMT_lastPMT); 382 | } 383 | 384 | _write(chunk: Buffer, encoding: 'Buffer', callback: (error?: Error | null) => void): void { 385 | this.packetQueue.push(chunk); 386 | 387 | while (!this.packetQueue.isEmpty()) { 388 | const packet = this.packetQueue.pop()!; 389 | 390 | const pid = TSPacket.pid(packet); 391 | 392 | this.Packet_TransportErrorIndicator = TSPacket.transport_error_indicator(packet); 393 | this.Packet_TransportPriority = TSPacket.transport_priority(packet); 394 | this.Packet_TransportScramblingControl = TSPacket.transport_scrambling_control(packet); 395 | 396 | if (pid == 0x00) { 397 | this.PAT_TSSectionQueue.push(packet) 398 | while (!this.PAT_TSSectionQueue.isEmpty()) { 399 | const PAT = this.PAT_TSSectionQueue.pop()!; 400 | if (TSSection.CRC32(PAT) != 0) { continue; } 401 | 402 | this.PAT_lastPAT = PAT; 403 | this.PAT_TargetPMTPid = null; 404 | 405 | let begin = TSSection.EXTENDED_HEADER_SIZE; 406 | while (begin < TSSection.BASIC_HEADER_SIZE + TSSection.section_length(PAT) - TSSection.CRC_SIZE) { 407 | const program_number = (PAT[begin + 0] << 8) | PAT[begin + 1]; 408 | const program_map_PID = ((PAT[begin + 2] & 0x1F) << 8) | PAT[begin + 3]; 409 | if (program_map_PID === 0x10) { begin += 4; continue; } // NIT 410 | 411 | if (this.PAT_TargetSID === program_number) { 412 | this.PAT_TargetPMTPid = program_map_PID; 413 | } else if (this.PAT_TargetSID == null && this.PAT_TargetPMTPid == null) { 414 | this.PAT_TargetPMTPid = program_map_PID; 415 | } 416 | 417 | begin += 4; 418 | } 419 | 420 | if (!this.M3U8_Initial_PAT_Detected) { 421 | this.M3U8_Initial_PAT_Detected = true; 422 | } 423 | 424 | if (this.M3U8_Initial_IDR_Detected) { 425 | this.M3U8_Add_PAT(PAT); 426 | } 427 | } 428 | } else if (pid === this.PAT_TargetPMTPid) { 429 | this.PMT_TSSectionQueue.push(packet); 430 | 431 | while (!this.PMT_TSSectionQueue.isEmpty()) { 432 | const PMT = this.PMT_TSSectionQueue.pop()!; 433 | if (TSSection.CRC32(PMT) != 0) { continue; } 434 | 435 | this.PMT_lastPMT = PMT; 436 | this.PMT_VideoPid = null; 437 | 438 | const PCR_PID = ((PMT[TSSection.EXTENDED_HEADER_SIZE + 0] & 0x1F) << 8) | PMT[TSSection.EXTENDED_HEADER_SIZE + 1]; 439 | this.PMT_PCRPid = PCR_PID; 440 | 441 | const program_info_length = ((PMT[TSSection.EXTENDED_HEADER_SIZE + 2] & 0x0F) << 8) | PMT[TSSection.EXTENDED_HEADER_SIZE + 3]; 442 | 443 | let begin = TSSection.EXTENDED_HEADER_SIZE + 4 + program_info_length; 444 | while (begin < TSSection.BASIC_HEADER_SIZE + TSSection.section_length(PMT) - TSSection.CRC_SIZE) { 445 | const stream_type = PMT[begin + 0]; 446 | const elementary_PID = ((PMT[begin + 1] & 0x1F) << 8) | PMT[begin + 2]; 447 | const ES_info_length = ((PMT[begin + 3] & 0x0F) << 8) | PMT[begin + 4]; 448 | 449 | if (this.PMT_VideoPid == null && stream_type === 0x1b) { // AVC VIDEO 450 | this.PMT_VideoPid = elementary_PID; 451 | } else if(this.PMT_AudioPid == null && stream_type == 0x0f) { // AAC Audio 452 | this.PMT_AudioPid = elementary_PID; 453 | } 454 | 455 | begin += 5 + ES_info_length; 456 | } 457 | 458 | if (!this.M3U8_Initial_PMT_Detected) { 459 | this.M3U8_Initial_PMT_Detected = true; 460 | } 461 | 462 | if (this.M3U8_Initial_IDR_Detected) { 463 | this.M3U8_Add_PMT(PMT); 464 | } 465 | } 466 | } else if (pid === this.PMT_VideoPid) { 467 | this.Video_TSPESQueue.push(packet); 468 | 469 | while (!this.Video_TSPESQueue.isEmpty()) { 470 | const VideoPES = this.Video_TSPESQueue.pop()!; 471 | 472 | const pts = TSPES.PTS(VideoPES); 473 | const dts = TSPES.DTS(VideoPES); 474 | const timestamp = (dts ?? pts)!; 475 | 476 | const PES_header_data_length = VideoPES[TSPES.PES_HEADER_SIZE + 2]; 477 | 478 | let hasIDR = false; 479 | 480 | let begin = TSPES.PES_HEADER_SIZE + 2 + PES_header_data_length; 481 | while (begin < VideoPES.length) { 482 | if (begin + 2 >= VideoPES.length) { break; } 483 | 484 | if (VideoPES[begin + 0] !== 0) { begin += 1; continue; } 485 | if (VideoPES[begin + 1] !== 0) { begin += 1; continue; } 486 | if (VideoPES[begin + 2] !== 1) { begin += 1; continue; } 487 | 488 | if (begin + 3 >= VideoPES.length) { break; } 489 | const nal_unit_type = VideoPES[begin + 3] & 0x1f; 490 | if (nal_unit_type === 5) { 491 | hasIDR = true; 492 | break; 493 | } 494 | begin += 4; 495 | } 496 | 497 | if (hasIDR) { 498 | if (!this.M3U8_Initial_IDR_Detected) { 499 | this.M3U8_Initial_IDR_Detected = true; 500 | } 501 | 502 | this.M3U8_New_Segment(timestamp); 503 | } 504 | 505 | if (this.M3U8_Initial_IDR_Detected) { 506 | if (!hasIDR) { 507 | const part = this.M3U8_Get_Last_Partial(); 508 | if (part) { 509 | const time = part.estimateSeconds(timestamp); 510 | 511 | if (this.M3U8_Part_Target * 0.85 < time && time <= this.M3U8_Part_Target) { 512 | this.M3U8_New_Partial(timestamp); 513 | } 514 | } 515 | } 516 | 517 | const packets = TSPESPacketizer.packetize( 518 | VideoPES, 519 | this.Packet_TransportErrorIndicator, 520 | this.Packet_TransportPriority, 521 | this.PMT_VideoPid, 522 | this.Packet_TransportScramblingControl, 523 | this.Video_Continuous_Counter 524 | ); 525 | this.Video_Continuous_Counter = (this.Video_Continuous_Counter + packets.length) & 0x0F; 526 | packets.forEach((packet) => this.M3U8_Add_Packet(packet)); 527 | } 528 | } 529 | } else if (pid === this.PMT_AudioPid) { 530 | this.Audio_TSPESQueue.push(packet); 531 | 532 | while (!this.Audio_TSPESQueue.isEmpty()) { 533 | const AudioPES = this.Audio_TSPESQueue.pop()!; 534 | 535 | const packets = TSPESPacketizer.packetize( 536 | AudioPES, 537 | this.Packet_TransportErrorIndicator, 538 | this.Packet_TransportPriority, 539 | this.PMT_AudioPid, 540 | this.Packet_TransportScramblingControl, 541 | this.Audio_Continuous_Counter 542 | ); 543 | this.Audio_Continuous_Counter = (this.Audio_Continuous_Counter + packets.length) & 0x0F; 544 | packets.forEach((packet) => this.M3U8_Add_Packet(packet)); 545 | } 546 | } else if (pid === this.PMT_PCRPid) { 547 | if (TSPacket.has_pcr(packet)) { 548 | const PCR = TSPacket.pcr(packet); 549 | } 550 | 551 | if (this.M3U8_Initial_IDR_Detected) { 552 | this.M3U8_Add_Packet(packet); 553 | } 554 | } else { 555 | if (this.M3U8_Initial_IDR_Detected) { 556 | this.M3U8_Add_Packet(packet); 557 | } 558 | } 559 | } 560 | 561 | callback(); 562 | } 563 | } 564 | -------------------------------------------------------------------------------- /tsconfig.eslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "include": [ 4 | "src/**/*.ts", 5 | ".eslint.js" 6 | ], 7 | "exclude": [ 8 | "node_modules", 9 | "dist" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Visit https://aka.ms/tsconfig.json to read more about this file */ 4 | 5 | /* Basic Options */ 6 | // "incremental": true, /* Enable incremental compilation */ 7 | "target": "es5", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */ 8 | "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ 9 | // "lib": [], /* Specify library files to be included in the compilation. */ 10 | // "allowJs": true, /* Allow javascript files to be compiled. */ 11 | // "checkJs": true, /* Report errors in .js files. */ 12 | // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', 'react', 'react-jsx' or 'react-jsxdev'. */ 13 | "declaration": true, /* Generates corresponding '.d.ts' file. */ 14 | "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ 15 | "declarationDir": "./d.ts", /* Redirect output structure to the directory. */ 16 | // "sourceMap": true, /* Generates corresponding '.map' file. */ 17 | // "outFile": "./", /* Concatenate and emit output to single file. */ 18 | "outDir": "./dist", /* Redirect output structure to the directory. */ 19 | // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ 20 | // "composite": true, /* Enable project compilation */ 21 | // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ 22 | // "removeComments": true, /* Do not emit comments to output. */ 23 | // "noEmit": true, /* Do not emit outputs. */ 24 | // "importHelpers": true, /* Import emit helpers from 'tslib'. */ 25 | // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ 26 | // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ 27 | 28 | /* Strict Type-Checking Options */ 29 | "strict": true, /* Enable all strict type-checking options. */ 30 | // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ 31 | // "strictNullChecks": true, /* Enable strict null checks. */ 32 | // "strictFunctionTypes": true, /* Enable strict checking of function types. */ 33 | // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ 34 | // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ 35 | // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ 36 | // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ 37 | 38 | /* Additional Checks */ 39 | // "noUnusedLocals": true, /* Report errors on unused locals. */ 40 | // "noUnusedParameters": true, /* Report errors on unused parameters. */ 41 | // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ 42 | // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ 43 | // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ 44 | // "noPropertyAccessFromIndexSignature": true, /* Require undeclared properties from index signatures to use element accesses. */ 45 | 46 | /* Module Resolution Options */ 47 | // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ 48 | // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ 49 | // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ 50 | // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ 51 | // "typeRoots": [], /* List of folders to include type definitions from. */ 52 | // "types": [], /* Type declaration files to be included in compilation. */ 53 | // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ 54 | "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ 55 | // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ 56 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ 57 | 58 | /* Source Map Options */ 59 | // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ 60 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ 61 | // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ 62 | // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ 63 | 64 | /* Experimental Options */ 65 | // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ 66 | // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ 67 | 68 | /* Advanced Options */ 69 | "skipLibCheck": true, /* Skip type checking of declaration files. */ 70 | "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ 71 | }, 72 | "include": [ 73 | "src/**/*" 74 | ] 75 | } 76 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@7.12.11": 6 | version "7.12.11" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" 8 | integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== 9 | dependencies: 10 | "@babel/highlight" "^7.10.4" 11 | 12 | "@babel/helper-validator-identifier@^7.16.7": 13 | version "7.16.7" 14 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" 15 | integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== 16 | 17 | "@babel/highlight@^7.10.4": 18 | version "7.17.9" 19 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.9.tgz#61b2ee7f32ea0454612def4fccdae0de232b73e3" 20 | integrity sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg== 21 | dependencies: 22 | "@babel/helper-validator-identifier" "^7.16.7" 23 | chalk "^2.0.0" 24 | js-tokens "^4.0.0" 25 | 26 | "@eslint/eslintrc@^0.4.3": 27 | version "0.4.3" 28 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" 29 | integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== 30 | dependencies: 31 | ajv "^6.12.4" 32 | debug "^4.1.1" 33 | espree "^7.3.0" 34 | globals "^13.9.0" 35 | ignore "^4.0.6" 36 | import-fresh "^3.2.1" 37 | js-yaml "^3.13.1" 38 | minimatch "^3.0.4" 39 | strip-json-comments "^3.1.1" 40 | 41 | "@humanwhocodes/config-array@^0.5.0": 42 | version "0.5.0" 43 | resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" 44 | integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== 45 | dependencies: 46 | "@humanwhocodes/object-schema" "^1.2.0" 47 | debug "^4.1.1" 48 | minimatch "^3.0.4" 49 | 50 | "@humanwhocodes/object-schema@^1.2.0": 51 | version "1.2.1" 52 | resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" 53 | integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== 54 | 55 | "@nodelib/fs.scandir@2.1.5": 56 | version "2.1.5" 57 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" 58 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== 59 | dependencies: 60 | "@nodelib/fs.stat" "2.0.5" 61 | run-parallel "^1.1.9" 62 | 63 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": 64 | version "2.0.5" 65 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" 66 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== 67 | 68 | "@nodelib/fs.walk@^1.2.3": 69 | version "1.2.8" 70 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" 71 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== 72 | dependencies: 73 | "@nodelib/fs.scandir" "2.1.5" 74 | fastq "^1.6.0" 75 | 76 | "@types/json-schema@^7.0.7": 77 | version "7.0.11" 78 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" 79 | integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== 80 | 81 | "@types/node@12": 82 | version "12.20.50" 83 | resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.50.tgz#14ba5198f1754ffd0472a2f84ab433b45ee0b65e" 84 | integrity sha512-+9axpWx2b2JCVovr7Ilgt96uc6C1zBKOQMpGtRbWT9IoR/8ue32GGMfGA4woP8QyP2gBs6GQWEVM3tCybGCxDA== 85 | 86 | "@typescript-eslint/eslint-plugin@^4.17.0": 87 | version "4.33.0" 88 | resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276" 89 | integrity sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg== 90 | dependencies: 91 | "@typescript-eslint/experimental-utils" "4.33.0" 92 | "@typescript-eslint/scope-manager" "4.33.0" 93 | debug "^4.3.1" 94 | functional-red-black-tree "^1.0.1" 95 | ignore "^5.1.8" 96 | regexpp "^3.1.0" 97 | semver "^7.3.5" 98 | tsutils "^3.21.0" 99 | 100 | "@typescript-eslint/experimental-utils@4.33.0": 101 | version "4.33.0" 102 | resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz#6f2a786a4209fa2222989e9380b5331b2810f7fd" 103 | integrity sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q== 104 | dependencies: 105 | "@types/json-schema" "^7.0.7" 106 | "@typescript-eslint/scope-manager" "4.33.0" 107 | "@typescript-eslint/types" "4.33.0" 108 | "@typescript-eslint/typescript-estree" "4.33.0" 109 | eslint-scope "^5.1.1" 110 | eslint-utils "^3.0.0" 111 | 112 | "@typescript-eslint/parser@^4.17.0": 113 | version "4.33.0" 114 | resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.33.0.tgz#dfe797570d9694e560528d18eecad86c8c744899" 115 | integrity sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA== 116 | dependencies: 117 | "@typescript-eslint/scope-manager" "4.33.0" 118 | "@typescript-eslint/types" "4.33.0" 119 | "@typescript-eslint/typescript-estree" "4.33.0" 120 | debug "^4.3.1" 121 | 122 | "@typescript-eslint/scope-manager@4.33.0": 123 | version "4.33.0" 124 | resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz#d38e49280d983e8772e29121cf8c6e9221f280a3" 125 | integrity sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ== 126 | dependencies: 127 | "@typescript-eslint/types" "4.33.0" 128 | "@typescript-eslint/visitor-keys" "4.33.0" 129 | 130 | "@typescript-eslint/types@4.33.0": 131 | version "4.33.0" 132 | resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72" 133 | integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== 134 | 135 | "@typescript-eslint/typescript-estree@4.33.0": 136 | version "4.33.0" 137 | resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609" 138 | integrity sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA== 139 | dependencies: 140 | "@typescript-eslint/types" "4.33.0" 141 | "@typescript-eslint/visitor-keys" "4.33.0" 142 | debug "^4.3.1" 143 | globby "^11.0.3" 144 | is-glob "^4.0.1" 145 | semver "^7.3.5" 146 | tsutils "^3.21.0" 147 | 148 | "@typescript-eslint/visitor-keys@4.33.0": 149 | version "4.33.0" 150 | resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd" 151 | integrity sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg== 152 | dependencies: 153 | "@typescript-eslint/types" "4.33.0" 154 | eslint-visitor-keys "^2.0.0" 155 | 156 | acorn-jsx@^5.3.1: 157 | version "5.3.2" 158 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" 159 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== 160 | 161 | acorn@^7.4.0: 162 | version "7.4.1" 163 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" 164 | integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== 165 | 166 | ajv@^6.10.0, ajv@^6.12.4: 167 | version "6.12.6" 168 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 169 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 170 | dependencies: 171 | fast-deep-equal "^3.1.1" 172 | fast-json-stable-stringify "^2.0.0" 173 | json-schema-traverse "^0.4.1" 174 | uri-js "^4.2.2" 175 | 176 | ajv@^8.0.1: 177 | version "8.11.0" 178 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" 179 | integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== 180 | dependencies: 181 | fast-deep-equal "^3.1.1" 182 | json-schema-traverse "^1.0.0" 183 | require-from-string "^2.0.2" 184 | uri-js "^4.2.2" 185 | 186 | ansi-colors@^4.1.1: 187 | version "4.1.1" 188 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" 189 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== 190 | 191 | ansi-regex@^5.0.1: 192 | version "5.0.1" 193 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 194 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 195 | 196 | ansi-styles@^3.2.1: 197 | version "3.2.1" 198 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 199 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 200 | dependencies: 201 | color-convert "^1.9.0" 202 | 203 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 204 | version "4.3.0" 205 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 206 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 207 | dependencies: 208 | color-convert "^2.0.1" 209 | 210 | argparse@^1.0.7: 211 | version "1.0.10" 212 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 213 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 214 | dependencies: 215 | sprintf-js "~1.0.2" 216 | 217 | arib-mpeg2ts-parser@^3.0.15: 218 | version "3.0.15" 219 | resolved "https://registry.yarnpkg.com/arib-mpeg2ts-parser/-/arib-mpeg2ts-parser-3.0.15.tgz#53f818c94b116d57eb59a1357456c06919034c25" 220 | integrity sha512-qbO0g1+E/5ghXHusDCK58Cj/EhYrXnvEPYgEsTCMgHes+23OSHAteRMVFajfKazky1zV7RtX1uZR9V7gJwyq3Q== 221 | 222 | array-union@^2.1.0: 223 | version "2.1.0" 224 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" 225 | integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== 226 | 227 | astral-regex@^2.0.0: 228 | version "2.0.0" 229 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" 230 | integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== 231 | 232 | balanced-match@^1.0.0: 233 | version "1.0.2" 234 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 235 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 236 | 237 | brace-expansion@^1.1.7: 238 | version "1.1.11" 239 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 240 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 241 | dependencies: 242 | balanced-match "^1.0.0" 243 | concat-map "0.0.1" 244 | 245 | braces@^3.0.2: 246 | version "3.0.2" 247 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 248 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 249 | dependencies: 250 | fill-range "^7.0.1" 251 | 252 | call-bind@^1.0.0, call-bind@^1.0.2: 253 | version "1.0.2" 254 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 255 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== 256 | dependencies: 257 | function-bind "^1.1.1" 258 | get-intrinsic "^1.0.2" 259 | 260 | callsites@^3.0.0: 261 | version "3.1.0" 262 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 263 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 264 | 265 | chalk@^2.0.0, chalk@^2.4.1: 266 | version "2.4.2" 267 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 268 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 269 | dependencies: 270 | ansi-styles "^3.2.1" 271 | escape-string-regexp "^1.0.5" 272 | supports-color "^5.3.0" 273 | 274 | chalk@^4.0.0: 275 | version "4.1.2" 276 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 277 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 278 | dependencies: 279 | ansi-styles "^4.1.0" 280 | supports-color "^7.1.0" 281 | 282 | color-convert@^1.9.0: 283 | version "1.9.3" 284 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 285 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 286 | dependencies: 287 | color-name "1.1.3" 288 | 289 | color-convert@^2.0.1: 290 | version "2.0.1" 291 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 292 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 293 | dependencies: 294 | color-name "~1.1.4" 295 | 296 | color-name@1.1.3: 297 | version "1.1.3" 298 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 299 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 300 | 301 | color-name@~1.1.4: 302 | version "1.1.4" 303 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 304 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 305 | 306 | concat-map@0.0.1: 307 | version "0.0.1" 308 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 309 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 310 | 311 | cross-spawn@^6.0.5: 312 | version "6.0.5" 313 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" 314 | integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== 315 | dependencies: 316 | nice-try "^1.0.4" 317 | path-key "^2.0.1" 318 | semver "^5.5.0" 319 | shebang-command "^1.2.0" 320 | which "^1.2.9" 321 | 322 | cross-spawn@^7.0.2: 323 | version "7.0.3" 324 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 325 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 326 | dependencies: 327 | path-key "^3.1.0" 328 | shebang-command "^2.0.0" 329 | which "^2.0.1" 330 | 331 | debug@^4.0.1, debug@^4.1.1, debug@^4.3.1: 332 | version "4.3.4" 333 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 334 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 335 | dependencies: 336 | ms "2.1.2" 337 | 338 | deep-is@^0.1.3: 339 | version "0.1.4" 340 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" 341 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== 342 | 343 | define-properties@^1.1.3: 344 | version "1.1.4" 345 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" 346 | integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== 347 | dependencies: 348 | has-property-descriptors "^1.0.0" 349 | object-keys "^1.1.1" 350 | 351 | dir-glob@^3.0.1: 352 | version "3.0.1" 353 | resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" 354 | integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== 355 | dependencies: 356 | path-type "^4.0.0" 357 | 358 | doctrine@^3.0.0: 359 | version "3.0.0" 360 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 361 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 362 | dependencies: 363 | esutils "^2.0.2" 364 | 365 | emoji-regex@^8.0.0: 366 | version "8.0.0" 367 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 368 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 369 | 370 | enquirer@^2.3.5: 371 | version "2.3.6" 372 | resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" 373 | integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== 374 | dependencies: 375 | ansi-colors "^4.1.1" 376 | 377 | error-ex@^1.3.1: 378 | version "1.3.2" 379 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 380 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 381 | dependencies: 382 | is-arrayish "^0.2.1" 383 | 384 | es-abstract@^1.19.1: 385 | version "1.19.5" 386 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.5.tgz#a2cb01eb87f724e815b278b0dd0d00f36ca9a7f1" 387 | integrity sha512-Aa2G2+Rd3b6kxEUKTF4TaW67czBLyAv3z7VOhYRU50YBx+bbsYZ9xQP4lMNazePuFlybXI0V4MruPos7qUo5fA== 388 | dependencies: 389 | call-bind "^1.0.2" 390 | es-to-primitive "^1.2.1" 391 | function-bind "^1.1.1" 392 | get-intrinsic "^1.1.1" 393 | get-symbol-description "^1.0.0" 394 | has "^1.0.3" 395 | has-symbols "^1.0.3" 396 | internal-slot "^1.0.3" 397 | is-callable "^1.2.4" 398 | is-negative-zero "^2.0.2" 399 | is-regex "^1.1.4" 400 | is-shared-array-buffer "^1.0.2" 401 | is-string "^1.0.7" 402 | is-weakref "^1.0.2" 403 | object-inspect "^1.12.0" 404 | object-keys "^1.1.1" 405 | object.assign "^4.1.2" 406 | string.prototype.trimend "^1.0.4" 407 | string.prototype.trimstart "^1.0.4" 408 | unbox-primitive "^1.0.1" 409 | 410 | es-to-primitive@^1.2.1: 411 | version "1.2.1" 412 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" 413 | integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== 414 | dependencies: 415 | is-callable "^1.1.4" 416 | is-date-object "^1.0.1" 417 | is-symbol "^1.0.2" 418 | 419 | escape-string-regexp@^1.0.5: 420 | version "1.0.5" 421 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 422 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 423 | 424 | escape-string-regexp@^4.0.0: 425 | version "4.0.0" 426 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 427 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 428 | 429 | eslint-config-prettier@^8.1.0: 430 | version "8.5.0" 431 | resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" 432 | integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== 433 | 434 | eslint-scope@^5.1.1: 435 | version "5.1.1" 436 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" 437 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== 438 | dependencies: 439 | esrecurse "^4.3.0" 440 | estraverse "^4.1.1" 441 | 442 | eslint-utils@^2.1.0: 443 | version "2.1.0" 444 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" 445 | integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== 446 | dependencies: 447 | eslint-visitor-keys "^1.1.0" 448 | 449 | eslint-utils@^3.0.0: 450 | version "3.0.0" 451 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" 452 | integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== 453 | dependencies: 454 | eslint-visitor-keys "^2.0.0" 455 | 456 | eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: 457 | version "1.3.0" 458 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" 459 | integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== 460 | 461 | eslint-visitor-keys@^2.0.0: 462 | version "2.1.0" 463 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" 464 | integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== 465 | 466 | eslint@^7.22.0: 467 | version "7.32.0" 468 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" 469 | integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== 470 | dependencies: 471 | "@babel/code-frame" "7.12.11" 472 | "@eslint/eslintrc" "^0.4.3" 473 | "@humanwhocodes/config-array" "^0.5.0" 474 | ajv "^6.10.0" 475 | chalk "^4.0.0" 476 | cross-spawn "^7.0.2" 477 | debug "^4.0.1" 478 | doctrine "^3.0.0" 479 | enquirer "^2.3.5" 480 | escape-string-regexp "^4.0.0" 481 | eslint-scope "^5.1.1" 482 | eslint-utils "^2.1.0" 483 | eslint-visitor-keys "^2.0.0" 484 | espree "^7.3.1" 485 | esquery "^1.4.0" 486 | esutils "^2.0.2" 487 | fast-deep-equal "^3.1.3" 488 | file-entry-cache "^6.0.1" 489 | functional-red-black-tree "^1.0.1" 490 | glob-parent "^5.1.2" 491 | globals "^13.6.0" 492 | ignore "^4.0.6" 493 | import-fresh "^3.0.0" 494 | imurmurhash "^0.1.4" 495 | is-glob "^4.0.0" 496 | js-yaml "^3.13.1" 497 | json-stable-stringify-without-jsonify "^1.0.1" 498 | levn "^0.4.1" 499 | lodash.merge "^4.6.2" 500 | minimatch "^3.0.4" 501 | natural-compare "^1.4.0" 502 | optionator "^0.9.1" 503 | progress "^2.0.0" 504 | regexpp "^3.1.0" 505 | semver "^7.2.1" 506 | strip-ansi "^6.0.0" 507 | strip-json-comments "^3.1.0" 508 | table "^6.0.9" 509 | text-table "^0.2.0" 510 | v8-compile-cache "^2.0.3" 511 | 512 | espree@^7.3.0, espree@^7.3.1: 513 | version "7.3.1" 514 | resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" 515 | integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== 516 | dependencies: 517 | acorn "^7.4.0" 518 | acorn-jsx "^5.3.1" 519 | eslint-visitor-keys "^1.3.0" 520 | 521 | esprima@^4.0.0: 522 | version "4.0.1" 523 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 524 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 525 | 526 | esquery@^1.4.0: 527 | version "1.4.0" 528 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" 529 | integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== 530 | dependencies: 531 | estraverse "^5.1.0" 532 | 533 | esrecurse@^4.3.0: 534 | version "4.3.0" 535 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 536 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 537 | dependencies: 538 | estraverse "^5.2.0" 539 | 540 | estraverse@^4.1.1: 541 | version "4.3.0" 542 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 543 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 544 | 545 | estraverse@^5.1.0, estraverse@^5.2.0: 546 | version "5.3.0" 547 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" 548 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== 549 | 550 | esutils@^2.0.2: 551 | version "2.0.3" 552 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 553 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 554 | 555 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: 556 | version "3.1.3" 557 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 558 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 559 | 560 | fast-glob@^3.2.9: 561 | version "3.2.11" 562 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" 563 | integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== 564 | dependencies: 565 | "@nodelib/fs.stat" "^2.0.2" 566 | "@nodelib/fs.walk" "^1.2.3" 567 | glob-parent "^5.1.2" 568 | merge2 "^1.3.0" 569 | micromatch "^4.0.4" 570 | 571 | fast-json-stable-stringify@^2.0.0: 572 | version "2.1.0" 573 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 574 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 575 | 576 | fast-levenshtein@^2.0.6: 577 | version "2.0.6" 578 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 579 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 580 | 581 | fastq@^1.6.0: 582 | version "1.13.0" 583 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" 584 | integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== 585 | dependencies: 586 | reusify "^1.0.4" 587 | 588 | file-entry-cache@^6.0.1: 589 | version "6.0.1" 590 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" 591 | integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== 592 | dependencies: 593 | flat-cache "^3.0.4" 594 | 595 | fill-range@^7.0.1: 596 | version "7.0.1" 597 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 598 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 599 | dependencies: 600 | to-regex-range "^5.0.1" 601 | 602 | flat-cache@^3.0.4: 603 | version "3.0.4" 604 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" 605 | integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== 606 | dependencies: 607 | flatted "^3.1.0" 608 | rimraf "^3.0.2" 609 | 610 | flatted@^3.1.0: 611 | version "3.2.5" 612 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" 613 | integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== 614 | 615 | fs.realpath@^1.0.0: 616 | version "1.0.0" 617 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 618 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 619 | 620 | function-bind@^1.1.1: 621 | version "1.1.1" 622 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 623 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 624 | 625 | functional-red-black-tree@^1.0.1: 626 | version "1.0.1" 627 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 628 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= 629 | 630 | get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: 631 | version "1.1.1" 632 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" 633 | integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== 634 | dependencies: 635 | function-bind "^1.1.1" 636 | has "^1.0.3" 637 | has-symbols "^1.0.1" 638 | 639 | get-symbol-description@^1.0.0: 640 | version "1.0.0" 641 | resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" 642 | integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== 643 | dependencies: 644 | call-bind "^1.0.2" 645 | get-intrinsic "^1.1.1" 646 | 647 | glob-parent@^5.1.2: 648 | version "5.1.2" 649 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 650 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 651 | dependencies: 652 | is-glob "^4.0.1" 653 | 654 | glob@^7.1.3: 655 | version "7.2.0" 656 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" 657 | integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== 658 | dependencies: 659 | fs.realpath "^1.0.0" 660 | inflight "^1.0.4" 661 | inherits "2" 662 | minimatch "^3.0.4" 663 | once "^1.3.0" 664 | path-is-absolute "^1.0.0" 665 | 666 | globals@^13.6.0, globals@^13.9.0: 667 | version "13.13.0" 668 | resolved "https://registry.yarnpkg.com/globals/-/globals-13.13.0.tgz#ac32261060d8070e2719dd6998406e27d2b5727b" 669 | integrity sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A== 670 | dependencies: 671 | type-fest "^0.20.2" 672 | 673 | globby@^11.0.3: 674 | version "11.1.0" 675 | resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" 676 | integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== 677 | dependencies: 678 | array-union "^2.1.0" 679 | dir-glob "^3.0.1" 680 | fast-glob "^3.2.9" 681 | ignore "^5.2.0" 682 | merge2 "^1.4.1" 683 | slash "^3.0.0" 684 | 685 | graceful-fs@^4.1.2: 686 | version "4.2.10" 687 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" 688 | integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== 689 | 690 | has-bigints@^1.0.1, has-bigints@^1.0.2: 691 | version "1.0.2" 692 | resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" 693 | integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== 694 | 695 | has-flag@^3.0.0: 696 | version "3.0.0" 697 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 698 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 699 | 700 | has-flag@^4.0.0: 701 | version "4.0.0" 702 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 703 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 704 | 705 | has-property-descriptors@^1.0.0: 706 | version "1.0.0" 707 | resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" 708 | integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== 709 | dependencies: 710 | get-intrinsic "^1.1.1" 711 | 712 | has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: 713 | version "1.0.3" 714 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" 715 | integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== 716 | 717 | has-tostringtag@^1.0.0: 718 | version "1.0.0" 719 | resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" 720 | integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== 721 | dependencies: 722 | has-symbols "^1.0.2" 723 | 724 | has@^1.0.3: 725 | version "1.0.3" 726 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 727 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 728 | dependencies: 729 | function-bind "^1.1.1" 730 | 731 | hosted-git-info@^2.1.4: 732 | version "2.8.9" 733 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" 734 | integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== 735 | 736 | ignore@^4.0.6: 737 | version "4.0.6" 738 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" 739 | integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== 740 | 741 | ignore@^5.1.8, ignore@^5.2.0: 742 | version "5.2.0" 743 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" 744 | integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== 745 | 746 | import-fresh@^3.0.0, import-fresh@^3.2.1: 747 | version "3.3.0" 748 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 749 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 750 | dependencies: 751 | parent-module "^1.0.0" 752 | resolve-from "^4.0.0" 753 | 754 | imurmurhash@^0.1.4: 755 | version "0.1.4" 756 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 757 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 758 | 759 | inflight@^1.0.4: 760 | version "1.0.6" 761 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 762 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 763 | dependencies: 764 | once "^1.3.0" 765 | wrappy "1" 766 | 767 | inherits@2: 768 | version "2.0.4" 769 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 770 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 771 | 772 | internal-slot@^1.0.3: 773 | version "1.0.3" 774 | resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" 775 | integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== 776 | dependencies: 777 | get-intrinsic "^1.1.0" 778 | has "^1.0.3" 779 | side-channel "^1.0.4" 780 | 781 | is-arrayish@^0.2.1: 782 | version "0.2.1" 783 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 784 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= 785 | 786 | is-bigint@^1.0.1: 787 | version "1.0.4" 788 | resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" 789 | integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== 790 | dependencies: 791 | has-bigints "^1.0.1" 792 | 793 | is-boolean-object@^1.1.0: 794 | version "1.1.2" 795 | resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" 796 | integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== 797 | dependencies: 798 | call-bind "^1.0.2" 799 | has-tostringtag "^1.0.0" 800 | 801 | is-callable@^1.1.4, is-callable@^1.2.4: 802 | version "1.2.4" 803 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" 804 | integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== 805 | 806 | is-core-module@^2.8.1: 807 | version "2.9.0" 808 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" 809 | integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== 810 | dependencies: 811 | has "^1.0.3" 812 | 813 | is-date-object@^1.0.1: 814 | version "1.0.5" 815 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" 816 | integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== 817 | dependencies: 818 | has-tostringtag "^1.0.0" 819 | 820 | is-extglob@^2.1.1: 821 | version "2.1.1" 822 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 823 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 824 | 825 | is-fullwidth-code-point@^3.0.0: 826 | version "3.0.0" 827 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 828 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 829 | 830 | is-glob@^4.0.0, is-glob@^4.0.1: 831 | version "4.0.3" 832 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 833 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 834 | dependencies: 835 | is-extglob "^2.1.1" 836 | 837 | is-negative-zero@^2.0.2: 838 | version "2.0.2" 839 | resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" 840 | integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== 841 | 842 | is-number-object@^1.0.4: 843 | version "1.0.7" 844 | resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" 845 | integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== 846 | dependencies: 847 | has-tostringtag "^1.0.0" 848 | 849 | is-number@^7.0.0: 850 | version "7.0.0" 851 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 852 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 853 | 854 | is-regex@^1.1.4: 855 | version "1.1.4" 856 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" 857 | integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== 858 | dependencies: 859 | call-bind "^1.0.2" 860 | has-tostringtag "^1.0.0" 861 | 862 | is-shared-array-buffer@^1.0.2: 863 | version "1.0.2" 864 | resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" 865 | integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== 866 | dependencies: 867 | call-bind "^1.0.2" 868 | 869 | is-string@^1.0.5, is-string@^1.0.7: 870 | version "1.0.7" 871 | resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" 872 | integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== 873 | dependencies: 874 | has-tostringtag "^1.0.0" 875 | 876 | is-symbol@^1.0.2, is-symbol@^1.0.3: 877 | version "1.0.4" 878 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" 879 | integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== 880 | dependencies: 881 | has-symbols "^1.0.2" 882 | 883 | is-weakref@^1.0.2: 884 | version "1.0.2" 885 | resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" 886 | integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== 887 | dependencies: 888 | call-bind "^1.0.2" 889 | 890 | isexe@^2.0.0: 891 | version "2.0.0" 892 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 893 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 894 | 895 | js-tokens@^4.0.0: 896 | version "4.0.0" 897 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 898 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 899 | 900 | js-yaml@^3.13.1: 901 | version "3.14.1" 902 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" 903 | integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== 904 | dependencies: 905 | argparse "^1.0.7" 906 | esprima "^4.0.0" 907 | 908 | json-parse-better-errors@^1.0.1: 909 | version "1.0.2" 910 | resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" 911 | integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== 912 | 913 | json-schema-traverse@^0.4.1: 914 | version "0.4.1" 915 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 916 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 917 | 918 | json-schema-traverse@^1.0.0: 919 | version "1.0.0" 920 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" 921 | integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== 922 | 923 | json-stable-stringify-without-jsonify@^1.0.1: 924 | version "1.0.1" 925 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 926 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= 927 | 928 | levn@^0.4.1: 929 | version "0.4.1" 930 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 931 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 932 | dependencies: 933 | prelude-ls "^1.2.1" 934 | type-check "~0.4.0" 935 | 936 | load-json-file@^4.0.0: 937 | version "4.0.0" 938 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" 939 | integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= 940 | dependencies: 941 | graceful-fs "^4.1.2" 942 | parse-json "^4.0.0" 943 | pify "^3.0.0" 944 | strip-bom "^3.0.0" 945 | 946 | lodash.merge@^4.6.2: 947 | version "4.6.2" 948 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" 949 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== 950 | 951 | lodash.truncate@^4.4.2: 952 | version "4.4.2" 953 | resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" 954 | integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= 955 | 956 | lru-cache@^6.0.0: 957 | version "6.0.0" 958 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 959 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 960 | dependencies: 961 | yallist "^4.0.0" 962 | 963 | memorystream@^0.3.1: 964 | version "0.3.1" 965 | resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" 966 | integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI= 967 | 968 | merge2@^1.3.0, merge2@^1.4.1: 969 | version "1.4.1" 970 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" 971 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 972 | 973 | micromatch@^4.0.4: 974 | version "4.0.5" 975 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" 976 | integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== 977 | dependencies: 978 | braces "^3.0.2" 979 | picomatch "^2.3.1" 980 | 981 | minimatch@^3.0.4: 982 | version "3.1.2" 983 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 984 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 985 | dependencies: 986 | brace-expansion "^1.1.7" 987 | 988 | ms@2.1.2: 989 | version "2.1.2" 990 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 991 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 992 | 993 | natural-compare@^1.4.0: 994 | version "1.4.0" 995 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 996 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= 997 | 998 | nice-try@^1.0.4: 999 | version "1.0.5" 1000 | resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" 1001 | integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== 1002 | 1003 | normalize-package-data@^2.3.2: 1004 | version "2.5.0" 1005 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" 1006 | integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== 1007 | dependencies: 1008 | hosted-git-info "^2.1.4" 1009 | resolve "^1.10.0" 1010 | semver "2 || 3 || 4 || 5" 1011 | validate-npm-package-license "^3.0.1" 1012 | 1013 | npm-run-all@^4.1.5: 1014 | version "4.1.5" 1015 | resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba" 1016 | integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ== 1017 | dependencies: 1018 | ansi-styles "^3.2.1" 1019 | chalk "^2.4.1" 1020 | cross-spawn "^6.0.5" 1021 | memorystream "^0.3.1" 1022 | minimatch "^3.0.4" 1023 | pidtree "^0.3.0" 1024 | read-pkg "^3.0.0" 1025 | shell-quote "^1.6.1" 1026 | string.prototype.padend "^3.0.0" 1027 | 1028 | object-inspect@^1.12.0, object-inspect@^1.9.0: 1029 | version "1.12.0" 1030 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" 1031 | integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== 1032 | 1033 | object-keys@^1.1.1: 1034 | version "1.1.1" 1035 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 1036 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 1037 | 1038 | object.assign@^4.1.2: 1039 | version "4.1.2" 1040 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" 1041 | integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== 1042 | dependencies: 1043 | call-bind "^1.0.0" 1044 | define-properties "^1.1.3" 1045 | has-symbols "^1.0.1" 1046 | object-keys "^1.1.1" 1047 | 1048 | once@^1.3.0: 1049 | version "1.4.0" 1050 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1051 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1052 | dependencies: 1053 | wrappy "1" 1054 | 1055 | optionator@^0.9.1: 1056 | version "0.9.1" 1057 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" 1058 | integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== 1059 | dependencies: 1060 | deep-is "^0.1.3" 1061 | fast-levenshtein "^2.0.6" 1062 | levn "^0.4.1" 1063 | prelude-ls "^1.2.1" 1064 | type-check "^0.4.0" 1065 | word-wrap "^1.2.3" 1066 | 1067 | parent-module@^1.0.0: 1068 | version "1.0.1" 1069 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 1070 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 1071 | dependencies: 1072 | callsites "^3.0.0" 1073 | 1074 | parse-json@^4.0.0: 1075 | version "4.0.0" 1076 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" 1077 | integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= 1078 | dependencies: 1079 | error-ex "^1.3.1" 1080 | json-parse-better-errors "^1.0.1" 1081 | 1082 | path-is-absolute@^1.0.0: 1083 | version "1.0.1" 1084 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1085 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1086 | 1087 | path-key@^2.0.1: 1088 | version "2.0.1" 1089 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" 1090 | integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= 1091 | 1092 | path-key@^3.1.0: 1093 | version "3.1.1" 1094 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1095 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1096 | 1097 | path-parse@^1.0.7: 1098 | version "1.0.7" 1099 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 1100 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 1101 | 1102 | path-type@^3.0.0: 1103 | version "3.0.0" 1104 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" 1105 | integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== 1106 | dependencies: 1107 | pify "^3.0.0" 1108 | 1109 | path-type@^4.0.0: 1110 | version "4.0.0" 1111 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 1112 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 1113 | 1114 | picomatch@^2.3.1: 1115 | version "2.3.1" 1116 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 1117 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 1118 | 1119 | pidtree@^0.3.0: 1120 | version "0.3.1" 1121 | resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a" 1122 | integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA== 1123 | 1124 | pify@^3.0.0: 1125 | version "3.0.0" 1126 | resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" 1127 | integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= 1128 | 1129 | prelude-ls@^1.2.1: 1130 | version "1.2.1" 1131 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 1132 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 1133 | 1134 | prettier@^2.2.1: 1135 | version "2.6.2" 1136 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.6.2.tgz#e26d71a18a74c3d0f0597f55f01fb6c06c206032" 1137 | integrity sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew== 1138 | 1139 | progress@^2.0.0: 1140 | version "2.0.3" 1141 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 1142 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== 1143 | 1144 | punycode@^2.1.0: 1145 | version "2.1.1" 1146 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 1147 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 1148 | 1149 | queue-microtask@^1.2.2: 1150 | version "1.2.3" 1151 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" 1152 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== 1153 | 1154 | read-pkg@^3.0.0: 1155 | version "3.0.0" 1156 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" 1157 | integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= 1158 | dependencies: 1159 | load-json-file "^4.0.0" 1160 | normalize-package-data "^2.3.2" 1161 | path-type "^3.0.0" 1162 | 1163 | regexpp@^3.1.0: 1164 | version "3.2.0" 1165 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" 1166 | integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== 1167 | 1168 | require-from-string@^2.0.2: 1169 | version "2.0.2" 1170 | resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" 1171 | integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== 1172 | 1173 | resolve-from@^4.0.0: 1174 | version "4.0.0" 1175 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 1176 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 1177 | 1178 | resolve@^1.10.0: 1179 | version "1.22.0" 1180 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" 1181 | integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== 1182 | dependencies: 1183 | is-core-module "^2.8.1" 1184 | path-parse "^1.0.7" 1185 | supports-preserve-symlinks-flag "^1.0.0" 1186 | 1187 | reusify@^1.0.4: 1188 | version "1.0.4" 1189 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" 1190 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 1191 | 1192 | rimraf@^3.0.2: 1193 | version "3.0.2" 1194 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 1195 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 1196 | dependencies: 1197 | glob "^7.1.3" 1198 | 1199 | run-parallel@^1.1.9: 1200 | version "1.2.0" 1201 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" 1202 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 1203 | dependencies: 1204 | queue-microtask "^1.2.2" 1205 | 1206 | "semver@2 || 3 || 4 || 5", semver@^5.5.0: 1207 | version "5.7.1" 1208 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 1209 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 1210 | 1211 | semver@^7.2.1, semver@^7.3.5: 1212 | version "7.3.7" 1213 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" 1214 | integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== 1215 | dependencies: 1216 | lru-cache "^6.0.0" 1217 | 1218 | shebang-command@^1.2.0: 1219 | version "1.2.0" 1220 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 1221 | integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= 1222 | dependencies: 1223 | shebang-regex "^1.0.0" 1224 | 1225 | shebang-command@^2.0.0: 1226 | version "2.0.0" 1227 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1228 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1229 | dependencies: 1230 | shebang-regex "^3.0.0" 1231 | 1232 | shebang-regex@^1.0.0: 1233 | version "1.0.0" 1234 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 1235 | integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= 1236 | 1237 | shebang-regex@^3.0.0: 1238 | version "3.0.0" 1239 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1240 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1241 | 1242 | shell-quote@^1.6.1: 1243 | version "1.7.3" 1244 | resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123" 1245 | integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== 1246 | 1247 | side-channel@^1.0.4: 1248 | version "1.0.4" 1249 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" 1250 | integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== 1251 | dependencies: 1252 | call-bind "^1.0.0" 1253 | get-intrinsic "^1.0.2" 1254 | object-inspect "^1.9.0" 1255 | 1256 | slash@^3.0.0: 1257 | version "3.0.0" 1258 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" 1259 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== 1260 | 1261 | slice-ansi@^4.0.0: 1262 | version "4.0.0" 1263 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" 1264 | integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== 1265 | dependencies: 1266 | ansi-styles "^4.0.0" 1267 | astral-regex "^2.0.0" 1268 | is-fullwidth-code-point "^3.0.0" 1269 | 1270 | spdx-correct@^3.0.0: 1271 | version "3.1.1" 1272 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" 1273 | integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== 1274 | dependencies: 1275 | spdx-expression-parse "^3.0.0" 1276 | spdx-license-ids "^3.0.0" 1277 | 1278 | spdx-exceptions@^2.1.0: 1279 | version "2.3.0" 1280 | resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" 1281 | integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== 1282 | 1283 | spdx-expression-parse@^3.0.0: 1284 | version "3.0.1" 1285 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" 1286 | integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== 1287 | dependencies: 1288 | spdx-exceptions "^2.1.0" 1289 | spdx-license-ids "^3.0.0" 1290 | 1291 | spdx-license-ids@^3.0.0: 1292 | version "3.0.11" 1293 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz#50c0d8c40a14ec1bf449bae69a0ea4685a9d9f95" 1294 | integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g== 1295 | 1296 | sprintf-js@~1.0.2: 1297 | version "1.0.3" 1298 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 1299 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 1300 | 1301 | string-width@^4.2.3: 1302 | version "4.2.3" 1303 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 1304 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1305 | dependencies: 1306 | emoji-regex "^8.0.0" 1307 | is-fullwidth-code-point "^3.0.0" 1308 | strip-ansi "^6.0.1" 1309 | 1310 | string.prototype.padend@^3.0.0: 1311 | version "3.1.3" 1312 | resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.3.tgz#997a6de12c92c7cb34dc8a201a6c53d9bd88a5f1" 1313 | integrity sha512-jNIIeokznm8SD/TZISQsZKYu7RJyheFNt84DUPrh482GC8RVp2MKqm2O5oBRdGxbDQoXrhhWtPIWQOiy20svUg== 1314 | dependencies: 1315 | call-bind "^1.0.2" 1316 | define-properties "^1.1.3" 1317 | es-abstract "^1.19.1" 1318 | 1319 | string.prototype.trimend@^1.0.4: 1320 | version "1.0.4" 1321 | resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" 1322 | integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== 1323 | dependencies: 1324 | call-bind "^1.0.2" 1325 | define-properties "^1.1.3" 1326 | 1327 | string.prototype.trimstart@^1.0.4: 1328 | version "1.0.4" 1329 | resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" 1330 | integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== 1331 | dependencies: 1332 | call-bind "^1.0.2" 1333 | define-properties "^1.1.3" 1334 | 1335 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 1336 | version "6.0.1" 1337 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 1338 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1339 | dependencies: 1340 | ansi-regex "^5.0.1" 1341 | 1342 | strip-bom@^3.0.0: 1343 | version "3.0.0" 1344 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 1345 | integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= 1346 | 1347 | strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: 1348 | version "3.1.1" 1349 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 1350 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1351 | 1352 | supports-color@^5.3.0: 1353 | version "5.5.0" 1354 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1355 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1356 | dependencies: 1357 | has-flag "^3.0.0" 1358 | 1359 | supports-color@^7.1.0: 1360 | version "7.2.0" 1361 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1362 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1363 | dependencies: 1364 | has-flag "^4.0.0" 1365 | 1366 | supports-preserve-symlinks-flag@^1.0.0: 1367 | version "1.0.0" 1368 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 1369 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 1370 | 1371 | table@^6.0.9: 1372 | version "6.8.0" 1373 | resolved "https://registry.yarnpkg.com/table/-/table-6.8.0.tgz#87e28f14fa4321c3377ba286f07b79b281a3b3ca" 1374 | integrity sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA== 1375 | dependencies: 1376 | ajv "^8.0.1" 1377 | lodash.truncate "^4.4.2" 1378 | slice-ansi "^4.0.0" 1379 | string-width "^4.2.3" 1380 | strip-ansi "^6.0.1" 1381 | 1382 | text-table@^0.2.0: 1383 | version "0.2.0" 1384 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 1385 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= 1386 | 1387 | to-regex-range@^5.0.1: 1388 | version "5.0.1" 1389 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1390 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1391 | dependencies: 1392 | is-number "^7.0.0" 1393 | 1394 | tslib@^1.8.1: 1395 | version "1.14.1" 1396 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" 1397 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== 1398 | 1399 | tsutils@^3.21.0: 1400 | version "3.21.0" 1401 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" 1402 | integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== 1403 | dependencies: 1404 | tslib "^1.8.1" 1405 | 1406 | type-check@^0.4.0, type-check@~0.4.0: 1407 | version "0.4.0" 1408 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 1409 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 1410 | dependencies: 1411 | prelude-ls "^1.2.1" 1412 | 1413 | type-fest@^0.20.2: 1414 | version "0.20.2" 1415 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" 1416 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== 1417 | 1418 | typescript@^4.2.3: 1419 | version "4.6.3" 1420 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.3.tgz#eefeafa6afdd31d725584c67a0eaba80f6fc6c6c" 1421 | integrity sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw== 1422 | 1423 | unbox-primitive@^1.0.1: 1424 | version "1.0.2" 1425 | resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" 1426 | integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== 1427 | dependencies: 1428 | call-bind "^1.0.2" 1429 | has-bigints "^1.0.2" 1430 | has-symbols "^1.0.3" 1431 | which-boxed-primitive "^1.0.2" 1432 | 1433 | uri-js@^4.2.2: 1434 | version "4.4.1" 1435 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 1436 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 1437 | dependencies: 1438 | punycode "^2.1.0" 1439 | 1440 | v8-compile-cache@^2.0.3: 1441 | version "2.3.0" 1442 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" 1443 | integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== 1444 | 1445 | validate-npm-package-license@^3.0.1: 1446 | version "3.0.4" 1447 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" 1448 | integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== 1449 | dependencies: 1450 | spdx-correct "^3.0.0" 1451 | spdx-expression-parse "^3.0.0" 1452 | 1453 | which-boxed-primitive@^1.0.2: 1454 | version "1.0.2" 1455 | resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" 1456 | integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== 1457 | dependencies: 1458 | is-bigint "^1.0.1" 1459 | is-boolean-object "^1.1.0" 1460 | is-number-object "^1.0.4" 1461 | is-string "^1.0.5" 1462 | is-symbol "^1.0.3" 1463 | 1464 | which@^1.2.9: 1465 | version "1.3.1" 1466 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 1467 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 1468 | dependencies: 1469 | isexe "^2.0.0" 1470 | 1471 | which@^2.0.1: 1472 | version "2.0.2" 1473 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1474 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1475 | dependencies: 1476 | isexe "^2.0.0" 1477 | 1478 | word-wrap@^1.2.3: 1479 | version "1.2.3" 1480 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" 1481 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== 1482 | 1483 | wrappy@1: 1484 | version "1.0.2" 1485 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1486 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1487 | 1488 | yallist@^4.0.0: 1489 | version "4.0.0" 1490 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 1491 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 1492 | --------------------------------------------------------------------------------