├── .editorconfig ├── .eslintrc.js ├── .gitignore ├── .travis.yml ├── .vscode └── launch.json ├── .vscodeignore ├── CHANGELOG.md ├── LICENSE.md ├── README.md ├── client ├── package.json ├── src │ └── extension.ts ├── tsconfig.json └── yarn.lock ├── images ├── icon.png ├── logo.png └── syntax-highlighting-example.png ├── language-configuration.json ├── package.json ├── server ├── package.json ├── src │ ├── common │ │ └── types.ts │ ├── dictionary │ │ ├── files │ │ │ ├── data.json │ │ │ ├── functions.json │ │ │ ├── headers.json │ │ │ └── routines.json │ │ ├── index.ts │ │ └── worker │ │ │ └── index.ts │ └── server.ts ├── tsconfig.json └── yarn.lock ├── snippets └── dnh.json ├── sparen_permission.md ├── syntaxes └── dnh.tmLanguage.json ├── tools └── parser │ ├── files │ └── .gitkeep │ └── index.js ├── tsconfig.json └── yarn.lock /.editorconfig: -------------------------------------------------------------------------------- 1 | [*] 2 | charset = utf-8 3 | indent_size = 2 4 | indent_style = space 5 | end_of_line = lf 6 | insert_final_newline = true 7 | trim_trailing_whitespace = true 8 | 9 | [*.md] 10 | trim_trailing_whitespace = false 11 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | const typescriptEslintRecommended = require( 2 | '@typescript-eslint/eslint-plugin/dist/configs/recommended' 3 | ) 4 | 5 | module.exports = { 6 | root: true, 7 | env: { 8 | node: true 9 | }, 10 | extends: ['standard'], 11 | overrides: [ 12 | { 13 | files: ['*.ts'], 14 | parser: '@typescript-eslint/parser', 15 | parserOptions: { 16 | project: './tsconfig.json' 17 | }, 18 | plugins: ['@typescript-eslint'], 19 | /* 20 | * Workaround for nested `extends`. 21 | * See https://github.com/eslint/eslint/issues/8813 22 | */ 23 | rules: Object.assign( 24 | typescriptEslintRecommended.rules, 25 | { '@typescript-eslint/indent': ['error', 2] } 26 | ) 27 | } 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | out 3 | tools/parser/files/object.json 4 | tools/parser/files/standard.json 5 | tools/parser/files/system.json 6 | *.vsix 7 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | before_install: 2 | - curl -o- -L https://yarnpkg.com/install.sh | bash 3 | - export PATH="$HOME/.yarn/bin:$PATH" 4 | - yarn --version 5 | language: node_js 6 | node_js: 7 | - stable 8 | - lts/* 9 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "type": "extensionHost", 6 | "request": "launch", 7 | "name": "Launch client", 8 | "runtimeExecutable": "${execPath}", 9 | "args": [ 10 | "--extensionDevelopmentPath=${workspaceRoot}" 11 | ], 12 | "outFiles": [ 13 | "${workspaceRoot}/client/out/**/*.js" 14 | ] 15 | }, 16 | { 17 | "type": "node", 18 | "request": "attach", 19 | "name": "Attach to server", 20 | "port": 6009, 21 | "restart": true, 22 | "outFiles": [ 23 | "${workspaceRoot}/server/out/**/*.js" 24 | ] 25 | } 26 | ], 27 | "compounds": [ 28 | { 29 | "name": "Launch client and attach to server", 30 | "configurations": [ 31 | "Launch client", 32 | "Attach to server" 33 | ] 34 | } 35 | ] 36 | } 37 | -------------------------------------------------------------------------------- /.vscodeignore: -------------------------------------------------------------------------------- 1 | .vscode/** 2 | client/node_modules/** 3 | !client/node_modules/semver/** 4 | !client/node_modules/vscode-jsonrpc/** 5 | !client/node_modules/vscode-languageclient/** 6 | !client/node_modules/vscode-languageserver-protocol/** 7 | !client/node_modules/vscode-languageserver-types/** 8 | tools 9 | .editorconfig 10 | .gitignore 11 | .travis.yml 12 | tsconfig.json 13 | *.map 14 | *.ts 15 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All notable changes to this project will be documented in this file. 4 | 5 | The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) 6 | and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). 7 | 8 | ## [Unreleased] 9 | 10 | ## [1.10.0] - 2020-02-06 11 | 12 | ### Changed 13 | 14 | + Updated the ph3 function reference 15 | + Updated dependencies 16 | 17 | ### Fixed 18 | 19 | + Fixed the `alternative` snippet (contribution by user ooa113y) 20 | 21 | ## [1.9.0] - 2019-10-24 22 | 23 | ### Changed 24 | 25 | + Updated the ph3 function reference 26 | + Updated dependencies 27 | 28 | ## [1.8.0] - 2019-07-18 29 | 30 | ### Changed 31 | 32 | + Updated dependencies 33 | 34 | ## [1.7.0] - 2019-07-05 35 | 36 | ### Changed 37 | 38 | + Updated ph3 function reference 39 | + Updated dependencies 40 | 41 | ## [1.6.0] - 2019-05-07 42 | 43 | ### Changed 44 | 45 | + Updated dependencies 46 | 47 | ## [1.5.1] - 2019-03-11 48 | 49 | ### Fixed 50 | 51 | + Fixed language server not working by including `semver` in the extension 52 | package 53 | 54 | ## [1.5.0] - 2019-03-06 55 | 56 | ### Changed 57 | 58 | + Reintroduced support for unsaved files 59 | + Updated tooling 60 | + Refactored code 61 | 62 | ## [1.4.0] - 2019-02-28 63 | 64 | ### Changed 65 | 66 | + Updated ph3 function reference 67 | + Updated Travis CI configuration 68 | + Updated dependencies 69 | 70 | ## [1.3.0] - 2018-07-15 71 | 72 | ### Changed 73 | 74 | + Updated ph3 function reference 75 | + Adjusted copyright notices in license to comply with the standard 76 | + Updated dependencies 77 | 78 | ## [1.2.0] - 2018-06-28 79 | 80 | ### Added 81 | 82 | + Added basic shot and item data support 83 | + Refactored JSON processing 84 | + Added VS Code Marketplace link in form of a badge 85 | 86 | ### Changed 87 | 88 | + Adjusted/expanded readme 89 | + Updated dependencies 90 | 91 | ## [1.1.0] - 2018-06-27 92 | 93 | ### Added 94 | 95 | + Added language server for code completion and on-demand documentation on 96 | hover 97 | + Added snippets 98 | 99 | ## [1.0.3] - 2018-06-23 100 | 101 | ### Removed 102 | 103 | + Removed unnecessary `fileTypes` section in `syntaxes/dnh.tmLanguage.json` 104 | 105 | ### Fixed 106 | 107 | + Fixed `TouhouDanmakufu` header not getting highlighted 108 | 109 | ## [1.0.2] - 2018-06-23 110 | 111 | ### Fixed 112 | 113 | + Reduced amount of keywords in `package.json` 114 | + Corrected `galleryBanner.theme` to `dark` 115 | 116 | ## [1.0.1] - 2018-06-23 117 | 118 | ### Added 119 | 120 | + Added extension icon to `README.md` for some flair 121 | 122 | ### Fixed 123 | 124 | + Added the correct keywords in `package.json` 125 | 126 | ## 1.0.0 - 2018-06-23 127 | 128 | ### Added 129 | 130 | + Initial release 131 | 132 | [Unreleased]: https://github.com/mserajnik/dnh/compare/1.10.0...develop 133 | [1.10.0]: https://github.com/mserajnik/dnh/compare/1.9.0...1.10.0 134 | [1.9.0]: https://github.com/mserajnik/dnh/compare/1.8.0...1.9.0 135 | [1.8.0]: https://github.com/mserajnik/dnh/compare/1.7.0...1.8.0 136 | [1.7.0]: https://github.com/mserajnik/dnh/compare/1.6.0...1.7.0 137 | [1.6.0]: https://github.com/mserajnik/dnh/compare/1.5.1...1.6.0 138 | [1.5.1]: https://github.com/mserajnik/dnh/compare/1.5.0...1.5.1 139 | [1.5.0]: https://github.com/mserajnik/dnh/compare/1.4.0...1.5.0 140 | [1.4.0]: https://github.com/mserajnik/dnh/compare/1.3.0...1.4.0 141 | [1.3.0]: https://github.com/mserajnik/dnh/compare/1.2.0...1.3.0 142 | [1.2.0]: https://github.com/mserajnik/dnh/compare/1.1.0...1.2.0 143 | [1.1.0]: https://github.com/mserajnik/dnh/compare/1.0.3...1.1.0 144 | [1.0.3]: https://github.com/mserajnik/dnh/compare/1.0.2...1.0.3 145 | [1.0.2]: https://github.com/mserajnik/dnh/compare/1.0.1...1.0.2 146 | [1.0.1]: https://github.com/mserajnik/dnh/compare/1.0.0...1.0.1 147 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | # MIT License 2 | 3 | Copyright (c) 2019-present Michael Serajnik 4 | 5 | Copyright (c) 2014 drakeirving 6 | 7 | Copyright (c) Microsoft Corporation 8 | 9 | Permission is hereby granted, free of charge, to any person obtaining a copy 10 | of this software and associated documentation files (the "Software"), to deal 11 | in the Software without restriction, including without limitation the rights 12 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 13 | copies of the Software, and to permit persons to whom the Software is 14 | furnished to do so, subject to the following conditions: 15 | 16 | The above copyright notice and this permission notice shall be included in all 17 | copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 25 | SOFTWARE. 26 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | Drawing of Flandre Scarlet by Alphes 6 |
7 | dnh 8 | 9 | dnh on the VS Code Marketplace 12 | 13 | 14 | Build status 15 | 16 | 17 | Known vulnerabilities 20 | 21 | 22 | JavaScript Standard Style 25 | 26 |

27 | 28 | > Touhou Danmakufu extension for Visual Studio Code 29 | 30 | ![Syntax highlighting example][syntax-highlighting-example] 31 | 32 | This is a simple [Visual Studio Code][vs-code] extension that adds some 33 | features to make developing [Touhou Danmakufu][touhou-danmakufu] scripts more 34 | comfortable. It currently features: 35 | 36 | + Syntax highlighting 37 | + Code completion for ph3 engine library functions, headers, routines and 38 | shot/item data 39 | + On-Demand documentation for ph3 engine library functions, headers, routines 40 | and shot/item data (on hover) 41 | + A variety of useful snippets 42 | 43 | ## Table of contents 44 | 45 | - [Table of contents](#table-of-contents) 46 | - [Install](#install) 47 | - [Updating](#updating) 48 | - [Usage](#usage) 49 | - [Completion](#completion) 50 | - [Documentation](#documentation) 51 | - [Snippets](#snippets) 52 | - [Maintainer](#maintainer) 53 | - [Contribute](#contribute) 54 | - [License](#license) 55 | - [Credits](#credits) 56 | 57 | ## Install 58 | 59 | Use `Quick Open` ( P on macOS, 60 | P on Windows/Linux) and run `ext install dnh` or 61 | search and install it via the `Extensions` tab manually. 62 | 63 | ### Updating 64 | 65 | VS Code should try to auto-update the extension at regular intervals, but you 66 | can also check for available updates manually via 67 | `Extensions: Check for Updates`. 68 | 69 | ## Usage 70 | 71 | Opening `.dnh` files with VS Code should automatically set the correct syntax 72 | highlighting and enable code completion, documentation and snippets, but you 73 | can also set it manually via `Change Language Mode` (e.g., for `.txt` files 74 | where VS Code would default to plain text without highlighting). 75 | 76 | ### Completion 77 | 78 | Code completion is currently available for ph3 engine library functions, 79 | headers, routines and shot/item data. The completion system is triggered simply 80 | by typing and will automatically try to match the most relevant result from the 81 | list. You can also navigate the list with 82 | and select a completion to 83 | use. 84 | 85 | Hitting Tab ⇥ will insert the selected completion. Some completions 86 | (like functions) will have additional tab stops that allow you to navigate the 87 | inserted code with Tab ⇥. This is, for example, useful for function 88 | parameters. 89 | 90 | Clicking on the `ⓘ` icon displays more information about the completion while 91 | clicking on the `✕` icon hides this information again (depending on your 92 | settings, the info window might be opened by default). 93 | 94 | ### Documentation 95 | 96 | Documentation is available for the same types as completion (ph3 engine library 97 | functions, headers, routines and shot/item data). It comes in the form of info 98 | windows that are activated on hover and display similar information as when 99 | clicking on the `ⓘ` icon on completion items. 100 | 101 | ### Snippets 102 | 103 | Snippets work in a similar way as completions. They are also activated 104 | automatically when typing and displayed in the same list as completion items. 105 | Instead of displaying documentation in an info window, they show the code they 106 | insert. 107 | 108 | Selection and insertion also functions just like completions (with 109 | and Tab ⇥). 110 | Wherever necessary, snippets feature useful tab stops to make navigation easier 111 | after inserting them. 112 | 113 | They do generally have a higher priority than completions, which means that you 114 | usually do not have to write the full keyword for VS Code to highlight the 115 | correct snippet in the list. 116 | 117 | The following is a list of keywords that are associated to a snippet: 118 | 119 | + `let` 120 | + `if` 121 | + `alternative` 122 | + `loop` 123 | + `while` 124 | + `ascent` 125 | + `local` 126 | + `yield` (type `y` and hit Tab ⇥ instead of typing the full word) 127 | + `function` 128 | + `task` 129 | + `include` 130 | 131 | ## Maintainer 132 | 133 | [mserajnik][maintainer-url] 134 | 135 | ## Contribute 136 | 137 | You are welcome to help out! 138 | 139 | [Open an issue][issues-url] or submit a pull request. 140 | 141 | As an exception to the paragraph under _[License](#license)_ that mentions that 142 | you are not allowed to use the file 143 | `server/src/dictionary/files/functions.json` for your own software/projects: 144 | 145 | You are hereby allowed to use this file for the purpose of _contributing_ to 146 | [this project][project-url]. This includes forking this repository, making 147 | changes and creating pull requests for those changes. You are __not__ allowed 148 | to fork this repository for intentions other than contributing (e.g, creating 149 | your own project without the intention to merge your changes back into 150 | upstream) without removing the file immediately afterwards. 151 | 152 | Additionally, any fork of this project that is created under the purpose of 153 | contributing __must__ include this section and the paragraph under _License_ in 154 | an unaltered state to assure that no one that creates forks/copies of your fork 155 | or uses it or parts of it in their own software/projects is allowed to use 156 | `server/src/dictionary/files/functions.json` without permission. 157 | 158 | ## License 159 | 160 | [MIT](LICENSE.md) © Michael Serajnik 161 | 162 | Explicitly excluded from the MIT license is the file 163 | `server/src/dictionary/files/functions.json`. It contains a parsed version of 164 | [Sparen of Iría][sparen]'s [ph3 function reference][sparen-function-reference] 165 | and requires you to get his permission to use it. The file is therefore under 166 | [no license][no-license] and you __do not__ have permission to use it in your 167 | own software/projects. 168 | 169 | ## Credits 170 | 171 | The syntax configuration was originally created by [drakeirving][drakeirving] 172 | for his [Sublime Text extension][sublime-danmakufu]. I have merely converted 173 | his TextMate grammar file to JSON, made some VS Code-specific adjustments and 174 | expanded it a bit. 175 | 176 | The built-in ph3 engine library function documentation is a parsed version of 177 | [Sparen of Iría][sparen]'s [ph3 function reference][sparen-function-reference], 178 | for which he was so kind as to give me [his permission](sparen_permission.md) 179 | to use it. The only thing I did was transforming it into a format that is 180 | easier for me to work with and applying some automatic text transformations. 181 | 182 | If a function behaves differently than stated in this extension, please 183 | cross-reference with Sparen's 184 | [ph3 function reference][sparen-function-reference] and the 185 | [official Danmakufu ph3 documentation][touhou-danmakufu-docs] (Japanese, though 186 | Google Translate or other automatic translation services should work 187 | _well enough_ in most cases) as they may be more up-to-date and/or contain 188 | fixes for errors. 189 | 190 | Sparen's [tutorials][sparen-tutorials] are brilliant and you should definitely 191 | check them out if you want to get into Danmakufu scripting. 192 | 193 | The extension icon (of which you can also see a higher resolution version of at 194 | the top of this readme) is one of [Alphes' Touhou portraits][alphes-portraits] 195 | (free to use and edit for non-commercial projects). I have simply made it 196 | square and adjusted the size so it fits the VS Code Marketplace guidelines. 197 | 198 | [syntax-highlighting-example]: https://github.com/mserajnik/dnh/raw/master/images/syntax-highlighting-example.png 199 | 200 | [vs-code]: https://code.visualstudio.com/ 201 | [touhou-danmakufu]: https://en.touhouwiki.net/wiki/Touhou_Danmakufu 202 | [sparen]: https://github.com/sparen 203 | [sparen-function-reference]: https://sparen.github.io/ph3tutorials/docs.html 204 | [no-license]: https://choosealicense.com/no-permission/ 205 | [drakeirving]: https://github.com/drakeirving 206 | [sublime-danmakufu]: https://github.com/drakeirving/sublime-danmakufu 207 | [touhou-danmakufu-docs]: http://www.geocities.co.jp/SiliconValley-Oakland/9951/pre/th_dnh_help_v3.html 208 | [sparen-tutorials]: https://sparen.github.io/ph3tutorials/ph3tutorials.html 209 | [alphes-portraits]: http://gensoukyou.1000.tv/dl.html 210 | 211 | [maintainer-url]: https://github.com/mserajnik 212 | [issues-url]: https://github.com/mserajnik/dnh/issues/new 213 | [project-url]: https://github.com/mserajnik/dnh 214 | -------------------------------------------------------------------------------- /client/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "dnh-client", 3 | "version": "1.10.0", 4 | "description": "Client part of the Touhou Danmakufu language server", 5 | "author": "Michael Serajnik ", 6 | "license": "MIT", 7 | "publisher": "vscode", 8 | "repository": { 9 | "type": "git", 10 | "url": "https://github.com/mserajnik/dnh.git" 11 | }, 12 | "scripts": { 13 | "update-vscode": "vscode-install", 14 | "postinstall": "vscode-install" 15 | }, 16 | "engines": { 17 | "vscode": "^1.33.0" 18 | }, 19 | "dependencies": { 20 | "vscode-languageclient": "^5.2.1" 21 | }, 22 | "devDependencies": { 23 | "vscode": "^1.1.36" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /client/src/extension.ts: -------------------------------------------------------------------------------- 1 | import path from 'path' 2 | import { ExtensionContext } from 'vscode' 3 | import { 4 | LanguageClient, LanguageClientOptions, ServerOptions, TransportKind 5 | } from 'vscode-languageclient' 6 | 7 | let client: LanguageClient 8 | 9 | export function activate (context: ExtensionContext): void { 10 | const serverModule = context.asAbsolutePath( 11 | path.join('server', 'out', 'server.js') 12 | ) 13 | 14 | const debugOptions = { execArgv: ['--nolazy', '--inspect=6009'] } 15 | 16 | const serverOptions: ServerOptions = { 17 | run: { module: serverModule, transport: TransportKind.ipc }, 18 | debug: { 19 | module: serverModule, 20 | transport: TransportKind.ipc, 21 | options: debugOptions 22 | } 23 | } 24 | 25 | const clientOptions: LanguageClientOptions = { 26 | documentSelector: [ 27 | { scheme: 'file', language: 'dnh' }, 28 | { scheme: 'untitled', language: 'dnh' } 29 | ] 30 | } 31 | 32 | client = new LanguageClient( 33 | 'dnhServer', 34 | 'dnh server', 35 | serverOptions, 36 | clientOptions 37 | ) 38 | 39 | client.start() 40 | } 41 | 42 | export function deactivate (): Thenable | undefined { 43 | if (!client) { 44 | return undefined 45 | } 46 | 47 | return client.stop() 48 | } 49 | -------------------------------------------------------------------------------- /client/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "strict": true, 4 | "removeComments": true, 5 | "target": "es6", 6 | "module": "commonjs", 7 | "moduleResolution": "node", 8 | "esModuleInterop": true, 9 | "resolveJsonModule": true, 10 | "rootDir": "src", 11 | "outDir": "out" 12 | }, 13 | "include": [ 14 | "src" 15 | ], 16 | "exclude": [ 17 | "node_modules" 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /client/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | agent-base@4, agent-base@^4.3.0: 6 | version "4.3.0" 7 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" 8 | integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== 9 | dependencies: 10 | es6-promisify "^5.0.0" 11 | 12 | ajv@^6.5.5: 13 | version "6.11.0" 14 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.11.0.tgz#c3607cbc8ae392d8a5a536f25b21f8e5f3f87fe9" 15 | integrity sha512-nCprB/0syFYy9fVYU1ox1l2KN8S9I+tziH8D4zdZuLT3N6RMlGSGt5FSTpAiHB/Whv8Qs1cWHma1aMKZyaHRKA== 16 | dependencies: 17 | fast-deep-equal "^3.1.1" 18 | fast-json-stable-stringify "^2.0.0" 19 | json-schema-traverse "^0.4.1" 20 | uri-js "^4.2.2" 21 | 22 | asn1@~0.2.3: 23 | version "0.2.4" 24 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" 25 | integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== 26 | dependencies: 27 | safer-buffer "~2.1.0" 28 | 29 | assert-plus@1.0.0, assert-plus@^1.0.0: 30 | version "1.0.0" 31 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 32 | integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= 33 | 34 | asynckit@^0.4.0: 35 | version "0.4.0" 36 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 37 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= 38 | 39 | aws-sign2@~0.7.0: 40 | version "0.7.0" 41 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" 42 | integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= 43 | 44 | aws4@^1.8.0: 45 | version "1.9.1" 46 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" 47 | integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== 48 | 49 | balanced-match@^1.0.0: 50 | version "1.0.0" 51 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 52 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 53 | 54 | bcrypt-pbkdf@^1.0.0: 55 | version "1.0.2" 56 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" 57 | integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= 58 | dependencies: 59 | tweetnacl "^0.14.3" 60 | 61 | brace-expansion@^1.1.7: 62 | version "1.1.11" 63 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 64 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 65 | dependencies: 66 | balanced-match "^1.0.0" 67 | concat-map "0.0.1" 68 | 69 | browser-stdout@1.3.1: 70 | version "1.3.1" 71 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" 72 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== 73 | 74 | buffer-from@^1.0.0: 75 | version "1.1.1" 76 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 77 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== 78 | 79 | caseless@~0.12.0: 80 | version "0.12.0" 81 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 82 | integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= 83 | 84 | combined-stream@^1.0.6, combined-stream@~1.0.6: 85 | version "1.0.8" 86 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 87 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 88 | dependencies: 89 | delayed-stream "~1.0.0" 90 | 91 | commander@2.15.1: 92 | version "2.15.1" 93 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" 94 | integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag== 95 | 96 | concat-map@0.0.1: 97 | version "0.0.1" 98 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 99 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 100 | 101 | core-util-is@1.0.2: 102 | version "1.0.2" 103 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 104 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 105 | 106 | dashdash@^1.12.0: 107 | version "1.14.1" 108 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 109 | integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= 110 | dependencies: 111 | assert-plus "^1.0.0" 112 | 113 | debug@3.1.0: 114 | version "3.1.0" 115 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" 116 | integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== 117 | dependencies: 118 | ms "2.0.0" 119 | 120 | debug@^3.1.0: 121 | version "3.2.6" 122 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" 123 | integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== 124 | dependencies: 125 | ms "^2.1.1" 126 | 127 | delayed-stream@~1.0.0: 128 | version "1.0.0" 129 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 130 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= 131 | 132 | diff@3.5.0: 133 | version "3.5.0" 134 | resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" 135 | integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== 136 | 137 | ecc-jsbn@~0.1.1: 138 | version "0.1.2" 139 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" 140 | integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= 141 | dependencies: 142 | jsbn "~0.1.0" 143 | safer-buffer "^2.1.0" 144 | 145 | es6-promise@^4.0.3: 146 | version "4.2.8" 147 | resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" 148 | integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== 149 | 150 | es6-promisify@^5.0.0: 151 | version "5.0.0" 152 | resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" 153 | integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= 154 | dependencies: 155 | es6-promise "^4.0.3" 156 | 157 | escape-string-regexp@1.0.5: 158 | version "1.0.5" 159 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 160 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 161 | 162 | extend@~3.0.2: 163 | version "3.0.2" 164 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" 165 | integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== 166 | 167 | extsprintf@1.3.0: 168 | version "1.3.0" 169 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" 170 | integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= 171 | 172 | extsprintf@^1.2.0: 173 | version "1.4.0" 174 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" 175 | integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= 176 | 177 | fast-deep-equal@^3.1.1: 178 | version "3.1.1" 179 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" 180 | integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== 181 | 182 | fast-json-stable-stringify@^2.0.0: 183 | version "2.1.0" 184 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 185 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 186 | 187 | forever-agent@~0.6.1: 188 | version "0.6.1" 189 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 190 | integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= 191 | 192 | form-data@~2.3.2: 193 | version "2.3.3" 194 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" 195 | integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== 196 | dependencies: 197 | asynckit "^0.4.0" 198 | combined-stream "^1.0.6" 199 | mime-types "^2.1.12" 200 | 201 | fs.realpath@^1.0.0: 202 | version "1.0.0" 203 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 204 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 205 | 206 | getpass@^0.1.1: 207 | version "0.1.7" 208 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" 209 | integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= 210 | dependencies: 211 | assert-plus "^1.0.0" 212 | 213 | glob@7.1.2: 214 | version "7.1.2" 215 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" 216 | integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== 217 | dependencies: 218 | fs.realpath "^1.0.0" 219 | inflight "^1.0.4" 220 | inherits "2" 221 | minimatch "^3.0.4" 222 | once "^1.3.0" 223 | path-is-absolute "^1.0.0" 224 | 225 | glob@^7.1.2: 226 | version "7.1.6" 227 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 228 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== 229 | dependencies: 230 | fs.realpath "^1.0.0" 231 | inflight "^1.0.4" 232 | inherits "2" 233 | minimatch "^3.0.4" 234 | once "^1.3.0" 235 | path-is-absolute "^1.0.0" 236 | 237 | growl@1.10.5: 238 | version "1.10.5" 239 | resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" 240 | integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== 241 | 242 | har-schema@^2.0.0: 243 | version "2.0.0" 244 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" 245 | integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= 246 | 247 | har-validator@~5.1.0: 248 | version "5.1.3" 249 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" 250 | integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== 251 | dependencies: 252 | ajv "^6.5.5" 253 | har-schema "^2.0.0" 254 | 255 | has-flag@^3.0.0: 256 | version "3.0.0" 257 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 258 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 259 | 260 | he@1.1.1: 261 | version "1.1.1" 262 | resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" 263 | integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0= 264 | 265 | http-proxy-agent@^2.1.0: 266 | version "2.1.0" 267 | resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" 268 | integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg== 269 | dependencies: 270 | agent-base "4" 271 | debug "3.1.0" 272 | 273 | http-signature@~1.2.0: 274 | version "1.2.0" 275 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" 276 | integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= 277 | dependencies: 278 | assert-plus "^1.0.0" 279 | jsprim "^1.2.2" 280 | sshpk "^1.7.0" 281 | 282 | https-proxy-agent@^2.2.1: 283 | version "2.2.4" 284 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" 285 | integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== 286 | dependencies: 287 | agent-base "^4.3.0" 288 | debug "^3.1.0" 289 | 290 | inflight@^1.0.4: 291 | version "1.0.6" 292 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 293 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 294 | dependencies: 295 | once "^1.3.0" 296 | wrappy "1" 297 | 298 | inherits@2: 299 | version "2.0.4" 300 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 301 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 302 | 303 | is-typedarray@~1.0.0: 304 | version "1.0.0" 305 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 306 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= 307 | 308 | isstream@~0.1.2: 309 | version "0.1.2" 310 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 311 | integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= 312 | 313 | jsbn@~0.1.0: 314 | version "0.1.1" 315 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 316 | integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= 317 | 318 | json-schema-traverse@^0.4.1: 319 | version "0.4.1" 320 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 321 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 322 | 323 | json-schema@0.2.3: 324 | version "0.2.3" 325 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 326 | integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= 327 | 328 | json-stringify-safe@~5.0.1: 329 | version "5.0.1" 330 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 331 | integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= 332 | 333 | jsprim@^1.2.2: 334 | version "1.4.1" 335 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" 336 | integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= 337 | dependencies: 338 | assert-plus "1.0.0" 339 | extsprintf "1.3.0" 340 | json-schema "0.2.3" 341 | verror "1.10.0" 342 | 343 | mime-db@1.43.0: 344 | version "1.43.0" 345 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" 346 | integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== 347 | 348 | mime-types@^2.1.12, mime-types@~2.1.19: 349 | version "2.1.26" 350 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" 351 | integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== 352 | dependencies: 353 | mime-db "1.43.0" 354 | 355 | minimatch@3.0.4, minimatch@^3.0.4: 356 | version "3.0.4" 357 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 358 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 359 | dependencies: 360 | brace-expansion "^1.1.7" 361 | 362 | minimist@0.0.8: 363 | version "0.0.8" 364 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 365 | integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= 366 | 367 | mkdirp@0.5.1: 368 | version "0.5.1" 369 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 370 | integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= 371 | dependencies: 372 | minimist "0.0.8" 373 | 374 | mocha@^5.2.0: 375 | version "5.2.0" 376 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.2.0.tgz#6d8ae508f59167f940f2b5b3c4a612ae50c90ae6" 377 | integrity sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ== 378 | dependencies: 379 | browser-stdout "1.3.1" 380 | commander "2.15.1" 381 | debug "3.1.0" 382 | diff "3.5.0" 383 | escape-string-regexp "1.0.5" 384 | glob "7.1.2" 385 | growl "1.10.5" 386 | he "1.1.1" 387 | minimatch "3.0.4" 388 | mkdirp "0.5.1" 389 | supports-color "5.4.0" 390 | 391 | ms@2.0.0: 392 | version "2.0.0" 393 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 394 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 395 | 396 | ms@^2.1.1: 397 | version "2.1.2" 398 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 399 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 400 | 401 | oauth-sign@~0.9.0: 402 | version "0.9.0" 403 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" 404 | integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== 405 | 406 | once@^1.3.0: 407 | version "1.4.0" 408 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 409 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 410 | dependencies: 411 | wrappy "1" 412 | 413 | path-is-absolute@^1.0.0: 414 | version "1.0.1" 415 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 416 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 417 | 418 | performance-now@^2.1.0: 419 | version "2.1.0" 420 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" 421 | integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= 422 | 423 | psl@^1.1.24: 424 | version "1.7.0" 425 | resolved "https://registry.yarnpkg.com/psl/-/psl-1.7.0.tgz#f1c4c47a8ef97167dea5d6bbf4816d736e884a3c" 426 | integrity sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ== 427 | 428 | punycode@^1.4.1: 429 | version "1.4.1" 430 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 431 | integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= 432 | 433 | punycode@^2.1.0: 434 | version "2.1.1" 435 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 436 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 437 | 438 | qs@~6.5.2: 439 | version "6.5.2" 440 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" 441 | integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== 442 | 443 | querystringify@^2.1.1: 444 | version "2.1.1" 445 | resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" 446 | integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== 447 | 448 | request@^2.88.0: 449 | version "2.88.0" 450 | resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" 451 | integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== 452 | dependencies: 453 | aws-sign2 "~0.7.0" 454 | aws4 "^1.8.0" 455 | caseless "~0.12.0" 456 | combined-stream "~1.0.6" 457 | extend "~3.0.2" 458 | forever-agent "~0.6.1" 459 | form-data "~2.3.2" 460 | har-validator "~5.1.0" 461 | http-signature "~1.2.0" 462 | is-typedarray "~1.0.0" 463 | isstream "~0.1.2" 464 | json-stringify-safe "~5.0.1" 465 | mime-types "~2.1.19" 466 | oauth-sign "~0.9.0" 467 | performance-now "^2.1.0" 468 | qs "~6.5.2" 469 | safe-buffer "^5.1.2" 470 | tough-cookie "~2.4.3" 471 | tunnel-agent "^0.6.0" 472 | uuid "^3.3.2" 473 | 474 | requires-port@^1.0.0: 475 | version "1.0.0" 476 | resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" 477 | integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= 478 | 479 | safe-buffer@^5.0.1, safe-buffer@^5.1.2: 480 | version "5.2.0" 481 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" 482 | integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== 483 | 484 | safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: 485 | version "2.1.2" 486 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 487 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 488 | 489 | semver@^5.4.1, semver@^5.5.0: 490 | version "5.7.1" 491 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 492 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 493 | 494 | source-map-support@^0.5.0: 495 | version "0.5.16" 496 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" 497 | integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== 498 | dependencies: 499 | buffer-from "^1.0.0" 500 | source-map "^0.6.0" 501 | 502 | source-map@^0.6.0: 503 | version "0.6.1" 504 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 505 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 506 | 507 | sshpk@^1.7.0: 508 | version "1.16.1" 509 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" 510 | integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== 511 | dependencies: 512 | asn1 "~0.2.3" 513 | assert-plus "^1.0.0" 514 | bcrypt-pbkdf "^1.0.0" 515 | dashdash "^1.12.0" 516 | ecc-jsbn "~0.1.1" 517 | getpass "^0.1.1" 518 | jsbn "~0.1.0" 519 | safer-buffer "^2.0.2" 520 | tweetnacl "~0.14.0" 521 | 522 | supports-color@5.4.0: 523 | version "5.4.0" 524 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" 525 | integrity sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w== 526 | dependencies: 527 | has-flag "^3.0.0" 528 | 529 | tough-cookie@~2.4.3: 530 | version "2.4.3" 531 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" 532 | integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== 533 | dependencies: 534 | psl "^1.1.24" 535 | punycode "^1.4.1" 536 | 537 | tunnel-agent@^0.6.0: 538 | version "0.6.0" 539 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 540 | integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= 541 | dependencies: 542 | safe-buffer "^5.0.1" 543 | 544 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 545 | version "0.14.5" 546 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 547 | integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= 548 | 549 | uri-js@^4.2.2: 550 | version "4.2.2" 551 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" 552 | integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== 553 | dependencies: 554 | punycode "^2.1.0" 555 | 556 | url-parse@^1.4.4: 557 | version "1.4.7" 558 | resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" 559 | integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg== 560 | dependencies: 561 | querystringify "^2.1.1" 562 | requires-port "^1.0.0" 563 | 564 | uuid@^3.3.2: 565 | version "3.4.0" 566 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" 567 | integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== 568 | 569 | verror@1.10.0: 570 | version "1.10.0" 571 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" 572 | integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= 573 | dependencies: 574 | assert-plus "^1.0.0" 575 | core-util-is "1.0.2" 576 | extsprintf "^1.2.0" 577 | 578 | vscode-jsonrpc@^4.0.0: 579 | version "4.0.0" 580 | resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-4.0.0.tgz#a7bf74ef3254d0a0c272fab15c82128e378b3be9" 581 | integrity sha512-perEnXQdQOJMTDFNv+UF3h1Y0z4iSiaN9jIlb0OqIYgosPCZGYh/MCUlkFtV2668PL69lRDO32hmvL2yiidUYg== 582 | 583 | vscode-languageclient@^5.2.1: 584 | version "5.2.1" 585 | resolved "https://registry.yarnpkg.com/vscode-languageclient/-/vscode-languageclient-5.2.1.tgz#7cfc83a294c409f58cfa2b910a8cfeaad0397193" 586 | integrity sha512-7jrS/9WnV0ruqPamN1nE7qCxn0phkH5LjSgSp9h6qoJGoeAKzwKz/PF6M+iGA/aklx4GLZg1prddhEPQtuXI1Q== 587 | dependencies: 588 | semver "^5.5.0" 589 | vscode-languageserver-protocol "3.14.1" 590 | 591 | vscode-languageserver-protocol@3.14.1: 592 | version "3.14.1" 593 | resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.14.1.tgz#b8aab6afae2849c84a8983d39a1cf742417afe2f" 594 | integrity sha512-IL66BLb2g20uIKog5Y2dQ0IiigW0XKrvmWiOvc0yXw80z3tMEzEnHjaGAb3ENuU7MnQqgnYJ1Cl2l9RvNgDi4g== 595 | dependencies: 596 | vscode-jsonrpc "^4.0.0" 597 | vscode-languageserver-types "3.14.0" 598 | 599 | vscode-languageserver-types@3.14.0: 600 | version "3.14.0" 601 | resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.14.0.tgz#d3b5952246d30e5241592b6dde8280e03942e743" 602 | integrity sha512-lTmS6AlAlMHOvPQemVwo3CezxBp0sNB95KNPkqp3Nxd5VFEnuG1ByM0zlRWos0zjO3ZWtkvhal0COgiV1xIA4A== 603 | 604 | vscode-test@^0.4.1: 605 | version "0.4.3" 606 | resolved "https://registry.yarnpkg.com/vscode-test/-/vscode-test-0.4.3.tgz#461ebf25fc4bc93d77d982aed556658a2e2b90b8" 607 | integrity sha512-EkMGqBSefZH2MgW65nY05rdRSko15uvzq4VAPM5jVmwYuFQKE7eikKXNJDRxL+OITXHB6pI+a3XqqD32Y3KC5w== 608 | dependencies: 609 | http-proxy-agent "^2.1.0" 610 | https-proxy-agent "^2.2.1" 611 | 612 | vscode@^1.1.36: 613 | version "1.1.36" 614 | resolved "https://registry.yarnpkg.com/vscode/-/vscode-1.1.36.tgz#5e1a0d1bf4977d0c7bc5159a9a13d5b104d4b1b6" 615 | integrity sha512-cGFh9jmGLcTapCpPCKvn8aG/j9zVQ+0x5hzYJq5h5YyUXVGa1iamOaB2M2PZXoumQPES4qeAP1FwkI0b6tL4bQ== 616 | dependencies: 617 | glob "^7.1.2" 618 | mocha "^5.2.0" 619 | request "^2.88.0" 620 | semver "^5.4.1" 621 | source-map-support "^0.5.0" 622 | url-parse "^1.4.4" 623 | vscode-test "^0.4.1" 624 | 625 | wrappy@1: 626 | version "1.0.2" 627 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 628 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 629 | -------------------------------------------------------------------------------- /images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imtbl/dnh/ef40e472ef106f5af65d4c53b5cd01423812fbab/images/icon.png -------------------------------------------------------------------------------- /images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imtbl/dnh/ef40e472ef106f5af65d4c53b5cd01423812fbab/images/logo.png -------------------------------------------------------------------------------- /images/syntax-highlighting-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imtbl/dnh/ef40e472ef106f5af65d4c53b5cd01423812fbab/images/syntax-highlighting-example.png -------------------------------------------------------------------------------- /language-configuration.json: -------------------------------------------------------------------------------- 1 | { 2 | "comments": { 3 | "lineComment": "//", 4 | "blockComment": [ "/*", "*/" ] 5 | }, 6 | "brackets": [ 7 | ["{", "}"], 8 | ["[", "]"], 9 | ["(", ")"] 10 | ], 11 | "autoClosingPairs": [ 12 | ["{", "}"], 13 | ["[", "]"], 14 | ["(", ")"], 15 | ["\"", "\""], 16 | ["'", "'"] 17 | ], 18 | "surroundingPairs": [ 19 | ["{", "}"], 20 | ["[", "]"], 21 | ["(", ")"], 22 | ["\"", "\""], 23 | ["'", "'"] 24 | ] 25 | } 26 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "dnh", 3 | "version": "1.10.0", 4 | "description": "Touhou Danmakufu extension for Visual Studio Code", 5 | "keywords": [ 6 | "touhou", 7 | "touhou-danmakufu", 8 | "syntax-highlighting", 9 | "language-server" 10 | ], 11 | "author": "Michael Serajnik ", 12 | "license": "MIT", 13 | "repository": { 14 | "type": "git", 15 | "url": "https://github.com/mserajnik/dnh.git" 16 | }, 17 | "bugs": { 18 | "url": "https://github.com/mserajnik/dnh/issues" 19 | }, 20 | "scripts": { 21 | "vscode:prepublish": "cd client && yarn update-vscode && cd .. && yarn compile", 22 | "clean": "rimraf ./client/out && rimraf ./server/out", 23 | "compile": "yarn clean && tsc -b", 24 | "postinstall": "cd client && yarn && cd ../server && yarn && cd ..", 25 | "test": "yarn compile" 26 | }, 27 | "publisher": "mserajnik", 28 | "displayName": "dnh", 29 | "engines": { 30 | "vscode": "^1.33.0" 31 | }, 32 | "activationEvents": [ 33 | "onLanguage:dnh" 34 | ], 35 | "main": "./client/out/extension", 36 | "categories": [ 37 | "Programming Languages" 38 | ], 39 | "icon": "images/icon.png", 40 | "galleryBanner": { 41 | "color": "#a5101e", 42 | "theme": "dark" 43 | }, 44 | "contributes": { 45 | "languages": [ 46 | { 47 | "id": "dnh", 48 | "aliases": [ 49 | "Touhou Danmakufu", 50 | "dnh" 51 | ], 52 | "extensions": [ 53 | ".dnh" 54 | ], 55 | "firstLine": "^\\s*(#TouhouDanmakufu|script_|#include|#UserShotData|#UserItemData).*", 56 | "configuration": "./language-configuration.json" 57 | } 58 | ], 59 | "configurationDefaults": { 60 | "[dnh]": { 61 | "editor.insertSpaces": true, 62 | "editor.tabSize": 2 63 | } 64 | }, 65 | "grammars": [ 66 | { 67 | "language": "dnh", 68 | "scopeName": "source.dnh", 69 | "path": "./syntaxes/dnh.tmLanguage.json" 70 | } 71 | ], 72 | "snippets": [ 73 | { 74 | "language": "dnh", 75 | "path": "./snippets/dnh.json" 76 | } 77 | ] 78 | }, 79 | "devDependencies": { 80 | "@types/node": "^13.7.0", 81 | "@typescript-eslint/eslint-plugin": "^2.19.0", 82 | "@typescript-eslint/parser": "^2.19.0", 83 | "eslint": "^6.8.0", 84 | "eslint-config-standard": "^14.1.0", 85 | "eslint-plugin-import": "^2.20.1", 86 | "eslint-plugin-node": "^11.0.0", 87 | "eslint-plugin-promise": "^4.2.1", 88 | "eslint-plugin-standard": "^4.0.1", 89 | "rimraf": "^3.0.1", 90 | "typescript": "^3.7.5" 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /server/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "dnh-server", 3 | "version": "1.10.0", 4 | "description": "Touhou Danmakufu language server", 5 | "author": "Michael Serajnik ", 6 | "license": "MIT", 7 | "publisher": "vscode", 8 | "repository": { 9 | "type": "git", 10 | "url": "https://github.com/mserajnik/dnh.git" 11 | }, 12 | "engines": { 13 | "node": "*" 14 | }, 15 | "dependencies": { 16 | "vscode-languageserver": "^5.2.1" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /server/src/common/types.ts: -------------------------------------------------------------------------------- 1 | import { CompletionItem, MarkupContent } from 'vscode-languageserver-protocol' 2 | 3 | export interface CombinedCompletion { 4 | basic: CompletionItem; 5 | details: CompletionDetail; 6 | } 7 | 8 | export interface CompletionDetail { 9 | detail: string; 10 | documentation: string | MarkupContent; 11 | } 12 | 13 | export interface CursorInfo { 14 | type: string; 15 | word: string; 16 | } 17 | 18 | export interface InfoHover { 19 | name: string; 20 | contents: MarkupContent; 21 | } 22 | -------------------------------------------------------------------------------- /server/src/dictionary/files/data.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "ShotData", 4 | "description": "Contains shot data. Possible content:\n\n`id` sets the ID.\n\n`rect` sets the drawing rectangle. Is ignored if there is animation.\n\n`render` sets the render mode. It defaults to `ALPHA` if not specified.\n\n`delay_rect` sets the drawing rectangle during the delay. If not specified, the `delay_rect` setting specified outside the `ShotData` block is used.\n\n`delay_color` sets the light color during the delay. If not specified, the `delay_rect` setting specified outside the `ShotData` block is used.\n\n`delay_render` sets the render mode during the delay. It defaults to `ADD_ARGB` if not specified.\n\n`angular_velocity` sets the rotation speed. It defaults to `0` if not specified.\n\n`fixed_angle` sets a fixed drawing, if set to `true`, regardless of movement direction. It defaults to `false` if not specified.\n\n`collision` sets the position and size of the hitbox. It gets calculated based on the shot size if not specified.\n\n`AnimationData` contains `animation_data` instructions to animate the shot." 5 | }, 6 | { 7 | "name": "ItemData", 8 | "description": "Contains item data. Possible content:\n\n`id` sets the ID.\n\n`type` sets the item type (used in `@Event`). If not specified, it is the same as `id`.\n\n`rect` sets the drawing rectangle. Is ignored if there is animation.\n\n`out` sets the drawing rectangle when the item is outside the screen.\n\n`render` sets the render mode. It defaults to `ALPHA` if not specified.\n\n`AnimationData` contains `animation_data` instructions to animate the item." 9 | } 10 | ] 11 | -------------------------------------------------------------------------------- /server/src/dictionary/files/headers.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "#TouhouDanmakufu", 4 | "argument": "scriptType", 5 | "description": "Designates the file as a Touhou Danmakufu script and determines the type.\n\nPossible types are `Single`, `Plural`, `Stage` and `Package`." 6 | }, 7 | { 8 | "name": "#ScriptVersion", 9 | "argument": "3", 10 | "description": "Sets the script version.\n\nph3 requires `3` as version." 11 | }, 12 | { 13 | "name": "#ID", 14 | "argument": "\"scriptId\"", 15 | "description": "Sets the ID of the script.\n\nIf omitted, the file name becomes the ID.\n\nUsed internally to distinguish between scripts." 16 | }, 17 | { 18 | "name": "#Title", 19 | "argument": "\"scriptTitle\"", 20 | "description": "Sets the title of the script.\n\nDisplayed in the main menu.\n\nUse `[r]` for line breaks." 21 | }, 22 | { 23 | "name": "#Text", 24 | "argument": "\"scriptDescription\"", 25 | "description": "Sets the description of the script.\n\nDisplayed in the main menu.\n\nUse `[r]` for line breaks." 26 | }, 27 | { 28 | "name": "#Image", 29 | "argument": "\"imagePath\"", 30 | "description": "Sets the image displayed in the menu when highlighting the script.\n\nUse `640x480` images." 31 | }, 32 | { 33 | "name": "#System", 34 | "argument": "\"scriptPath\"", 35 | "description": "Sets the path to the system script.\n\nIf omitted, the default system script under `/script/default_system/Default_System.txt` will be used." 36 | }, 37 | { 38 | "name": "#Background", 39 | "argument": "\"scriptPath\"", 40 | "description": "Sets the path to the background script.\n\nIf omitted, the background is black." 41 | }, 42 | { 43 | "name": "#BGM", 44 | "argument": "\"audioFilePath\"", 45 | "description": "Sets the path to an audio file that plays in the background.\n\nYou can also manually load and play audio files in your script." 46 | }, 47 | { 48 | "name": "#Player", 49 | "argument": "\"scriptPath\"", 50 | "description": "Sets the players that can be used with the script.\n\nIf omitted, all players can be used.\n\nYou can specify multiple players by passing multiple parameters, e.g., `#Player[\"./player/player1/player1.txt\", \"./player/player2/player2.txt\"]`." 51 | }, 52 | { 53 | "name": "#ReplayName", 54 | "argument": "\"replayName\"", 55 | "description": "Sets a custom name for replays.\n\nMust be 8 characters or less." 56 | }, 57 | { 58 | "name": "#UserShotData", 59 | "argument": "", 60 | "description": "Designates that the file contains shot data." 61 | }, 62 | { 63 | "name": "#UserItemData", 64 | "argument": "", 65 | "description": "Designates that the file contains item data." 66 | } 67 | ] 68 | -------------------------------------------------------------------------------- /server/src/dictionary/files/routines.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "@Initialize", 4 | "description": "Runs only once at the start of the script." 5 | }, 6 | { 7 | "name": "@Finalize", 8 | "description": "Runs only once at the end of the script." 9 | }, 10 | { 11 | "name": "@MainLoop", 12 | "description": "Runs once per frame." 13 | }, 14 | { 15 | "name": "@Loading", 16 | "description": "Runs only once before `@Initialize` and should only be used for loading resources." 17 | }, 18 | { 19 | "name": "@Event", 20 | "description": "Runs automatically when needed and is used to control various events." 21 | } 22 | ] 23 | -------------------------------------------------------------------------------- /server/src/dictionary/index.ts: -------------------------------------------------------------------------------- 1 | import { CompletionItem, MarkupKind } from 'vscode-languageserver-protocol' 2 | 3 | import { 4 | CombinedCompletion, CompletionDetail, InfoHover 5 | } from '../common/types' 6 | 7 | import functions from './files/functions.json' 8 | import headers from './files/headers.json' 9 | import routines from './files/routines.json' 10 | import dataBlocks from './files/data.json' 11 | 12 | import worker from './worker' 13 | 14 | const completions: CompletionItem[] = [] 15 | const completionDetails: CompletionDetail[] = [] 16 | const infoHovers: InfoHover[] = [] 17 | 18 | let completionsCounter = 0 19 | 20 | for (const func of functions) { 21 | const processedFunction: CombinedCompletion = worker.processFunction( 22 | func, completionsCounter 23 | ) 24 | 25 | completions.push(processedFunction.basic) 26 | completionDetails.push(processedFunction.details) 27 | 28 | completionsCounter++ 29 | } 30 | 31 | for (const header of headers) { 32 | const processedHeader: CombinedCompletion = worker.processHeader( 33 | header, completionsCounter 34 | ) 35 | 36 | completions.push(processedHeader.basic) 37 | completionDetails.push(processedHeader.details) 38 | 39 | completionsCounter++ 40 | 41 | infoHovers.push({ 42 | name: header.name, 43 | contents: { 44 | kind: MarkupKind.Markdown, 45 | value: header.description 46 | } 47 | }) 48 | } 49 | 50 | for (const routine of routines) { 51 | const processedRoutine = worker.processRoutine(routine, completionsCounter) 52 | 53 | completions.push(processedRoutine.basic) 54 | completionDetails.push(processedRoutine.details) 55 | 56 | completionsCounter++ 57 | 58 | infoHovers.push({ 59 | name: routine.name, 60 | contents: { 61 | kind: MarkupKind.Markdown, 62 | value: routine.description 63 | } 64 | }) 65 | } 66 | 67 | for (const dataBlock of dataBlocks) { 68 | const processedDataBlock = worker.processDataBlock( 69 | dataBlock, completionsCounter 70 | ) 71 | 72 | completions.push(processedDataBlock.basic) 73 | completionDetails.push(processedDataBlock.details) 74 | 75 | completionsCounter++ 76 | 77 | infoHovers.push({ 78 | name: dataBlock.name, 79 | contents: { 80 | kind: MarkupKind.Markdown, 81 | value: dataBlock.description 82 | } 83 | }) 84 | } 85 | 86 | export { completions, completionDetails, infoHovers } 87 | -------------------------------------------------------------------------------- /server/src/dictionary/worker/index.ts: -------------------------------------------------------------------------------- 1 | import { 2 | CompletionItem, 3 | CompletionItemKind, 4 | InsertTextFormat, 5 | MarkupKind 6 | } from 'vscode-languageserver-protocol' 7 | 8 | import { CompletionDetail, CombinedCompletion } from '../../common/types' 9 | 10 | export default { 11 | processFunction: (func: any, data: number): CombinedCompletion => { 12 | let completionItem: CompletionItem 13 | let completionDetail: CompletionDetail 14 | 15 | const args: string[] = [] 16 | const snippetArgs: string[] = [] 17 | const detailArgs: string[] = [] 18 | const params: string[] = [] 19 | 20 | let argsCounter = 0 21 | 22 | for (const arg of func.arguments) { 23 | argsCounter++ 24 | 25 | args.push(arg.name) 26 | snippetArgs.push(`\${${argsCounter}:${arg.name}}`) 27 | 28 | if (arg.type !== '') { 29 | detailArgs.push(`${arg.name}: ${arg.type}`) 30 | params.push(`_@param_ \`${arg.type}\` \`${arg.name}\``) 31 | 32 | continue 33 | } 34 | 35 | detailArgs.push(`${arg.name}`) 36 | params.push(`_@param_ \`${arg.name}\``) 37 | } 38 | 39 | completionItem = { 40 | label: `${func.name}(${args.join(', ')})`, 41 | insertText: `${func.name}(${snippetArgs.join(', ')})`, 42 | insertTextFormat: InsertTextFormat.Snippet, 43 | kind: CompletionItemKind.Function, 44 | data: data 45 | } 46 | 47 | const hasParams: boolean = (params.length > 0) 48 | const hasReturn: boolean = (typeof func.return.name !== 'undefined') 49 | const hasReturnType: boolean = (typeof func.return.type !== 'undefined') 50 | const hasDescription: boolean = (func.description !== '') 51 | const hasNotes: boolean = (func.notes !== '') 52 | 53 | let details: string = `(function) ${func.name}(${detailArgs.join(', ')})` 54 | 55 | if (hasReturnType) { 56 | details = details + `: ${func.return.type}` 57 | } else if (hasReturn) { 58 | details = details + ': free' 59 | } 60 | 61 | const documentation: any[] = [] 62 | 63 | if (hasDescription) { 64 | documentation.push(func.description) 65 | } 66 | 67 | if (hasNotes) { 68 | documentation.push(func.notes) 69 | } 70 | 71 | const docBlock: any[] = [] 72 | 73 | if (hasParams) { 74 | docBlock.push('\n\n') 75 | 76 | for (let i = 0; i < params.length; i++) { 77 | docBlock.push(params[i]) 78 | 79 | if (i !== (params.length - 1)) { 80 | docBlock.push(' \n') 81 | } 82 | } 83 | } 84 | 85 | if (hasReturn) { 86 | docBlock.push('\n\n') 87 | 88 | if (hasReturnType) { 89 | docBlock.push( 90 | `_@return_ \`${func.return.type}\` \`${func.return.name}\`` 91 | ) 92 | } else { 93 | docBlock.push(`_@return_ \`${func.return.name}\``) 94 | } 95 | } 96 | 97 | completionDetail = { 98 | detail: details, 99 | documentation: { 100 | kind: MarkupKind.Markdown, 101 | value: documentation.join('\n\n') + docBlock.join('') 102 | } 103 | } 104 | 105 | return { 106 | basic: completionItem, 107 | details: completionDetail 108 | } 109 | }, 110 | processHeader: (header: any, data: number): CombinedCompletion => { 111 | let completionItem: CompletionItem 112 | let completionDetail: CompletionDetail 113 | 114 | let insertText = header.name 115 | let detail = `(header) ${header.name}` 116 | 117 | if (header.argument !== '') { 118 | insertText += `[\${1:${header.argument}}]` 119 | detail += `[${header.argument}]` 120 | } 121 | 122 | completionItem = { 123 | label: header.name, 124 | insertText: insertText, 125 | insertTextFormat: InsertTextFormat.Snippet, 126 | kind: CompletionItemKind.Keyword, 127 | data: data 128 | } 129 | 130 | completionDetail = { 131 | detail: detail, 132 | documentation: { 133 | kind: MarkupKind.Markdown, 134 | value: header.description 135 | } 136 | } 137 | 138 | return { 139 | basic: completionItem, 140 | details: completionDetail 141 | } 142 | }, 143 | processRoutine: (routine: any, data: number): CombinedCompletion => { 144 | let completionItem: CompletionItem 145 | let completionDetail: CompletionDetail 146 | 147 | completionItem = { 148 | label: routine.name, 149 | insertText: `${routine.name} {\n\t$1\n}`, 150 | insertTextFormat: InsertTextFormat.Snippet, 151 | kind: CompletionItemKind.Struct, 152 | data: data 153 | } 154 | 155 | completionDetail = { 156 | detail: `(routine) ${routine.name}`, 157 | documentation: { 158 | kind: MarkupKind.Markdown, 159 | value: routine.description 160 | } 161 | } 162 | 163 | return { 164 | basic: completionItem, 165 | details: completionDetail 166 | } 167 | }, 168 | processDataBlock: (dataBlock: any, data: number): CombinedCompletion => { 169 | let completionItem: CompletionItem 170 | let completionDetail: CompletionDetail 171 | 172 | completionItem = { 173 | label: dataBlock.name, 174 | insertText: `${dataBlock.name} {\n\t$1\n}`, 175 | insertTextFormat: InsertTextFormat.Snippet, 176 | kind: CompletionItemKind.Struct, 177 | data: data 178 | } 179 | 180 | completionDetail = { 181 | detail: `(data) ${dataBlock.name}`, 182 | documentation: { 183 | kind: MarkupKind.Markdown, 184 | value: dataBlock.description 185 | } 186 | } 187 | 188 | return { 189 | basic: completionItem, 190 | details: completionDetail 191 | } 192 | } 193 | } 194 | -------------------------------------------------------------------------------- /server/src/server.ts: -------------------------------------------------------------------------------- 1 | import { 2 | CompletionItem, 3 | createConnection, 4 | Hover, 5 | ProposedFeatures, 6 | TextDocument, 7 | TextDocuments, 8 | TextDocumentPositionParams 9 | } from 'vscode-languageserver' 10 | 11 | import { CursorInfo, InfoHover } from './common/types' 12 | 13 | import { completions, completionDetails, infoHovers } from './dictionary' 14 | 15 | const getCursorInfo = ( 16 | text: string, 17 | start: number, 18 | end: number 19 | ): CursorInfo => { 20 | while (start >= 0 && /[a-zA-Z0-9_#@]/.test(text[start])) { 21 | start-- 22 | } 23 | 24 | while (end < text.length && /[a-zA-Z0-9_(]/.test(text[end])) { 25 | end++ 26 | 27 | if (text.substr(end - 1, 1) === '(') { 28 | return { 29 | type: 'function', 30 | word: text.substr(start + 1, end - start - 1) 31 | } 32 | } 33 | } 34 | 35 | return { 36 | type: 'default', 37 | word: text.substr(start + 1, end - start - 1) 38 | } 39 | } 40 | 41 | const connection = createConnection(ProposedFeatures.all) 42 | 43 | let documents: TextDocuments = new TextDocuments() 44 | 45 | connection.onInitialize(() => { 46 | return { 47 | capabilities: { 48 | textDocumentSync: documents.syncKind, 49 | completionProvider: { resolveProvider: true }, 50 | hoverProvider: true 51 | } 52 | } 53 | }) 54 | 55 | connection.onCompletion((): CompletionItem[] => { 56 | return completions 57 | }) 58 | 59 | connection.onCompletionResolve((item: CompletionItem): CompletionItem => { 60 | item.detail = completionDetails[item.data].detail 61 | item.documentation = completionDetails[item.data].documentation 62 | 63 | return item 64 | }) 65 | 66 | connection.onHover( 67 | (textDocumentPosition: TextDocumentPositionParams): Hover | undefined => { 68 | const document: TextDocument | undefined = documents.get( 69 | textDocumentPosition.textDocument.uri 70 | ) 71 | 72 | if (!document) { 73 | return { 74 | contents: '' 75 | } 76 | } 77 | 78 | const text: string = document.getText() 79 | const offset: number = document.offsetAt(textDocumentPosition.position) 80 | 81 | let start: number = offset 82 | let end: number = offset + 1 83 | 84 | const cursorInfo: CursorInfo = getCursorInfo(text, start, end) 85 | 86 | let result: CompletionItem | InfoHover | undefined 87 | 88 | if (cursorInfo.type === 'function') { 89 | result = cursorInfo.word !== '' 90 | ? completions.find(item => item.label.startsWith(cursorInfo.word)) 91 | : undefined 92 | 93 | return { 94 | contents: result 95 | ? completionDetails[result.data].documentation 96 | : '' 97 | } 98 | } 99 | 100 | result = cursorInfo.word !== '' 101 | ? infoHovers.find(item => item.name.startsWith(cursorInfo.word)) 102 | : undefined 103 | 104 | return { 105 | contents: result 106 | ? result.contents 107 | : '' 108 | } 109 | } 110 | ) 111 | 112 | documents.listen(connection) 113 | 114 | connection.listen() 115 | -------------------------------------------------------------------------------- /server/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "strict": true, 4 | "removeComments": true, 5 | "target": "es6", 6 | "module": "commonjs", 7 | "moduleResolution": "node", 8 | "esModuleInterop": true, 9 | "resolveJsonModule": true, 10 | "rootDir": "src", 11 | "outDir": "out" 12 | }, 13 | "include": [ 14 | "src" 15 | ], 16 | "exclude": [ 17 | "node_modules" 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /server/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | vscode-jsonrpc@^4.0.0: 6 | version "4.0.0" 7 | resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-4.0.0.tgz#a7bf74ef3254d0a0c272fab15c82128e378b3be9" 8 | integrity sha512-perEnXQdQOJMTDFNv+UF3h1Y0z4iSiaN9jIlb0OqIYgosPCZGYh/MCUlkFtV2668PL69lRDO32hmvL2yiidUYg== 9 | 10 | vscode-languageserver-protocol@3.14.1: 11 | version "3.14.1" 12 | resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.14.1.tgz#b8aab6afae2849c84a8983d39a1cf742417afe2f" 13 | integrity sha512-IL66BLb2g20uIKog5Y2dQ0IiigW0XKrvmWiOvc0yXw80z3tMEzEnHjaGAb3ENuU7MnQqgnYJ1Cl2l9RvNgDi4g== 14 | dependencies: 15 | vscode-jsonrpc "^4.0.0" 16 | vscode-languageserver-types "3.14.0" 17 | 18 | vscode-languageserver-types@3.14.0: 19 | version "3.14.0" 20 | resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.14.0.tgz#d3b5952246d30e5241592b6dde8280e03942e743" 21 | integrity sha512-lTmS6AlAlMHOvPQemVwo3CezxBp0sNB95KNPkqp3Nxd5VFEnuG1ByM0zlRWos0zjO3ZWtkvhal0COgiV1xIA4A== 22 | 23 | vscode-languageserver@^5.2.1: 24 | version "5.2.1" 25 | resolved "https://registry.yarnpkg.com/vscode-languageserver/-/vscode-languageserver-5.2.1.tgz#0d2feddd33f92aadf5da32450df498d52f6f14eb" 26 | integrity sha512-GuayqdKZqAwwaCUjDvMTAVRPJOp/SLON3mJ07eGsx/Iq9HjRymhKWztX41rISqDKhHVVyFM+IywICyZDla6U3A== 27 | dependencies: 28 | vscode-languageserver-protocol "3.14.1" 29 | vscode-uri "^1.0.6" 30 | 31 | vscode-uri@^1.0.6: 32 | version "1.0.8" 33 | resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-1.0.8.tgz#9769aaececae4026fb6e22359cb38946580ded59" 34 | integrity sha512-obtSWTlbJ+a+TFRYGaUumtVwb+InIUVI0Lu0VBUAPmj2cU5JutEXg3xUE0c2J5Tcy7h2DEKVJBFi+Y9ZSFzzPQ== 35 | -------------------------------------------------------------------------------- /snippets/dnh.json: -------------------------------------------------------------------------------- 1 | { 2 | "Insert variable": { 3 | "prefix": "let", 4 | "body": [ 5 | "let ${1:variableName}" 6 | ], 7 | "description": "Insert a variable" 8 | }, 9 | "Insert if": { 10 | "prefix": "if", 11 | "body": [ 12 | "if (${1:statement}) {", 13 | "\t${2:// do something}", 14 | "} else {", 15 | "\t${3:// do something else}", 16 | "}" 17 | ], 18 | "description": "Insert an if statement" 19 | }, 20 | "Insert alternative case": { 21 | "prefix": "alternative", 22 | "body": [ 23 | "alternative (${1:variable})", 24 | "case (${2:caseX}) {", 25 | "\t${3:// do something}", 26 | "}", 27 | "case (${4:caseY}) {", 28 | "\t${5:// do something else}", 29 | "}", 30 | "others {", 31 | "\t${6:// do something in default case}", 32 | "}" 33 | ], 34 | "description": "Insert an alternative case statement" 35 | }, 36 | "Insert loop": { 37 | "prefix": "loop", 38 | "body": [ 39 | "loop (${1:counter}) {", 40 | "\t${2:// do something}", 41 | "}" 42 | ], 43 | "description": "Insert a loop" 44 | }, 45 | "Insert while": { 46 | "prefix": "while", 47 | "body": [ 48 | "while (${1:variable} < ${2:number}) {", 49 | "\t${3:// do something}", 50 | "\t$1++", 51 | "}" 52 | ], 53 | "description": "Insert a while loop" 54 | }, 55 | "Insert ascent": { 56 | "prefix": "ascent", 57 | "body": [ 58 | "ascent (in in ${1:0}..${2:10}) {", 59 | "\t${3:// do something}", 60 | "}" 61 | ], 62 | "description": "Insert an ascent loop" 63 | }, 64 | "Insert local": { 65 | "prefix": "local", 66 | "body": [ 67 | "local {", 68 | "\t${1:// do something}", 69 | "}" 70 | ], 71 | "description": "Insert a local block" 72 | }, 73 | "Insert yield": { 74 | "prefix": "yield", 75 | "body": [ 76 | "yield" 77 | ], 78 | "description": "Insert a yield" 79 | }, 80 | "Insert function": { 81 | "prefix": "function", 82 | "body": [ 83 | "function functionName (${1:arguments}) {", 84 | "\t${2:// do something}", 85 | "}" 86 | ], 87 | "description": "Insert a function" 88 | }, 89 | "Insert task": { 90 | "prefix": "task", 91 | "body": [ 92 | "task TaskName (${1:arguments}) {", 93 | "\t${2:// do something}", 94 | "}" 95 | ], 96 | "description": "Insert a task" 97 | }, 98 | "Insert include": { 99 | "prefix": "include", 100 | "body": [ 101 | "#include \"${1:scriptPath}\"" 102 | ], 103 | "description": "Insert an include" 104 | } 105 | } 106 | -------------------------------------------------------------------------------- /sparen_permission.md: -------------------------------------------------------------------------------- 1 | __From:__ Andrew Fan 2 | __Subject:__ Re: Usage of your Danmakufu ph3 function reference 3 | __Date:__ Sun, 24 Jun 2018 12:35:08 -0700 (PDT)⁩ 4 | __To:__ Michael Serajnik 5 | 6 | To Mr. Serajnik, 7 | 8 | If you would like to use my function reference for your VS Code extension, 9 | please feel free to do so. However, I may update the JSON files without prior 10 | notice if a bug report comes in, and there is no guarantee of accuracy, since 11 | most of the information was copied and adapted from a public wiki + Google 12 | Translate. The structure of the JSON files should not change anytime in the 13 | future, but if it does there will probably be no prior notice. 14 | 15 | If you do use it though, it would be preferable to cite me in the credits and 16 | also provide a link to my English function reference at 17 | https://sparen.github.io/ph3tutorials/docs.html as well as the official 18 | documentation at 19 | http://www.geocities.co.jp/SiliconValley-Oakland/9951/pre/th_dnh_help_v3.html 20 | 21 | This should ensure that if something *is* wrong, the source and official 22 | reference can be found with ease. 23 | 24 | Thank you, 25 | 26 | Andrew Fan (Sparen of Iría) 27 | -------------------------------------------------------------------------------- /syntaxes/dnh.tmLanguage.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json", 3 | "name": "Touhou Danmakufu", 4 | "scopeName": "source.dnh", 5 | "patterns": [ 6 | { 7 | "match": "//.*$\\n?", 8 | "name": "comment.line.double-slash.dnh" 9 | }, 10 | { 11 | "begin": "/\\*", 12 | "end": "\\*/", 13 | "name": "comment.block.dnh" 14 | }, 15 | { 16 | "match": "\\b\\d+\\.?\\d*\\b", 17 | "name": "constant.numeric.dnh" 18 | }, 19 | { 20 | "match": "\\b(true|false|pi)\\b", 21 | "name": "constant.language.dnh" 22 | }, 23 | { 24 | "match": "\\b(EV)_[\\w_]+\\b", 25 | "name": "variable.parameter.enum.event.dnh" 26 | }, 27 | { 28 | "match": "\\b(ID_INVALID|KEY_INVALID|OBJ_[\\w_]+|TYPE_[\\w_]+|ITEM_[\\w_]+)\\b", 29 | "name": "variable.parameter.enum.other.dnh" 30 | }, 31 | { 32 | "match": "\\b(BLEND_ALPHA|BLEND_ADD_RGB|BLEND_ADD_ARGB|BLEND_MULTIPLY|BLEND_SUBTRACT|BLEND_INV_DESTRGB)\\b", 33 | "name": "variable.parameter.enum.blendtype.dnh" 34 | }, 35 | { 36 | "match": "\\b(INFO_SCRIPT_TYPE|INFO_SCRIPT_PATH|INFO_SCRIPT_ID|INFO_SCRIPT_TITLE|INFO_SCRIPT_TEXT|INFO_SCRIPT_IMAGE|INFO_SCRIPT_REPLAY_NAME|INFO_LIFE|INFO_DAMAGE_RATE_SHOT|INFO_DAMAGE_RATE_SPELL|INFO_SHOT_HIT_COUNT|INFO_IS_SPELL|INFO_IS_LAST_SPELL|INFO_IS_DURABLE_SPELL|INFO_IS_LAST_STEP|INFO_TIMER|INFO_TIMERF|INFO_ORGTIMERF|INFO_SPELL_SCORE|INFO_REMAIN_STEP_COUNT|INFO_ACTIVE_STEP_LIFE_COUNT|INFO_ACTIVE_STEP_TOTAL_MAX_LIFE|INFO_ACTIVE_STEP_TOTAL_LIFE|INFO_PLAYER_SHOOTDOWN_COUNT|INFO_PLAYER_SPELL_COUNT|INFO_ACTIVE_STEP_LIFE_RATE_LIST|INFO_CURRENT_LIFE|INFO_CURRENT_LIFE_MAX|INFO_RECT|INFO_DELAY_COLOR|INFO_BLEND|INFO_COLLISION|INFO_COLLISION_LIST|INFO_ITEM_SCORE|REPLAY_FILE_PATH|REPLAY_DATE_TIME|REPLAY_USER_NAME|REPLAY_TOTAL_SCORE|REPLAY_FPS_AVERAGE|REPLAY_PLAYER_NAME|REPLAY_STAGE_INDEX_LIST|REPLAY_STAGE_START_SCORE_LIST|REPLAY_STAGE_LAST_SCORE_LIST|REPLAY_COMMENT)\\b", 37 | "name": "variable.parameter.enum.infotype.dnh" 38 | }, 39 | { 40 | "match": "\\b(alternative|ascent|break|case|descent|else|if|in|local|loop|return|others|times|while|yield)\\b", 41 | "name": "keyword.control.flow.dnh" 42 | }, 43 | { 44 | "match": "^\\s*#(TouhouDanmakufu|ScriptVersion|ID|Title|Text|Image|System|Background|BGM|Player|ReplayName|UserShotData|UserItemData)\\b", 45 | "name": "keyword.control.header.dnh" 46 | }, 47 | { 48 | "match": "^\\s*#include\\b", 49 | "name": "keyword.control.include.dnh" 50 | }, 51 | { 52 | "match": "\\b(add|append|concatenate|divide|erase|index|length|multiply|not|negative|power|predecessor|remainder|result|slice|successor|subtract)\\b", 53 | "name": "keyword.operator.textual.dnh" 54 | }, 55 | { 56 | "match": "==|!=|<=|&rt;=|<|&rt;|\\|\\||&&|~|!", 57 | "name": "keyword.operator.logical.dnh" 58 | }, 59 | { 60 | "match": "\\+=|\\+|-=|-|\\*=|\\*|/=|/|%|\\^|\\(\\||\\|\\)", 61 | "name": "keyword.operator.symbol.dnh" 62 | }, 63 | { 64 | "match": "^\\s*(let|real|char|boolean)\\b", 65 | "name": "storage.type.variable.dnh" 66 | }, 67 | { 68 | "begin": "'", 69 | "end": "'", 70 | "name": "string.quoted.single.dnh" 71 | }, 72 | { 73 | "begin": "(?') 63 | .join('\n\n') 64 | .split('') 65 | .join('`') 66 | .split('') 67 | .join('`') 68 | .split('"') 69 | .join('\'') 70 | .trim() 71 | 72 | const notes = func.notes 73 | .split('
') 74 | .join('\n\n') 75 | .split('') 76 | .join('`') 77 | .split('') 78 | .join('`') 79 | .split('"') 80 | .join('\'') 81 | .trim() 82 | 83 | output.push({ 84 | name: func.fname.trim(), 85 | arguments: args, 86 | return: returnV, 87 | description: description, 88 | notes: notes 89 | }) 90 | } 91 | } 92 | } 93 | 94 | fs.writeFileSync( 95 | path.resolve( 96 | __dirname, 97 | `../../server/src/dictionary/files/functions.json` 98 | ), 99 | JSON.stringify(output, null, 2) + '\n' 100 | ) 101 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "strict": true, 4 | "removeComments": true, 5 | "target": "es6", 6 | "module": "commonjs", 7 | "moduleResolution": "node", 8 | "esModuleInterop": true, 9 | "resolveJsonModule": true, 10 | "rootDir": "src", 11 | "outDir": "out" 12 | }, 13 | "include": [ 14 | "src" 15 | ], 16 | "exclude": [ 17 | "node_modules" 18 | ], 19 | "references": [ 20 | { 21 | "path": "./client" 22 | }, 23 | { 24 | "path": "./server" 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 | "@babel/code-frame@^7.0.0": 6 | version "7.8.3" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" 8 | integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== 9 | dependencies: 10 | "@babel/highlight" "^7.8.3" 11 | 12 | "@babel/highlight@^7.8.3": 13 | version "7.8.3" 14 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797" 15 | integrity sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg== 16 | dependencies: 17 | chalk "^2.0.0" 18 | esutils "^2.0.2" 19 | js-tokens "^4.0.0" 20 | 21 | "@types/eslint-visitor-keys@^1.0.0": 22 | version "1.0.0" 23 | resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" 24 | integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== 25 | 26 | "@types/json-schema@^7.0.3": 27 | version "7.0.4" 28 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" 29 | integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA== 30 | 31 | "@types/node@^13.7.0": 32 | version "13.7.0" 33 | resolved "https://registry.yarnpkg.com/@types/node/-/node-13.7.0.tgz#b417deda18cf8400f278733499ad5547ed1abec4" 34 | integrity sha512-GnZbirvmqZUzMgkFn70c74OQpTTUcCzlhQliTzYjQMqg+hVKcDnxdL19Ne3UdYzdMA/+W3eb646FWn/ZaT1NfQ== 35 | 36 | "@typescript-eslint/eslint-plugin@^2.19.0": 37 | version "2.19.0" 38 | resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.19.0.tgz#bf743448a4633e4b52bee0c40148ba072ab3adbd" 39 | integrity sha512-u7IcQ9qwsB6U806LupZmINRnQjC+RJyv36sV/ugaFWMHTbFm/hlLTRx3gGYJgHisxcGSTnf+I/fPDieRMhPSQQ== 40 | dependencies: 41 | "@typescript-eslint/experimental-utils" "2.19.0" 42 | eslint-utils "^1.4.3" 43 | functional-red-black-tree "^1.0.1" 44 | regexpp "^3.0.0" 45 | tsutils "^3.17.1" 46 | 47 | "@typescript-eslint/experimental-utils@2.19.0": 48 | version "2.19.0" 49 | resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.19.0.tgz#d5ca732f22c009e515ba09fcceb5f2127d841568" 50 | integrity sha512-zwpg6zEOPbhB3+GaQfufzlMUOO6GXCNZq6skk+b2ZkZAIoBhVoanWK255BS1g5x9bMwHpLhX0Rpn5Fc3NdCZdg== 51 | dependencies: 52 | "@types/json-schema" "^7.0.3" 53 | "@typescript-eslint/typescript-estree" "2.19.0" 54 | eslint-scope "^5.0.0" 55 | 56 | "@typescript-eslint/parser@^2.19.0": 57 | version "2.19.0" 58 | resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.19.0.tgz#912160d9425395d09857dcd5382352bc98be11ae" 59 | integrity sha512-s0jZoxAWjHnuidbbN7aA+BFVXn4TCcxEVGPV8lWMxZglSs3NRnFFAlL+aIENNmzB2/1jUJuySi6GiM6uACPmpg== 60 | dependencies: 61 | "@types/eslint-visitor-keys" "^1.0.0" 62 | "@typescript-eslint/experimental-utils" "2.19.0" 63 | "@typescript-eslint/typescript-estree" "2.19.0" 64 | eslint-visitor-keys "^1.1.0" 65 | 66 | "@typescript-eslint/typescript-estree@2.19.0": 67 | version "2.19.0" 68 | resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.19.0.tgz#6bd7310b9827e04756fe712909f26956aac4b196" 69 | integrity sha512-n6/Xa37k0jQdwpUszffi19AlNbVCR0sdvCs3DmSKMD7wBttKY31lhD2fug5kMD91B2qW4mQldaTEc1PEzvGu8w== 70 | dependencies: 71 | debug "^4.1.1" 72 | eslint-visitor-keys "^1.1.0" 73 | glob "^7.1.6" 74 | is-glob "^4.0.1" 75 | lodash "^4.17.15" 76 | semver "^6.3.0" 77 | tsutils "^3.17.1" 78 | 79 | acorn-jsx@^5.1.0: 80 | version "5.1.0" 81 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.1.0.tgz#294adb71b57398b0680015f0a38c563ee1db5384" 82 | integrity sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw== 83 | 84 | acorn@^7.1.0: 85 | version "7.1.0" 86 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" 87 | integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ== 88 | 89 | ajv@^6.10.0, ajv@^6.10.2: 90 | version "6.11.0" 91 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.11.0.tgz#c3607cbc8ae392d8a5a536f25b21f8e5f3f87fe9" 92 | integrity sha512-nCprB/0syFYy9fVYU1ox1l2KN8S9I+tziH8D4zdZuLT3N6RMlGSGt5FSTpAiHB/Whv8Qs1cWHma1aMKZyaHRKA== 93 | dependencies: 94 | fast-deep-equal "^3.1.1" 95 | fast-json-stable-stringify "^2.0.0" 96 | json-schema-traverse "^0.4.1" 97 | uri-js "^4.2.2" 98 | 99 | ansi-escapes@^4.2.1: 100 | version "4.3.0" 101 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.0.tgz#a4ce2b33d6b214b7950d8595c212f12ac9cc569d" 102 | integrity sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg== 103 | dependencies: 104 | type-fest "^0.8.1" 105 | 106 | ansi-regex@^4.1.0: 107 | version "4.1.0" 108 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" 109 | integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== 110 | 111 | ansi-regex@^5.0.0: 112 | version "5.0.0" 113 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 114 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== 115 | 116 | ansi-styles@^3.2.0, ansi-styles@^3.2.1: 117 | version "3.2.1" 118 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 119 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 120 | dependencies: 121 | color-convert "^1.9.0" 122 | 123 | argparse@^1.0.7: 124 | version "1.0.10" 125 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 126 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 127 | dependencies: 128 | sprintf-js "~1.0.2" 129 | 130 | array-includes@^3.0.3: 131 | version "3.1.1" 132 | resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" 133 | integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== 134 | dependencies: 135 | define-properties "^1.1.3" 136 | es-abstract "^1.17.0" 137 | is-string "^1.0.5" 138 | 139 | array.prototype.flat@^1.2.1: 140 | version "1.2.3" 141 | resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" 142 | integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== 143 | dependencies: 144 | define-properties "^1.1.3" 145 | es-abstract "^1.17.0-next.1" 146 | 147 | astral-regex@^1.0.0: 148 | version "1.0.0" 149 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" 150 | integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== 151 | 152 | balanced-match@^1.0.0: 153 | version "1.0.0" 154 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 155 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 156 | 157 | brace-expansion@^1.1.7: 158 | version "1.1.11" 159 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 160 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 161 | dependencies: 162 | balanced-match "^1.0.0" 163 | concat-map "0.0.1" 164 | 165 | callsites@^3.0.0: 166 | version "3.1.0" 167 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 168 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 169 | 170 | chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.2: 171 | version "2.4.2" 172 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 173 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 174 | dependencies: 175 | ansi-styles "^3.2.1" 176 | escape-string-regexp "^1.0.5" 177 | supports-color "^5.3.0" 178 | 179 | chardet@^0.7.0: 180 | version "0.7.0" 181 | resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" 182 | integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== 183 | 184 | cli-cursor@^3.1.0: 185 | version "3.1.0" 186 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" 187 | integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== 188 | dependencies: 189 | restore-cursor "^3.1.0" 190 | 191 | cli-width@^2.0.0: 192 | version "2.2.0" 193 | resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" 194 | integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= 195 | 196 | color-convert@^1.9.0: 197 | version "1.9.3" 198 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 199 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 200 | dependencies: 201 | color-name "1.1.3" 202 | 203 | color-name@1.1.3: 204 | version "1.1.3" 205 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 206 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 207 | 208 | concat-map@0.0.1: 209 | version "0.0.1" 210 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 211 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 212 | 213 | contains-path@^0.1.0: 214 | version "0.1.0" 215 | resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" 216 | integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= 217 | 218 | cross-spawn@^6.0.5: 219 | version "6.0.5" 220 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" 221 | integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== 222 | dependencies: 223 | nice-try "^1.0.4" 224 | path-key "^2.0.1" 225 | semver "^5.5.0" 226 | shebang-command "^1.2.0" 227 | which "^1.2.9" 228 | 229 | debug@^2.6.9: 230 | version "2.6.9" 231 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 232 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 233 | dependencies: 234 | ms "2.0.0" 235 | 236 | debug@^4.0.1, debug@^4.1.1: 237 | version "4.1.1" 238 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" 239 | integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== 240 | dependencies: 241 | ms "^2.1.1" 242 | 243 | deep-is@~0.1.3: 244 | version "0.1.3" 245 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 246 | integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= 247 | 248 | define-properties@^1.1.2, define-properties@^1.1.3: 249 | version "1.1.3" 250 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" 251 | integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== 252 | dependencies: 253 | object-keys "^1.0.12" 254 | 255 | doctrine@1.5.0: 256 | version "1.5.0" 257 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" 258 | integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= 259 | dependencies: 260 | esutils "^2.0.2" 261 | isarray "^1.0.0" 262 | 263 | doctrine@^3.0.0: 264 | version "3.0.0" 265 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 266 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 267 | dependencies: 268 | esutils "^2.0.2" 269 | 270 | emoji-regex@^7.0.1: 271 | version "7.0.3" 272 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" 273 | integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== 274 | 275 | emoji-regex@^8.0.0: 276 | version "8.0.0" 277 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 278 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 279 | 280 | error-ex@^1.2.0: 281 | version "1.3.2" 282 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 283 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 284 | dependencies: 285 | is-arrayish "^0.2.1" 286 | 287 | es-abstract@^1.17.0, es-abstract@^1.17.0-next.1: 288 | version "1.17.4" 289 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.4.tgz#e3aedf19706b20e7c2594c35fc0d57605a79e184" 290 | integrity sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ== 291 | dependencies: 292 | es-to-primitive "^1.2.1" 293 | function-bind "^1.1.1" 294 | has "^1.0.3" 295 | has-symbols "^1.0.1" 296 | is-callable "^1.1.5" 297 | is-regex "^1.0.5" 298 | object-inspect "^1.7.0" 299 | object-keys "^1.1.1" 300 | object.assign "^4.1.0" 301 | string.prototype.trimleft "^2.1.1" 302 | string.prototype.trimright "^2.1.1" 303 | 304 | es-to-primitive@^1.2.1: 305 | version "1.2.1" 306 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" 307 | integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== 308 | dependencies: 309 | is-callable "^1.1.4" 310 | is-date-object "^1.0.1" 311 | is-symbol "^1.0.2" 312 | 313 | escape-string-regexp@^1.0.5: 314 | version "1.0.5" 315 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 316 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 317 | 318 | eslint-config-standard@^14.1.0: 319 | version "14.1.0" 320 | resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-14.1.0.tgz#b23da2b76fe5a2eba668374f246454e7058f15d4" 321 | integrity sha512-EF6XkrrGVbvv8hL/kYa/m6vnvmUT+K82pJJc4JJVMM6+Qgqh0pnwprSxdduDLB9p/7bIxD+YV5O0wfb8lmcPbA== 322 | 323 | eslint-import-resolver-node@^0.3.2: 324 | version "0.3.3" 325 | resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz#dbaa52b6b2816b50bc6711af75422de808e98404" 326 | integrity sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg== 327 | dependencies: 328 | debug "^2.6.9" 329 | resolve "^1.13.1" 330 | 331 | eslint-module-utils@^2.4.1: 332 | version "2.5.2" 333 | resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.5.2.tgz#7878f7504824e1b857dd2505b59a8e5eda26a708" 334 | integrity sha512-LGScZ/JSlqGKiT8OC+cYRxseMjyqt6QO54nl281CK93unD89ijSeRV6An8Ci/2nvWVKe8K/Tqdm75RQoIOCr+Q== 335 | dependencies: 336 | debug "^2.6.9" 337 | pkg-dir "^2.0.0" 338 | 339 | eslint-plugin-es@^3.0.0: 340 | version "3.0.0" 341 | resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-3.0.0.tgz#98cb1bc8ab0aa807977855e11ad9d1c9422d014b" 342 | integrity sha512-6/Jb/J/ZvSebydwbBJO1R9E5ky7YeElfK56Veh7e4QGFHCXoIXGH9HhVz+ibJLM3XJ1XjP+T7rKBLUa/Y7eIng== 343 | dependencies: 344 | eslint-utils "^2.0.0" 345 | regexpp "^3.0.0" 346 | 347 | eslint-plugin-import@^2.20.1: 348 | version "2.20.1" 349 | resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz#802423196dcb11d9ce8435a5fc02a6d3b46939b3" 350 | integrity sha512-qQHgFOTjguR+LnYRoToeZWT62XM55MBVXObHM6SKFd1VzDcX/vqT1kAz8ssqigh5eMj8qXcRoXXGZpPP6RfdCw== 351 | dependencies: 352 | array-includes "^3.0.3" 353 | array.prototype.flat "^1.2.1" 354 | contains-path "^0.1.0" 355 | debug "^2.6.9" 356 | doctrine "1.5.0" 357 | eslint-import-resolver-node "^0.3.2" 358 | eslint-module-utils "^2.4.1" 359 | has "^1.0.3" 360 | minimatch "^3.0.4" 361 | object.values "^1.1.0" 362 | read-pkg-up "^2.0.0" 363 | resolve "^1.12.0" 364 | 365 | eslint-plugin-node@^11.0.0: 366 | version "11.0.0" 367 | resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-11.0.0.tgz#365944bb0804c5d1d501182a9bc41a0ffefed726" 368 | integrity sha512-chUs/NVID+sknFiJzxoN9lM7uKSOEta8GC8365hw1nDfwIPIjjpRSwwPvQanWv8dt/pDe9EV4anmVSwdiSndNg== 369 | dependencies: 370 | eslint-plugin-es "^3.0.0" 371 | eslint-utils "^2.0.0" 372 | ignore "^5.1.1" 373 | minimatch "^3.0.4" 374 | resolve "^1.10.1" 375 | semver "^6.1.0" 376 | 377 | eslint-plugin-promise@^4.2.1: 378 | version "4.2.1" 379 | resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz#845fd8b2260ad8f82564c1222fce44ad71d9418a" 380 | integrity sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw== 381 | 382 | eslint-plugin-standard@^4.0.1: 383 | version "4.0.1" 384 | resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-4.0.1.tgz#ff0519f7ffaff114f76d1bd7c3996eef0f6e20b4" 385 | integrity sha512-v/KBnfyaOMPmZc/dmc6ozOdWqekGp7bBGq4jLAecEfPGmfKiWS4sA8sC0LqiV9w5qmXAtXVn4M3p1jSyhY85SQ== 386 | 387 | eslint-scope@^5.0.0: 388 | version "5.0.0" 389 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" 390 | integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== 391 | dependencies: 392 | esrecurse "^4.1.0" 393 | estraverse "^4.1.1" 394 | 395 | eslint-utils@^1.4.3: 396 | version "1.4.3" 397 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" 398 | integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== 399 | dependencies: 400 | eslint-visitor-keys "^1.1.0" 401 | 402 | eslint-utils@^2.0.0: 403 | version "2.0.0" 404 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.0.0.tgz#7be1cc70f27a72a76cd14aa698bcabed6890e1cd" 405 | integrity sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA== 406 | dependencies: 407 | eslint-visitor-keys "^1.1.0" 408 | 409 | eslint-visitor-keys@^1.1.0: 410 | version "1.1.0" 411 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" 412 | integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== 413 | 414 | eslint@^6.8.0: 415 | version "6.8.0" 416 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" 417 | integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== 418 | dependencies: 419 | "@babel/code-frame" "^7.0.0" 420 | ajv "^6.10.0" 421 | chalk "^2.1.0" 422 | cross-spawn "^6.0.5" 423 | debug "^4.0.1" 424 | doctrine "^3.0.0" 425 | eslint-scope "^5.0.0" 426 | eslint-utils "^1.4.3" 427 | eslint-visitor-keys "^1.1.0" 428 | espree "^6.1.2" 429 | esquery "^1.0.1" 430 | esutils "^2.0.2" 431 | file-entry-cache "^5.0.1" 432 | functional-red-black-tree "^1.0.1" 433 | glob-parent "^5.0.0" 434 | globals "^12.1.0" 435 | ignore "^4.0.6" 436 | import-fresh "^3.0.0" 437 | imurmurhash "^0.1.4" 438 | inquirer "^7.0.0" 439 | is-glob "^4.0.0" 440 | js-yaml "^3.13.1" 441 | json-stable-stringify-without-jsonify "^1.0.1" 442 | levn "^0.3.0" 443 | lodash "^4.17.14" 444 | minimatch "^3.0.4" 445 | mkdirp "^0.5.1" 446 | natural-compare "^1.4.0" 447 | optionator "^0.8.3" 448 | progress "^2.0.0" 449 | regexpp "^2.0.1" 450 | semver "^6.1.2" 451 | strip-ansi "^5.2.0" 452 | strip-json-comments "^3.0.1" 453 | table "^5.2.3" 454 | text-table "^0.2.0" 455 | v8-compile-cache "^2.0.3" 456 | 457 | espree@^6.1.2: 458 | version "6.1.2" 459 | resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.2.tgz#6c272650932b4f91c3714e5e7b5f5e2ecf47262d" 460 | integrity sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA== 461 | dependencies: 462 | acorn "^7.1.0" 463 | acorn-jsx "^5.1.0" 464 | eslint-visitor-keys "^1.1.0" 465 | 466 | esprima@^4.0.0: 467 | version "4.0.1" 468 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 469 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 470 | 471 | esquery@^1.0.1: 472 | version "1.0.1" 473 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" 474 | integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== 475 | dependencies: 476 | estraverse "^4.0.0" 477 | 478 | esrecurse@^4.1.0: 479 | version "4.2.1" 480 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" 481 | integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== 482 | dependencies: 483 | estraverse "^4.1.0" 484 | 485 | estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: 486 | version "4.3.0" 487 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 488 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 489 | 490 | esutils@^2.0.2: 491 | version "2.0.3" 492 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 493 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 494 | 495 | external-editor@^3.0.3: 496 | version "3.1.0" 497 | resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" 498 | integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== 499 | dependencies: 500 | chardet "^0.7.0" 501 | iconv-lite "^0.4.24" 502 | tmp "^0.0.33" 503 | 504 | fast-deep-equal@^3.1.1: 505 | version "3.1.1" 506 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" 507 | integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== 508 | 509 | fast-json-stable-stringify@^2.0.0: 510 | version "2.1.0" 511 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 512 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 513 | 514 | fast-levenshtein@~2.0.6: 515 | version "2.0.6" 516 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 517 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 518 | 519 | figures@^3.0.0: 520 | version "3.1.0" 521 | resolved "https://registry.yarnpkg.com/figures/-/figures-3.1.0.tgz#4b198dd07d8d71530642864af2d45dd9e459c4ec" 522 | integrity sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg== 523 | dependencies: 524 | escape-string-regexp "^1.0.5" 525 | 526 | file-entry-cache@^5.0.1: 527 | version "5.0.1" 528 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" 529 | integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== 530 | dependencies: 531 | flat-cache "^2.0.1" 532 | 533 | find-up@^2.0.0, find-up@^2.1.0: 534 | version "2.1.0" 535 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" 536 | integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= 537 | dependencies: 538 | locate-path "^2.0.0" 539 | 540 | flat-cache@^2.0.1: 541 | version "2.0.1" 542 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" 543 | integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== 544 | dependencies: 545 | flatted "^2.0.0" 546 | rimraf "2.6.3" 547 | write "1.0.3" 548 | 549 | flatted@^2.0.0: 550 | version "2.0.1" 551 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" 552 | integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg== 553 | 554 | fs.realpath@^1.0.0: 555 | version "1.0.0" 556 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 557 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 558 | 559 | function-bind@^1.1.1: 560 | version "1.1.1" 561 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 562 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 563 | 564 | functional-red-black-tree@^1.0.1: 565 | version "1.0.1" 566 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 567 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= 568 | 569 | glob-parent@^5.0.0: 570 | version "5.1.0" 571 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" 572 | integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== 573 | dependencies: 574 | is-glob "^4.0.1" 575 | 576 | glob@^7.1.3, glob@^7.1.6: 577 | version "7.1.6" 578 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 579 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== 580 | dependencies: 581 | fs.realpath "^1.0.0" 582 | inflight "^1.0.4" 583 | inherits "2" 584 | minimatch "^3.0.4" 585 | once "^1.3.0" 586 | path-is-absolute "^1.0.0" 587 | 588 | globals@^12.1.0: 589 | version "12.3.0" 590 | resolved "https://registry.yarnpkg.com/globals/-/globals-12.3.0.tgz#1e564ee5c4dded2ab098b0f88f24702a3c56be13" 591 | integrity sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw== 592 | dependencies: 593 | type-fest "^0.8.1" 594 | 595 | graceful-fs@^4.1.2: 596 | version "4.2.3" 597 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" 598 | integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== 599 | 600 | has-flag@^3.0.0: 601 | version "3.0.0" 602 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 603 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 604 | 605 | has-symbols@^1.0.0, has-symbols@^1.0.1: 606 | version "1.0.1" 607 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" 608 | integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== 609 | 610 | has@^1.0.3: 611 | version "1.0.3" 612 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 613 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 614 | dependencies: 615 | function-bind "^1.1.1" 616 | 617 | hosted-git-info@^2.1.4: 618 | version "2.8.5" 619 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.5.tgz#759cfcf2c4d156ade59b0b2dfabddc42a6b9c70c" 620 | integrity sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg== 621 | 622 | iconv-lite@^0.4.24: 623 | version "0.4.24" 624 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 625 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 626 | dependencies: 627 | safer-buffer ">= 2.1.2 < 3" 628 | 629 | ignore@^4.0.6: 630 | version "4.0.6" 631 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" 632 | integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== 633 | 634 | ignore@^5.1.1: 635 | version "5.1.4" 636 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" 637 | integrity sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A== 638 | 639 | import-fresh@^3.0.0: 640 | version "3.2.1" 641 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" 642 | integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== 643 | dependencies: 644 | parent-module "^1.0.0" 645 | resolve-from "^4.0.0" 646 | 647 | imurmurhash@^0.1.4: 648 | version "0.1.4" 649 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 650 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 651 | 652 | inflight@^1.0.4: 653 | version "1.0.6" 654 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 655 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 656 | dependencies: 657 | once "^1.3.0" 658 | wrappy "1" 659 | 660 | inherits@2: 661 | version "2.0.4" 662 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 663 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 664 | 665 | inquirer@^7.0.0: 666 | version "7.0.4" 667 | resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.4.tgz#99af5bde47153abca23f5c7fc30db247f39da703" 668 | integrity sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ== 669 | dependencies: 670 | ansi-escapes "^4.2.1" 671 | chalk "^2.4.2" 672 | cli-cursor "^3.1.0" 673 | cli-width "^2.0.0" 674 | external-editor "^3.0.3" 675 | figures "^3.0.0" 676 | lodash "^4.17.15" 677 | mute-stream "0.0.8" 678 | run-async "^2.2.0" 679 | rxjs "^6.5.3" 680 | string-width "^4.1.0" 681 | strip-ansi "^5.1.0" 682 | through "^2.3.6" 683 | 684 | is-arrayish@^0.2.1: 685 | version "0.2.1" 686 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 687 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= 688 | 689 | is-callable@^1.1.4, is-callable@^1.1.5: 690 | version "1.1.5" 691 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" 692 | integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== 693 | 694 | is-date-object@^1.0.1: 695 | version "1.0.2" 696 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" 697 | integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== 698 | 699 | is-extglob@^2.1.1: 700 | version "2.1.1" 701 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 702 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 703 | 704 | is-fullwidth-code-point@^2.0.0: 705 | version "2.0.0" 706 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 707 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 708 | 709 | is-fullwidth-code-point@^3.0.0: 710 | version "3.0.0" 711 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 712 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 713 | 714 | is-glob@^4.0.0, is-glob@^4.0.1: 715 | version "4.0.1" 716 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 717 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 718 | dependencies: 719 | is-extglob "^2.1.1" 720 | 721 | is-promise@^2.1.0: 722 | version "2.1.0" 723 | resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" 724 | integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= 725 | 726 | is-regex@^1.0.5: 727 | version "1.0.5" 728 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" 729 | integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== 730 | dependencies: 731 | has "^1.0.3" 732 | 733 | is-string@^1.0.5: 734 | version "1.0.5" 735 | resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" 736 | integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== 737 | 738 | is-symbol@^1.0.2: 739 | version "1.0.3" 740 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" 741 | integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== 742 | dependencies: 743 | has-symbols "^1.0.1" 744 | 745 | isarray@^1.0.0: 746 | version "1.0.0" 747 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 748 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 749 | 750 | isexe@^2.0.0: 751 | version "2.0.0" 752 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 753 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 754 | 755 | js-tokens@^4.0.0: 756 | version "4.0.0" 757 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 758 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 759 | 760 | js-yaml@^3.13.1: 761 | version "3.13.1" 762 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" 763 | integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== 764 | dependencies: 765 | argparse "^1.0.7" 766 | esprima "^4.0.0" 767 | 768 | json-schema-traverse@^0.4.1: 769 | version "0.4.1" 770 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 771 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 772 | 773 | json-stable-stringify-without-jsonify@^1.0.1: 774 | version "1.0.1" 775 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 776 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= 777 | 778 | levn@^0.3.0, levn@~0.3.0: 779 | version "0.3.0" 780 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 781 | integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= 782 | dependencies: 783 | prelude-ls "~1.1.2" 784 | type-check "~0.3.2" 785 | 786 | load-json-file@^2.0.0: 787 | version "2.0.0" 788 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" 789 | integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= 790 | dependencies: 791 | graceful-fs "^4.1.2" 792 | parse-json "^2.2.0" 793 | pify "^2.0.0" 794 | strip-bom "^3.0.0" 795 | 796 | locate-path@^2.0.0: 797 | version "2.0.0" 798 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" 799 | integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= 800 | dependencies: 801 | p-locate "^2.0.0" 802 | path-exists "^3.0.0" 803 | 804 | lodash@^4.17.14, lodash@^4.17.15: 805 | version "4.17.15" 806 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" 807 | integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== 808 | 809 | mimic-fn@^2.1.0: 810 | version "2.1.0" 811 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 812 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 813 | 814 | minimatch@^3.0.4: 815 | version "3.0.4" 816 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 817 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 818 | dependencies: 819 | brace-expansion "^1.1.7" 820 | 821 | minimist@0.0.8: 822 | version "0.0.8" 823 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 824 | integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= 825 | 826 | mkdirp@^0.5.1: 827 | version "0.5.1" 828 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 829 | integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= 830 | dependencies: 831 | minimist "0.0.8" 832 | 833 | ms@2.0.0: 834 | version "2.0.0" 835 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 836 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 837 | 838 | ms@^2.1.1: 839 | version "2.1.2" 840 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 841 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 842 | 843 | mute-stream@0.0.8: 844 | version "0.0.8" 845 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" 846 | integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== 847 | 848 | natural-compare@^1.4.0: 849 | version "1.4.0" 850 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 851 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= 852 | 853 | nice-try@^1.0.4: 854 | version "1.0.5" 855 | resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" 856 | integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== 857 | 858 | normalize-package-data@^2.3.2: 859 | version "2.5.0" 860 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" 861 | integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== 862 | dependencies: 863 | hosted-git-info "^2.1.4" 864 | resolve "^1.10.0" 865 | semver "2 || 3 || 4 || 5" 866 | validate-npm-package-license "^3.0.1" 867 | 868 | object-inspect@^1.7.0: 869 | version "1.7.0" 870 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" 871 | integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== 872 | 873 | object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: 874 | version "1.1.1" 875 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 876 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 877 | 878 | object.assign@^4.1.0: 879 | version "4.1.0" 880 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" 881 | integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== 882 | dependencies: 883 | define-properties "^1.1.2" 884 | function-bind "^1.1.1" 885 | has-symbols "^1.0.0" 886 | object-keys "^1.0.11" 887 | 888 | object.values@^1.1.0: 889 | version "1.1.1" 890 | resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" 891 | integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== 892 | dependencies: 893 | define-properties "^1.1.3" 894 | es-abstract "^1.17.0-next.1" 895 | function-bind "^1.1.1" 896 | has "^1.0.3" 897 | 898 | once@^1.3.0: 899 | version "1.4.0" 900 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 901 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 902 | dependencies: 903 | wrappy "1" 904 | 905 | onetime@^5.1.0: 906 | version "5.1.0" 907 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" 908 | integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== 909 | dependencies: 910 | mimic-fn "^2.1.0" 911 | 912 | optionator@^0.8.3: 913 | version "0.8.3" 914 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" 915 | integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== 916 | dependencies: 917 | deep-is "~0.1.3" 918 | fast-levenshtein "~2.0.6" 919 | levn "~0.3.0" 920 | prelude-ls "~1.1.2" 921 | type-check "~0.3.2" 922 | word-wrap "~1.2.3" 923 | 924 | os-tmpdir@~1.0.2: 925 | version "1.0.2" 926 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 927 | integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= 928 | 929 | p-limit@^1.1.0: 930 | version "1.3.0" 931 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" 932 | integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== 933 | dependencies: 934 | p-try "^1.0.0" 935 | 936 | p-locate@^2.0.0: 937 | version "2.0.0" 938 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" 939 | integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= 940 | dependencies: 941 | p-limit "^1.1.0" 942 | 943 | p-try@^1.0.0: 944 | version "1.0.0" 945 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" 946 | integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= 947 | 948 | parent-module@^1.0.0: 949 | version "1.0.1" 950 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 951 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 952 | dependencies: 953 | callsites "^3.0.0" 954 | 955 | parse-json@^2.2.0: 956 | version "2.2.0" 957 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" 958 | integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= 959 | dependencies: 960 | error-ex "^1.2.0" 961 | 962 | path-exists@^3.0.0: 963 | version "3.0.0" 964 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 965 | integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= 966 | 967 | path-is-absolute@^1.0.0: 968 | version "1.0.1" 969 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 970 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 971 | 972 | path-key@^2.0.1: 973 | version "2.0.1" 974 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" 975 | integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= 976 | 977 | path-parse@^1.0.6: 978 | version "1.0.6" 979 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 980 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== 981 | 982 | path-type@^2.0.0: 983 | version "2.0.0" 984 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" 985 | integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= 986 | dependencies: 987 | pify "^2.0.0" 988 | 989 | pify@^2.0.0: 990 | version "2.3.0" 991 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 992 | integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= 993 | 994 | pkg-dir@^2.0.0: 995 | version "2.0.0" 996 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" 997 | integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= 998 | dependencies: 999 | find-up "^2.1.0" 1000 | 1001 | prelude-ls@~1.1.2: 1002 | version "1.1.2" 1003 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 1004 | integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= 1005 | 1006 | progress@^2.0.0: 1007 | version "2.0.3" 1008 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 1009 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== 1010 | 1011 | punycode@^2.1.0: 1012 | version "2.1.1" 1013 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 1014 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 1015 | 1016 | read-pkg-up@^2.0.0: 1017 | version "2.0.0" 1018 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" 1019 | integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= 1020 | dependencies: 1021 | find-up "^2.0.0" 1022 | read-pkg "^2.0.0" 1023 | 1024 | read-pkg@^2.0.0: 1025 | version "2.0.0" 1026 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" 1027 | integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= 1028 | dependencies: 1029 | load-json-file "^2.0.0" 1030 | normalize-package-data "^2.3.2" 1031 | path-type "^2.0.0" 1032 | 1033 | regexpp@^2.0.1: 1034 | version "2.0.1" 1035 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" 1036 | integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== 1037 | 1038 | regexpp@^3.0.0: 1039 | version "3.0.0" 1040 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.0.0.tgz#dd63982ee3300e67b41c1956f850aa680d9d330e" 1041 | integrity sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g== 1042 | 1043 | resolve-from@^4.0.0: 1044 | version "4.0.0" 1045 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 1046 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 1047 | 1048 | resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12.0, resolve@^1.13.1: 1049 | version "1.15.1" 1050 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" 1051 | integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== 1052 | dependencies: 1053 | path-parse "^1.0.6" 1054 | 1055 | restore-cursor@^3.1.0: 1056 | version "3.1.0" 1057 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" 1058 | integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== 1059 | dependencies: 1060 | onetime "^5.1.0" 1061 | signal-exit "^3.0.2" 1062 | 1063 | rimraf@2.6.3: 1064 | version "2.6.3" 1065 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" 1066 | integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== 1067 | dependencies: 1068 | glob "^7.1.3" 1069 | 1070 | rimraf@^3.0.1: 1071 | version "3.0.1" 1072 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.1.tgz#48d3d4cb46c80d388ab26cd61b1b466ae9ae225a" 1073 | integrity sha512-IQ4ikL8SjBiEDZfk+DFVwqRK8md24RWMEJkdSlgNLkyyAImcjf8SWvU1qFMDOb4igBClbTQ/ugPqXcRwdFTxZw== 1074 | dependencies: 1075 | glob "^7.1.3" 1076 | 1077 | run-async@^2.2.0: 1078 | version "2.3.0" 1079 | resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" 1080 | integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= 1081 | dependencies: 1082 | is-promise "^2.1.0" 1083 | 1084 | rxjs@^6.5.3: 1085 | version "6.5.4" 1086 | resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" 1087 | integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q== 1088 | dependencies: 1089 | tslib "^1.9.0" 1090 | 1091 | "safer-buffer@>= 2.1.2 < 3": 1092 | version "2.1.2" 1093 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1094 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1095 | 1096 | "semver@2 || 3 || 4 || 5", semver@^5.5.0: 1097 | version "5.7.1" 1098 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 1099 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 1100 | 1101 | semver@^6.1.0, semver@^6.1.2, semver@^6.3.0: 1102 | version "6.3.0" 1103 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 1104 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 1105 | 1106 | shebang-command@^1.2.0: 1107 | version "1.2.0" 1108 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 1109 | integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= 1110 | dependencies: 1111 | shebang-regex "^1.0.0" 1112 | 1113 | shebang-regex@^1.0.0: 1114 | version "1.0.0" 1115 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 1116 | integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= 1117 | 1118 | signal-exit@^3.0.2: 1119 | version "3.0.2" 1120 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 1121 | integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= 1122 | 1123 | slice-ansi@^2.1.0: 1124 | version "2.1.0" 1125 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" 1126 | integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== 1127 | dependencies: 1128 | ansi-styles "^3.2.0" 1129 | astral-regex "^1.0.0" 1130 | is-fullwidth-code-point "^2.0.0" 1131 | 1132 | spdx-correct@^3.0.0: 1133 | version "3.1.0" 1134 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" 1135 | integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== 1136 | dependencies: 1137 | spdx-expression-parse "^3.0.0" 1138 | spdx-license-ids "^3.0.0" 1139 | 1140 | spdx-exceptions@^2.1.0: 1141 | version "2.2.0" 1142 | resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" 1143 | integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== 1144 | 1145 | spdx-expression-parse@^3.0.0: 1146 | version "3.0.0" 1147 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" 1148 | integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== 1149 | dependencies: 1150 | spdx-exceptions "^2.1.0" 1151 | spdx-license-ids "^3.0.0" 1152 | 1153 | spdx-license-ids@^3.0.0: 1154 | version "3.0.5" 1155 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" 1156 | integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== 1157 | 1158 | sprintf-js@~1.0.2: 1159 | version "1.0.3" 1160 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 1161 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 1162 | 1163 | string-width@^3.0.0: 1164 | version "3.1.0" 1165 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" 1166 | integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== 1167 | dependencies: 1168 | emoji-regex "^7.0.1" 1169 | is-fullwidth-code-point "^2.0.0" 1170 | strip-ansi "^5.1.0" 1171 | 1172 | string-width@^4.1.0: 1173 | version "4.2.0" 1174 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" 1175 | integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== 1176 | dependencies: 1177 | emoji-regex "^8.0.0" 1178 | is-fullwidth-code-point "^3.0.0" 1179 | strip-ansi "^6.0.0" 1180 | 1181 | string.prototype.trimleft@^2.1.1: 1182 | version "2.1.1" 1183 | resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" 1184 | integrity sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag== 1185 | dependencies: 1186 | define-properties "^1.1.3" 1187 | function-bind "^1.1.1" 1188 | 1189 | string.prototype.trimright@^2.1.1: 1190 | version "2.1.1" 1191 | resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz#440314b15996c866ce8a0341894d45186200c5d9" 1192 | integrity sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g== 1193 | dependencies: 1194 | define-properties "^1.1.3" 1195 | function-bind "^1.1.1" 1196 | 1197 | strip-ansi@^5.1.0, strip-ansi@^5.2.0: 1198 | version "5.2.0" 1199 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 1200 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== 1201 | dependencies: 1202 | ansi-regex "^4.1.0" 1203 | 1204 | strip-ansi@^6.0.0: 1205 | version "6.0.0" 1206 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 1207 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== 1208 | dependencies: 1209 | ansi-regex "^5.0.0" 1210 | 1211 | strip-bom@^3.0.0: 1212 | version "3.0.0" 1213 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 1214 | integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= 1215 | 1216 | strip-json-comments@^3.0.1: 1217 | version "3.0.1" 1218 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" 1219 | integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== 1220 | 1221 | supports-color@^5.3.0: 1222 | version "5.5.0" 1223 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1224 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1225 | dependencies: 1226 | has-flag "^3.0.0" 1227 | 1228 | table@^5.2.3: 1229 | version "5.4.6" 1230 | resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" 1231 | integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== 1232 | dependencies: 1233 | ajv "^6.10.2" 1234 | lodash "^4.17.14" 1235 | slice-ansi "^2.1.0" 1236 | string-width "^3.0.0" 1237 | 1238 | text-table@^0.2.0: 1239 | version "0.2.0" 1240 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 1241 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= 1242 | 1243 | through@^2.3.6: 1244 | version "2.3.8" 1245 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 1246 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= 1247 | 1248 | tmp@^0.0.33: 1249 | version "0.0.33" 1250 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" 1251 | integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== 1252 | dependencies: 1253 | os-tmpdir "~1.0.2" 1254 | 1255 | tslib@^1.8.1, tslib@^1.9.0: 1256 | version "1.10.0" 1257 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" 1258 | integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== 1259 | 1260 | tsutils@^3.17.1: 1261 | version "3.17.1" 1262 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" 1263 | integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== 1264 | dependencies: 1265 | tslib "^1.8.1" 1266 | 1267 | type-check@~0.3.2: 1268 | version "0.3.2" 1269 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 1270 | integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= 1271 | dependencies: 1272 | prelude-ls "~1.1.2" 1273 | 1274 | type-fest@^0.8.1: 1275 | version "0.8.1" 1276 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" 1277 | integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== 1278 | 1279 | typescript@^3.7.5: 1280 | version "3.7.5" 1281 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.7.5.tgz#0692e21f65fd4108b9330238aac11dd2e177a1ae" 1282 | integrity sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw== 1283 | 1284 | uri-js@^4.2.2: 1285 | version "4.2.2" 1286 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" 1287 | integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== 1288 | dependencies: 1289 | punycode "^2.1.0" 1290 | 1291 | v8-compile-cache@^2.0.3: 1292 | version "2.1.0" 1293 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" 1294 | integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== 1295 | 1296 | validate-npm-package-license@^3.0.1: 1297 | version "3.0.4" 1298 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" 1299 | integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== 1300 | dependencies: 1301 | spdx-correct "^3.0.0" 1302 | spdx-expression-parse "^3.0.0" 1303 | 1304 | which@^1.2.9: 1305 | version "1.3.1" 1306 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 1307 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 1308 | dependencies: 1309 | isexe "^2.0.0" 1310 | 1311 | word-wrap@~1.2.3: 1312 | version "1.2.3" 1313 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" 1314 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== 1315 | 1316 | wrappy@1: 1317 | version "1.0.2" 1318 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1319 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1320 | 1321 | write@1.0.3: 1322 | version "1.0.3" 1323 | resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" 1324 | integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== 1325 | dependencies: 1326 | mkdirp "^0.5.1" 1327 | --------------------------------------------------------------------------------