├── .githooks └── pre-commit ├── .github ├── release.yml └── workflows │ └── test.yml ├── .gitignore ├── .mocharc.json ├── LICENSE ├── README.md ├── example.js ├── package.json ├── src ├── rc-config-loader.ts └── types.ts ├── test ├── fixtures │ ├── .barrc.js │ ├── .bazrc.cjs │ ├── .eslintrc │ ├── .foorc.json │ ├── .invalid-configrc.js │ ├── .invalidjsonrc.json │ ├── .textlintrc │ ├── .unknownrc │ ├── .yamlconfigrc.yml │ └── package.json ├── rc-config-loader-test.ts └── tsconfig.json ├── tsconfig.json └── yarn.lock /.githooks/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | npx --no-install lint-staged 3 | -------------------------------------------------------------------------------- /.github/release.yml: -------------------------------------------------------------------------------- 1 | changelog: 2 | exclude: 3 | labels: 4 | - 'Type: Meta' 5 | - 'Type: Question' 6 | - 'Type: Release' 7 | 8 | categories: 9 | - title: Security Fixes 10 | labels: ['Type: Security'] 11 | - title: Breaking Changes 12 | labels: ['Type: Breaking Change'] 13 | - title: Features 14 | labels: ['Type: Feature'] 15 | - title: Bug Fixes 16 | labels: ['Type: Bug'] 17 | - title: Documentation 18 | labels: ['Type: Documentation'] 19 | - title: Refactoring 20 | labels: ['Type: Refactoring'] 21 | - title: Testing 22 | labels: ['Type: Testing'] 23 | - title: Maintenance 24 | labels: ['Type: Maintenance'] 25 | - title: CI 26 | labels: ['Type: CI'] 27 | - title: Dependency Updates 28 | labels: ['Type: Dependencies', "dependencies"] 29 | - title: Other Changes 30 | labels: ['*'] 31 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: test 2 | on: [push, pull_request] 3 | env: 4 | CI: true 5 | jobs: 6 | test: 7 | name: "Test on Node.js ${{ matrix.node-version }}" 8 | runs-on: ubuntu-latest 9 | strategy: 10 | matrix: 11 | node-version: [ 16, 18, 20 ] 12 | steps: 13 | - name: checkout 14 | uses: actions/checkout@v2 15 | - name: setup Node.js ${{ matrix.node-version }} 16 | uses: actions/setup-node@v1 17 | with: 18 | node-version: ${{ matrix.node-version }} 19 | - name: Install 20 | run: yarn install 21 | - name: Test 22 | run: yarn test 23 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ### https://raw.github.com/github/gitignore/608690d6b9a78c2a003affc792e49a84905b3118/Node.gitignore 2 | 3 | # Logs 4 | logs 5 | *.log 6 | 7 | # Runtime data 8 | pids 9 | *.pid 10 | *.seed 11 | 12 | # Directory for instrumented libs generated by jscoverage/JSCover 13 | lib-cov 14 | 15 | # Coverage directory used by tools like istanbul 16 | coverage 17 | 18 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 19 | .grunt 20 | 21 | # node-waf configuration 22 | .lock-wscript 23 | 24 | # Compiled binary addons (http://nodejs.org/api/addons.html) 25 | build/Release 26 | 27 | # Dependency directory 28 | # https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git- 29 | node_modules 30 | 31 | # Debug log from npm 32 | npm-debug.log 33 | 34 | 35 | ### https://raw.github.com/github/gitignore/608690d6b9a78c2a003affc792e49a84905b3118/Global/JetBrains.gitignore 36 | 37 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm 38 | 39 | *.iml 40 | 41 | ## Directory-based project format: 42 | .idea/ 43 | # if you remove the above rule, at least ignore the following: 44 | 45 | # User-specific stuff: 46 | # .idea/workspace.xml 47 | # .idea/tasks.xml 48 | # .idea/dictionaries 49 | 50 | # Sensitive or high-churn files: 51 | # .idea/dataSources.ids 52 | # .idea/dataSources.xml 53 | # .idea/sqlDataSources.xml 54 | # .idea/dynamic.xml 55 | # .idea/uiDesigner.xml 56 | 57 | # Gradle: 58 | # .idea/gradle.xml 59 | # .idea/libraries 60 | 61 | # Mongo Explorer plugin: 62 | # .idea/mongoSettings.xml 63 | 64 | ## File-based project format: 65 | *.ipr 66 | *.iws 67 | 68 | ## Plugin-specific files: 69 | 70 | # IntelliJ 71 | out/ 72 | 73 | # mpeltonen/sbt-idea plugin 74 | .idea_modules/ 75 | 76 | # JIRA plugin 77 | atlassian-ide-plugin.xml 78 | 79 | # Crashlytics plugin (for Android Studio and IntelliJ) 80 | com_crashlytics_export_strings.xml 81 | crashlytics.properties 82 | crashlytics-build.properties 83 | 84 | 85 | /lib 86 | -------------------------------------------------------------------------------- /.mocharc.json: -------------------------------------------------------------------------------- 1 | { 2 | "require": [ 3 | "ts-node-test-register" 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2017 azu 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | SOFTWARE. 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # rc-config-loader [![Actions Status: test](https://github.com/azu/rc-config-loader/workflows/test/badge.svg)](https://github.com/azu/rc-config-loader/actions?query=workflow%3A"test") 2 | 3 | Load config from `.{product}rc.{json,yml,js}` file. 4 | 5 | It is a Node.js library for loading `.textlintrc`, `.eslintrc`, `.stylelintrc` etc... 6 | 7 | ## Features 8 | 9 | Find and load a configuration object from: 10 | 11 | - a `package.json` property if it is needed 12 | - a JSON or YAML, JS "rc file" 13 | - `.rc` or `.rc.json` or `.rc.js` or`.rc.yml`, `.rc.yaml` 14 | - TypeScript support 15 | - Includes `.d.ts` 16 | 17 | ## Difference 18 | 19 | ### with [MoOx/rc-loader](https://github.com/MoOx/rc-loader "MoOx/rc-loader") 20 | 21 | - Safe API 22 | - `rc` contains shabang in `.js` file 23 | - Enhance Error message 24 | 25 | ### with [cosmiconfig](https://github.com/davidtheclark/cosmiconfig "cosmiconfig") 26 | 27 | - Sync loading 28 | - [cosmiconfig@3+](https://github.com/davidtheclark/cosmiconfig/blob/master/CHANGELOG.md#300) support `sync` option 29 | - Built-in TypeScript support 30 | - [comisconfig@6*](https://github.com/davidtheclark/cosmiconfig/blob/master/CHANGELOG.md#600) is written by TypeScript 31 | 32 | If you want to async support and customize loader, recommended to use [cosmiconfig](https://github.com/davidtheclark/cosmiconfig). 33 | 34 | ## Install 35 | 36 | Install with [npm](https://www.npmjs.com/): 37 | 38 | npm install rc-config-loader 39 | 40 | ## Usage 41 | 42 | ### API 43 | 44 | ```ts 45 | export interface rcConfigLoaderOption { 46 | // does look for `package.json` 47 | packageJSON?: 48 | | boolean 49 | | { 50 | fieldName: string; 51 | }; 52 | // if config file name is not same with packageName, set the name 53 | configFileName?: string; 54 | // treat default(no ext file) as some extension 55 | defaultExtension?: string | string[]; 56 | // where start to load 57 | cwd?: string; 58 | } 59 | /** 60 | * Find and load rcfile, return { config, filePath } 61 | * If not found any rcfile, throw an Error. 62 | * @param {string} pkgName 63 | * @param {rcConfigLoaderOption} [opts] 64 | * @returns {{ config: Object, filePath:string } | undefined} 65 | */ 66 | export declare function rcFile(pkgName: string, opts?: rcConfigLoaderOption): { 67 | config: R; 68 | filePath: string; 69 | } | undefined; 70 | 71 | ``` 72 | 73 | `rcFile` return `{ config, filePath }` object. 74 | 75 | - `config`: it is config object 76 | - `filePath`: absolute path to config file 77 | 78 | **Note:** 79 | 80 | - `rcFile` function return `undefined` if the config file is not found 81 | - `rcFile` throw an Error if the config file content is malformed (causing a parsing error) 82 | 83 | Recommenced usage: 84 | 85 | ```js 86 | import { rcFile } from "rc-config-loader" 87 | 88 | function loadRcFile(rcFileName){ 89 | try { 90 | const results = rcFile(rcFileName); 91 | // Not Found 92 | if (!results) { 93 | return {}; 94 | } 95 | return results.config; 96 | } catch (error) { 97 | // Found it, but it is parsing error 98 | return {} ; // default value 99 | } 100 | } 101 | // load config 102 | const config = loadRcFile("your-application"); 103 | console.log(config); // => rcfile content 104 | ``` 105 | 106 | It will check these files and return config file if found it. 107 | 108 | - `.your-applicationrc.json` 109 | - `.your-applicationrc.yml` 110 | - `.your-applicationrc.yaml` 111 | - `.your-applicationrc.js` 112 | - [optional] `package.json` 113 | - if `packageJSON` option is enabled 114 | 115 | ### Example 116 | 117 | ```js 118 | import { rcFile } from "rc-config-loader" 119 | // load .eslintrc from current dir 120 | console.log(rcFile("eslint")); 121 | 122 | // load .eslintrc from specific path 123 | console.log(rcFile("eslint", { 124 | configFileName: `${__dirname}/test/fixtures/.eslintrc` 125 | })); 126 | /* 127 | config: { extends: 'standard', 128 | rules: 129 | { 'comma-dangle': [ 2, 'always-multiline' ], 130 | 'arrow-parens': [ 2, 'as-needed' ] } } 131 | filePath: ${__dirname}/test/fixtures/.eslintrc 132 | */ 133 | 134 | // load property from package.json 135 | console.log(rcFile("rc-config-loader", { 136 | packageJSON: { 137 | fieldName: "directories" 138 | } 139 | })); 140 | /* 141 | config: { test: 'test' } 142 | filePath: /path/to/package.json 143 | */ 144 | 145 | // load .eslintrc from specific dir 146 | console.log(rcFile("eslint", { 147 | cwd: `${__dirname}/test/fixtures` 148 | })); 149 | 150 | // load specific filename from current dir 151 | console.log(rcFile("travis", {configFileName: ".travis"})); 152 | /* 153 | config: { sudo: false, language: 'node_js', node_js: 'stable' } 154 | filePath: /path/to/.travis 155 | */ 156 | 157 | // try to load as .json, .yml, js 158 | console.log(rcFile("bar", { 159 | configFileName: `${__dirname}/test/fixtures/.barrc`, 160 | defaultExtension: [".json", ".yml", ".js"] 161 | })); 162 | 163 | // try to load as foobar, but .foobarrc is not found 164 | console.log(rcFile("foorbar")); // => undefined 165 | 166 | // try to load as .json, but it is not json 167 | // throw SyntaxError 168 | try { 169 | rcFile("unknown", { 170 | // This is not json 171 | configFileName: `${__dirname}/test/fixtures/.unknownrc`, 172 | defaultExtension: ".json" 173 | }) 174 | } catch (error) { 175 | console.log(error); 176 | /* 177 | SyntaxError: Cannot read config file: /test/fixtures/.unknownrc 178 | */ 179 | } 180 | ``` 181 | 182 | ## Users 183 | 184 | - [textlint](https://github.com/textlint/textlint "textlint") 185 | 186 | ## Changelog 187 | 188 | See [Releases page](https://github.com/azu/rc-config-loader/releases). 189 | 190 | ## Running tests 191 | 192 | Install devDependencies and Run `npm test`: 193 | 194 | npm i -d && npm test 195 | 196 | ## Contributing 197 | 198 | Pull requests and stars are always welcome. 199 | 200 | For bugs and feature requests, [please create an issue](https://github.com/azu/rc-config-loader/issues). 201 | 202 | 1. Fork it! 203 | 2. Create your feature branch: `git checkout -b my-new-feature` 204 | 3. Commit your changes: `git commit -am 'Add some feature'` 205 | 4. Push to the branch: `git push origin my-new-feature` 206 | 5. Submit a pull request :D 207 | 208 | ## Author 209 | 210 | - [github/azu](https://github.com/azu) 211 | - [twitter/azu_re](https://twitter.com/azu_re) 212 | 213 | ## License 214 | 215 | MIT © azu 216 | 217 | ## Acknowledgement 218 | 219 | - [zkochan/rcfile: Loads library configuration in all possible ways](https://github.com/zkochan/rcfile "zkochan/rcfile: Loads library configuration in all possible ways") 220 | 221 | **Difference** 222 | 223 | - support multiple `defaultExtension` 224 | -------------------------------------------------------------------------------- /example.js: -------------------------------------------------------------------------------- 1 | // MIT © 2017 azu 2 | "use strict"; 3 | const { rcFile } = require("./lib/rc-config-loader"); 4 | 5 | // load .eslintrc from current dir 6 | console.log( 7 | rcFile("eslint", { 8 | cwd: `${__dirname}/test/fixtures/` 9 | }) 10 | ); 11 | 12 | // load .eslintrc from specific path 13 | console.log( 14 | rcFile("eslint", { 15 | configFileName: `${__dirname}/test/fixtures/.eslintrc` 16 | }) 17 | ); 18 | /* 19 | { extends: 'standard', 20 | rules: 21 | { 'comma-dangle': [ 2, 'always-multiline' ], 22 | 'arrow-parens': [ 2, 'as-needed' ] } } 23 | */ 24 | 25 | // load property from pacakge.json 26 | console.log( 27 | rcFile("rc-config-loader", { 28 | packageJSON: { 29 | fieldName: "directories" 30 | } 31 | }) 32 | ); 33 | /* 34 | { test: 'test' } 35 | */ 36 | 37 | // load .eslintrc from specific dir 38 | console.log( 39 | rcFile("eslint", { 40 | cwd: `${__dirname}/test/fixtures` 41 | }) 42 | ); 43 | 44 | // load specific filename from current dir 45 | console.log(rcFile("travis", { configFileName: ".travis" })); 46 | /* 47 | { sudo: false, language: 'node_js', node_js: 'stable' } 48 | */ 49 | 50 | // try to load as .json, .yml, js 51 | console.log( 52 | rcFile("bar", { 53 | configFileName: `${__dirname}/test/fixtures/.barrc`, 54 | defaultExtension: [".json", ".yml", ".js"] 55 | }) 56 | ); 57 | 58 | // try to load as .json, but it is not json 59 | // throw Error 60 | try { 61 | rcFile("unknown", { 62 | configFileName: `${__dirname}/test/fixtures/.unknownrc`, 63 | defaultExtension: ".json" 64 | }); 65 | } catch (error) { 66 | console.log(error); 67 | /* 68 | SyntaxError: Cannot read config file: /test/fixtures/.unknownrc 69 | */ 70 | } 71 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rc-config-loader", 3 | "version": "4.1.3", 4 | "description": "load config file from .{product}rc.{json,yml,js}", 5 | "keywords": [ 6 | "config", 7 | "configuration", 8 | "json", 9 | "loader", 10 | "rc", 11 | "yaml", 12 | "yml" 13 | ], 14 | "homepage": "https://github.com/azu/rc-config-loader", 15 | "bugs": { 16 | "url": "https://github.com/azu/rc-config-loader/issues" 17 | }, 18 | "repository": { 19 | "type": "git", 20 | "url": "https://github.com/azu/rc-config-loader.git" 21 | }, 22 | "license": "MIT", 23 | "author": "azu", 24 | "files": [ 25 | "bin/", 26 | "lib/", 27 | "src/" 28 | ], 29 | "main": "lib/rc-config-loader.js", 30 | "types": "lib/rc-config-loader.d.ts", 31 | "directories": { 32 | "test": "test" 33 | }, 34 | "scripts": { 35 | "build": "tsc -p .", 36 | "prepublish": "npm run --if-present build", 37 | "test": "mocha \"test/**/*.{js,ts}\"", 38 | "watch": "tsc -p . --watch", 39 | "format": "prettier --write \"**/*.{js,jsx,ts,tsx,css}\"", 40 | "prepare": "git config --local core.hooksPath .githooks" 41 | }, 42 | "husky": { 43 | "hooks": { 44 | "post-commit": "git reset", 45 | "pre-commit": "lint-staged" 46 | } 47 | }, 48 | "lint-staged": { 49 | "*.{js,jsx,ts,tsx,css}": [ 50 | "prettier --write" 51 | ] 52 | }, 53 | "prettier": { 54 | "singleQuote": false, 55 | "printWidth": 120, 56 | "tabWidth": 4, 57 | "trailingComma": "none" 58 | }, 59 | "dependencies": { 60 | "debug": "^4.3.4", 61 | "js-yaml": "^4.1.0", 62 | "json5": "^2.2.2", 63 | "require-from-string": "^2.0.2" 64 | }, 65 | "devDependencies": { 66 | "@types/mocha": "^9.1.0", 67 | "@types/node": "^17.0.23", 68 | "@types/require-from-string": "^1.2.1", 69 | "lint-staged": "^12.3.7", 70 | "mocha": "^9.2.2", 71 | "prettier": "^2.6.2", 72 | "ts-node": "^10.7.0", 73 | "ts-node-test-register": "^10.0.0", 74 | "typescript": "^4.6.3" 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /src/rc-config-loader.ts: -------------------------------------------------------------------------------- 1 | // MIT © 2017 azu 2 | // MIT © Zoltan Kochan 3 | // Original https://github.com/zkochan/rcfile 4 | import path from "path"; 5 | import fs from "fs"; 6 | import requireFromString from "require-from-string"; 7 | import JSON5 from "json5"; 8 | import type { 9 | PossibleUndefined, 10 | rcConfigLoaderOption, 11 | rcConfigResult, 12 | RequiredOption, 13 | ExtensionName, 14 | ExtensionLoaderMap, 15 | Loader 16 | } from "./types"; 17 | 18 | const debug = require("debug")("rc-config-loader"); 19 | 20 | const defaultLoaderByExt: ExtensionLoaderMap = { 21 | ".cjs": loadJSConfigFile, 22 | ".js": loadJSConfigFile, 23 | ".json": loadJSONConfigFile, 24 | ".yaml": loadYAMLConfigFile, 25 | ".yml": loadYAMLConfigFile 26 | }; 27 | 28 | const defaultOptions: Required> & 29 | Omit = { 30 | packageJSON: false, 31 | defaultExtension: [".json", ".yaml", ".yml", ".js", ".cjs"], 32 | cwd: process.cwd() 33 | }; 34 | 35 | const selectLoader = (defaultLoaderByExt: ExtensionLoaderMap, extension: ExtensionName): Loader => { 36 | if (!defaultOptions.defaultExtension.includes(extension)) { 37 | throw new Error(`${extension} is not supported.`); 38 | } 39 | return defaultLoaderByExt[extension]; 40 | }; 41 | 42 | /** 43 | * Find and load rcfile, return { config, filePath } 44 | * If not found any rcfile, throw an Error. 45 | * @param {string} pkgName 46 | * @param {rcConfigLoaderOption} [opts] 47 | * @returns {{ config: Object, filePath:string } | undefined} 48 | */ 49 | export function rcFile( 50 | pkgName: string, 51 | opts: rcConfigLoaderOption = {} 52 | ): PossibleUndefined> { 53 | // path/to/config or basename of config file. 54 | const configFileName = opts.configFileName || `.${pkgName}rc`; 55 | const defaultExtension = opts.defaultExtension || defaultOptions.defaultExtension; 56 | const cwd = opts.cwd || defaultOptions.cwd; 57 | const packageJSON = opts.packageJSON || defaultOptions.packageJSON; 58 | const packageJSONFieldName = typeof packageJSON === "object" ? packageJSON.fieldName : pkgName; 59 | 60 | const parts = splitPath(cwd); 61 | const loadersByOrder = Array.isArray(defaultExtension) 62 | ? defaultExtension.map((extension) => selectLoader(defaultLoaderByExt, extension)) 63 | : selectLoader(defaultLoaderByExt, defaultExtension); 64 | 65 | const loaderByExt = { 66 | ...defaultLoaderByExt, 67 | "": loadersByOrder 68 | }; 69 | return findConfig({ 70 | parts, 71 | loaderByExt, 72 | loadersByOrder, 73 | configFileName, 74 | packageJSON, 75 | packageJSONFieldName 76 | }); 77 | } 78 | 79 | /** 80 | * 81 | * @returns {{ 82 | * config: string, 83 | * filePath: string 84 | * }} 85 | */ 86 | function findConfig({ 87 | parts, 88 | loaderByExt, 89 | loadersByOrder, 90 | configFileName, 91 | packageJSON, 92 | packageJSONFieldName 93 | }: { 94 | parts: string[]; 95 | loaderByExt: { 96 | [index: string]: Loader | Loader[]; 97 | }; 98 | loadersByOrder: Loader | Loader[]; 99 | configFileName: string; 100 | packageJSON: boolean | { fieldName: string }; 101 | packageJSONFieldName: string; 102 | }): 103 | | { 104 | config: R; 105 | filePath: string; 106 | } 107 | | undefined { 108 | const extensions = Object.keys(loaderByExt); 109 | while (extensions.length) { 110 | const ext = extensions.shift(); 111 | // may be ext is "". if it .rc 112 | const configLocation = join(parts, configFileName + ext); 113 | if (!fs.existsSync(configLocation)) { 114 | continue; 115 | } 116 | // if ext === ""(empty string):, use ordered loaders 117 | const loaders = ext ? loaderByExt[ext] : loadersByOrder; 118 | if (!Array.isArray(loaders)) { 119 | const loader = loaders; 120 | const result = loader(configLocation, false); 121 | if (!result) { 122 | continue; 123 | } 124 | return { 125 | config: result, 126 | filePath: configLocation 127 | }; 128 | } 129 | for (let i = 0; i < loaders.length; i++) { 130 | const loader = loaders[i]; 131 | const result = loader(configLocation, true); 132 | if (!result) { 133 | continue; 134 | } 135 | return { 136 | config: result, 137 | filePath: configLocation 138 | }; 139 | } 140 | } 141 | 142 | if (packageJSON) { 143 | const pkgJSONLoc = join(parts, "package.json"); 144 | if (fs.existsSync(pkgJSONLoc)) { 145 | const pkgJSON = JSON5.parse(readFile(pkgJSONLoc)); 146 | if (pkgJSON[packageJSONFieldName]) { 147 | return { 148 | config: pkgJSON[packageJSONFieldName], 149 | filePath: pkgJSONLoc 150 | }; 151 | } 152 | } 153 | } 154 | if (parts.pop()) { 155 | return findConfig({ parts, loaderByExt, loadersByOrder, configFileName, packageJSON, packageJSONFieldName }); 156 | } 157 | return; 158 | } 159 | 160 | function splitPath(x: string): string[] { 161 | return path.resolve(x || "").split(path.sep); 162 | } 163 | 164 | function join(parts: string[], filename: string) { 165 | return path.resolve(parts.join(path.sep) + path.sep, filename); 166 | } 167 | 168 | function loadJSConfigFile(filePath: string, suppress: boolean) { 169 | debug(`Loading JavaScript config file: ${filePath}`); 170 | try { 171 | const content = fs.readFileSync(filePath, "utf-8"); 172 | return requireFromString(content, filePath); 173 | } catch (error: any) { 174 | debug(`Error reading JavaScript file: ${filePath}`); 175 | if (!suppress) { 176 | error.message = `Cannot read config file: ${filePath}\nError: ${error.message}`; 177 | throw error; 178 | } 179 | } 180 | } 181 | 182 | function loadJSONConfigFile(filePath: string, suppress: boolean) { 183 | debug(`Loading JSON config file: ${filePath}`); 184 | 185 | try { 186 | return JSON5.parse(readFile(filePath)); 187 | } catch (error: any) { 188 | debug(`Error reading JSON file: ${filePath}`); 189 | if (!suppress) { 190 | error.message = `Cannot read config file: ${filePath}\nError: ${error.message}`; 191 | throw error; 192 | } 193 | } 194 | } 195 | 196 | function readFile(filePath: string) { 197 | return fs.readFileSync(filePath, "utf8"); 198 | } 199 | 200 | function loadYAMLConfigFile(filePath: string, suppress: boolean) { 201 | debug(`Loading YAML config file: ${filePath}`); 202 | // lazy load YAML to improve performance when not used 203 | const yaml = require("js-yaml"); 204 | try { 205 | // empty YAML file can be null, so always use 206 | return yaml.load(readFile(filePath)) || {}; 207 | } catch (error: any) { 208 | debug(`Error reading YAML file: ${filePath}`); 209 | if (!suppress) { 210 | error.message = `Cannot read config file: ${filePath}\nError: ${error.message}`; 211 | throw error; 212 | } 213 | } 214 | } 215 | -------------------------------------------------------------------------------- /src/types.ts: -------------------------------------------------------------------------------- 1 | export type ExtensionName = ".cjs" | ".js" | ".json" | ".yaml" | ".yml"; 2 | 3 | export type RequiredOption = "packageJSON" | "defaultExtension" | "cwd"; 4 | 5 | export type Loader = (fileName: string, supperes: boolean) => R; 6 | 7 | export type ExtensionLoaderMap = Record; 8 | 9 | export type PossibleUndefined = T | undefined; 10 | 11 | export interface rcConfigResult> { 12 | config: R; 13 | filePath: string; 14 | } 15 | 16 | export interface rcConfigLoaderOption { 17 | /** does look for `package.json` */ 18 | packageJSON?: 19 | | boolean 20 | | { 21 | fieldName: string; 22 | }; 23 | 24 | /** if config file name is not same with packageName, set the name */ 25 | configFileName?: string; 26 | 27 | /** treat default(no ext file) as some extension */ 28 | defaultExtension?: ExtensionName | ExtensionName[]; 29 | 30 | /** where start to load */ 31 | cwd?: string; 32 | } 33 | -------------------------------------------------------------------------------- /test/fixtures/.barrc.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | module.exports = { 3 | bar: "bar" 4 | }; 5 | -------------------------------------------------------------------------------- /test/fixtures/.bazrc.cjs: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | module.exports = { 3 | baz: "baz" 4 | }; 5 | -------------------------------------------------------------------------------- /test/fixtures/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "standard", 3 | "rules": { 4 | "comma-dangle": [2, "always-multiline"], 5 | "arrow-parens": [2, "as-needed"] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/.foorc.json: -------------------------------------------------------------------------------- 1 | { 2 | foo: 1, 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/.invalid-configrc.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | throw new Error("invalid js"); 3 | -------------------------------------------------------------------------------- /test/fixtures/.invalidjsonrc.json: -------------------------------------------------------------------------------- 1 | { 2 | foo: 1, 3 | bar ++ 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/.textlintrc: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | "rules": { 3 | "a": true, 4 | "b": true, 5 | "c": true 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /test/fixtures/.unknownrc: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | module.exports = { 3 | unknown: 'unknown', 4 | } 5 | -------------------------------------------------------------------------------- /test/fixtures/.yamlconfigrc.yml: -------------------------------------------------------------------------------- 1 | foo: bar 2 | -------------------------------------------------------------------------------- /test/fixtures/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "qar": { 3 | "qar": "qar" 4 | }, 5 | "custom": { 6 | "key": "value" 7 | } 8 | } 9 | 10 | -------------------------------------------------------------------------------- /test/rc-config-loader-test.ts: -------------------------------------------------------------------------------- 1 | import assert from "assert"; 2 | import path from "path"; 3 | import { rcFile } from "../src/rc-config-loader"; 4 | 5 | describe("rc-config-loader", () => { 6 | it("should read json config in current directory", () => { 7 | const cwd = path.join(__dirname, "fixtures"); 8 | const results = rcFile("foo", { cwd }); 9 | if (!results) { 10 | throw new Error("not found"); 11 | } 12 | const { config, filePath } = results; 13 | assert.deepStrictEqual(config, { foo: 1 }); 14 | assert.strictEqual(filePath, path.join(cwd, ".foorc.json")); 15 | }); 16 | 17 | it("should read json config in parent directory", () => { 18 | const cwd = path.join(__dirname, "fixtures/some-dir"); 19 | const results = rcFile("foo", { cwd }); 20 | if (!results) { 21 | throw new Error("not found"); 22 | } 23 | const { config, filePath } = results; 24 | assert.deepStrictEqual(config, { foo: 1 }); 25 | assert.strictEqual(filePath, path.join(__dirname, "fixtures", ".foorc.json")); 26 | }); 27 | 28 | it("should read json config two directories up", () => { 29 | const results = rcFile("foo", { cwd: path.join(__dirname, "fixtures/some-dir/some-other-dir") }); 30 | if (!results) { 31 | throw new Error("not found"); 32 | } 33 | const { config } = results; 34 | assert.deepStrictEqual(config, { foo: 1 }); 35 | }); 36 | 37 | it("should read js config in current directory", () => { 38 | const results = rcFile("bar", { cwd: path.join(__dirname, "fixtures") }); 39 | if (!results) { 40 | throw new Error("not found"); 41 | } 42 | const { config } = results; 43 | assert.deepStrictEqual(config, { bar: "bar" }); 44 | }); 45 | 46 | it("should read cjs config in current directory", () => { 47 | const results = rcFile("baz", { cwd: path.join(__dirname, "fixtures") }); 48 | if (!results) { 49 | throw new Error("not found"); 50 | } 51 | const { config } = results; 52 | assert.deepStrictEqual(config, { baz: "baz" }); 53 | }); 54 | 55 | it("should read js config by { configFileName }", () => { 56 | const results = rcFile("textlint", { configFileName: path.join(__dirname, "fixtures", ".textlintrc") }); 57 | if (!results) { 58 | throw new Error("not found"); 59 | } 60 | const { config } = results; 61 | assert.deepStrictEqual(config, { 62 | rules: { 63 | a: true, 64 | b: true, 65 | c: true 66 | } 67 | }); 68 | }); 69 | 70 | it("should read yaml config in current directory", () => { 71 | const results = rcFile("yamlconfig", { cwd: path.join(__dirname, "fixtures") }); 72 | if (!results) { 73 | throw new Error("not found"); 74 | } 75 | const { config } = results; 76 | assert.deepStrictEqual(config, { foo: "bar" }); 77 | }); 78 | 79 | it("should read from package.json if no separate config file found", () => { 80 | const results = rcFile("qar", { 81 | cwd: path.join(__dirname, "fixtures"), 82 | packageJSON: true 83 | }); 84 | if (!results) { 85 | throw new Error("not found"); 86 | } 87 | const { config, filePath } = results; 88 | assert.deepStrictEqual(config, { qar: "qar" }); 89 | assert.strictEqual(filePath, path.join(__dirname, "fixtures/package.json")); 90 | }); 91 | 92 | it("should read custom filed from package.json", () => { 93 | const results = rcFile("qar", { 94 | cwd: path.join(__dirname, "fixtures"), 95 | packageJSON: { 96 | fieldName: "custom" 97 | } 98 | }); 99 | if (!results) { 100 | throw new Error("not found"); 101 | } 102 | const { config } = results; 103 | assert.deepStrictEqual(config, { key: "value" }); 104 | }); 105 | 106 | it("should not read from package.json by default", () => { 107 | const results = rcFile("qar", { cwd: path.join(__dirname, "fixtures") }); 108 | assert.strictEqual(results, undefined); 109 | }); 110 | 111 | it("should search in current directory by default", () => { 112 | const cwd = path.join(__dirname, "fixtures"); 113 | const results = rcFile<{ extends: string }>("eslint", { cwd }); 114 | if (!results) { 115 | throw new Error("not found"); 116 | } 117 | const { config, filePath } = results; 118 | assert(config !== null && config !== undefined); 119 | assert(config.extends === "standard"); 120 | assert(filePath === path.join(cwd, ".eslintrc")); 121 | }); 122 | 123 | it("should search multiple file type if set multiple extensions to defaultExtension", () => { 124 | const results = rcFile<{ unknown: string }>("unknown", { 125 | cwd: path.join(__dirname, "fixtures"), 126 | defaultExtension: [".json", ".yml", ".js"] 127 | }); 128 | if (!results) { 129 | throw new Error("not found"); 130 | } 131 | const { config, filePath } = results; 132 | assert(config !== null && config !== undefined); 133 | assert(config.unknown === "unknown"); 134 | assert(filePath === path.join(__dirname, "fixtures/.unknownrc")); 135 | }); 136 | 137 | it("should throw error if config file has invalid content", () => { 138 | assert.throws(() => { 139 | rcFile("invalid-config", { 140 | defaultExtension: ".js", 141 | cwd: path.join(__dirname, "fixtures") 142 | }); 143 | }, Error); 144 | }); 145 | it("should throw error if config file has invalid content", () => { 146 | assert.throws(() => { 147 | rcFile("invalid-config", { 148 | defaultExtension: ".js", 149 | cwd: path.join(__dirname, "fixtures") 150 | }); 151 | }, Error); 152 | }); 153 | it("should throw error if config file has invalid json", () => { 154 | assert.throws(() => { 155 | rcFile("invalidjson", { cwd: path.join(__dirname, "fixtures") }); 156 | }, Error); 157 | }); 158 | }); 159 | -------------------------------------------------------------------------------- /test/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "allowJs": true, 5 | "declaration": false, 6 | "noEmit": true 7 | }, 8 | "include": [ 9 | "../src/**/*", 10 | "./**/*" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Basic Options */ 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "esModuleInterop": true, 7 | "newLine": "LF", 8 | "outDir": "./lib/", 9 | "target": "ES2015", 10 | "sourceMap": true, 11 | "declaration": true, 12 | "jsx": "preserve", 13 | "lib": [ 14 | "esnext", 15 | "dom" 16 | ], 17 | /* Strict Type-Checking Options */ 18 | "strict": true, 19 | /* Additional Checks */ 20 | /* Report errors on unused locals. */ 21 | "noUnusedLocals": true, 22 | /* Report errors on unused parameters. */ 23 | "noUnusedParameters": true, 24 | /* Report error when not all code paths in function return a value. */ 25 | "noImplicitReturns": true, 26 | /* Report errors for fallthrough cases in switch statement. */ 27 | "noFallthroughCasesInSwitch": true 28 | }, 29 | "include": [ 30 | "src/**/*" 31 | ], 32 | "exclude": [ 33 | ".git", 34 | "node_modules" 35 | ] 36 | } 37 | -------------------------------------------------------------------------------- /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.16.7" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" 8 | integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== 9 | dependencies: 10 | "@babel/highlight" "^7.16.7" 11 | 12 | "@babel/helper-validator-identifier@^7.16.7": 13 | version "7.16.7" 14 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" 15 | integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== 16 | 17 | "@babel/highlight@^7.16.7": 18 | version "7.16.10" 19 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" 20 | integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw== 21 | dependencies: 22 | "@babel/helper-validator-identifier" "^7.16.7" 23 | chalk "^2.0.0" 24 | js-tokens "^4.0.0" 25 | 26 | "@cspotcode/source-map-consumer@0.8.0": 27 | version "0.8.0" 28 | resolved "https://registry.yarnpkg.com/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz#33bf4b7b39c178821606f669bbc447a6a629786b" 29 | integrity sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg== 30 | 31 | "@cspotcode/source-map-support@0.7.0": 32 | version "0.7.0" 33 | resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz#4789840aa859e46d2f3173727ab707c66bf344f5" 34 | integrity sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA== 35 | dependencies: 36 | "@cspotcode/source-map-consumer" "0.8.0" 37 | 38 | "@tsconfig/node10@^1.0.7": 39 | version "1.0.8" 40 | resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.8.tgz#c1e4e80d6f964fbecb3359c43bd48b40f7cadad9" 41 | integrity sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg== 42 | 43 | "@tsconfig/node12@^1.0.7": 44 | version "1.0.9" 45 | resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.9.tgz#62c1f6dee2ebd9aead80dc3afa56810e58e1a04c" 46 | integrity sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw== 47 | 48 | "@tsconfig/node14@^1.0.0": 49 | version "1.0.1" 50 | resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.1.tgz#95f2d167ffb9b8d2068b0b235302fafd4df711f2" 51 | integrity sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg== 52 | 53 | "@tsconfig/node16@^1.0.2": 54 | version "1.0.2" 55 | resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.2.tgz#423c77877d0569db20e1fc80885ac4118314010e" 56 | integrity sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA== 57 | 58 | "@types/mocha@^9.1.0": 59 | version "9.1.0" 60 | resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-9.1.0.tgz#baf17ab2cca3fcce2d322ebc30454bff487efad5" 61 | integrity sha512-QCWHkbMv4Y5U9oW10Uxbr45qMMSzl4OzijsozynUAgx3kEHUdXB00udx2dWDQ7f2TU2a2uuiFaRZjCe3unPpeg== 62 | 63 | "@types/node@^17.0.23": 64 | version "17.0.23" 65 | resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.23.tgz#3b41a6e643589ac6442bdbd7a4a3ded62f33f7da" 66 | integrity sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw== 67 | 68 | "@types/normalize-package-data@^2.4.0": 69 | version "2.4.1" 70 | resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" 71 | integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== 72 | 73 | "@types/require-from-string@^1.2.1": 74 | version "1.2.1" 75 | resolved "https://registry.yarnpkg.com/@types/require-from-string/-/require-from-string-1.2.1.tgz#50292d824e2244628c0b961c6a1a583fdc494554" 76 | integrity sha512-mIDK7lTHc0uW67SxPIqkwCrxmdKBV5aAET560hyZnT8c6Ekp9Aah3GPqe8Pl1Yzn/i2NMYmYv+HiMLwjGDCIAQ== 77 | 78 | "@ungap/promise-all-settled@1.1.2": 79 | version "1.1.2" 80 | resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" 81 | integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== 82 | 83 | acorn-walk@^8.1.1: 84 | version "8.2.0" 85 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" 86 | integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== 87 | 88 | acorn@^8.4.1: 89 | version "8.7.0" 90 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" 91 | integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== 92 | 93 | aggregate-error@^3.0.0: 94 | version "3.1.0" 95 | resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" 96 | integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== 97 | dependencies: 98 | clean-stack "^2.0.0" 99 | indent-string "^4.0.0" 100 | 101 | ansi-colors@4.1.1: 102 | version "4.1.1" 103 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" 104 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== 105 | 106 | ansi-escapes@^4.3.0: 107 | version "4.3.2" 108 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" 109 | integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== 110 | dependencies: 111 | type-fest "^0.21.3" 112 | 113 | ansi-regex@^5.0.1: 114 | version "5.0.1" 115 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 116 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 117 | 118 | ansi-regex@^6.0.1: 119 | version "6.0.1" 120 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" 121 | integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== 122 | 123 | ansi-styles@^3.2.1: 124 | version "3.2.1" 125 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 126 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 127 | dependencies: 128 | color-convert "^1.9.0" 129 | 130 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 131 | version "4.3.0" 132 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 133 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 134 | dependencies: 135 | color-convert "^2.0.1" 136 | 137 | ansi-styles@^6.0.0: 138 | version "6.1.0" 139 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.1.0.tgz#87313c102b8118abd57371afab34618bf7350ed3" 140 | integrity sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ== 141 | 142 | anymatch@~3.1.2: 143 | version "3.1.2" 144 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" 145 | integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== 146 | dependencies: 147 | normalize-path "^3.0.0" 148 | picomatch "^2.0.4" 149 | 150 | arg@^4.1.0: 151 | version "4.1.3" 152 | resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" 153 | integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== 154 | 155 | argparse@^2.0.1: 156 | version "2.0.1" 157 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 158 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 159 | 160 | astral-regex@^2.0.0: 161 | version "2.0.0" 162 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" 163 | integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== 164 | 165 | balanced-match@^1.0.0: 166 | version "1.0.2" 167 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 168 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 169 | 170 | binary-extensions@^2.0.0: 171 | version "2.2.0" 172 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 173 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 174 | 175 | brace-expansion@^1.1.7: 176 | version "1.1.11" 177 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 178 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 179 | dependencies: 180 | balanced-match "^1.0.0" 181 | concat-map "0.0.1" 182 | 183 | braces@^3.0.2, braces@~3.0.2: 184 | version "3.0.2" 185 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 186 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 187 | dependencies: 188 | fill-range "^7.0.1" 189 | 190 | browser-stdout@1.3.1: 191 | version "1.3.1" 192 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" 193 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== 194 | 195 | camelcase@^6.0.0: 196 | version "6.3.0" 197 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" 198 | integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== 199 | 200 | chalk@^2.0.0: 201 | version "2.4.2" 202 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 203 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 204 | dependencies: 205 | ansi-styles "^3.2.1" 206 | escape-string-regexp "^1.0.5" 207 | supports-color "^5.3.0" 208 | 209 | chalk@^4.1.0: 210 | version "4.1.2" 211 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 212 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 213 | dependencies: 214 | ansi-styles "^4.1.0" 215 | supports-color "^7.1.0" 216 | 217 | chokidar@3.5.3: 218 | version "3.5.3" 219 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" 220 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== 221 | dependencies: 222 | anymatch "~3.1.2" 223 | braces "~3.0.2" 224 | glob-parent "~5.1.2" 225 | is-binary-path "~2.1.0" 226 | is-glob "~4.0.1" 227 | normalize-path "~3.0.0" 228 | readdirp "~3.6.0" 229 | optionalDependencies: 230 | fsevents "~2.3.2" 231 | 232 | clean-stack@^2.0.0: 233 | version "2.2.0" 234 | resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" 235 | integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== 236 | 237 | cli-cursor@^3.1.0: 238 | version "3.1.0" 239 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" 240 | integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== 241 | dependencies: 242 | restore-cursor "^3.1.0" 243 | 244 | cli-truncate@^2.1.0: 245 | version "2.1.0" 246 | resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" 247 | integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== 248 | dependencies: 249 | slice-ansi "^3.0.0" 250 | string-width "^4.2.0" 251 | 252 | cli-truncate@^3.1.0: 253 | version "3.1.0" 254 | resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-3.1.0.tgz#3f23ab12535e3d73e839bb43e73c9de487db1389" 255 | integrity sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA== 256 | dependencies: 257 | slice-ansi "^5.0.0" 258 | string-width "^5.0.0" 259 | 260 | cliui@^7.0.2: 261 | version "7.0.4" 262 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" 263 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== 264 | dependencies: 265 | string-width "^4.2.0" 266 | strip-ansi "^6.0.0" 267 | wrap-ansi "^7.0.0" 268 | 269 | color-convert@^1.9.0: 270 | version "1.9.3" 271 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 272 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 273 | dependencies: 274 | color-name "1.1.3" 275 | 276 | color-convert@^2.0.1: 277 | version "2.0.1" 278 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 279 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 280 | dependencies: 281 | color-name "~1.1.4" 282 | 283 | color-name@1.1.3: 284 | version "1.1.3" 285 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 286 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 287 | 288 | color-name@~1.1.4: 289 | version "1.1.4" 290 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 291 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 292 | 293 | colorette@^2.0.16: 294 | version "2.0.16" 295 | resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" 296 | integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== 297 | 298 | commander@^8.3.0: 299 | version "8.3.0" 300 | resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" 301 | integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== 302 | 303 | concat-map@0.0.1: 304 | version "0.0.1" 305 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 306 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 307 | 308 | create-require@^1.1.0: 309 | version "1.1.1" 310 | resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" 311 | integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== 312 | 313 | cross-spawn@^7.0.3: 314 | version "7.0.3" 315 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 316 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 317 | dependencies: 318 | path-key "^3.1.0" 319 | shebang-command "^2.0.0" 320 | which "^2.0.1" 321 | 322 | debug@4.3.3: 323 | version "4.3.3" 324 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" 325 | integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== 326 | dependencies: 327 | ms "2.1.2" 328 | 329 | debug@^4.3.3, debug@^4.3.4: 330 | version "4.3.4" 331 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 332 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 333 | dependencies: 334 | ms "2.1.2" 335 | 336 | decamelize@^4.0.0: 337 | version "4.0.0" 338 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" 339 | integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== 340 | 341 | diff@5.0.0: 342 | version "5.0.0" 343 | resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" 344 | integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== 345 | 346 | diff@^4.0.1: 347 | version "4.0.2" 348 | resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" 349 | integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== 350 | 351 | eastasianwidth@^0.2.0: 352 | version "0.2.0" 353 | resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" 354 | integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== 355 | 356 | emoji-regex@^8.0.0: 357 | version "8.0.0" 358 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 359 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 360 | 361 | emoji-regex@^9.2.2: 362 | version "9.2.2" 363 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" 364 | integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== 365 | 366 | error-ex@^1.3.1: 367 | version "1.3.2" 368 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 369 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 370 | dependencies: 371 | is-arrayish "^0.2.1" 372 | 373 | escalade@^3.1.1: 374 | version "3.1.1" 375 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 376 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 377 | 378 | escape-string-regexp@4.0.0: 379 | version "4.0.0" 380 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 381 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 382 | 383 | escape-string-regexp@^1.0.5: 384 | version "1.0.5" 385 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 386 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 387 | 388 | execa@^5.1.1: 389 | version "5.1.1" 390 | resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" 391 | integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== 392 | dependencies: 393 | cross-spawn "^7.0.3" 394 | get-stream "^6.0.0" 395 | human-signals "^2.1.0" 396 | is-stream "^2.0.0" 397 | merge-stream "^2.0.0" 398 | npm-run-path "^4.0.1" 399 | onetime "^5.1.2" 400 | signal-exit "^3.0.3" 401 | strip-final-newline "^2.0.0" 402 | 403 | fill-range@^7.0.1: 404 | version "7.0.1" 405 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 406 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 407 | dependencies: 408 | to-regex-range "^5.0.1" 409 | 410 | find-up@5.0.0: 411 | version "5.0.0" 412 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" 413 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 414 | dependencies: 415 | locate-path "^6.0.0" 416 | path-exists "^4.0.0" 417 | 418 | flat@^5.0.2: 419 | version "5.0.2" 420 | resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" 421 | integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== 422 | 423 | fs.realpath@^1.0.0: 424 | version "1.0.0" 425 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 426 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 427 | 428 | fsevents@~2.3.2: 429 | version "2.3.2" 430 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 431 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 432 | 433 | function-bind@^1.1.1: 434 | version "1.1.1" 435 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 436 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 437 | 438 | get-caller-file@^2.0.5: 439 | version "2.0.5" 440 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 441 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 442 | 443 | get-stream@^6.0.0: 444 | version "6.0.1" 445 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" 446 | integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== 447 | 448 | glob-parent@~5.1.2: 449 | version "5.1.2" 450 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 451 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 452 | dependencies: 453 | is-glob "^4.0.1" 454 | 455 | glob@7.2.0: 456 | version "7.2.0" 457 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" 458 | integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== 459 | dependencies: 460 | fs.realpath "^1.0.0" 461 | inflight "^1.0.4" 462 | inherits "2" 463 | minimatch "^3.0.4" 464 | once "^1.3.0" 465 | path-is-absolute "^1.0.0" 466 | 467 | growl@1.10.5: 468 | version "1.10.5" 469 | resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" 470 | integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== 471 | 472 | has-flag@^3.0.0: 473 | version "3.0.0" 474 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 475 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 476 | 477 | has-flag@^4.0.0: 478 | version "4.0.0" 479 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 480 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 481 | 482 | has@^1.0.3: 483 | version "1.0.3" 484 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 485 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 486 | dependencies: 487 | function-bind "^1.1.1" 488 | 489 | he@1.2.0: 490 | version "1.2.0" 491 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" 492 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 493 | 494 | hosted-git-info@^2.1.4: 495 | version "2.8.9" 496 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" 497 | integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== 498 | 499 | human-signals@^2.1.0: 500 | version "2.1.0" 501 | resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" 502 | integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== 503 | 504 | indent-string@^4.0.0: 505 | version "4.0.0" 506 | resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" 507 | integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== 508 | 509 | inflight@^1.0.4: 510 | version "1.0.6" 511 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 512 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 513 | dependencies: 514 | once "^1.3.0" 515 | wrappy "1" 516 | 517 | inherits@2: 518 | version "2.0.4" 519 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 520 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 521 | 522 | is-arrayish@^0.2.1: 523 | version "0.2.1" 524 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 525 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= 526 | 527 | is-binary-path@~2.1.0: 528 | version "2.1.0" 529 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 530 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 531 | dependencies: 532 | binary-extensions "^2.0.0" 533 | 534 | is-core-module@^2.8.1: 535 | version "2.8.1" 536 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" 537 | integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== 538 | dependencies: 539 | has "^1.0.3" 540 | 541 | is-extglob@^2.1.1: 542 | version "2.1.1" 543 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 544 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 545 | 546 | is-fullwidth-code-point@^3.0.0: 547 | version "3.0.0" 548 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 549 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 550 | 551 | is-fullwidth-code-point@^4.0.0: 552 | version "4.0.0" 553 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88" 554 | integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== 555 | 556 | is-glob@^4.0.1, is-glob@~4.0.1: 557 | version "4.0.3" 558 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 559 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 560 | dependencies: 561 | is-extglob "^2.1.1" 562 | 563 | is-number@^7.0.0: 564 | version "7.0.0" 565 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 566 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 567 | 568 | is-plain-obj@^2.1.0: 569 | version "2.1.0" 570 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" 571 | integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== 572 | 573 | is-stream@^2.0.0: 574 | version "2.0.1" 575 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" 576 | integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== 577 | 578 | is-unicode-supported@^0.1.0: 579 | version "0.1.0" 580 | resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" 581 | integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== 582 | 583 | isexe@^2.0.0: 584 | version "2.0.0" 585 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 586 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 587 | 588 | js-tokens@^4.0.0: 589 | version "4.0.0" 590 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 591 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 592 | 593 | js-yaml@4.1.0, js-yaml@^4.1.0: 594 | version "4.1.0" 595 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" 596 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 597 | dependencies: 598 | argparse "^2.0.1" 599 | 600 | json-parse-even-better-errors@^2.3.0: 601 | version "2.3.1" 602 | resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" 603 | integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== 604 | 605 | json5@^2.2.2: 606 | version "2.2.2" 607 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.2.tgz#64471c5bdcc564c18f7c1d4df2e2297f2457c5ab" 608 | integrity sha512-46Tk9JiOL2z7ytNQWFLpj99RZkVgeHf87yGQKsIkaPz1qSH9UczKH1rO7K3wgRselo0tYMUNfecYpm/p1vC7tQ== 609 | 610 | lilconfig@2.0.4: 611 | version "2.0.4" 612 | resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.4.tgz#f4507d043d7058b380b6a8f5cb7bcd4b34cee082" 613 | integrity sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA== 614 | 615 | lines-and-columns@^1.1.6: 616 | version "1.2.4" 617 | resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" 618 | integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== 619 | 620 | lint-staged@^12.3.7: 621 | version "12.3.7" 622 | resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-12.3.7.tgz#ad0e2014302f704f9cf2c0ebdb97ac63d0f17be0" 623 | integrity sha512-/S4D726e2GIsDVWIk1XGvheCaDm1SJRQp8efamZFWJxQMVEbOwSysp7xb49Oo73KYCdy97mIWinhlxcoNqIfIQ== 624 | dependencies: 625 | cli-truncate "^3.1.0" 626 | colorette "^2.0.16" 627 | commander "^8.3.0" 628 | debug "^4.3.3" 629 | execa "^5.1.1" 630 | lilconfig "2.0.4" 631 | listr2 "^4.0.1" 632 | micromatch "^4.0.4" 633 | normalize-path "^3.0.0" 634 | object-inspect "^1.12.0" 635 | pidtree "^0.5.0" 636 | string-argv "^0.3.1" 637 | supports-color "^9.2.1" 638 | yaml "^1.10.2" 639 | 640 | listr2@^4.0.1: 641 | version "4.0.5" 642 | resolved "https://registry.yarnpkg.com/listr2/-/listr2-4.0.5.tgz#9dcc50221583e8b4c71c43f9c7dfd0ef546b75d5" 643 | integrity sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA== 644 | dependencies: 645 | cli-truncate "^2.1.0" 646 | colorette "^2.0.16" 647 | log-update "^4.0.0" 648 | p-map "^4.0.0" 649 | rfdc "^1.3.0" 650 | rxjs "^7.5.5" 651 | through "^2.3.8" 652 | wrap-ansi "^7.0.0" 653 | 654 | locate-path@^6.0.0: 655 | version "6.0.0" 656 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" 657 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 658 | dependencies: 659 | p-locate "^5.0.0" 660 | 661 | log-symbols@4.1.0: 662 | version "4.1.0" 663 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" 664 | integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== 665 | dependencies: 666 | chalk "^4.1.0" 667 | is-unicode-supported "^0.1.0" 668 | 669 | log-update@^4.0.0: 670 | version "4.0.0" 671 | resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" 672 | integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== 673 | dependencies: 674 | ansi-escapes "^4.3.0" 675 | cli-cursor "^3.1.0" 676 | slice-ansi "^4.0.0" 677 | wrap-ansi "^6.2.0" 678 | 679 | make-error@^1.1.1: 680 | version "1.3.6" 681 | resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" 682 | integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== 683 | 684 | merge-stream@^2.0.0: 685 | version "2.0.0" 686 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 687 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 688 | 689 | micromatch@^4.0.4: 690 | version "4.0.5" 691 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" 692 | integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== 693 | dependencies: 694 | braces "^3.0.2" 695 | picomatch "^2.3.1" 696 | 697 | mimic-fn@^2.1.0: 698 | version "2.1.0" 699 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 700 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 701 | 702 | minimatch@4.2.1: 703 | version "4.2.1" 704 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-4.2.1.tgz#40d9d511a46bdc4e563c22c3080cde9c0d8299b4" 705 | integrity sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g== 706 | dependencies: 707 | brace-expansion "^1.1.7" 708 | 709 | minimatch@^3.0.4: 710 | version "3.1.2" 711 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 712 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 713 | dependencies: 714 | brace-expansion "^1.1.7" 715 | 716 | mocha@^9.2.2: 717 | version "9.2.2" 718 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.2.2.tgz#d70db46bdb93ca57402c809333e5a84977a88fb9" 719 | integrity sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g== 720 | dependencies: 721 | "@ungap/promise-all-settled" "1.1.2" 722 | ansi-colors "4.1.1" 723 | browser-stdout "1.3.1" 724 | chokidar "3.5.3" 725 | debug "4.3.3" 726 | diff "5.0.0" 727 | escape-string-regexp "4.0.0" 728 | find-up "5.0.0" 729 | glob "7.2.0" 730 | growl "1.10.5" 731 | he "1.2.0" 732 | js-yaml "4.1.0" 733 | log-symbols "4.1.0" 734 | minimatch "4.2.1" 735 | ms "2.1.3" 736 | nanoid "3.3.1" 737 | serialize-javascript "6.0.0" 738 | strip-json-comments "3.1.1" 739 | supports-color "8.1.1" 740 | which "2.0.2" 741 | workerpool "6.2.0" 742 | yargs "16.2.0" 743 | yargs-parser "20.2.4" 744 | yargs-unparser "2.0.0" 745 | 746 | ms@2.1.2: 747 | version "2.1.2" 748 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 749 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 750 | 751 | ms@2.1.3: 752 | version "2.1.3" 753 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 754 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 755 | 756 | nanoid@3.3.1: 757 | version "3.3.1" 758 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" 759 | integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== 760 | 761 | normalize-package-data@^2.5.0: 762 | version "2.5.0" 763 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" 764 | integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== 765 | dependencies: 766 | hosted-git-info "^2.1.4" 767 | resolve "^1.10.0" 768 | semver "2 || 3 || 4 || 5" 769 | validate-npm-package-license "^3.0.1" 770 | 771 | normalize-path@^3.0.0, normalize-path@~3.0.0: 772 | version "3.0.0" 773 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 774 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 775 | 776 | npm-run-path@^4.0.1: 777 | version "4.0.1" 778 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" 779 | integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== 780 | dependencies: 781 | path-key "^3.0.0" 782 | 783 | object-inspect@^1.12.0: 784 | version "1.12.0" 785 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" 786 | integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== 787 | 788 | once@^1.3.0: 789 | version "1.4.0" 790 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 791 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 792 | dependencies: 793 | wrappy "1" 794 | 795 | onetime@^5.1.0, onetime@^5.1.2: 796 | version "5.1.2" 797 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" 798 | integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== 799 | dependencies: 800 | mimic-fn "^2.1.0" 801 | 802 | p-limit@^3.0.2: 803 | version "3.1.0" 804 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 805 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 806 | dependencies: 807 | yocto-queue "^0.1.0" 808 | 809 | p-locate@^5.0.0: 810 | version "5.0.0" 811 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" 812 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 813 | dependencies: 814 | p-limit "^3.0.2" 815 | 816 | p-map@^4.0.0: 817 | version "4.0.0" 818 | resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" 819 | integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== 820 | dependencies: 821 | aggregate-error "^3.0.0" 822 | 823 | parse-json@^5.0.0: 824 | version "5.2.0" 825 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" 826 | integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== 827 | dependencies: 828 | "@babel/code-frame" "^7.0.0" 829 | error-ex "^1.3.1" 830 | json-parse-even-better-errors "^2.3.0" 831 | lines-and-columns "^1.1.6" 832 | 833 | path-exists@^4.0.0: 834 | version "4.0.0" 835 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 836 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 837 | 838 | path-is-absolute@^1.0.0: 839 | version "1.0.1" 840 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 841 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 842 | 843 | path-key@^3.0.0, path-key@^3.1.0: 844 | version "3.1.1" 845 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 846 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 847 | 848 | path-parse@^1.0.7: 849 | version "1.0.7" 850 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 851 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 852 | 853 | picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: 854 | version "2.3.1" 855 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 856 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 857 | 858 | pidtree@^0.5.0: 859 | version "0.5.0" 860 | resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.5.0.tgz#ad5fbc1de78b8a5f99d6fbdd4f6e4eee21d1aca1" 861 | integrity sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA== 862 | 863 | prettier@^2.6.2: 864 | version "2.6.2" 865 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.6.2.tgz#e26d71a18a74c3d0f0597f55f01fb6c06c206032" 866 | integrity sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew== 867 | 868 | randombytes@^2.1.0: 869 | version "2.1.0" 870 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" 871 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 872 | dependencies: 873 | safe-buffer "^5.1.0" 874 | 875 | read-pkg@^5.2.0: 876 | version "5.2.0" 877 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" 878 | integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== 879 | dependencies: 880 | "@types/normalize-package-data" "^2.4.0" 881 | normalize-package-data "^2.5.0" 882 | parse-json "^5.0.0" 883 | type-fest "^0.6.0" 884 | 885 | readdirp@~3.6.0: 886 | version "3.6.0" 887 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 888 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 889 | dependencies: 890 | picomatch "^2.2.1" 891 | 892 | require-directory@^2.1.1: 893 | version "2.1.1" 894 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 895 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 896 | 897 | require-from-string@^2.0.2: 898 | version "2.0.2" 899 | resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" 900 | integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== 901 | 902 | resolve@^1.10.0: 903 | version "1.22.0" 904 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" 905 | integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== 906 | dependencies: 907 | is-core-module "^2.8.1" 908 | path-parse "^1.0.7" 909 | supports-preserve-symlinks-flag "^1.0.0" 910 | 911 | restore-cursor@^3.1.0: 912 | version "3.1.0" 913 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" 914 | integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== 915 | dependencies: 916 | onetime "^5.1.0" 917 | signal-exit "^3.0.2" 918 | 919 | rfdc@^1.3.0: 920 | version "1.3.0" 921 | resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" 922 | integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== 923 | 924 | rxjs@^7.5.5: 925 | version "7.5.5" 926 | resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.5.tgz#2ebad89af0f560f460ad5cc4213219e1f7dd4e9f" 927 | integrity sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw== 928 | dependencies: 929 | tslib "^2.1.0" 930 | 931 | safe-buffer@^5.1.0: 932 | version "5.2.1" 933 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 934 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 935 | 936 | "semver@2 || 3 || 4 || 5": 937 | version "5.7.1" 938 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 939 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 940 | 941 | serialize-javascript@6.0.0: 942 | version "6.0.0" 943 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" 944 | integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== 945 | dependencies: 946 | randombytes "^2.1.0" 947 | 948 | shebang-command@^2.0.0: 949 | version "2.0.0" 950 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 951 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 952 | dependencies: 953 | shebang-regex "^3.0.0" 954 | 955 | shebang-regex@^3.0.0: 956 | version "3.0.0" 957 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 958 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 959 | 960 | signal-exit@^3.0.2, signal-exit@^3.0.3: 961 | version "3.0.7" 962 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" 963 | integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== 964 | 965 | slice-ansi@^3.0.0: 966 | version "3.0.0" 967 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" 968 | integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== 969 | dependencies: 970 | ansi-styles "^4.0.0" 971 | astral-regex "^2.0.0" 972 | is-fullwidth-code-point "^3.0.0" 973 | 974 | slice-ansi@^4.0.0: 975 | version "4.0.0" 976 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" 977 | integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== 978 | dependencies: 979 | ansi-styles "^4.0.0" 980 | astral-regex "^2.0.0" 981 | is-fullwidth-code-point "^3.0.0" 982 | 983 | slice-ansi@^5.0.0: 984 | version "5.0.0" 985 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-5.0.0.tgz#b73063c57aa96f9cd881654b15294d95d285c42a" 986 | integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ== 987 | dependencies: 988 | ansi-styles "^6.0.0" 989 | is-fullwidth-code-point "^4.0.0" 990 | 991 | spdx-correct@^3.0.0: 992 | version "3.1.1" 993 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" 994 | integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== 995 | dependencies: 996 | spdx-expression-parse "^3.0.0" 997 | spdx-license-ids "^3.0.0" 998 | 999 | spdx-exceptions@^2.1.0: 1000 | version "2.3.0" 1001 | resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" 1002 | integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== 1003 | 1004 | spdx-expression-parse@^3.0.0: 1005 | version "3.0.1" 1006 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" 1007 | integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== 1008 | dependencies: 1009 | spdx-exceptions "^2.1.0" 1010 | spdx-license-ids "^3.0.0" 1011 | 1012 | spdx-license-ids@^3.0.0: 1013 | version "3.0.11" 1014 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz#50c0d8c40a14ec1bf449bae69a0ea4685a9d9f95" 1015 | integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g== 1016 | 1017 | string-argv@^0.3.1: 1018 | version "0.3.1" 1019 | resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" 1020 | integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== 1021 | 1022 | string-width@^4.1.0, string-width@^4.2.0: 1023 | version "4.2.3" 1024 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 1025 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1026 | dependencies: 1027 | emoji-regex "^8.0.0" 1028 | is-fullwidth-code-point "^3.0.0" 1029 | strip-ansi "^6.0.1" 1030 | 1031 | string-width@^5.0.0: 1032 | version "5.1.2" 1033 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" 1034 | integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== 1035 | dependencies: 1036 | eastasianwidth "^0.2.0" 1037 | emoji-regex "^9.2.2" 1038 | strip-ansi "^7.0.1" 1039 | 1040 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 1041 | version "6.0.1" 1042 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 1043 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1044 | dependencies: 1045 | ansi-regex "^5.0.1" 1046 | 1047 | strip-ansi@^7.0.1: 1048 | version "7.0.1" 1049 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" 1050 | integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== 1051 | dependencies: 1052 | ansi-regex "^6.0.1" 1053 | 1054 | strip-final-newline@^2.0.0: 1055 | version "2.0.0" 1056 | resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" 1057 | integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== 1058 | 1059 | strip-json-comments@3.1.1: 1060 | version "3.1.1" 1061 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 1062 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1063 | 1064 | supports-color@8.1.1: 1065 | version "8.1.1" 1066 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" 1067 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== 1068 | dependencies: 1069 | has-flag "^4.0.0" 1070 | 1071 | supports-color@^5.3.0: 1072 | version "5.5.0" 1073 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1074 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1075 | dependencies: 1076 | has-flag "^3.0.0" 1077 | 1078 | supports-color@^7.1.0: 1079 | version "7.2.0" 1080 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1081 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1082 | dependencies: 1083 | has-flag "^4.0.0" 1084 | 1085 | supports-color@^9.2.1: 1086 | version "9.2.2" 1087 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-9.2.2.tgz#502acaf82f2b7ee78eb7c83dcac0f89694e5a7bb" 1088 | integrity sha512-XC6g/Kgux+rJXmwokjm9ECpD6k/smUoS5LKlUCcsYr4IY3rW0XyAympon2RmxGrlnZURMpg5T18gWDP9CsHXFA== 1089 | 1090 | supports-preserve-symlinks-flag@^1.0.0: 1091 | version "1.0.0" 1092 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 1093 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 1094 | 1095 | through@^2.3.8: 1096 | version "2.3.8" 1097 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 1098 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= 1099 | 1100 | to-regex-range@^5.0.1: 1101 | version "5.0.1" 1102 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1103 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1104 | dependencies: 1105 | is-number "^7.0.0" 1106 | 1107 | ts-node-test-register@^10.0.0: 1108 | version "10.0.0" 1109 | resolved "https://registry.yarnpkg.com/ts-node-test-register/-/ts-node-test-register-10.0.0.tgz#eb8cbe40954331f2f70c8e5fb83c677965ac14f9" 1110 | integrity sha512-W8yzvufsG7/ulT65G1D218HMPf6uduojDXuSrGAaakkZlUtuLC+3pxphDktBe/N9w5Gi7teAxKCaTpBH5p6fkQ== 1111 | dependencies: 1112 | read-pkg "^5.2.0" 1113 | 1114 | ts-node@^10.7.0: 1115 | version "10.7.0" 1116 | resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.7.0.tgz#35d503d0fab3e2baa672a0e94f4b40653c2463f5" 1117 | integrity sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A== 1118 | dependencies: 1119 | "@cspotcode/source-map-support" "0.7.0" 1120 | "@tsconfig/node10" "^1.0.7" 1121 | "@tsconfig/node12" "^1.0.7" 1122 | "@tsconfig/node14" "^1.0.0" 1123 | "@tsconfig/node16" "^1.0.2" 1124 | acorn "^8.4.1" 1125 | acorn-walk "^8.1.1" 1126 | arg "^4.1.0" 1127 | create-require "^1.1.0" 1128 | diff "^4.0.1" 1129 | make-error "^1.1.1" 1130 | v8-compile-cache-lib "^3.0.0" 1131 | yn "3.1.1" 1132 | 1133 | tslib@^2.1.0: 1134 | version "2.3.1" 1135 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" 1136 | integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== 1137 | 1138 | type-fest@^0.21.3: 1139 | version "0.21.3" 1140 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" 1141 | integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== 1142 | 1143 | type-fest@^0.6.0: 1144 | version "0.6.0" 1145 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" 1146 | integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== 1147 | 1148 | typescript@^4.6.3: 1149 | version "4.6.3" 1150 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.3.tgz#eefeafa6afdd31d725584c67a0eaba80f6fc6c6c" 1151 | integrity sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw== 1152 | 1153 | v8-compile-cache-lib@^3.0.0: 1154 | version "3.0.0" 1155 | resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.0.tgz#0582bcb1c74f3a2ee46487ceecf372e46bce53e8" 1156 | integrity sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA== 1157 | 1158 | validate-npm-package-license@^3.0.1: 1159 | version "3.0.4" 1160 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" 1161 | integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== 1162 | dependencies: 1163 | spdx-correct "^3.0.0" 1164 | spdx-expression-parse "^3.0.0" 1165 | 1166 | which@2.0.2, which@^2.0.1: 1167 | version "2.0.2" 1168 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1169 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1170 | dependencies: 1171 | isexe "^2.0.0" 1172 | 1173 | workerpool@6.2.0: 1174 | version "6.2.0" 1175 | resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.0.tgz#827d93c9ba23ee2019c3ffaff5c27fccea289e8b" 1176 | integrity sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A== 1177 | 1178 | wrap-ansi@^6.2.0: 1179 | version "6.2.0" 1180 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" 1181 | integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== 1182 | dependencies: 1183 | ansi-styles "^4.0.0" 1184 | string-width "^4.1.0" 1185 | strip-ansi "^6.0.0" 1186 | 1187 | wrap-ansi@^7.0.0: 1188 | version "7.0.0" 1189 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 1190 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 1191 | dependencies: 1192 | ansi-styles "^4.0.0" 1193 | string-width "^4.1.0" 1194 | strip-ansi "^6.0.0" 1195 | 1196 | wrappy@1: 1197 | version "1.0.2" 1198 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1199 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1200 | 1201 | y18n@^5.0.5: 1202 | version "5.0.8" 1203 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 1204 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 1205 | 1206 | yaml@^1.10.2: 1207 | version "1.10.2" 1208 | resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" 1209 | integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== 1210 | 1211 | yargs-parser@20.2.4: 1212 | version "20.2.4" 1213 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" 1214 | integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== 1215 | 1216 | yargs-parser@^20.2.2: 1217 | version "20.2.9" 1218 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" 1219 | integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== 1220 | 1221 | yargs-unparser@2.0.0: 1222 | version "2.0.0" 1223 | resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" 1224 | integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== 1225 | dependencies: 1226 | camelcase "^6.0.0" 1227 | decamelize "^4.0.0" 1228 | flat "^5.0.2" 1229 | is-plain-obj "^2.1.0" 1230 | 1231 | yargs@16.2.0: 1232 | version "16.2.0" 1233 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" 1234 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== 1235 | dependencies: 1236 | cliui "^7.0.2" 1237 | escalade "^3.1.1" 1238 | get-caller-file "^2.0.5" 1239 | require-directory "^2.1.1" 1240 | string-width "^4.2.0" 1241 | y18n "^5.0.5" 1242 | yargs-parser "^20.2.2" 1243 | 1244 | yn@3.1.1: 1245 | version "3.1.1" 1246 | resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" 1247 | integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== 1248 | 1249 | yocto-queue@^0.1.0: 1250 | version "0.1.0" 1251 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 1252 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 1253 | --------------------------------------------------------------------------------