├── .editorconfig ├── .gitattributes ├── .gitignore ├── .vscode └── settings.json ├── README.md ├── package.json ├── rollup.config.js ├── screeps.sample.json ├── src ├── bin │ ├── Init.ts │ ├── extensions │ │ ├── RoomExtension.ts │ │ └── SpawnExtension.ts │ ├── index.ts │ ├── orchestrator │ │ ├── RoomOrchestrator.ts │ │ └── SpawnOrchestrator.ts │ └── rooms │ │ ├── ControlledRoom.ts │ │ ├── RemoteMiningRoom.ts │ │ └── StarterRoom.ts ├── globals.ts ├── includes │ ├── bin │ │ └── orchestrator │ │ │ └── RoomOrchestrator.d.ts │ ├── globals.d.ts │ └── os │ │ ├── Kernel.d.ts │ │ ├── Logger.d.ts │ │ └── Posis.d.ts ├── lib │ ├── .gitkeep │ ├── ErrorMapper.ts │ ├── Logger.ts │ └── StatsRecorder.ts ├── main.ts └── os │ ├── BaseKernel.ts │ ├── ExtensionRegistry.ts │ ├── ProcessRegistry.ts │ └── ProcessStatus.ts ├── tsconfig.json ├── tslint.json └── yarn.lock /.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | indent_style = space 7 | indent_size = 2 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | 12 | [*.py] 13 | indent_style = space 14 | indent_size = 4 15 | 16 | [*.rb] 17 | indent_style = space 18 | indent_size = 4 19 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | *.sln merge=union 7 | *.csproj merge=union 8 | *.vbproj merge=union 9 | *.fsproj merge=union 10 | *.dbproj merge=union 11 | 12 | # Standard to msysgit 13 | *.doc diff=astextplain 14 | *.DOC diff=astextplain 15 | *.docx diff=astextplain 16 | *.DOCX diff=astextplain 17 | *.dot diff=astextplain 18 | *.DOT diff=astextplain 19 | *.pdf diff=astextplain 20 | *.PDF diff=astextplain 21 | *.rtf diff=astextplain 22 | *.RTF diff=astextplain 23 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # npm lock file (v5.0.0+) 2 | /package-lock.json 3 | 4 | # Ignore basic folders 5 | /dist 6 | /.rpt2_cache 7 | /tsc-out 8 | /node_modules 9 | 10 | # TypeScript definitions installed by Typings 11 | /typings 12 | 13 | # Screeps Config 14 | screeps.json 15 | 16 | # Numerous always-ignore extensions 17 | *.diff 18 | *.err 19 | *.orig 20 | *.log 21 | *.rej 22 | *.swo 23 | *.swp 24 | *.zip 25 | *.vi 26 | *~ 27 | 28 | # Editor folders 29 | .cache 30 | .project 31 | .settings 32 | .tmproj 33 | *.esproj 34 | nbproject 35 | *.sublime-project 36 | *.sublime-workspace 37 | .idea 38 | 39 | # ========================= 40 | # Operating System Files 41 | # ========================= 42 | 43 | # OSX 44 | # ========================= 45 | 46 | .DS_Store 47 | .AppleDouble 48 | .LSOverride 49 | 50 | # Thumbnails 51 | ._* 52 | 53 | # Files that might appear on external disk 54 | .Spotlight-V100 55 | .Trashes 56 | 57 | # Directories potentially created on remote AFP share 58 | .AppleDB 59 | .AppleDesktop 60 | Network Trash Folder 61 | Temporary Items 62 | .apdisk 63 | 64 | # Windows 65 | # ========================= 66 | 67 | # Windows image file caches 68 | Thumbs.db 69 | ehthumbs.db 70 | 71 | # Folder config file 72 | Desktop.ini 73 | 74 | # Recycle Bin used on file shares 75 | $RECYCLE.BIN/ 76 | 77 | # Windows Installer files 78 | *.cab 79 | *.msi 80 | *.msm 81 | *.msp 82 | 83 | # Windows shortcuts 84 | *.lnk 85 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.renderWhitespace": "boundary", 3 | "files.encoding": "utf8", 4 | "files.trimTrailingWhitespace": true, 5 | "files.insertFinalNewline": true, 6 | "search.exclude": { 7 | "dist/**": true, 8 | "node_modules/**": true, 9 | "typings/**": true, 10 | ".rpt2_cache/**": true 11 | }, 12 | "typescript.tsdk": "./node_modules/typescript/lib" 13 | } 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Stonehenge 2 | 3 | > Smart colony management for the game [Screeps](https://screeps.com/). Written in [TypeScript](http://www.typescriptlang.org/). 4 | 5 | [![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) 6 | 7 | Stonehenge is a proof-of-concept of a smart, robust, and maintainable [Screeps](https://screeps.com/) codebase. It is developed in [TypeScript](https://www.typescriptlang.org/), and designed with modularity in mind. 8 | 9 | ## Developing 10 | 11 | TODO! 12 | 13 | ## Special Thanks 14 | 15 | The architecture of the kernel is heavily based off of ags131's [PosisKernel](https://github.com/ags131/PosisKernel) and thaelina's [ThaeOS](https://github.com/thaelina/Screeps-ThaeOS). 16 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@resir014/screeps", 3 | "version": "3.0.0", 4 | "description": "Smart colony management for the game Screeps. Written in TypeScript.", 5 | "main": "./dist/main.js", 6 | "scripts": { 7 | "deploy-main": "cross-env NODE_ENV=production rollup -c", 8 | "deploy-sim": "cross-env NODE_ENV=development rollup -c", 9 | "lint": "tslint -p tsconfig.json 'src/**/*.ts'", 10 | "test": "echo \"Error: no test specified\" && exit 1", 11 | "watch-main": "cross-env NODE_ENV=production rollup -cw", 12 | "watch-sim": "cross-env NODE_ENV=development rollup -cw" 13 | }, 14 | "repository": { 15 | "type": "git", 16 | "url": "git+https://github.com/resir014/screeps.git" 17 | }, 18 | "author": "Resi Respati ", 19 | "license": "MIT", 20 | "bugs": { 21 | "url": "https://github.com/resir014/screeps/issues" 22 | }, 23 | "homepage": "https://github.com/resir014/screeps#readme", 24 | "devDependencies": { 25 | "@types/lodash": "^3.10.1", 26 | "@types/node": "^9.4.7", 27 | "@types/screeps": "^2.5.3", 28 | "cross-env": "^5.2.0", 29 | "rollup": "^1.4.0", 30 | "rollup-plugin-clear": "^2.0.7", 31 | "rollup-plugin-commonjs": "^9.1.5", 32 | "rollup-plugin-node-resolve": "^4.0.1", 33 | "rollup-plugin-replace": "^2.0.0", 34 | "rollup-plugin-screeps": "^0.1.2", 35 | "rollup-plugin-typescript2": "^0.19.3", 36 | "ts-node": "^7.0.1", 37 | "tslint": "^5.11.0", 38 | "tslint-config-airbnb": "^5.10.0", 39 | "typescript": "^3.0.1" 40 | }, 41 | "dependencies": { 42 | "Traveler": "github:bonzaiferroni/Traveler.git#testing", 43 | "source-map": "~0.6.1" 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | import clear from "rollup-plugin-clear"; 4 | import replace from "rollup-plugin-replace"; 5 | import resolve from "rollup-plugin-node-resolve"; 6 | import commonjs from "rollup-plugin-commonjs"; 7 | import typescript from "rollup-plugin-typescript2"; 8 | import screeps from "rollup-plugin-screeps"; 9 | 10 | const cfg = process.env.NODE_ENV === 'production' ? 'main' : 'sim'; 11 | 12 | export default { 13 | input: "src/main.ts", 14 | output: { 15 | file: "dist/main.js", 16 | format: "cjs", 17 | sourcemap: true 18 | }, 19 | 20 | plugins: [ 21 | clear({ targets: ["dist"] }), 22 | replace({ 23 | 'process.env': { 24 | NODE_ENV: JSON.stringify(process.env.NODE_ENV) 25 | }, 26 | __BUILD_TIME__: JSON.stringify(Date.now()) 27 | }), 28 | resolve(), 29 | commonjs(), 30 | typescript({tsconfig: "./tsconfig.json"}), 31 | screeps({ 32 | config: require("./screeps")[cfg], 33 | // if `NODE_ENV` is local, perform a dry run 34 | dryRun: process.env.NODE_ENV === 'local' 35 | }) 36 | ] 37 | } 38 | -------------------------------------------------------------------------------- /screeps.sample.json: -------------------------------------------------------------------------------- 1 | { 2 | "main": { 3 | "token": "YOUR_TOKEN", 4 | "protocol": "https", 5 | "hostname": "screeps.com", 6 | "port": 443, 7 | "path": "/", 8 | "branch": "main" 9 | }, 10 | "sim": { 11 | "token": "YOUR_TOKEN", 12 | "protocol": "https", 13 | "hostname": "screeps.com", 14 | "port": 443, 15 | "path": "/", 16 | "branch": "sim" 17 | }, 18 | "pserver": { 19 | "email": "username", 20 | "password": "Password", 21 | "protocol": "http", 22 | "hostname": "1.2.3.4", 23 | "port": 21025, 24 | "path": "/", 25 | "branch": "main" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/bin/Init.ts: -------------------------------------------------------------------------------- 1 | interface InitProcessMemory extends ProcessMemory { 2 | ran: boolean 3 | } 4 | 5 | export class InitProcess implements StonehengeProcess { 6 | constructor (private context: StonehengeProcessContext) {} 7 | 8 | private get log() { 9 | return this.context.log 10 | } 11 | public get memory() { 12 | return this.context.memory 13 | } 14 | private get kernel() { 15 | return this.context.queryPosisInterface('BaseKernel') as StonehengeKernel 16 | } 17 | 18 | public run() { 19 | this.log.info(`Current tick is ${Game.time}`) 20 | if (!this.memory.ran) { 21 | if (this.kernel) { 22 | this.log.info('Kernel is loaded.') 23 | this.kernel.startProcess('orchestrator/RoomOrchestrator', { 24 | rooms: {} 25 | }) 26 | } 27 | this.memory.ran = true 28 | } 29 | } 30 | } 31 | 32 | export const bundle: StonehengeBundle<{}> = { 33 | install(registry: StonehengeProcessRegistry) { 34 | registry.register('init', InitProcess) 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/bin/extensions/RoomExtension.ts: -------------------------------------------------------------------------------- 1 | export class RoomExtension implements StonehengeRoomExtension { 2 | public static imageName = 'orchestrator/RoomExtension' 3 | 4 | constructor(private context: RoomExtensionContext) {} 5 | 6 | private get log() { 7 | return this.context.log 8 | } 9 | private get memory(): RoomOrchestratorMemory { 10 | return this.context.memory 11 | } 12 | private get rooms(): { [key: string]: RoomMemory } { 13 | return this.memory.rooms 14 | } 15 | 16 | public manageRooms() { 17 | for (const spawn in Game.spawns) { 18 | const room = Game.spawns[spawn].room 19 | this.log.info(`Room ${room.name} is available`) 20 | 21 | if (!this.rooms[room.name]) { 22 | // 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/bin/extensions/SpawnExtension.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/resir014/screeps/349b7b0712ad0919b7be02015e7a6676f8fe8da4/src/bin/extensions/SpawnExtension.ts -------------------------------------------------------------------------------- /src/bin/index.ts: -------------------------------------------------------------------------------- 1 | import { bundle as InitBundle } from './Init' 2 | import { bundle as RoomOrchestratorBundle } from './orchestrator/RoomOrchestrator' 3 | 4 | export const bundle: StonehengeBundle<{}> = { 5 | install (registry: StonehengeProcessRegistry) { 6 | InitBundle.install(registry) 7 | RoomOrchestratorBundle.install(registry) 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/bin/orchestrator/RoomOrchestrator.ts: -------------------------------------------------------------------------------- 1 | import { RoomExtension } from 'bin/extensions/RoomExtension' 2 | import { ExtensionRegistry } from 'os/ExtensionRegistry' 3 | 4 | export class RoomOrchestratorProcess implements StonehengeProcess { 5 | public static imageName = 'orchestrator/RoomOrchestrator' 6 | 7 | constructor (private context: StonehengeProcessContext) { 8 | const registry = context.queryPosisInterface('extensions/ExtensionRegistry') as ExtensionRegistry 9 | const registered = registry.register(RoomExtension.imageName, new RoomExtension({ 10 | get memory() { return context.memory }, 11 | get log() { return context.log } 12 | })) 13 | if (!registered) throw new Error(`Could not register ${RoomExtension.imageName}`) 14 | } 15 | 16 | private get log() { 17 | return this.context.log 18 | } 19 | public get memory() { 20 | return this.context.memory 21 | } 22 | private get kernel() { 23 | return this.context.queryPosisInterface('BaseKernel') as StonehengeKernel 24 | } 25 | private get roomExtension() { 26 | return this.context.queryPosisInterface(RoomExtension.imageName) as RoomExtension 27 | } 28 | 29 | public run() { 30 | this.log.info('RoomOrchestrator is running.') 31 | this.roomExtension.manageRooms() 32 | } 33 | } 34 | 35 | export const bundle: StonehengeBundle<{}> = { 36 | install(registry: StonehengeProcessRegistry) { 37 | registry.register(RoomOrchestratorProcess.imageName, RoomOrchestratorProcess) 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/bin/orchestrator/SpawnOrchestrator.ts: -------------------------------------------------------------------------------- 1 | interface SpawnOrchestratorProcessMemory extends ProcessMemory { 2 | [key: string]: any 3 | } 4 | 5 | export class SpawnOrchestratorProcess implements StonehengeProcess { 6 | public static imageName = 'orchestrator/SpawnOrchestrator' 7 | 8 | constructor (private context: StonehengeProcessContext) {} 9 | 10 | private get log() { 11 | return this.context.log 12 | } 13 | public get memory() { 14 | return this.context.memory 15 | } 16 | private get kernel() { 17 | return this.context.queryPosisInterface('BaseKernel') as StonehengeKernel 18 | } 19 | 20 | public run() { 21 | // 22 | } 23 | } 24 | 25 | export const bundle: StonehengeBundle<{}> = { 26 | install(registry: StonehengeProcessRegistry) { 27 | registry.register(SpawnOrchestratorProcess.imageName, SpawnOrchestratorProcess) 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/bin/rooms/ControlledRoom.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/resir014/screeps/349b7b0712ad0919b7be02015e7a6676f8fe8da4/src/bin/rooms/ControlledRoom.ts -------------------------------------------------------------------------------- /src/bin/rooms/RemoteMiningRoom.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/resir014/screeps/349b7b0712ad0919b7be02015e7a6676f8fe8da4/src/bin/rooms/RemoteMiningRoom.ts -------------------------------------------------------------------------------- /src/bin/rooms/StarterRoom.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/resir014/screeps/349b7b0712ad0919b7be02015e7a6676f8fe8da4/src/bin/rooms/StarterRoom.ts -------------------------------------------------------------------------------- /src/globals.ts: -------------------------------------------------------------------------------- 1 | import { Logger } from 'lib/Logger' 2 | 3 | const logger = new Logger('[global]') 4 | 5 | global.hardReset = () => { 6 | logger.warn('A hard reset is performed.') 7 | } 8 | -------------------------------------------------------------------------------- /src/includes/bin/orchestrator/RoomOrchestrator.d.ts: -------------------------------------------------------------------------------- 1 | declare interface StonehengeRoomExtension extends StonehengeExtension { 2 | // 3 | } 4 | 5 | declare interface RoomOrchestratorMemory extends ProcessMemory { 6 | rooms: { 7 | [roomName: string]: any 8 | } 9 | } 10 | 11 | declare interface RoomMemory { 12 | isRegistered: boolean 13 | } 14 | 15 | declare interface RoomExtensionContext { 16 | readonly memory: RoomOrchestratorMemory 17 | readonly log: StonehengeLogger 18 | } 19 | -------------------------------------------------------------------------------- /src/includes/globals.d.ts: -------------------------------------------------------------------------------- 1 | declare interface KernelOpts { 2 | // 3 | } 4 | 5 | declare interface StonehengeOpts { 6 | // 7 | } 8 | 9 | declare namespace NodeJS { 10 | interface Global { 11 | kernel: StonehengeKernel 12 | opts: StonehengeOpts 13 | hardReset: () => void 14 | } 15 | } 16 | 17 | // Extended Screeps globals 18 | 19 | interface Memory { 20 | pidCounter: number 21 | kernel: KernelMemory 22 | stats: any 23 | } 24 | -------------------------------------------------------------------------------- /src/includes/os/Kernel.d.ts: -------------------------------------------------------------------------------- 1 | // Kernel architecture mainly inspired from: 2 | // https://github.com/screepers/POSIS 3 | 4 | declare const enum ProcessStatus { 5 | RUNNING = 'running', 6 | DEAD = 'dead', 7 | SLEEP = 'sleep' 8 | } 9 | 10 | declare interface ProcessMemory { 11 | [key: string]: any 12 | } 13 | 14 | declare interface ProcessInfo { 15 | id: number 16 | pid: number 17 | imageName: string 18 | status: ProcessStatus 19 | started: number 20 | stopped?: number 21 | wake?: number 22 | ended?: number 23 | error?: string 24 | } 25 | 26 | declare interface ProcessStart { 27 | pid: number 28 | process: StonehengeProcess 29 | } 30 | 31 | declare interface StonehengeProcessCache { 32 | [id: number]: StonehengeProcess 33 | } 34 | 35 | declare interface StonehengeProcessTable { 36 | [id: number]: ProcessInfo 37 | } 38 | 39 | declare interface ProcessMemoryTable { 40 | [id: number]: ProcessMemory 41 | } 42 | 43 | declare interface KernelMemory { 44 | processTable: StonehengeProcessTable 45 | processMemoryTable: ProcessMemoryTable 46 | } 47 | 48 | declare interface StonehengeKernel { 49 | start(): void 50 | run(): void 51 | shutdown(): void 52 | 53 | startProcess(imageName: string, startContext: T): ProcessStart | undefined 54 | killProcess(pid: number): void 55 | getProcessById(pid: number): StonehengeProcess | undefined 56 | setParent(pid: number, parentId?: number): boolean 57 | } 58 | 59 | declare interface StonehengeProcessContext { 60 | readonly id: number 61 | readonly pid: number 62 | readonly imageName: string 63 | readonly memory: T 64 | readonly log: StonehengeLogger 65 | queryPosisInterface(interfaceId: string): T | undefined 66 | } 67 | 68 | declare interface StonehengeProcessConstructor { 69 | new (context: StonehengeProcessContext): StonehengeProcess 70 | } 71 | 72 | declare interface StonehengeProcessRegistry { 73 | register(imageName: string, constructor: StonehengeProcessConstructor): boolean 74 | } 75 | 76 | declare interface StonehengeProcess { 77 | readonly memory: T 78 | run(): void 79 | } 80 | -------------------------------------------------------------------------------- /src/includes/os/Logger.d.ts: -------------------------------------------------------------------------------- 1 | // Kernel architecture mainly inspired from: 2 | // https://github.com/screepers/POSIS 3 | 4 | declare interface StonehengeLogger { 5 | debug(message: (() => string) | string): void 6 | info(message: (() => string) | string): void 7 | warn(message: (() => string) | string): void 8 | error(message: (() => string) | string): void 9 | } 10 | -------------------------------------------------------------------------------- /src/includes/os/Posis.d.ts: -------------------------------------------------------------------------------- 1 | // Here we define all the POSIS-compatible APIs that we use: 2 | // https://github.com/screepers/POSIS 3 | 4 | declare interface StonehengeBundle { 5 | install(registry: StonehengeProcessRegistry): void 6 | rootImageName?: string 7 | makeDefaultRootMemory?: (override?: M) => M 8 | } 9 | 10 | declare interface StonehengeExtension {} 11 | -------------------------------------------------------------------------------- /src/lib/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/resir014/screeps/349b7b0712ad0919b7be02015e7a6676f8fe8da4/src/lib/.gitkeep -------------------------------------------------------------------------------- /src/lib/ErrorMapper.ts: -------------------------------------------------------------------------------- 1 | // tslint:disable:no-conditional-assignment 2 | import { SourceMapConsumer } from 'source-map' 3 | 4 | export class ErrorMapper { 5 | // Cache consumer 6 | private static _consumer?: SourceMapConsumer 7 | 8 | public static get consumer(): SourceMapConsumer { 9 | if (this._consumer == null) { 10 | this._consumer = new SourceMapConsumer(require('main.js.map')) 11 | } 12 | 13 | return this._consumer 14 | } 15 | 16 | // Cache previously mapped traces to improve performance 17 | public static cache: { [key: string]: string } = {} 18 | 19 | /** 20 | * Generates a stack trace using a source map generate original symbol names. 21 | * 22 | * WARNING - EXTREMELY high CPU cost for first call after reset - >30 CPU! Use sparingly! 23 | * (Consecutive calls after a reset are more reasonable, ~0.1 CPU/ea) 24 | * 25 | * @param {Error | string} error The error or original stack trace 26 | * @returns {string} The source-mapped stack trace 27 | */ 28 | public static sourceMappedStackTrace(error: Error | string): string { 29 | const stack: string = error instanceof Error ? error.stack as string : error 30 | if (this.cache.hasOwnProperty(stack)) { 31 | return this.cache[stack] 32 | } 33 | 34 | const re = /^\s+at\s+(.+?\s+)?\(?([0-z._\-\\\/]+):(\d+):(\d+)\)?$/gm 35 | let match: RegExpExecArray | null 36 | let outStack = error.toString() 37 | 38 | while (match = re.exec(stack)) { 39 | if (match[2] === 'main') { 40 | const pos = this.consumer.originalPositionFor({ 41 | column: parseInt(match[4], 10), 42 | line: parseInt(match[3], 10) 43 | }) 44 | 45 | if (pos.line != null) { 46 | if (pos.name) { 47 | outStack += `\n at ${pos.name} (${pos.source}:${pos.line}:${pos.column})` 48 | } else { 49 | if (match[1]) { 50 | // no original source file name known - use file name from given trace 51 | outStack += `\n at ${match[1]} (${pos.source}:${pos.line}:${pos.column})` 52 | } else { 53 | // no original source file name known or in given trace - omit name 54 | outStack += `\n at ${pos.source}:${pos.line}:${pos.column}` 55 | } 56 | } 57 | } else { 58 | // no known position 59 | break 60 | } 61 | } else { 62 | // no more parseable lines 63 | break 64 | } 65 | } 66 | 67 | this.cache[stack] = outStack 68 | return outStack 69 | } 70 | 71 | public static wrapLoop(loop: () => void): () => void { 72 | return () => { 73 | try { 74 | loop() 75 | } catch (e) { 76 | if (e instanceof Error) { 77 | if ('sim' in Game.rooms) { 78 | const message = "Source maps don't work in the simulator - displaying original error" 79 | console.log(`${message}
${_.escape(e.stack)}
`) 80 | } else { 81 | console.log(`${_.escape(this.sourceMappedStackTrace(e))}`) 82 | } 83 | } else { 84 | // can't handle it 85 | throw e 86 | } 87 | } 88 | } 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /src/lib/Logger.ts: -------------------------------------------------------------------------------- 1 | export enum LogLevel { 2 | DEBUG = 0, 3 | INFO, 4 | WARN, 5 | ERROR 6 | } 7 | 8 | const styles = { 9 | [LogLevel.DEBUG]: 'color: cyan', 10 | [LogLevel.INFO]: 'color: green', 11 | [LogLevel.WARN]: 'color: yellow', 12 | [LogLevel.ERROR]: 'color: red' 13 | } 14 | 15 | const levelPrefixes = { 16 | [LogLevel.DEBUG]: 'DEBUG', 17 | [LogLevel.INFO]: 'INFO', 18 | [LogLevel.WARN]: 'WARN', 19 | [LogLevel.ERROR]: 'ERROR' 20 | } 21 | 22 | export class Logger implements StonehengeLogger { 23 | private prefix: string 24 | public level: LogLevel = LogLevel.INFO 25 | 26 | constructor (prefix: string = '') { 27 | this.prefix = prefix 28 | } 29 | 30 | private log(level: LogLevel, message: (() => string) | string): void { 31 | if (level >= this.level) { 32 | const out = typeof message === 'function' ? message() : message 33 | const style = styles[level] 34 | const levelPrefix = levelPrefixes[level] 35 | console.log(`[${levelPrefix}] ${this.prefix} ${out}`) 36 | } 37 | } 38 | public debug (message: (() => string) | string): void { 39 | this.log(LogLevel.DEBUG, message) 40 | } 41 | public info (message: (() => string) | string): void { 42 | this.log(LogLevel.INFO, message) 43 | } 44 | public warn (message: (() => string) | string): void { 45 | this.log(LogLevel.WARN, message) 46 | } 47 | public error (message: (() => string) | string): void { 48 | this.log(LogLevel.ERROR, message) 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/lib/StatsRecorder.ts: -------------------------------------------------------------------------------- 1 | export const init = () => { 2 | if (!Memory.stats) { 3 | Memory.stats = {} 4 | } 5 | } 6 | 7 | export const record = () => { 8 | if (Memory.stats) { 9 | Memory.stats['gcl.progress'] = Game.gcl.progress 10 | Memory.stats['gcl.progressTotal'] = Game.gcl.progressTotal 11 | Memory.stats['gcl.level'] = Game.gcl.level 12 | Memory.stats['cpu.getUsed'] = Game.cpu.getUsed() 13 | Memory.stats['cpu.limit'] = Game.cpu.limit 14 | Memory.stats['cpu.bucket'] = Game.cpu.bucket 15 | Memory.stats['memory.size'] = RawMemory.get().length 16 | Memory.stats['market.credits'] = Game.market.credits 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import { Logger, LogLevel } from 'lib/Logger' 2 | import { ErrorMapper } from 'lib/ErrorMapper' 3 | import { BaseKernel } from 'os/BaseKernel' 4 | import { ProcessRegistry } from 'os/ProcessRegistry' 5 | import { ExtensionRegistry } from 'os/ExtensionRegistry' 6 | 7 | import { bundle as bin } from 'bin/index' 8 | 9 | import './globals' 10 | 11 | const log = new Logger('[main]') 12 | log.level = LogLevel.DEBUG 13 | 14 | log.info('Stonehenge (v0.0.3)') 15 | log.info('Smart colony management for the game Screeps. Written in TypeScript.') 16 | 17 | log.debug('Bootstrapping...') 18 | 19 | export const processRegistry = new ProcessRegistry() 20 | export const extensionRegistry = new ExtensionRegistry() 21 | 22 | const kernel = new BaseKernel(processRegistry, extensionRegistry) 23 | global.kernel = kernel 24 | 25 | extensionRegistry.register('BaseKernel', kernel) 26 | 27 | processRegistry.install(bin) 28 | 29 | log.debug('Kernel bootstrapped.') 30 | 31 | const kloop = () => { 32 | kernel.start() 33 | kernel.run() 34 | kernel.shutdown() 35 | } 36 | 37 | export const loop = ErrorMapper.wrapLoop(kloop) 38 | -------------------------------------------------------------------------------- /src/os/BaseKernel.ts: -------------------------------------------------------------------------------- 1 | import { ProcessRegistry } from 'os/ProcessRegistry' 2 | import { ExtensionRegistry } from 'os/ExtensionRegistry' 3 | import { Logger } from 'lib/Logger' 4 | import { ErrorMapper } from 'lib/ErrorMapper' 5 | import * as StatsRecorder from 'lib/StatsRecorder' 6 | 7 | export class BaseKernel implements StonehengeKernel { 8 | private currentId: number = 0 9 | private processCache: StonehengeProcessCache = {} 10 | private logger = new Logger('[Kernel]') 11 | 12 | constructor(private processRegistry: ProcessRegistry, private extensionRegistry: ExtensionRegistry) {} 13 | 14 | public get memory(): KernelMemory { 15 | Memory.kernel = Memory.kernel || { processTable: {}, processMemoryTable: {} } 16 | return Memory.kernel 17 | } 18 | 19 | public get processTable(): StonehengeProcessTable { 20 | this.memory.processTable = this.memory.processTable || {} 21 | return this.memory.processTable 22 | } 23 | 24 | public get processMemoryTable(): ProcessMemoryTable { 25 | this.memory.processMemoryTable = this.memory.processMemoryTable || {} 26 | return this.memory.processMemoryTable 27 | } 28 | 29 | public start(): void { 30 | StatsRecorder.init() 31 | } 32 | 33 | public run(): void { 34 | const pids = Object.keys(this.processTable) 35 | if (pids.length === 0) { 36 | const proc = this.startProcess('init', {}) 37 | if (proc) pids.push(proc.pid.toString()) 38 | } 39 | 40 | let runCount = 0 41 | for (const i of pids) { 42 | const cid = parseInt(i, 10) 43 | const pinfo = this.processTable[cid] 44 | 45 | if (pinfo.status !== ProcessStatus.RUNNING && pinfo.ended && pinfo.ended < Game.time - 100) { 46 | delete this.processTable[cid] 47 | } 48 | 49 | if (pinfo.wake && pinfo.wake > Game.time) continue 50 | if (pinfo.status !== ProcessStatus.RUNNING) continue 51 | 52 | runCount += 1 53 | try { 54 | const proc = this.getProcessById(cid) 55 | if (!proc) throw new Error(`Could not get process ${cid} ${pinfo.imageName}`) 56 | this.currentId = cid 57 | proc.run() 58 | this.currentId = 0 59 | } catch (e) { 60 | this.killProcess(cid) 61 | pinfo.status = ProcessStatus.DEAD 62 | pinfo.error = ErrorMapper.sourceMappedStackTrace(e.stack || e.toString()) 63 | this.logger.error(() => `[${cid}] ${pinfo.imageName} crashed\n${e.stack}`) 64 | } 65 | } 66 | 67 | if (runCount === 0) this.startProcess('init', {}) 68 | } 69 | 70 | public shutdown(): void { 71 | // Clear non-existing creep memory. 72 | for (const name in Memory.creeps) { 73 | if (!Game.creeps[name]) { 74 | delete Memory[name] 75 | } 76 | } 77 | 78 | // Record stats for grafana 79 | StatsRecorder.record() 80 | } 81 | 82 | public startProcess(imageName: string, startContext: T): ProcessStart | undefined { 83 | const id: number = this.getFreePid() 84 | 85 | const pinfo: ProcessInfo = { 86 | id, 87 | imageName, 88 | pid: this.currentId, 89 | status: ProcessStatus.RUNNING, 90 | started: Game.time 91 | } 92 | 93 | this.processTable[id] = pinfo 94 | this.processMemoryTable[id] = startContext 95 | 96 | const proc = this.createProcess(id, imageName, startContext) 97 | if (!proc) return undefined 98 | 99 | this.logger.debug(() => `startProcess ${imageName}`) 100 | return { pid: id, process: proc } 101 | } 102 | 103 | public getProcessById(pid: number): StonehengeProcess | undefined { 104 | if (!this.processTable[pid] || this.processTable[pid].status === ProcessStatus.DEAD) { 105 | return undefined 106 | } 107 | 108 | let proc = this.processCache[pid] as StonehengeProcess 109 | if (!proc) { 110 | proc = this.createProcess(pid, this.processTable[pid].imageName, this.processMemoryTable[pid] as T) 111 | } 112 | return proc 113 | } 114 | 115 | private getFreePid(): number { 116 | Memory.pidCounter = Memory.pidCounter || 0 117 | while (this.getProcessById(Memory.pidCounter)) { 118 | Memory.pidCounter += 1 119 | } 120 | return Memory.pidCounter 121 | } 122 | 123 | public killProcess(pid: number) { 124 | const pinfo = this.processTable[pid] 125 | if (!pinfo || !pinfo.pid) return 126 | 127 | this.logger.warn(() => `Killed process ${pid}: ${pinfo.imageName}`) 128 | pinfo.status = ProcessStatus.DEAD 129 | pinfo.stopped = Game.time 130 | 131 | for (const i in this.processTable) { 132 | const cid = parseInt(i, 10) 133 | const cinfo = this.processTable[cid] 134 | 135 | if (cinfo.pid === pinfo.id && cinfo.status !== ProcessStatus.DEAD) { 136 | this.killProcess(cid) 137 | } 138 | } 139 | } 140 | 141 | public setParent(id: number, parentId?: number): boolean { 142 | if (!this.processTable[id]) return false 143 | if (parentId) { 144 | this.processTable[id].pid = parentId 145 | return true 146 | } 147 | return false 148 | } 149 | 150 | private shouldContinueLoop(): boolean { 151 | let tickLimit = Game.cpu.tickLimit 152 | 153 | if (Game.cpu.bucket < 10000) tickLimit = Game.cpu.limit - 10 154 | 155 | return Game.cpu.getUsed() < tickLimit 156 | } 157 | 158 | private createProcess(id: number, imageName: string, startContext: T): StonehengeProcess { 159 | // tslint:disable-next-line:no-this-assignment 160 | const self = this 161 | this.logger.debug(() => `createProcess ${id}`) 162 | const pinfo = this.processTable[id] 163 | if (!pinfo || pinfo.status !== ProcessStatus.RUNNING) { 164 | throw new Error(`Process ${pinfo.id} ${pinfo.imageName} not running.`) 165 | } 166 | 167 | const context: StonehengeProcessContext = { 168 | id: pinfo.id, 169 | get pid() { 170 | return self.processTable[id] && self.processTable[id].pid || 0 171 | }, 172 | imageName: pinfo.imageName, 173 | log: new Logger(`[${pinfo.id}: ${pinfo.imageName}]`), 174 | get memory() { 175 | self.processMemoryTable[pinfo.id] = self.processMemoryTable[pinfo.id] || {} 176 | return self.processMemoryTable[pinfo.id] as T 177 | }, 178 | queryPosisInterface: self.extensionRegistry.getExtension.bind(self.extensionRegistry) 179 | } 180 | Object.freeze(context) 181 | 182 | const process = this.processRegistry.getNewProcess(pinfo.imageName, context) 183 | if (!process) throw new Error(`Could not create process ${pinfo.id} ${pinfo.imageName}`) 184 | 185 | this.processCache[id] = process 186 | return process 187 | } 188 | } 189 | -------------------------------------------------------------------------------- /src/os/ExtensionRegistry.ts: -------------------------------------------------------------------------------- 1 | import { Logger, LogLevel } from 'lib/Logger' 2 | 3 | const logger = new Logger('[ExtensionRegistry]') 4 | logger.level = LogLevel.DEBUG 5 | 6 | export class ExtensionRegistry implements StonehengeExtension { 7 | private registry: { [interfaceId: string]: StonehengeExtension } = {} 8 | 9 | constructor() { 10 | this.register('extensions/ExtensionRegistry', this) 11 | } 12 | 13 | public register(interfaceId: string, extension: StonehengeExtension): boolean { 14 | if (this.registry[interfaceId]) { 15 | logger.error(`Interface ${interfaceId} is already registered.`) 16 | return false 17 | } 18 | this.registry[interfaceId] = extension 19 | logger.debug(`Registered ${interfaceId}`) 20 | return true 21 | } 22 | 23 | public unregister(interfaceId: string): boolean { 24 | if (this.registry[interfaceId]) { 25 | logger.debug(`Unregistered ${interfaceId}`) 26 | delete this.registry[interfaceId] 27 | return true 28 | } else { 29 | logger.error(`Interface ${interfaceId} is not registered.`) 30 | return false 31 | } 32 | } 33 | 34 | public getExtension(interfaceId: string): StonehengeExtension | undefined { 35 | if (!this.registry[interfaceId]) return 36 | return this.registry[interfaceId] 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/os/ProcessRegistry.ts: -------------------------------------------------------------------------------- 1 | import { Logger, LogLevel } from 'lib/Logger' 2 | 3 | const logger = new Logger('[ProcessRegistry]') 4 | logger.level = LogLevel.DEBUG 5 | 6 | export class ProcessRegistry implements StonehengeProcessRegistry { 7 | private registry: { [imageName: string]: StonehengeProcessConstructor } = {} 8 | 9 | public register(imageName: string, constructor: StonehengeProcessConstructor): boolean { 10 | if (this.registry[imageName]) { 11 | logger.error(`Image already registered: ${imageName}`) 12 | return false 13 | } 14 | logger.debug(`Registered ${imageName}`) 15 | this.registry[imageName] = constructor 16 | return true 17 | } 18 | 19 | public install(bundle: StonehengeBundle) { 20 | bundle.install(this) 21 | } 22 | 23 | public getNewProcess(imageName: string, context: StonehengeProcessContext): StonehengeProcess | undefined { 24 | if (!this.registry[imageName]) { 25 | logger.error(`${imageName} is not registered.`) 26 | return undefined 27 | } 28 | logger.debug(`Created ${imageName}`) 29 | return new this.registry[imageName](context) as StonehengeProcess 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/os/ProcessStatus.ts: -------------------------------------------------------------------------------- 1 | export enum StonehengeProcessStatus { 2 | RUNNING = 'running', 3 | DEAD = 'dead', 4 | SLEEP = 'sleep' 5 | } 6 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "esnext", 4 | "moduleResolution": "node", 5 | "target": "es5", 6 | "outDir": "dist", 7 | "rootDir": "src", 8 | "baseUrl": "src", 9 | "sourceMap": true, 10 | "strict": true, 11 | "strictBindCallApply": false, 12 | "experimentalDecorators": true, 13 | "noImplicitReturns": true, 14 | "allowSyntheticDefaultImports": true, 15 | "allowUnreachableCode": false, 16 | "esModuleInterop": true 17 | }, 18 | "exclude": [ 19 | "node_modules" 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": [ 3 | "tslint-config-airbnb" 4 | ], 5 | "rules": { 6 | "interface-name": [false], 7 | "max-line-length": [false], 8 | "no-console": [false], 9 | "no-else-after-return": [false], 10 | "no-namespace": [true, "allow-declarations"], 11 | "semicolon": [true, "never"], 12 | "trailing-comma": [ 13 | true, 14 | { 15 | "multiline": "never", 16 | "singleline": "never" 17 | } 18 | ], 19 | "variable-name": [ 20 | true, 21 | "ban-keywords", 22 | "check-format", 23 | "allow-pascal-case", 24 | "allow-leading-underscore" 25 | ] 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@fimbul/bifrost@^0.17.0": 6 | version "0.17.0" 7 | resolved "https://registry.yarnpkg.com/@fimbul/bifrost/-/bifrost-0.17.0.tgz#f0383ba7e40992e3193dc87e2ddfde2ad62a9cf4" 8 | integrity sha512-gVTkJAOef5HtN6LPmrtt5fAUmBywwlgmObsU3FBhPoNeXPLaIl2zywXkJEtvvVLQnaFmtff3x+wIj5lHRCDE3Q== 9 | dependencies: 10 | "@fimbul/ymir" "^0.17.0" 11 | get-caller-file "^2.0.0" 12 | tslib "^1.8.1" 13 | tsutils "^3.5.0" 14 | 15 | "@fimbul/ymir@^0.17.0": 16 | version "0.17.0" 17 | resolved "https://registry.yarnpkg.com/@fimbul/ymir/-/ymir-0.17.0.tgz#4f28389b9f804d1cd202e11983af1743488b7815" 18 | integrity sha512-xMXM9KTXRLHLVS6dnX1JhHNEkmWHcAVCQ/4+DA1KKwC/AFnGHzu/7QfQttEPgw3xplT+ILf9e3i64jrFwB3JtA== 19 | dependencies: 20 | inversify "^5.0.0" 21 | reflect-metadata "^0.1.12" 22 | tslib "^1.8.1" 23 | 24 | "@types/estree@0.0.39": 25 | version "0.0.39" 26 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" 27 | integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== 28 | 29 | "@types/lodash@^3.10.1": 30 | version "3.10.2" 31 | resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-3.10.2.tgz#c1fbda1562ef5603c8192fe1fe65b017849d5873" 32 | integrity sha512-TmlYodTNhMzVzv3CK/9sXGzh31jWsRKHE3faczhVgYFCdXIRQRCOPD+0NDlR+SvJlCj914yP3q3aAupt53p2Ug== 33 | 34 | "@types/node@^11.9.5": 35 | version "11.9.6" 36 | resolved "https://registry.yarnpkg.com/@types/node/-/node-11.9.6.tgz#c632bbcc780a1349673a6e2e9b9dfa8c369d3c74" 37 | integrity sha512-4hS2K4gwo9/aXIcoYxCtHpdgd8XUeDmo1siRCAH3RziXB65JlPqUFMtfy9VPj+og7dp3w1TFjGwYga4e0m9GwA== 38 | 39 | "@types/node@^9.4.7": 40 | version "9.6.42" 41 | resolved "https://registry.yarnpkg.com/@types/node/-/node-9.6.42.tgz#96fd9c8cf15fbf2c16fe525fc2be97c49cdd0c2f" 42 | integrity sha512-SpeVQJFekfnEaZZO1yl4je/36upII36L7gOT4DBx51B1GeAB45mmDb3a5OBQB+ZeFxVVOP37r8Owsl940G/fBg== 43 | 44 | "@types/screeps@^2.5.3": 45 | version "2.5.3" 46 | resolved "https://registry.yarnpkg.com/@types/screeps/-/screeps-2.5.3.tgz#30d8f88c2b9b9476e942d15a5f14dc43f7ac07f3" 47 | integrity sha512-y4FLeWF0EapJtGMnhx8wT+3m8LvN99EzOjJ9vFsPihtsAtYqCd8iMcyJJeACwT1oKPduASzf2CwwgnA7TnjMLw== 48 | 49 | "Traveler@github:bonzaiferroni/Traveler.git#testing": 50 | version "0.0.1" 51 | resolved "https://codeload.github.com/bonzaiferroni/Traveler/tar.gz/c056cb4150347e91549d6bb8c4f008ce5e123c6f" 52 | 53 | acorn@^6.1.1: 54 | version "6.1.1" 55 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f" 56 | integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA== 57 | 58 | ansi-regex@^2.0.0: 59 | version "2.1.1" 60 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 61 | integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= 62 | 63 | ansi-regex@^3.0.0: 64 | version "3.0.0" 65 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 66 | integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= 67 | 68 | ansi-styles@^2.2.1: 69 | version "2.2.1" 70 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 71 | integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= 72 | 73 | ansi-styles@^3.2.1: 74 | version "3.2.1" 75 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 76 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 77 | dependencies: 78 | color-convert "^1.9.0" 79 | 80 | aproba@^1.0.3: 81 | version "1.2.0" 82 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" 83 | integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== 84 | 85 | are-we-there-yet@~1.1.2: 86 | version "1.1.5" 87 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" 88 | integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== 89 | dependencies: 90 | delegates "^1.0.0" 91 | readable-stream "^2.0.6" 92 | 93 | argparse@^1.0.7: 94 | version "1.0.10" 95 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 96 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 97 | dependencies: 98 | sprintf-js "~1.0.2" 99 | 100 | arr-diff@^2.0.0: 101 | version "2.0.0" 102 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" 103 | integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= 104 | dependencies: 105 | arr-flatten "^1.0.1" 106 | 107 | arr-diff@^4.0.0: 108 | version "4.0.0" 109 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" 110 | integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= 111 | 112 | arr-flatten@^1.0.1, arr-flatten@^1.1.0: 113 | version "1.1.0" 114 | resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" 115 | integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== 116 | 117 | arr-union@^3.1.0: 118 | version "3.1.0" 119 | resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" 120 | integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= 121 | 122 | array-unique@^0.2.1: 123 | version "0.2.1" 124 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" 125 | integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= 126 | 127 | array-unique@^0.3.2: 128 | version "0.3.2" 129 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" 130 | integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= 131 | 132 | arrify@^1.0.0: 133 | version "1.0.1" 134 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" 135 | integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= 136 | 137 | assign-symbols@^1.0.0: 138 | version "1.0.0" 139 | resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" 140 | integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= 141 | 142 | async-limiter@~1.0.0: 143 | version "1.0.0" 144 | resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" 145 | integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== 146 | 147 | atob@^2.1.1: 148 | version "2.1.2" 149 | resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" 150 | integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== 151 | 152 | axios@^0.18.0: 153 | version "0.18.0" 154 | resolved "https://registry.yarnpkg.com/axios/-/axios-0.18.0.tgz#32d53e4851efdc0a11993b6cd000789d70c05102" 155 | integrity sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI= 156 | dependencies: 157 | follow-redirects "^1.3.0" 158 | is-buffer "^1.1.5" 159 | 160 | babel-code-frame@^6.22.0: 161 | version "6.26.0" 162 | resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" 163 | integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= 164 | dependencies: 165 | chalk "^1.1.3" 166 | esutils "^2.0.2" 167 | js-tokens "^3.0.2" 168 | 169 | balanced-match@^1.0.0: 170 | version "1.0.0" 171 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 172 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 173 | 174 | base@^0.11.1: 175 | version "0.11.2" 176 | resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" 177 | integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== 178 | dependencies: 179 | cache-base "^1.0.1" 180 | class-utils "^0.3.5" 181 | component-emitter "^1.2.1" 182 | define-property "^1.0.0" 183 | isobject "^3.0.1" 184 | mixin-deep "^1.2.0" 185 | pascalcase "^0.1.1" 186 | 187 | bindings@~1.3.0: 188 | version "1.3.1" 189 | resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.3.1.tgz#21fc7c6d67c18516ec5aaa2815b145ff77b26ea5" 190 | integrity sha512-i47mqjF9UbjxJhxGf+pZ6kSxrnI3wBLlnGI2ArWJ4r0VrvDS7ZYXkprq/pLaBWYq4GM0r4zdHY+NNRqEMU7uew== 191 | 192 | bl@^1.0.0: 193 | version "1.2.2" 194 | resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" 195 | integrity sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA== 196 | dependencies: 197 | readable-stream "^2.3.5" 198 | safe-buffer "^5.1.1" 199 | 200 | bluebird@^3.5.0: 201 | version "3.5.3" 202 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" 203 | integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw== 204 | 205 | brace-expansion@^1.1.7: 206 | version "1.1.11" 207 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 208 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 209 | dependencies: 210 | balanced-match "^1.0.0" 211 | concat-map "0.0.1" 212 | 213 | braces@^1.8.2: 214 | version "1.8.5" 215 | resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" 216 | integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= 217 | dependencies: 218 | expand-range "^1.8.1" 219 | preserve "^0.2.0" 220 | repeat-element "^1.1.2" 221 | 222 | braces@^2.3.1: 223 | version "2.3.2" 224 | resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" 225 | integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== 226 | dependencies: 227 | arr-flatten "^1.1.0" 228 | array-unique "^0.3.2" 229 | extend-shallow "^2.0.1" 230 | fill-range "^4.0.0" 231 | isobject "^3.0.1" 232 | repeat-element "^1.1.2" 233 | snapdragon "^0.8.1" 234 | snapdragon-node "^2.0.1" 235 | split-string "^3.0.2" 236 | to-regex "^3.0.1" 237 | 238 | buffer-alloc-unsafe@^1.1.0: 239 | version "1.1.0" 240 | resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" 241 | integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== 242 | 243 | buffer-alloc@^1.2.0: 244 | version "1.2.0" 245 | resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" 246 | integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== 247 | dependencies: 248 | buffer-alloc-unsafe "^1.1.0" 249 | buffer-fill "^1.0.0" 250 | 251 | buffer-fill@^1.0.0: 252 | version "1.0.0" 253 | resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" 254 | integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= 255 | 256 | buffer-from@^1.0.0, buffer-from@^1.1.0: 257 | version "1.1.1" 258 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 259 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== 260 | 261 | bufferutil@^3.0.5: 262 | version "3.0.5" 263 | resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-3.0.5.tgz#8abfc3b6da7aca6a13268b3f2482f0c7aa05fffb" 264 | integrity sha512-0fUEthLqfCkYspEuP0vmiAe+PsXslE+AlILb2rmS9I4tAdm3SmpCI69M66zQL20GQEszdbXyVN6q+cpG/yhYlg== 265 | dependencies: 266 | bindings "~1.3.0" 267 | nan "~2.10.0" 268 | prebuild-install "~4.0.0" 269 | 270 | builtin-modules@^1.1.1: 271 | version "1.1.1" 272 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" 273 | integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= 274 | 275 | builtin-modules@^3.0.0: 276 | version "3.0.0" 277 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.0.0.tgz#1e587d44b006620d90286cc7a9238bbc6129cab1" 278 | integrity sha512-hMIeU4K2ilbXV6Uv93ZZ0Avg/M91RaKXucQ+4me2Do1txxBDyDZWCBa5bJSLqoNTRpXTLwEzIk1KmloenDDjhg== 279 | 280 | cache-base@^1.0.1: 281 | version "1.0.1" 282 | resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" 283 | integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== 284 | dependencies: 285 | collection-visit "^1.0.0" 286 | component-emitter "^1.2.1" 287 | get-value "^2.0.6" 288 | has-value "^1.0.0" 289 | isobject "^3.0.1" 290 | set-value "^2.0.0" 291 | to-object-path "^0.3.0" 292 | union-value "^1.0.0" 293 | unset-value "^1.0.0" 294 | 295 | chalk@^1.1.3: 296 | version "1.1.3" 297 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 298 | integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= 299 | dependencies: 300 | ansi-styles "^2.2.1" 301 | escape-string-regexp "^1.0.2" 302 | has-ansi "^2.0.0" 303 | strip-ansi "^3.0.0" 304 | supports-color "^2.0.0" 305 | 306 | chalk@^2.3.0: 307 | version "2.4.2" 308 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 309 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 310 | dependencies: 311 | ansi-styles "^3.2.1" 312 | escape-string-regexp "^1.0.5" 313 | supports-color "^5.3.0" 314 | 315 | chownr@^1.0.1: 316 | version "1.1.1" 317 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" 318 | integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== 319 | 320 | class-utils@^0.3.5: 321 | version "0.3.6" 322 | resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" 323 | integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== 324 | dependencies: 325 | arr-union "^3.1.0" 326 | define-property "^0.2.5" 327 | isobject "^3.0.0" 328 | static-extend "^0.1.1" 329 | 330 | code-point-at@^1.0.0: 331 | version "1.1.0" 332 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 333 | integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= 334 | 335 | collection-visit@^1.0.0: 336 | version "1.0.0" 337 | resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" 338 | integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= 339 | dependencies: 340 | map-visit "^1.0.0" 341 | object-visit "^1.0.0" 342 | 343 | color-convert@^1.9.0: 344 | version "1.9.3" 345 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 346 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 347 | dependencies: 348 | color-name "1.1.3" 349 | 350 | color-name@1.1.3: 351 | version "1.1.3" 352 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 353 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 354 | 355 | commander@^2.12.1, commander@^2.15.1: 356 | version "2.19.0" 357 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" 358 | integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== 359 | 360 | component-emitter@^1.2.1: 361 | version "1.2.1" 362 | resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" 363 | integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= 364 | 365 | concat-map@0.0.1: 366 | version "0.0.1" 367 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 368 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 369 | 370 | console-control-strings@^1.0.0, console-control-strings@~1.1.0: 371 | version "1.1.0" 372 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" 373 | integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= 374 | 375 | copy-descriptor@^0.1.0: 376 | version "0.1.1" 377 | resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" 378 | integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= 379 | 380 | core-util-is@~1.0.0: 381 | version "1.0.2" 382 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 383 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 384 | 385 | cross-env@^5.2.0: 386 | version "5.2.0" 387 | resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.2.0.tgz#6ecd4c015d5773e614039ee529076669b9d126f2" 388 | integrity sha512-jtdNFfFW1hB7sMhr/H6rW1Z45LFqyI431m3qU6bFXcQ3Eh7LtBuG3h74o7ohHZ3crrRkkqHlo4jYHFPcjroANg== 389 | dependencies: 390 | cross-spawn "^6.0.5" 391 | is-windows "^1.0.0" 392 | 393 | cross-spawn@^6.0.5: 394 | version "6.0.5" 395 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" 396 | integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== 397 | dependencies: 398 | nice-try "^1.0.4" 399 | path-key "^2.0.1" 400 | semver "^5.5.0" 401 | shebang-command "^1.2.0" 402 | which "^1.2.9" 403 | 404 | debug@^2.2.0, debug@^2.3.3: 405 | version "2.6.9" 406 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 407 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 408 | dependencies: 409 | ms "2.0.0" 410 | 411 | debug@^3.2.6: 412 | version "3.2.6" 413 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" 414 | integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== 415 | dependencies: 416 | ms "^2.1.1" 417 | 418 | decode-uri-component@^0.2.0: 419 | version "0.2.0" 420 | resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" 421 | integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= 422 | 423 | decompress-response@^3.3.0: 424 | version "3.3.0" 425 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" 426 | integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= 427 | dependencies: 428 | mimic-response "^1.0.0" 429 | 430 | deep-extend@^0.6.0: 431 | version "0.6.0" 432 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" 433 | integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== 434 | 435 | define-property@^0.2.5: 436 | version "0.2.5" 437 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" 438 | integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= 439 | dependencies: 440 | is-descriptor "^0.1.0" 441 | 442 | define-property@^1.0.0: 443 | version "1.0.0" 444 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" 445 | integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= 446 | dependencies: 447 | is-descriptor "^1.0.0" 448 | 449 | define-property@^2.0.2: 450 | version "2.0.2" 451 | resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" 452 | integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== 453 | dependencies: 454 | is-descriptor "^1.0.2" 455 | isobject "^3.0.1" 456 | 457 | delegates@^1.0.0: 458 | version "1.0.0" 459 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" 460 | integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= 461 | 462 | detect-libc@^1.0.3: 463 | version "1.0.3" 464 | resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" 465 | integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= 466 | 467 | diff@^3.1.0, diff@^3.2.0: 468 | version "3.5.0" 469 | resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" 470 | integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== 471 | 472 | doctrine@0.7.2: 473 | version "0.7.2" 474 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-0.7.2.tgz#7cb860359ba3be90e040b26b729ce4bfa654c523" 475 | integrity sha1-fLhgNZujvpDgQLJrcpzkv6ZUxSM= 476 | dependencies: 477 | esutils "^1.1.6" 478 | isarray "0.0.1" 479 | 480 | end-of-stream@^1.0.0, end-of-stream@^1.1.0: 481 | version "1.4.1" 482 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" 483 | integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== 484 | dependencies: 485 | once "^1.4.0" 486 | 487 | escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: 488 | version "1.0.5" 489 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 490 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 491 | 492 | esprima@^4.0.0: 493 | version "4.0.1" 494 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 495 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 496 | 497 | estree-walker@^0.5.2: 498 | version "0.5.2" 499 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.5.2.tgz#d3850be7529c9580d815600b53126515e146dd39" 500 | integrity sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig== 501 | 502 | estree-walker@^0.6.0: 503 | version "0.6.0" 504 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.0.tgz#5d865327c44a618dde5699f763891ae31f257dae" 505 | integrity sha512-peq1RfVAVzr3PU/jL31RaOjUKLoZJpObQWJJ+LgfcxDUifyLZ1RjPQZTl0pzj2uJ45b7A7XpyppXvxdEqzo4rw== 506 | 507 | esutils@^1.1.6: 508 | version "1.1.6" 509 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-1.1.6.tgz#c01ccaa9ae4b897c6d0c3e210ae52f3c7a844375" 510 | integrity sha1-wBzKqa5LiXxtDD4hCuUvPHqEQ3U= 511 | 512 | esutils@^2.0.2: 513 | version "2.0.2" 514 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 515 | integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= 516 | 517 | expand-brackets@^0.1.4: 518 | version "0.1.5" 519 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" 520 | integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= 521 | dependencies: 522 | is-posix-bracket "^0.1.0" 523 | 524 | expand-brackets@^2.1.4: 525 | version "2.1.4" 526 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" 527 | integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= 528 | dependencies: 529 | debug "^2.3.3" 530 | define-property "^0.2.5" 531 | extend-shallow "^2.0.1" 532 | posix-character-classes "^0.1.0" 533 | regex-not "^1.0.0" 534 | snapdragon "^0.8.1" 535 | to-regex "^3.0.1" 536 | 537 | expand-range@^1.8.1: 538 | version "1.8.2" 539 | resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" 540 | integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= 541 | dependencies: 542 | fill-range "^2.1.0" 543 | 544 | expand-template@^1.0.2: 545 | version "1.1.1" 546 | resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-1.1.1.tgz#981f188c0c3a87d2e28f559bc541426ff94f21dd" 547 | integrity sha512-cebqLtV8KOZfw0UI8TEFWxtczxxC1jvyUvx6H4fyp1K1FN7A4Q+uggVUlOsI1K8AGU0rwOGqP8nCapdrw8CYQg== 548 | 549 | extend-shallow@^2.0.1: 550 | version "2.0.1" 551 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" 552 | integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= 553 | dependencies: 554 | is-extendable "^0.1.0" 555 | 556 | extend-shallow@^3.0.0, extend-shallow@^3.0.2: 557 | version "3.0.2" 558 | resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" 559 | integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= 560 | dependencies: 561 | assign-symbols "^1.0.0" 562 | is-extendable "^1.0.1" 563 | 564 | extglob@^0.3.1: 565 | version "0.3.2" 566 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" 567 | integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= 568 | dependencies: 569 | is-extglob "^1.0.0" 570 | 571 | extglob@^2.0.4: 572 | version "2.0.4" 573 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" 574 | integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== 575 | dependencies: 576 | array-unique "^0.3.2" 577 | define-property "^1.0.0" 578 | expand-brackets "^2.1.4" 579 | extend-shallow "^2.0.1" 580 | fragment-cache "^0.2.1" 581 | regex-not "^1.0.0" 582 | snapdragon "^0.8.1" 583 | to-regex "^3.0.1" 584 | 585 | filename-regex@^2.0.0: 586 | version "2.0.1" 587 | resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" 588 | integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= 589 | 590 | fill-range@^2.1.0: 591 | version "2.2.4" 592 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" 593 | integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== 594 | dependencies: 595 | is-number "^2.1.0" 596 | isobject "^2.0.0" 597 | randomatic "^3.0.0" 598 | repeat-element "^1.1.2" 599 | repeat-string "^1.5.2" 600 | 601 | fill-range@^4.0.0: 602 | version "4.0.0" 603 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" 604 | integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= 605 | dependencies: 606 | extend-shallow "^2.0.1" 607 | is-number "^3.0.0" 608 | repeat-string "^1.6.1" 609 | to-regex-range "^2.1.0" 610 | 611 | follow-redirects@^1.3.0: 612 | version "1.7.0" 613 | resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.7.0.tgz#489ebc198dc0e7f64167bd23b03c4c19b5784c76" 614 | integrity sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ== 615 | dependencies: 616 | debug "^3.2.6" 617 | 618 | for-in@^1.0.1, for-in@^1.0.2: 619 | version "1.0.2" 620 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" 621 | integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= 622 | 623 | for-own@^0.1.4: 624 | version "0.1.5" 625 | resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" 626 | integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= 627 | dependencies: 628 | for-in "^1.0.1" 629 | 630 | fragment-cache@^0.2.1: 631 | version "0.2.1" 632 | resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" 633 | integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= 634 | dependencies: 635 | map-cache "^0.2.2" 636 | 637 | fs-constants@^1.0.0: 638 | version "1.0.0" 639 | resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" 640 | integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== 641 | 642 | fs-extra@7.0.1: 643 | version "7.0.1" 644 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" 645 | integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== 646 | dependencies: 647 | graceful-fs "^4.1.2" 648 | jsonfile "^4.0.0" 649 | universalify "^0.1.0" 650 | 651 | fs.realpath@^1.0.0: 652 | version "1.0.0" 653 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 654 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 655 | 656 | gauge@~2.7.3: 657 | version "2.7.4" 658 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" 659 | integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= 660 | dependencies: 661 | aproba "^1.0.3" 662 | console-control-strings "^1.0.0" 663 | has-unicode "^2.0.0" 664 | object-assign "^4.1.0" 665 | signal-exit "^3.0.0" 666 | string-width "^1.0.1" 667 | strip-ansi "^3.0.1" 668 | wide-align "^1.1.0" 669 | 670 | get-caller-file@^2.0.0: 671 | version "2.0.1" 672 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.1.tgz#25835260d3a2b9665fcdbb08cb039a7bbf7011c0" 673 | integrity sha512-SpOZHfz845AH0wJYVuZk2jWDqFmu7Xubsx+ldIpwzy5pDUpu7OJHK7QYNSA2NPlDSKQwM1GFaAkciOWjjW92Sg== 674 | 675 | get-value@^2.0.3, get-value@^2.0.6: 676 | version "2.0.6" 677 | resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" 678 | integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= 679 | 680 | git-rev-sync@^1.9.1: 681 | version "1.12.0" 682 | resolved "https://registry.yarnpkg.com/git-rev-sync/-/git-rev-sync-1.12.0.tgz#4468406c7e6c3ba4cf4587999e1adb28d9d1af55" 683 | integrity sha1-RGhAbH5sO6TPRYeZnhrbKNnRr1U= 684 | dependencies: 685 | escape-string-regexp "1.0.5" 686 | graceful-fs "4.1.11" 687 | shelljs "0.7.7" 688 | 689 | github-from-package@0.0.0: 690 | version "0.0.0" 691 | resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" 692 | integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4= 693 | 694 | glob-base@^0.3.0: 695 | version "0.3.0" 696 | resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" 697 | integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= 698 | dependencies: 699 | glob-parent "^2.0.0" 700 | is-glob "^2.0.0" 701 | 702 | glob-parent@^2.0.0: 703 | version "2.0.0" 704 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" 705 | integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= 706 | dependencies: 707 | is-glob "^2.0.0" 708 | 709 | glob@^7.0.0, glob@^7.0.5, glob@^7.1.1, glob@^7.1.3: 710 | version "7.1.3" 711 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" 712 | integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== 713 | dependencies: 714 | fs.realpath "^1.0.0" 715 | inflight "^1.0.4" 716 | inherits "2" 717 | minimatch "^3.0.4" 718 | once "^1.3.0" 719 | path-is-absolute "^1.0.0" 720 | 721 | graceful-fs@4.1.11: 722 | version "4.1.11" 723 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" 724 | integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg= 725 | 726 | graceful-fs@^4.1.2, graceful-fs@^4.1.6: 727 | version "4.1.15" 728 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" 729 | integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== 730 | 731 | has-ansi@^2.0.0: 732 | version "2.0.0" 733 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 734 | integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= 735 | dependencies: 736 | ansi-regex "^2.0.0" 737 | 738 | has-flag@^3.0.0: 739 | version "3.0.0" 740 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 741 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 742 | 743 | has-unicode@^2.0.0: 744 | version "2.0.1" 745 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" 746 | integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= 747 | 748 | has-value@^0.3.1: 749 | version "0.3.1" 750 | resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" 751 | integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= 752 | dependencies: 753 | get-value "^2.0.3" 754 | has-values "^0.1.4" 755 | isobject "^2.0.0" 756 | 757 | has-value@^1.0.0: 758 | version "1.0.0" 759 | resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" 760 | integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= 761 | dependencies: 762 | get-value "^2.0.6" 763 | has-values "^1.0.0" 764 | isobject "^3.0.0" 765 | 766 | has-values@^0.1.4: 767 | version "0.1.4" 768 | resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" 769 | integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= 770 | 771 | has-values@^1.0.0: 772 | version "1.0.0" 773 | resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" 774 | integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= 775 | dependencies: 776 | is-number "^3.0.0" 777 | kind-of "^4.0.0" 778 | 779 | inflight@^1.0.4: 780 | version "1.0.6" 781 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 782 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 783 | dependencies: 784 | once "^1.3.0" 785 | wrappy "1" 786 | 787 | inherits@2, inherits@~2.0.3: 788 | version "2.0.3" 789 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 790 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 791 | 792 | ini@~1.3.0: 793 | version "1.3.5" 794 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" 795 | integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== 796 | 797 | interpret@^1.0.0: 798 | version "1.2.0" 799 | resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" 800 | integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== 801 | 802 | inversify@^5.0.0: 803 | version "5.0.1" 804 | resolved "https://registry.yarnpkg.com/inversify/-/inversify-5.0.1.tgz#500d709b1434896ce5a0d58915c4a4210e34fb6e" 805 | integrity sha512-Ieh06s48WnEYGcqHepdsJUIJUXpwH5o5vodAX+DK2JA/gjy4EbEcQZxw+uFfzysmKjiLXGYwNG3qDZsKVMcINQ== 806 | 807 | is-accessor-descriptor@^0.1.6: 808 | version "0.1.6" 809 | resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" 810 | integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= 811 | dependencies: 812 | kind-of "^3.0.2" 813 | 814 | is-accessor-descriptor@^1.0.0: 815 | version "1.0.0" 816 | resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" 817 | integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== 818 | dependencies: 819 | kind-of "^6.0.0" 820 | 821 | is-buffer@^1.1.5: 822 | version "1.1.6" 823 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" 824 | integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== 825 | 826 | is-data-descriptor@^0.1.4: 827 | version "0.1.4" 828 | resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" 829 | integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= 830 | dependencies: 831 | kind-of "^3.0.2" 832 | 833 | is-data-descriptor@^1.0.0: 834 | version "1.0.0" 835 | resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" 836 | integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== 837 | dependencies: 838 | kind-of "^6.0.0" 839 | 840 | is-descriptor@^0.1.0: 841 | version "0.1.6" 842 | resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" 843 | integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== 844 | dependencies: 845 | is-accessor-descriptor "^0.1.6" 846 | is-data-descriptor "^0.1.4" 847 | kind-of "^5.0.0" 848 | 849 | is-descriptor@^1.0.0, is-descriptor@^1.0.2: 850 | version "1.0.2" 851 | resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" 852 | integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== 853 | dependencies: 854 | is-accessor-descriptor "^1.0.0" 855 | is-data-descriptor "^1.0.0" 856 | kind-of "^6.0.2" 857 | 858 | is-dotfile@^1.0.0: 859 | version "1.0.3" 860 | resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" 861 | integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= 862 | 863 | is-equal-shallow@^0.1.3: 864 | version "0.1.3" 865 | resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" 866 | integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= 867 | dependencies: 868 | is-primitive "^2.0.0" 869 | 870 | is-extendable@^0.1.0, is-extendable@^0.1.1: 871 | version "0.1.1" 872 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" 873 | integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= 874 | 875 | is-extendable@^1.0.1: 876 | version "1.0.1" 877 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" 878 | integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== 879 | dependencies: 880 | is-plain-object "^2.0.4" 881 | 882 | is-extglob@^1.0.0: 883 | version "1.0.0" 884 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" 885 | integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= 886 | 887 | is-fullwidth-code-point@^1.0.0: 888 | version "1.0.0" 889 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 890 | integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= 891 | dependencies: 892 | number-is-nan "^1.0.0" 893 | 894 | is-fullwidth-code-point@^2.0.0: 895 | version "2.0.0" 896 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 897 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 898 | 899 | is-glob@^2.0.0, is-glob@^2.0.1: 900 | version "2.0.1" 901 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" 902 | integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= 903 | dependencies: 904 | is-extglob "^1.0.0" 905 | 906 | is-module@^1.0.0: 907 | version "1.0.0" 908 | resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" 909 | integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= 910 | 911 | is-number@^2.1.0: 912 | version "2.1.0" 913 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" 914 | integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= 915 | dependencies: 916 | kind-of "^3.0.2" 917 | 918 | is-number@^3.0.0: 919 | version "3.0.0" 920 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" 921 | integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= 922 | dependencies: 923 | kind-of "^3.0.2" 924 | 925 | is-number@^4.0.0: 926 | version "4.0.0" 927 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" 928 | integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== 929 | 930 | is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: 931 | version "2.0.4" 932 | resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" 933 | integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== 934 | dependencies: 935 | isobject "^3.0.1" 936 | 937 | is-posix-bracket@^0.1.0: 938 | version "0.1.1" 939 | resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" 940 | integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= 941 | 942 | is-primitive@^2.0.0: 943 | version "2.0.0" 944 | resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" 945 | integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= 946 | 947 | is-windows@^1.0.0, is-windows@^1.0.2: 948 | version "1.0.2" 949 | resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" 950 | integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== 951 | 952 | isarray@0.0.1: 953 | version "0.0.1" 954 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" 955 | integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= 956 | 957 | isarray@1.0.0, isarray@~1.0.0: 958 | version "1.0.0" 959 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 960 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 961 | 962 | isexe@^2.0.0: 963 | version "2.0.0" 964 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 965 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 966 | 967 | isobject@^2.0.0: 968 | version "2.1.0" 969 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" 970 | integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= 971 | dependencies: 972 | isarray "1.0.0" 973 | 974 | isobject@^3.0.0, isobject@^3.0.1: 975 | version "3.0.1" 976 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" 977 | integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= 978 | 979 | js-tokens@^3.0.2: 980 | version "3.0.2" 981 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" 982 | integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= 983 | 984 | js-yaml@^3.7.0: 985 | version "3.12.2" 986 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.2.tgz#ef1d067c5a9d9cb65bd72f285b5d8105c77f14fc" 987 | integrity sha512-QHn/Lh/7HhZ/Twc7vJYQTkjuCa0kaCcDcjK5Zlk2rvnUpy7DxMJ23+Jc2dcyvltwQVg1nygAVlB2oRDFHoRS5Q== 988 | dependencies: 989 | argparse "^1.0.7" 990 | esprima "^4.0.0" 991 | 992 | jsonfile@^4.0.0: 993 | version "4.0.0" 994 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" 995 | integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= 996 | optionalDependencies: 997 | graceful-fs "^4.1.6" 998 | 999 | kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: 1000 | version "3.2.2" 1001 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" 1002 | integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= 1003 | dependencies: 1004 | is-buffer "^1.1.5" 1005 | 1006 | kind-of@^4.0.0: 1007 | version "4.0.0" 1008 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" 1009 | integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= 1010 | dependencies: 1011 | is-buffer "^1.1.5" 1012 | 1013 | kind-of@^5.0.0: 1014 | version "5.1.0" 1015 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" 1016 | integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== 1017 | 1018 | kind-of@^6.0.0, kind-of@^6.0.2: 1019 | version "6.0.2" 1020 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" 1021 | integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== 1022 | 1023 | magic-string@^0.25.1: 1024 | version "0.25.2" 1025 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.2.tgz#139c3a729515ec55e96e69e82a11fe890a293ad9" 1026 | integrity sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg== 1027 | dependencies: 1028 | sourcemap-codec "^1.4.4" 1029 | 1030 | make-error@^1.1.1: 1031 | version "1.3.5" 1032 | resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" 1033 | integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g== 1034 | 1035 | map-cache@^0.2.2: 1036 | version "0.2.2" 1037 | resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" 1038 | integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= 1039 | 1040 | map-visit@^1.0.0: 1041 | version "1.0.0" 1042 | resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" 1043 | integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= 1044 | dependencies: 1045 | object-visit "^1.0.0" 1046 | 1047 | math-random@^1.0.1: 1048 | version "1.0.4" 1049 | resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" 1050 | integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== 1051 | 1052 | micromatch@^2.3.11: 1053 | version "2.3.11" 1054 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" 1055 | integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= 1056 | dependencies: 1057 | arr-diff "^2.0.0" 1058 | array-unique "^0.2.1" 1059 | braces "^1.8.2" 1060 | expand-brackets "^0.1.4" 1061 | extglob "^0.3.1" 1062 | filename-regex "^2.0.0" 1063 | is-extglob "^1.0.0" 1064 | is-glob "^2.0.1" 1065 | kind-of "^3.0.2" 1066 | normalize-path "^2.0.1" 1067 | object.omit "^2.0.0" 1068 | parse-glob "^3.0.4" 1069 | regex-cache "^0.4.2" 1070 | 1071 | micromatch@^3.1.10: 1072 | version "3.1.10" 1073 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" 1074 | integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== 1075 | dependencies: 1076 | arr-diff "^4.0.0" 1077 | array-unique "^0.3.2" 1078 | braces "^2.3.1" 1079 | define-property "^2.0.2" 1080 | extend-shallow "^3.0.2" 1081 | extglob "^2.0.4" 1082 | fragment-cache "^0.2.1" 1083 | kind-of "^6.0.2" 1084 | nanomatch "^1.2.9" 1085 | object.pick "^1.3.0" 1086 | regex-not "^1.0.0" 1087 | snapdragon "^0.8.1" 1088 | to-regex "^3.0.2" 1089 | 1090 | mimic-response@^1.0.0: 1091 | version "1.0.1" 1092 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" 1093 | integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== 1094 | 1095 | minimatch@^3.0.2, minimatch@^3.0.4: 1096 | version "3.0.4" 1097 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1098 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 1099 | dependencies: 1100 | brace-expansion "^1.1.7" 1101 | 1102 | minimist@0.0.8: 1103 | version "0.0.8" 1104 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 1105 | integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= 1106 | 1107 | minimist@^1.2.0: 1108 | version "1.2.0" 1109 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 1110 | integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= 1111 | 1112 | mixin-deep@^1.2.0: 1113 | version "1.3.1" 1114 | resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" 1115 | integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== 1116 | dependencies: 1117 | for-in "^1.0.2" 1118 | is-extendable "^1.0.1" 1119 | 1120 | mkdirp@^0.5.1: 1121 | version "0.5.1" 1122 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 1123 | integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= 1124 | dependencies: 1125 | minimist "0.0.8" 1126 | 1127 | ms@2.0.0: 1128 | version "2.0.0" 1129 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1130 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 1131 | 1132 | ms@^2.1.1: 1133 | version "2.1.1" 1134 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" 1135 | integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== 1136 | 1137 | nan@~2.10.0: 1138 | version "2.10.0" 1139 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" 1140 | integrity sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA== 1141 | 1142 | nanomatch@^1.2.9: 1143 | version "1.2.13" 1144 | resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" 1145 | integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== 1146 | dependencies: 1147 | arr-diff "^4.0.0" 1148 | array-unique "^0.3.2" 1149 | define-property "^2.0.2" 1150 | extend-shallow "^3.0.2" 1151 | fragment-cache "^0.2.1" 1152 | is-windows "^1.0.2" 1153 | kind-of "^6.0.2" 1154 | object.pick "^1.3.0" 1155 | regex-not "^1.0.0" 1156 | snapdragon "^0.8.1" 1157 | to-regex "^3.0.1" 1158 | 1159 | nice-try@^1.0.4: 1160 | version "1.0.5" 1161 | resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" 1162 | integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== 1163 | 1164 | node-abi@^2.2.0: 1165 | version "2.7.1" 1166 | resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.7.1.tgz#a8997ae91176a5fbaa455b194976e32683cda643" 1167 | integrity sha512-OV8Bq1OrPh6z+Y4dqwo05HqrRL9YNF7QVMRfq1/pguwKLG+q9UB/Lk0x5qXjO23JjJg+/jqCHSTaG1P3tfKfuw== 1168 | dependencies: 1169 | semver "^5.4.1" 1170 | 1171 | noop-logger@^0.1.1: 1172 | version "0.1.1" 1173 | resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2" 1174 | integrity sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI= 1175 | 1176 | normalize-path@^2.0.1: 1177 | version "2.1.1" 1178 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" 1179 | integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= 1180 | dependencies: 1181 | remove-trailing-separator "^1.0.1" 1182 | 1183 | npmlog@^4.0.1: 1184 | version "4.1.2" 1185 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" 1186 | integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== 1187 | dependencies: 1188 | are-we-there-yet "~1.1.2" 1189 | console-control-strings "~1.1.0" 1190 | gauge "~2.7.3" 1191 | set-blocking "~2.0.0" 1192 | 1193 | number-is-nan@^1.0.0: 1194 | version "1.0.1" 1195 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 1196 | integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= 1197 | 1198 | object-assign@^4.1.0: 1199 | version "4.1.1" 1200 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1201 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 1202 | 1203 | object-copy@^0.1.0: 1204 | version "0.1.0" 1205 | resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" 1206 | integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= 1207 | dependencies: 1208 | copy-descriptor "^0.1.0" 1209 | define-property "^0.2.5" 1210 | kind-of "^3.0.3" 1211 | 1212 | object-visit@^1.0.0: 1213 | version "1.0.1" 1214 | resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" 1215 | integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= 1216 | dependencies: 1217 | isobject "^3.0.0" 1218 | 1219 | object.omit@^2.0.0: 1220 | version "2.0.1" 1221 | resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" 1222 | integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= 1223 | dependencies: 1224 | for-own "^0.1.4" 1225 | is-extendable "^0.1.1" 1226 | 1227 | object.pick@^1.3.0: 1228 | version "1.3.0" 1229 | resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" 1230 | integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= 1231 | dependencies: 1232 | isobject "^3.0.1" 1233 | 1234 | once@^1.3.0, once@^1.3.1, once@^1.4.0: 1235 | version "1.4.0" 1236 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1237 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1238 | dependencies: 1239 | wrappy "1" 1240 | 1241 | os-homedir@^1.0.1: 1242 | version "1.0.2" 1243 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 1244 | integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= 1245 | 1246 | parse-glob@^3.0.4: 1247 | version "3.0.4" 1248 | resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" 1249 | integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= 1250 | dependencies: 1251 | glob-base "^0.3.0" 1252 | is-dotfile "^1.0.0" 1253 | is-extglob "^1.0.0" 1254 | is-glob "^2.0.0" 1255 | 1256 | pascalcase@^0.1.1: 1257 | version "0.1.1" 1258 | resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" 1259 | integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= 1260 | 1261 | path-is-absolute@^1.0.0: 1262 | version "1.0.1" 1263 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1264 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1265 | 1266 | path-key@^2.0.1: 1267 | version "2.0.1" 1268 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" 1269 | integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= 1270 | 1271 | path-parse@^1.0.5, path-parse@^1.0.6: 1272 | version "1.0.6" 1273 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 1274 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== 1275 | 1276 | posix-character-classes@^0.1.0: 1277 | version "0.1.1" 1278 | resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" 1279 | integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= 1280 | 1281 | prebuild-install@~4.0.0: 1282 | version "4.0.0" 1283 | resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-4.0.0.tgz#206ce8106ce5efa4b6cf062fc8a0a7d93c17f3a8" 1284 | integrity sha512-7tayxeYboJX0RbVzdnKyGl2vhQRWr6qfClEXDhOkXjuaOKCw2q8aiuFhONRYVsG/czia7KhpykIlI2S2VaPunA== 1285 | dependencies: 1286 | detect-libc "^1.0.3" 1287 | expand-template "^1.0.2" 1288 | github-from-package "0.0.0" 1289 | minimist "^1.2.0" 1290 | mkdirp "^0.5.1" 1291 | node-abi "^2.2.0" 1292 | noop-logger "^0.1.1" 1293 | npmlog "^4.0.1" 1294 | os-homedir "^1.0.1" 1295 | pump "^2.0.1" 1296 | rc "^1.1.6" 1297 | simple-get "^2.7.0" 1298 | tar-fs "^1.13.0" 1299 | tunnel-agent "^0.6.0" 1300 | which-pm-runs "^1.0.0" 1301 | 1302 | preserve@^0.2.0: 1303 | version "0.2.0" 1304 | resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" 1305 | integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= 1306 | 1307 | process-nextick-args@~2.0.0: 1308 | version "2.0.0" 1309 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" 1310 | integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== 1311 | 1312 | pump@^1.0.0: 1313 | version "1.0.3" 1314 | resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.3.tgz#5dfe8311c33bbf6fc18261f9f34702c47c08a954" 1315 | integrity sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw== 1316 | dependencies: 1317 | end-of-stream "^1.1.0" 1318 | once "^1.3.1" 1319 | 1320 | pump@^2.0.1: 1321 | version "2.0.1" 1322 | resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" 1323 | integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== 1324 | dependencies: 1325 | end-of-stream "^1.1.0" 1326 | once "^1.3.1" 1327 | 1328 | randomatic@^3.0.0: 1329 | version "3.1.1" 1330 | resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" 1331 | integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== 1332 | dependencies: 1333 | is-number "^4.0.0" 1334 | kind-of "^6.0.0" 1335 | math-random "^1.0.1" 1336 | 1337 | rc@^1.1.6: 1338 | version "1.2.8" 1339 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" 1340 | integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== 1341 | dependencies: 1342 | deep-extend "^0.6.0" 1343 | ini "~1.3.0" 1344 | minimist "^1.2.0" 1345 | strip-json-comments "~2.0.1" 1346 | 1347 | readable-stream@^2.0.6, readable-stream@^2.3.0, readable-stream@^2.3.5: 1348 | version "2.3.6" 1349 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" 1350 | integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== 1351 | dependencies: 1352 | core-util-is "~1.0.0" 1353 | inherits "~2.0.3" 1354 | isarray "~1.0.0" 1355 | process-nextick-args "~2.0.0" 1356 | safe-buffer "~5.1.1" 1357 | string_decoder "~1.1.1" 1358 | util-deprecate "~1.0.1" 1359 | 1360 | rechoir@^0.6.2: 1361 | version "0.6.2" 1362 | resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" 1363 | integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= 1364 | dependencies: 1365 | resolve "^1.1.6" 1366 | 1367 | reflect-metadata@^0.1.12: 1368 | version "0.1.13" 1369 | resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08" 1370 | integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg== 1371 | 1372 | regex-cache@^0.4.2: 1373 | version "0.4.4" 1374 | resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" 1375 | integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== 1376 | dependencies: 1377 | is-equal-shallow "^0.1.3" 1378 | 1379 | regex-not@^1.0.0, regex-not@^1.0.2: 1380 | version "1.0.2" 1381 | resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" 1382 | integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== 1383 | dependencies: 1384 | extend-shallow "^3.0.2" 1385 | safe-regex "^1.1.0" 1386 | 1387 | remove-trailing-separator@^1.0.1: 1388 | version "1.1.0" 1389 | resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" 1390 | integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= 1391 | 1392 | repeat-element@^1.1.2: 1393 | version "1.1.3" 1394 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" 1395 | integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== 1396 | 1397 | repeat-string@^1.5.2, repeat-string@^1.6.1: 1398 | version "1.6.1" 1399 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" 1400 | integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= 1401 | 1402 | resolve-url@^0.2.1: 1403 | version "0.2.1" 1404 | resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" 1405 | integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= 1406 | 1407 | resolve@1.8.1: 1408 | version "1.8.1" 1409 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" 1410 | integrity sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA== 1411 | dependencies: 1412 | path-parse "^1.0.5" 1413 | 1414 | resolve@^1.1.6, resolve@^1.10.0, resolve@^1.3.2: 1415 | version "1.10.0" 1416 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" 1417 | integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg== 1418 | dependencies: 1419 | path-parse "^1.0.6" 1420 | 1421 | ret@~0.1.10: 1422 | version "0.1.15" 1423 | resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" 1424 | integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== 1425 | 1426 | rimraf@^2.6.2: 1427 | version "2.6.3" 1428 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" 1429 | integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== 1430 | dependencies: 1431 | glob "^7.1.3" 1432 | 1433 | rollup-plugin-clear@^2.0.7: 1434 | version "2.0.7" 1435 | resolved "https://registry.yarnpkg.com/rollup-plugin-clear/-/rollup-plugin-clear-2.0.7.tgz#27a191bccb3964246ca2aad427e8798cbe87c9b1" 1436 | integrity sha512-Hg8NC3JcJBO1ofgyQC0IACpyKn/yhHPGZ3C7R3ubNGWUXy9JXHQrewk4J4hVcZznw6SOKayLsaNae596Rwt8Vg== 1437 | dependencies: 1438 | rimraf "^2.6.2" 1439 | 1440 | rollup-plugin-commonjs@^9.1.5: 1441 | version "9.2.1" 1442 | resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-9.2.1.tgz#bb151ca8fa23600c7a03e25f9f0a45b1ee922dac" 1443 | integrity sha512-X0A/Cp/t+zbONFinBhiTZrfuUaVwRIp4xsbKq/2ohA2CDULa/7ONSJTelqxon+Vds2R2t2qJTqJQucKUC8GKkw== 1444 | dependencies: 1445 | estree-walker "^0.5.2" 1446 | magic-string "^0.25.1" 1447 | resolve "^1.10.0" 1448 | rollup-pluginutils "^2.3.3" 1449 | 1450 | rollup-plugin-node-resolve@^4.0.1: 1451 | version "4.0.1" 1452 | resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-4.0.1.tgz#f95765d174e5daeef9ea6268566141f53aa9d422" 1453 | integrity sha512-fSS7YDuCe0gYqKsr5OvxMloeZYUSgN43Ypi1WeRZzQcWtHgFayV5tUSPYpxuaioIIWaBXl6NrVk0T2/sKwueLg== 1454 | dependencies: 1455 | builtin-modules "^3.0.0" 1456 | is-module "^1.0.0" 1457 | resolve "^1.10.0" 1458 | 1459 | rollup-plugin-replace@^2.0.0: 1460 | version "2.1.0" 1461 | resolved "https://registry.yarnpkg.com/rollup-plugin-replace/-/rollup-plugin-replace-2.1.0.tgz#f9c07a4a89a2f8be912ee54b3f0f68d91e9ed0ae" 1462 | integrity sha512-SxrAIgpH/B5/W4SeULgreOemxcpEgKs2gcD42zXw50bhqGWmcnlXneVInQpAqzA/cIly4bJrOpeelmB9p4YXSQ== 1463 | dependencies: 1464 | magic-string "^0.25.1" 1465 | minimatch "^3.0.2" 1466 | rollup-pluginutils "^2.0.1" 1467 | 1468 | rollup-plugin-screeps@^0.1.2: 1469 | version "0.1.2" 1470 | resolved "https://registry.yarnpkg.com/rollup-plugin-screeps/-/rollup-plugin-screeps-0.1.2.tgz#4e476f0a43c1513d2058e96176a8b88eb3c5355e" 1471 | integrity sha512-DD+ZMGLMGFvWCGkjx7UWJvqSeCHNhV+SIsf2a34mOt5il1oboHhOLZdXw9chp5NKQgi9H8q3Cxdd2qmKt4oYcQ== 1472 | dependencies: 1473 | git-rev-sync "^1.9.1" 1474 | screeps-api "^1.4.0" 1475 | 1476 | rollup-plugin-typescript2@^0.19.3: 1477 | version "0.19.3" 1478 | resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.19.3.tgz#713063233461765f030a2baa2640905c2656164f" 1479 | integrity sha512-lsRqfBCZhMl/tq9AT5YnQvzQWzXtnx3EQYFcHD72gul7nyyoOrzx5yCEH20smpw58v6UkHHZz03FbdLEPoHWjA== 1480 | dependencies: 1481 | fs-extra "7.0.1" 1482 | resolve "1.8.1" 1483 | rollup-pluginutils "2.3.3" 1484 | tslib "1.9.3" 1485 | 1486 | rollup-pluginutils@2.3.3: 1487 | version "2.3.3" 1488 | resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.3.3.tgz#3aad9b1eb3e7fe8262820818840bf091e5ae6794" 1489 | integrity sha512-2XZwja7b6P5q4RZ5FhyX1+f46xi1Z3qBKigLRZ6VTZjwbN0K1IFGMlwm06Uu0Emcre2Z63l77nq/pzn+KxIEoA== 1490 | dependencies: 1491 | estree-walker "^0.5.2" 1492 | micromatch "^2.3.11" 1493 | 1494 | rollup-pluginutils@^2.0.1, rollup-pluginutils@^2.3.3: 1495 | version "2.4.1" 1496 | resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.4.1.tgz#de43ab54965bbf47843599a7f3adceb723de38db" 1497 | integrity sha512-wesMQ9/172IJDIW/lYWm0vW0LiKe5Ekjws481R7z9WTRtmO59cqyM/2uUlxvf6yzm/fElFmHUobeQOYz46dZJw== 1498 | dependencies: 1499 | estree-walker "^0.6.0" 1500 | micromatch "^3.1.10" 1501 | 1502 | rollup@^1.4.0: 1503 | version "1.4.0" 1504 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.4.0.tgz#fdc965b4ea7948e0b8e1a9051067dce1a61b3a24" 1505 | integrity sha512-E5HP4rgvAqkXQNYfNHgCDnX5HDHwAPDLUVSNp8iTmT49vY34G0DxEfhjPWnqnFi7v0vQtDGkKl2hvLfmsMvmcA== 1506 | dependencies: 1507 | "@types/estree" "0.0.39" 1508 | "@types/node" "^11.9.5" 1509 | acorn "^6.1.1" 1510 | 1511 | safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: 1512 | version "5.1.2" 1513 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 1514 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 1515 | 1516 | safe-regex@^1.1.0: 1517 | version "1.1.0" 1518 | resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" 1519 | integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= 1520 | dependencies: 1521 | ret "~0.1.10" 1522 | 1523 | screeps-api@^1.4.0: 1524 | version "1.8.0" 1525 | resolved "https://registry.yarnpkg.com/screeps-api/-/screeps-api-1.8.0.tgz#ec5247e5e7b85dca1304443c3db94580d2489232" 1526 | integrity sha512-FIrKpv4t8Pn0n8IgVwdNqf0BopW5VL9kBSPWHjjYUDw93UWRh2NgOyRJmPgjQj6iAwT+pxwcy6zaA7poQZugwA== 1527 | dependencies: 1528 | axios "^0.18.0" 1529 | bluebird "^3.5.0" 1530 | commander "^2.15.1" 1531 | ws "^5.2.0" 1532 | yamljs "^0.3.0" 1533 | optionalDependencies: 1534 | bufferutil "^3.0.5" 1535 | utf-8-validate "^4.0.2" 1536 | 1537 | semver@^5.3.0, semver@^5.4.1, semver@^5.5.0: 1538 | version "5.6.0" 1539 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" 1540 | integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== 1541 | 1542 | set-blocking@~2.0.0: 1543 | version "2.0.0" 1544 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 1545 | integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= 1546 | 1547 | set-value@^0.4.3: 1548 | version "0.4.3" 1549 | resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" 1550 | integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= 1551 | dependencies: 1552 | extend-shallow "^2.0.1" 1553 | is-extendable "^0.1.1" 1554 | is-plain-object "^2.0.1" 1555 | to-object-path "^0.3.0" 1556 | 1557 | set-value@^2.0.0: 1558 | version "2.0.0" 1559 | resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" 1560 | integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== 1561 | dependencies: 1562 | extend-shallow "^2.0.1" 1563 | is-extendable "^0.1.1" 1564 | is-plain-object "^2.0.3" 1565 | split-string "^3.0.1" 1566 | 1567 | shebang-command@^1.2.0: 1568 | version "1.2.0" 1569 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 1570 | integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= 1571 | dependencies: 1572 | shebang-regex "^1.0.0" 1573 | 1574 | shebang-regex@^1.0.0: 1575 | version "1.0.0" 1576 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 1577 | integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= 1578 | 1579 | shelljs@0.7.7: 1580 | version "0.7.7" 1581 | resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.7.tgz#b2f5c77ef97148f4b4f6e22682e10bba8667cff1" 1582 | integrity sha1-svXHfvlxSPS09uImguELuoZnz/E= 1583 | dependencies: 1584 | glob "^7.0.0" 1585 | interpret "^1.0.0" 1586 | rechoir "^0.6.2" 1587 | 1588 | signal-exit@^3.0.0: 1589 | version "3.0.2" 1590 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 1591 | integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= 1592 | 1593 | simple-concat@^1.0.0: 1594 | version "1.0.0" 1595 | resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6" 1596 | integrity sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY= 1597 | 1598 | simple-get@^2.7.0: 1599 | version "2.8.1" 1600 | resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.1.tgz#0e22e91d4575d87620620bc91308d57a77f44b5d" 1601 | integrity sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw== 1602 | dependencies: 1603 | decompress-response "^3.3.0" 1604 | once "^1.3.1" 1605 | simple-concat "^1.0.0" 1606 | 1607 | snapdragon-node@^2.0.1: 1608 | version "2.1.1" 1609 | resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" 1610 | integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== 1611 | dependencies: 1612 | define-property "^1.0.0" 1613 | isobject "^3.0.0" 1614 | snapdragon-util "^3.0.1" 1615 | 1616 | snapdragon-util@^3.0.1: 1617 | version "3.0.1" 1618 | resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" 1619 | integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== 1620 | dependencies: 1621 | kind-of "^3.2.0" 1622 | 1623 | snapdragon@^0.8.1: 1624 | version "0.8.2" 1625 | resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" 1626 | integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== 1627 | dependencies: 1628 | base "^0.11.1" 1629 | debug "^2.2.0" 1630 | define-property "^0.2.5" 1631 | extend-shallow "^2.0.1" 1632 | map-cache "^0.2.2" 1633 | source-map "^0.5.6" 1634 | source-map-resolve "^0.5.0" 1635 | use "^3.1.0" 1636 | 1637 | source-map-resolve@^0.5.0: 1638 | version "0.5.2" 1639 | resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" 1640 | integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== 1641 | dependencies: 1642 | atob "^2.1.1" 1643 | decode-uri-component "^0.2.0" 1644 | resolve-url "^0.2.1" 1645 | source-map-url "^0.4.0" 1646 | urix "^0.1.0" 1647 | 1648 | source-map-support@^0.5.6: 1649 | version "0.5.10" 1650 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.10.tgz#2214080bc9d51832511ee2bab96e3c2f9353120c" 1651 | integrity sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ== 1652 | dependencies: 1653 | buffer-from "^1.0.0" 1654 | source-map "^0.6.0" 1655 | 1656 | source-map-url@^0.4.0: 1657 | version "0.4.0" 1658 | resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" 1659 | integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= 1660 | 1661 | source-map@^0.5.6: 1662 | version "0.5.7" 1663 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 1664 | integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= 1665 | 1666 | source-map@^0.6.0, source-map@~0.6.1: 1667 | version "0.6.1" 1668 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 1669 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 1670 | 1671 | sourcemap-codec@^1.4.4: 1672 | version "1.4.4" 1673 | resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.4.tgz#c63ea927c029dd6bd9a2b7fa03b3fec02ad56e9f" 1674 | integrity sha512-CYAPYdBu34781kLHkaW3m6b/uUSyMOC2R61gcYMWooeuaGtjof86ZA/8T+qVPPt7np1085CR9hmMGrySwEc8Xg== 1675 | 1676 | split-string@^3.0.1, split-string@^3.0.2: 1677 | version "3.1.0" 1678 | resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" 1679 | integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== 1680 | dependencies: 1681 | extend-shallow "^3.0.0" 1682 | 1683 | sprintf-js@~1.0.2: 1684 | version "1.0.3" 1685 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 1686 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 1687 | 1688 | static-extend@^0.1.1: 1689 | version "0.1.2" 1690 | resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" 1691 | integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= 1692 | dependencies: 1693 | define-property "^0.2.5" 1694 | object-copy "^0.1.0" 1695 | 1696 | string-width@^1.0.1: 1697 | version "1.0.2" 1698 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 1699 | integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= 1700 | dependencies: 1701 | code-point-at "^1.0.0" 1702 | is-fullwidth-code-point "^1.0.0" 1703 | strip-ansi "^3.0.0" 1704 | 1705 | "string-width@^1.0.2 || 2": 1706 | version "2.1.1" 1707 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 1708 | integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== 1709 | dependencies: 1710 | is-fullwidth-code-point "^2.0.0" 1711 | strip-ansi "^4.0.0" 1712 | 1713 | string_decoder@~1.1.1: 1714 | version "1.1.1" 1715 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 1716 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 1717 | dependencies: 1718 | safe-buffer "~5.1.0" 1719 | 1720 | strip-ansi@^3.0.0, strip-ansi@^3.0.1: 1721 | version "3.0.1" 1722 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 1723 | integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= 1724 | dependencies: 1725 | ansi-regex "^2.0.0" 1726 | 1727 | strip-ansi@^4.0.0: 1728 | version "4.0.0" 1729 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 1730 | integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= 1731 | dependencies: 1732 | ansi-regex "^3.0.0" 1733 | 1734 | strip-json-comments@~2.0.1: 1735 | version "2.0.1" 1736 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 1737 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= 1738 | 1739 | supports-color@^2.0.0: 1740 | version "2.0.0" 1741 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 1742 | integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= 1743 | 1744 | supports-color@^5.3.0: 1745 | version "5.5.0" 1746 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1747 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1748 | dependencies: 1749 | has-flag "^3.0.0" 1750 | 1751 | tar-fs@^1.13.0: 1752 | version "1.16.3" 1753 | resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.16.3.tgz#966a628841da2c4010406a82167cbd5e0c72d509" 1754 | integrity sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw== 1755 | dependencies: 1756 | chownr "^1.0.1" 1757 | mkdirp "^0.5.1" 1758 | pump "^1.0.0" 1759 | tar-stream "^1.1.2" 1760 | 1761 | tar-stream@^1.1.2: 1762 | version "1.6.2" 1763 | resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" 1764 | integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== 1765 | dependencies: 1766 | bl "^1.0.0" 1767 | buffer-alloc "^1.2.0" 1768 | end-of-stream "^1.0.0" 1769 | fs-constants "^1.0.0" 1770 | readable-stream "^2.3.0" 1771 | to-buffer "^1.1.1" 1772 | xtend "^4.0.0" 1773 | 1774 | to-buffer@^1.1.1: 1775 | version "1.1.1" 1776 | resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" 1777 | integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== 1778 | 1779 | to-object-path@^0.3.0: 1780 | version "0.3.0" 1781 | resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" 1782 | integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= 1783 | dependencies: 1784 | kind-of "^3.0.2" 1785 | 1786 | to-regex-range@^2.1.0: 1787 | version "2.1.1" 1788 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" 1789 | integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= 1790 | dependencies: 1791 | is-number "^3.0.0" 1792 | repeat-string "^1.6.1" 1793 | 1794 | to-regex@^3.0.1, to-regex@^3.0.2: 1795 | version "3.0.2" 1796 | resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" 1797 | integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== 1798 | dependencies: 1799 | define-property "^2.0.2" 1800 | extend-shallow "^3.0.2" 1801 | regex-not "^1.0.2" 1802 | safe-regex "^1.1.0" 1803 | 1804 | ts-node@^7.0.1: 1805 | version "7.0.1" 1806 | resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-7.0.1.tgz#9562dc2d1e6d248d24bc55f773e3f614337d9baf" 1807 | integrity sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw== 1808 | dependencies: 1809 | arrify "^1.0.0" 1810 | buffer-from "^1.1.0" 1811 | diff "^3.1.0" 1812 | make-error "^1.1.1" 1813 | minimist "^1.2.0" 1814 | mkdirp "^0.5.1" 1815 | source-map-support "^0.5.6" 1816 | yn "^2.0.0" 1817 | 1818 | tslib@1.9.0: 1819 | version "1.9.0" 1820 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.0.tgz#e37a86fda8cbbaf23a057f473c9f4dc64e5fc2e8" 1821 | integrity sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ== 1822 | 1823 | tslib@1.9.3, tslib@^1.7.1, tslib@^1.8.0, tslib@^1.8.1: 1824 | version "1.9.3" 1825 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" 1826 | integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== 1827 | 1828 | tslint-config-airbnb@^5.10.0: 1829 | version "5.11.1" 1830 | resolved "https://registry.yarnpkg.com/tslint-config-airbnb/-/tslint-config-airbnb-5.11.1.tgz#51a27fbb8bf24c144d064a274a71da47e7ece617" 1831 | integrity sha512-hkaittm2607vVMe8eotANGN1CimD5tor7uoY3ypg2VTtEcDB/KGWYbJOz58t8LI4cWSyWtgqYQ5F0HwKxxhlkQ== 1832 | dependencies: 1833 | tslint-consistent-codestyle "^1.14.1" 1834 | tslint-eslint-rules "^5.4.0" 1835 | tslint-microsoft-contrib "~5.2.1" 1836 | 1837 | tslint-consistent-codestyle@^1.14.1: 1838 | version "1.15.0" 1839 | resolved "https://registry.yarnpkg.com/tslint-consistent-codestyle/-/tslint-consistent-codestyle-1.15.0.tgz#a3acf8d0a3ca0dc7d1285705102ba1fe4a17c4cb" 1840 | integrity sha512-6BNDBbZh2K0ibRXe70Mkl9gfVttxQ3t3hqV1BRDfpIcjrUoOgD946iH4SrXp+IggDgeMs3dJORjD5tqL5j4jXg== 1841 | dependencies: 1842 | "@fimbul/bifrost" "^0.17.0" 1843 | tslib "^1.7.1" 1844 | tsutils "^2.29.0" 1845 | 1846 | tslint-eslint-rules@^5.4.0: 1847 | version "5.4.0" 1848 | resolved "https://registry.yarnpkg.com/tslint-eslint-rules/-/tslint-eslint-rules-5.4.0.tgz#e488cc9181bf193fe5cd7bfca213a7695f1737b5" 1849 | integrity sha512-WlSXE+J2vY/VPgIcqQuijMQiel+UtmXS+4nvK4ZzlDiqBfXse8FAvkNnTcYhnQyOTW5KFM+uRRGXxYhFpuBc6w== 1850 | dependencies: 1851 | doctrine "0.7.2" 1852 | tslib "1.9.0" 1853 | tsutils "^3.0.0" 1854 | 1855 | tslint-microsoft-contrib@~5.2.1: 1856 | version "5.2.1" 1857 | resolved "https://registry.yarnpkg.com/tslint-microsoft-contrib/-/tslint-microsoft-contrib-5.2.1.tgz#a6286839f800e2591d041ea2800c77487844ad81" 1858 | integrity sha512-PDYjvpo0gN9IfMULwKk0KpVOPMhU6cNoT9VwCOLeDl/QS8v8W2yspRpFFuUS7/c5EIH/n8ApMi8TxJAz1tfFUA== 1859 | dependencies: 1860 | tsutils "^2.27.2 <2.29.0" 1861 | 1862 | tslint@^5.11.0: 1863 | version "5.13.1" 1864 | resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.13.1.tgz#fbc0541c425647a33cd9108ce4fd4cd18d7904ed" 1865 | integrity sha512-fplQqb2miLbcPhyHoMV4FU9PtNRbgmm/zI5d3SZwwmJQM6V0eodju+hplpyfhLWpmwrDNfNYU57uYRb8s0zZoQ== 1866 | dependencies: 1867 | babel-code-frame "^6.22.0" 1868 | builtin-modules "^1.1.1" 1869 | chalk "^2.3.0" 1870 | commander "^2.12.1" 1871 | diff "^3.2.0" 1872 | glob "^7.1.1" 1873 | js-yaml "^3.7.0" 1874 | minimatch "^3.0.4" 1875 | mkdirp "^0.5.1" 1876 | resolve "^1.3.2" 1877 | semver "^5.3.0" 1878 | tslib "^1.8.0" 1879 | tsutils "^2.27.2" 1880 | 1881 | tsutils@^2.27.2, tsutils@^2.29.0: 1882 | version "2.29.0" 1883 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" 1884 | integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== 1885 | dependencies: 1886 | tslib "^1.8.1" 1887 | 1888 | "tsutils@^2.27.2 <2.29.0": 1889 | version "2.28.0" 1890 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.28.0.tgz#6bd71e160828f9d019b6f4e844742228f85169a1" 1891 | integrity sha512-bh5nAtW0tuhvOJnx1GLRn5ScraRLICGyJV5wJhtRWOLsxW70Kk5tZtpK3O/hW6LDnqKS9mlUMPZj9fEMJ0gxqA== 1892 | dependencies: 1893 | tslib "^1.8.1" 1894 | 1895 | tsutils@^3.0.0, tsutils@^3.5.0: 1896 | version "3.8.0" 1897 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.8.0.tgz#7a3dbadc88e465596440622b65c04edc8e187ae5" 1898 | integrity sha512-XQdPhgcoTbCD8baXC38PQ0vpTZ8T3YrE+vR66YIj/xvDt1//8iAhafpIT/4DmvzzC1QFapEImERu48Pa01dIUA== 1899 | dependencies: 1900 | tslib "^1.8.1" 1901 | 1902 | tunnel-agent@^0.6.0: 1903 | version "0.6.0" 1904 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 1905 | integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= 1906 | dependencies: 1907 | safe-buffer "^5.0.1" 1908 | 1909 | typescript@^3.0.1: 1910 | version "3.3.3333" 1911 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.3.3333.tgz#171b2c5af66c59e9431199117a3bcadc66fdcfd6" 1912 | integrity sha512-JjSKsAfuHBE/fB2oZ8NxtRTk5iGcg6hkYXMnZ3Wc+b2RSqejEqTaem11mHASMnFilHrax3sLK0GDzcJrekZYLw== 1913 | 1914 | union-value@^1.0.0: 1915 | version "1.0.0" 1916 | resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" 1917 | integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= 1918 | dependencies: 1919 | arr-union "^3.1.0" 1920 | get-value "^2.0.6" 1921 | is-extendable "^0.1.1" 1922 | set-value "^0.4.3" 1923 | 1924 | universalify@^0.1.0: 1925 | version "0.1.2" 1926 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" 1927 | integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== 1928 | 1929 | unset-value@^1.0.0: 1930 | version "1.0.0" 1931 | resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" 1932 | integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= 1933 | dependencies: 1934 | has-value "^0.3.1" 1935 | isobject "^3.0.0" 1936 | 1937 | urix@^0.1.0: 1938 | version "0.1.0" 1939 | resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" 1940 | integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= 1941 | 1942 | use@^3.1.0: 1943 | version "3.1.1" 1944 | resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" 1945 | integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== 1946 | 1947 | utf-8-validate@^4.0.2: 1948 | version "4.0.2" 1949 | resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-4.0.2.tgz#deadcedfbf5ec535e3c72874e9ddc0663c139691" 1950 | integrity sha512-CS63Ssp6zynBQ4IxVzgjP5Abdo6LuJ87HFIcgIiVUeY96+MTHkqKtrUhphbwQ6jX8aSGZv8zX6l1DCPpfcAnxA== 1951 | dependencies: 1952 | bindings "~1.3.0" 1953 | nan "~2.10.0" 1954 | prebuild-install "~4.0.0" 1955 | 1956 | util-deprecate@~1.0.1: 1957 | version "1.0.2" 1958 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1959 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 1960 | 1961 | which-pm-runs@^1.0.0: 1962 | version "1.0.0" 1963 | resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" 1964 | integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= 1965 | 1966 | which@^1.2.9: 1967 | version "1.3.1" 1968 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 1969 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 1970 | dependencies: 1971 | isexe "^2.0.0" 1972 | 1973 | wide-align@^1.1.0: 1974 | version "1.1.3" 1975 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" 1976 | integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== 1977 | dependencies: 1978 | string-width "^1.0.2 || 2" 1979 | 1980 | wrappy@1: 1981 | version "1.0.2" 1982 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1983 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1984 | 1985 | ws@^5.2.0: 1986 | version "5.2.2" 1987 | resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" 1988 | integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== 1989 | dependencies: 1990 | async-limiter "~1.0.0" 1991 | 1992 | xtend@^4.0.0: 1993 | version "4.0.1" 1994 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" 1995 | integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= 1996 | 1997 | yamljs@^0.3.0: 1998 | version "0.3.0" 1999 | resolved "https://registry.yarnpkg.com/yamljs/-/yamljs-0.3.0.tgz#dc060bf267447b39f7304e9b2bfbe8b5a7ddb03b" 2000 | integrity sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ== 2001 | dependencies: 2002 | argparse "^1.0.7" 2003 | glob "^7.0.5" 2004 | 2005 | yn@^2.0.0: 2006 | version "2.0.0" 2007 | resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a" 2008 | integrity sha1-5a2ryKz0CPY4X8dklWhMiOavaJo= 2009 | --------------------------------------------------------------------------------