├── .githooks └── pre-commit ├── .github ├── release.yml └── workflows │ └── test.yml ├── .gitignore ├── .mocharc.json ├── LICENSE ├── README.md ├── bin └── cmd.mjs ├── package.json ├── src ├── cli.ts └── index.ts ├── test ├── index.test.ts └── snapshots │ ├── app.use-function │ ├── app.ts │ ├── output.json │ └── output.md │ ├── app │ ├── output.json │ ├── output.md │ ├── package.json │ └── src │ │ ├── game.ts │ │ ├── index.ts │ │ └── user.ts │ ├── req.get-but-it-is-not-router │ ├── app.ts │ ├── output.json │ └── output.md │ ├── res.set-get-but-it-is-not-router │ ├── app.ts │ ├── output.json │ └── output.md │ └── skip-wrong-path │ ├── output.json │ ├── output.md │ ├── package.json │ └── src │ ├── game.ts │ └── index.ts ├── 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 | jobs: 4 | test: 5 | name: "Test on Node.js ${{ matrix.node-version }}" 6 | runs-on: ubuntu-latest 7 | strategy: 8 | matrix: 9 | node-version: [16, 18] 10 | steps: 11 | - name: checkout 12 | uses: actions/checkout@v3 13 | - name: setup Node.js ${{ matrix.node-version }} 14 | uses: actions/setup-node@v3 15 | with: 16 | node-version: ${{ matrix.node-version }} 17 | - name: Install 18 | run: yarn install 19 | - name: Test 20 | run: yarn test 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ### https://raw.github.com/github/gitignore/d2c1bb2b9c72ead618c9f6a48280ebc7a8e0dff6/Node.gitignore 2 | 3 | # Logs 4 | logs 5 | *.log 6 | npm-debug.log* 7 | yarn-debug.log* 8 | yarn-error.log* 9 | 10 | # Runtime data 11 | pids 12 | *.pid 13 | *.seed 14 | *.pid.lock 15 | 16 | # Directory for instrumented libs generated by jscoverage/JSCover 17 | lib-cov 18 | 19 | # Coverage directory used by tools like istanbul 20 | coverage 21 | 22 | # nyc test coverage 23 | .nyc_output 24 | 25 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 26 | .grunt 27 | 28 | # Bower dependency directory (https://bower.io/) 29 | bower_components 30 | 31 | # node-waf configuration 32 | .lock-wscript 33 | 34 | # Compiled binary addons (https://nodejs.org/api/addons.html) 35 | build/Release 36 | 37 | # Dependency directories 38 | node_modules/ 39 | jspm_packages/ 40 | 41 | # TypeScript v1 declaration files 42 | typings/ 43 | 44 | # Optional npm cache directory 45 | .npm 46 | 47 | # Optional eslint cache 48 | .eslintcache 49 | 50 | # Optional REPL history 51 | .node_repl_history 52 | 53 | # Output of 'npm pack' 54 | *.tgz 55 | 56 | # Yarn Integrity file 57 | .yarn-integrity 58 | 59 | # dotenv environment variables file 60 | .env 61 | .env.test 62 | 63 | # parcel-bundler cache (https://parceljs.org/) 64 | .cache 65 | 66 | # next.js build output 67 | .next 68 | 69 | # nuxt.js build output 70 | .nuxt 71 | 72 | # vuepress build output 73 | .vuepress/dist 74 | 75 | # Serverless directories 76 | .serverless/ 77 | 78 | # FuseBox cache 79 | .fusebox/ 80 | 81 | # DynamoDB Local files 82 | .dynamodb/ 83 | 84 | 85 | ### https://raw.github.com/github/gitignore/d2c1bb2b9c72ead618c9f6a48280ebc7a8e0dff6/Global/JetBrains.gitignore 86 | 87 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm 88 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 89 | 90 | # User-specific stuff 91 | .idea/**/workspace.xml 92 | .idea/**/tasks.xml 93 | .idea/**/usage.statistics.xml 94 | .idea/**/dictionaries 95 | .idea/**/shelf 96 | 97 | # Generated files 98 | .idea/**/contentModel.xml 99 | 100 | # Sensitive or high-churn files 101 | .idea/**/dataSources/ 102 | .idea/**/dataSources.ids 103 | .idea/**/dataSources.local.xml 104 | .idea/**/sqlDataSources.xml 105 | .idea/**/dynamic.xml 106 | .idea/**/uiDesigner.xml 107 | .idea/**/dbnavigator.xml 108 | 109 | # Gradle 110 | .idea/**/gradle.xml 111 | .idea/**/libraries 112 | 113 | # Gradle and Maven with auto-import 114 | # When using Gradle or Maven with auto-import, you should exclude module files, 115 | # since they will be recreated, and may cause churn. Uncomment if using 116 | # auto-import. 117 | # .idea/modules.xml 118 | # .idea/*.iml 119 | # .idea/modules 120 | 121 | # CMake 122 | cmake-build-*/ 123 | 124 | # Mongo Explorer plugin 125 | .idea/**/mongoSettings.xml 126 | 127 | # File-based project format 128 | *.iws 129 | 130 | # IntelliJ 131 | out/ 132 | 133 | # mpeltonen/sbt-idea plugin 134 | .idea_modules/ 135 | 136 | # JIRA plugin 137 | atlassian-ide-plugin.xml 138 | 139 | # Cursive Clojure plugin 140 | .idea/replstate.xml 141 | 142 | # Crashlytics plugin (for Android Studio and IntelliJ) 143 | com_crashlytics_export_strings.xml 144 | crashlytics.properties 145 | crashlytics-build.properties 146 | fabric.properties 147 | 148 | # Editor-based Rest Client 149 | .idea/httpRequests 150 | 151 | # Android studio 3.1+ serialized cache file 152 | .idea/caches/build_file_checksums.ser 153 | 154 | 155 | # Build files 156 | /lib 157 | /module 158 | -------------------------------------------------------------------------------- /.mocharc.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/mocharc", 3 | "loader": "ts-node/esm", 4 | "spec": [ 5 | "test/*.test.ts" 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2021 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 | # express-router-dependency-graph 2 | 3 | Create dependency graph for express routing. 4 | 5 | ## Install 6 | 7 | Install with [npm](https://www.npmjs.com/): 8 | 9 | npx express-router-dependency-graph "src/**/*.ts" 10 | 11 | ## Usage 12 | 13 | Usage 14 | $ express-router-dependency-graph [input] 15 | 16 | Options 17 | --cwd [Path:String] current working directory. Default: process.cwd() 18 | --rootBaseUrl [Path:String] if pass it, replace rootDir with rootDirBaseURL in output. 19 | --format ["json" | "markdown"] output format. Default: markdown 20 | 21 | Examples 22 | # analyze all ts files in src directory 23 | $ express-router-dependency-graph "src/**/*.ts" 24 | # analyze all ts files in src directory and output json 25 | $ express-router-dependency-graph "src/**/*.ts" --format=json 26 | # analyze all js and ts files in src directory 27 | $ express-router-dependency-graph "src/**/*.ts" "src/**/*.js" 28 | # change rootDir to rootDirBaseURL to output 29 | $ express-router-dependency-graph "src/**/*.ts" --rootBaseUrl="https://github.com/owner/repo/tree/master/src" 30 | # include node_modules 31 | # node_modules, dist, build, test, __tests__ are excluded by default 32 | $ express-router-dependency-graph "src/**/*.ts" --noDefaultExcludes 33 | 34 | ## Example 35 | 36 | Example output: `--format=markdown` 37 | 38 | - File: file path 39 | - Method: get | post | put | delete | `use`(express's use) 40 | - Routing: routing path name 41 | - Middlewares: used middlewares 42 | - Note: `app.use("/test", () => { ... })` is shown "Anonymous Function" middleware 43 | - FilePath: source code position 44 | 45 | | File | Method | Routing | Middlewares | FilePath | 46 | | ------------ | ------ | --------------- | ------------ |---------------------| 47 | | src/game.ts | | | | | 48 | | | get | /getGameById | requireRead | src/game.ts#L11-L12 | 49 | | | get | /getGameList | requireRead | src/game.ts#L13-L14 | 50 | | | post | /updateGameById | requireWrite | src/game.ts#L15-L16 | 51 | | | delete | /deleteGameById | requireWrite | src/game.ts#L17-L18 | 52 | | src/index.ts | | | | | 53 | | | use | /user | user | src/index.ts#L8-L8 | 54 | | | use | /game | game | src/index.ts#L9-L9 | 55 | | src/user.ts | | | | | 56 | | | get | /getUserById | requireRead | src/user.ts#L10-L11 | 57 | | | get | /getUserList | requireRead | src/user.ts#L12-L13 | 58 | | | post | /updateUserById | requireWrite | src/user.ts#L14-L15 | 59 | | | delete | /deleteUserById | requireWrite | src/user.ts#L16-L17 |` 60 | 61 | Example output: `--format=json` 62 | 63 | ```json5 64 | [ 65 | { 66 | filePath: "/src/game.ts", 67 | routers: [ 68 | { 69 | method: "get", 70 | path: "/getGameById", 71 | middlewares: ["requireRead"], 72 | range: [288, 338], 73 | loc: { start: { line: 11, column: 0 }, end: { line: 12, column: 2 } } 74 | }, 75 | { 76 | method: "get", 77 | path: "/getGameList", 78 | middlewares: ["requireRead"], 79 | range: [340, 390], 80 | loc: { start: { line: 13, column: 0 }, end: { line: 14, column: 2 } } 81 | }, 82 | { 83 | method: "post", 84 | path: "/updateGameById", 85 | middlewares: ["requireWrite"], 86 | range: [392, 447], 87 | loc: { start: { line: 15, column: 0 }, end: { line: 16, column: 2 } } 88 | }, 89 | { 90 | method: "delete", 91 | path: "/deleteGameById", 92 | middlewares: ["requireWrite"], 93 | range: [449, 506], 94 | loc: { start: { line: 17, column: 0 }, end: { line: 18, column: 2 } } 95 | } 96 | ] 97 | }, 98 | { 99 | filePath: "/src/index.ts", 100 | routers: [ 101 | { 102 | method: "use", 103 | path: "/user", 104 | middlewares: ["user"], 105 | range: [140, 162], 106 | loc: { start: { line: 8, column: 0 }, end: { line: 8, column: 22 } } 107 | }, 108 | { 109 | method: "use", 110 | path: "/game", 111 | middlewares: ["game"], 112 | range: [164, 186], 113 | loc: { start: { line: 9, column: 0 }, end: { line: 9, column: 22 } } 114 | } 115 | ] 116 | }, 117 | { 118 | filePath: "/src/user.ts", 119 | routers: [ 120 | { 121 | method: "get", 122 | path: "/getUserById", 123 | middlewares: ["requireRead"], 124 | range: [287, 337], 125 | loc: { start: { line: 10, column: 0 }, end: { line: 11, column: 2 } } 126 | }, 127 | { 128 | method: "get", 129 | path: "/getUserList", 130 | middlewares: ["requireRead"], 131 | range: [339, 389], 132 | loc: { start: { line: 12, column: 0 }, end: { line: 13, column: 2 } } 133 | }, 134 | { 135 | method: "post", 136 | path: "/updateUserById", 137 | middlewares: ["requireWrite"], 138 | range: [391, 446], 139 | loc: { start: { line: 14, column: 0 }, end: { line: 15, column: 2 } } 140 | }, 141 | { 142 | method: "delete", 143 | path: "/deleteUserById", 144 | middlewares: ["requireWrite"], 145 | range: [448, 505], 146 | loc: { start: { line: 16, column: 0 }, end: { line: 17, column: 2 } } 147 | } 148 | ] 149 | } 150 | ] 151 | ``` 152 | 153 | ## Changelog 154 | 155 | See [Releases page](https://github.com/azu/express-router-dependency-graph/releases). 156 | 157 | ## Related 158 | 159 | - [node.js - How to get all registered routes in Express? - Stack Overflow](https://stackoverflow.com/questions/14934452/how-to-get-all-registered-routes-in-express) 160 | - Almost approach require runtime approach 161 | 162 | ## Running tests 163 | 164 | Install devDependencies and Run `npm test`: 165 | 166 | npm test 167 | 168 | ### Add test case 169 | 170 | 1. Add test case to `test/snapshot//app.ts` 171 | 2. Run `npm run updateSnspahots` 172 | 3. Check `test/snapshot//output.{json,md}` 173 | 4. Commit it! 174 | 175 | ## Contributing 176 | 177 | Pull requests and stars are always welcome. 178 | 179 | For bugs and feature requests, [please create an issue](https://github.com/azu/express-router-dependency-graph/issues). 180 | 181 | 1. Fork it! 182 | 2. Create your feature branch: `git checkout -b my-new-feature` 183 | 3. Commit your changes: `git commit -am 'Add some feature'` 184 | 4. Push to the branch: `git push origin my-new-feature` 185 | 5. Submit a pull request :D 186 | 187 | ## Author 188 | 189 | - azu: [GitHub](https://github.com/azu), [Twitter](https://twitter.com/azu_re) 190 | 191 | ## License 192 | 193 | MIT © azu 194 | -------------------------------------------------------------------------------- /bin/cmd.mjs: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | import { run } from "../module/cli.js" 3 | 4 | run() 5 | .then( 6 | ({ exitStatus, stderr, stdout }) => { 7 | if (stdout) { 8 | console.log(stdout); 9 | } 10 | if (stderr) { 11 | console.error(stderr); 12 | } 13 | process.exit(exitStatus); 14 | }, 15 | error => { 16 | console.error(error); 17 | process.exit(1); 18 | } 19 | ); 20 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "express-router-dependency-graph", 3 | "version": "3.0.3", 4 | "description": "Create dependency graph for express routing.", 5 | "keywords": [ 6 | "node", 7 | "express", 8 | "dependency-graph", 9 | "visualize", 10 | "tool" 11 | ], 12 | "homepage": "https://github.com/azu/express-router-dependency-graph", 13 | "bugs": { 14 | "url": "https://github.com/azu/express-router-dependency-graph/issues" 15 | }, 16 | "repository": { 17 | "type": "git", 18 | "url": "https://github.com/azu/express-router-dependency-graph.git" 19 | }, 20 | "license": "MIT", 21 | "author": "azu", 22 | "sideEffects": false, 23 | "type": "module", 24 | "exports": { 25 | ".": { 26 | "import": { 27 | "types": "./module/index.d.ts", 28 | "default": "./module/index.js" 29 | }, 30 | "default": "./module/index.js" 31 | }, 32 | "./package.json": "./package.json" 33 | }, 34 | "main": "./module/index.js", 35 | "module": "module/index.js", 36 | "types": "./module/index.d.ts", 37 | "bin": { 38 | "express-router-dependency-graph": "bin/cmd.mjs" 39 | }, 40 | "files": [ 41 | "bin/", 42 | "module/", 43 | "src/" 44 | ], 45 | "scripts": { 46 | "build": "tsc --build", 47 | "clean": "tsc --build --clean", 48 | "main": "ts-node-transpile-only src/index.ts", 49 | "prepare": "git config --local core.hooksPath .githooks", 50 | "prepublishOnly": "npm run clean && npm run build", 51 | "prettier": "prettier --write \"**/*.{js,jsx,ts,tsx,css}\"", 52 | "test": "mocha", 53 | "updateSnapshot": "UPDATE_SNAPSHOT=1 npm test", 54 | "watch": "tsc --build --watch" 55 | }, 56 | "lint-staged": { 57 | "*.{js,jsx,ts,tsx,css}": [ 58 | "prettier --write" 59 | ] 60 | }, 61 | "prettier": { 62 | "printWidth": 120, 63 | "singleQuote": false, 64 | "tabWidth": 4, 65 | "trailingComma": "none" 66 | }, 67 | "dependencies": { 68 | "@babel/parser": "^7.21.4", 69 | "esquery": "^1.5.0", 70 | "globby": "^13.2.2", 71 | "markdown-table": "^3.0.3", 72 | "meow": "^11.0.0" 73 | }, 74 | "devDependencies": { 75 | "@types/esquery": "^1.0.1", 76 | "@types/express": "^4.17.17", 77 | "@types/mocha": "^10.0.1", 78 | "@types/node": "^18.15.11", 79 | "express": "^4.18.2", 80 | "lint-staged": "^13.2.1", 81 | "mocha": "^10.2.0", 82 | "prettier": "^2.8.7", 83 | "rimraf": "^5.0.0", 84 | "ts-node": "^10.9.1", 85 | "typescript": "^5.0.4" 86 | }, 87 | "packageManager": "yarn@1.22.19" 88 | } 89 | -------------------------------------------------------------------------------- /src/cli.ts: -------------------------------------------------------------------------------- 1 | import meow from "meow"; 2 | import { analyzeDependencies, formatMarkdown } from "./index.js"; 3 | import { globby } from "globby"; 4 | 5 | const defaultExcludes = [ 6 | "!**/node_modules/**", 7 | "!**/dist/**", 8 | "!**/build/**", 9 | "!**/coverage/**", 10 | "!**/test/**", 11 | "!**/__tests__/**" 12 | ]; 13 | export const cli = meow( 14 | ` 15 | Usage 16 | $ express-router-dependency-graph [input] 17 | 18 | Options 19 | --cwd [Path:String] current working directory. Default: process.cwd() 20 | --rootBaseUrl [Path:String] if pass it, replace rootDir with rootDirBaseURL in output. 21 | --format ["json" | "markdown"] output format. Default: markdown 22 | 23 | Examples 24 | # analyze all ts files in src directory 25 | $ express-router-dependency-graph "src/**/*.ts" 26 | # analyze all ts files in src directory and output json 27 | $ express-router-dependency-graph "src/**/*.ts" --format=json 28 | # analyze all js and ts files in src directory 29 | $ express-router-dependency-graph "src/**/*.ts" "src/**/*.js" 30 | # change base url of output 31 | $ express-router-dependency-graph "src/**/*.ts" --rootBaseUrl="https://github.com/owner/repo/tree/master/src" 32 | # include node_modules 33 | # ${JSON.stringify(defaultExcludes)} is excluded by default 34 | $ express-router-dependency-graph "src/**/*.ts" --no-default-excludes 35 | `, 36 | { 37 | flags: { 38 | cwd: { 39 | type: "string", 40 | isRequired: true, 41 | default: process.cwd() 42 | }, 43 | rootBaseUrl: { 44 | type: "string", 45 | default: "" 46 | }, 47 | defaultExcludes: { 48 | type: "boolean", 49 | default: true 50 | }, 51 | excludes: { 52 | type: "string", 53 | isMultiple: true, 54 | default: defaultExcludes 55 | }, 56 | format: { 57 | type: "string", 58 | default: "markdown" 59 | } 60 | }, 61 | importMeta: import.meta, 62 | autoHelp: true, 63 | autoVersion: true 64 | } 65 | ); 66 | 67 | export const run = async ( 68 | input = cli.input, 69 | flags = cli.flags 70 | ): Promise<{ exitStatus: number; stdout: string | null; stderr: Error | null }> => { 71 | const filePaths = await globby(flags.defaultExcludes ? input.concat(flags.excludes) : input, { 72 | cwd: flags.cwd 73 | }); 74 | const results = await analyzeDependencies({ 75 | cwd: flags.cwd, 76 | filePaths 77 | }); 78 | if (flags.format === "json") { 79 | return { 80 | stdout: JSON.stringify(results), 81 | stderr: null, 82 | exitStatus: 0 83 | }; 84 | } else if (flags.format === "markdown") { 85 | return { 86 | stdout: formatMarkdown({ 87 | cwd: flags.cwd, 88 | rootBaseUrl: flags.rootBaseUrl, 89 | results 90 | }), 91 | stderr: null, 92 | exitStatus: 0 93 | }; 94 | } 95 | throw new Error(`Unknown format: ${flags.format}`); 96 | }; 97 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { parse } from "@babel/parser"; 2 | import path from "node:path"; 3 | import fs from "node:fs/promises"; 4 | import query from "esquery"; 5 | import { markdownTable } from "markdown-table"; 6 | 7 | export type FindRoutingResult = { 8 | method: "get" | "post" | "delete" | "put" | "use"; 9 | path: string; 10 | middlewares: string[]; 11 | range: [number, number]; 12 | loc: { 13 | start: { line: number; column: number }; 14 | end: { line: number; column: number }; 15 | }; 16 | }; 17 | const findRouting = async ({ AST, fileContent }: { AST: any; fileContent: string }) => { 18 | try { 19 | const search = (method: "get" | "post" | "delete" | "put" | "use", AST: any) => { 20 | const selector = `CallExpression:has(MemberExpression > Identifier[name="${method}"])`; 21 | const results = query(AST, selector); 22 | // router.{get,post,delete,put,use} 23 | return results.flatMap((node: any) => { 24 | // TODO: improve query to avoid this check 25 | // res.set("X-Content-Type-Options", req.get("test"))); 26 | if (node.callee.property.name !== method) { 27 | return []; 28 | } 29 | // single argument should be ignored 30 | // req.get("host"); it is not routing 31 | if (node.arguments.length === 1) { 32 | return []; 33 | } 34 | const pathValue = 35 | node.arguments[0] !== undefined && 36 | node.arguments[0].type === "StringLiteral" && 37 | node.arguments[0].value; 38 | if (!pathValue) { 39 | return []; // skip: it will only includes middleware 40 | } 41 | const middlewareArguments = 42 | method === "use" 43 | ? // @ts-ignore 44 | node.arguments?.slice(1) ?? [] 45 | : // @ts-ignore 46 | node.arguments?.slice(1, node.arguments.length - 1) ?? []; 47 | const middlewares = middlewareArguments.map((arg: { type: string; start: number; end: number }) => { 48 | // app.use(() => {}); 49 | if (arg.type === "ArrowFunctionExpression") { 50 | return "Anonymous Function"; 51 | } 52 | // app.use(function () {}); 53 | if (arg.type === "FunctionExpression") { 54 | // @ts-ignore 55 | return arg?.id?.name ?? "Anonymous Function"; 56 | } 57 | return fileContent.slice(arg.start, arg.end); 58 | }); 59 | return [ 60 | { 61 | method, 62 | path: pathValue, 63 | middlewares, 64 | // @ts-ignore 65 | range: [node.start, node.end] as [number, number], 66 | // @ts-ignore 67 | loc: node.loc as { 68 | start: { line: number; column: number }; 69 | end: { line: number; column: number }; 70 | } 71 | } 72 | ]; 73 | }); 74 | }; 75 | const methods = ["get", "post", "delete", "put", "use"] as const; 76 | return methods.flatMap((method) => { 77 | return search(method, AST); 78 | }); 79 | } catch { 80 | return []; 81 | } 82 | }; 83 | const toAbsolute = (cwd: string, f: string) => { 84 | return path.resolve(cwd, f); 85 | }; 86 | 87 | const hasImportExpress = (AST: any) => { 88 | // import express from "express"; 89 | if (query(AST, "ImportDeclaration[source.value='express']").length > 0) { 90 | return true; 91 | } 92 | // const express = require("express"); 93 | if (query(AST, "CallExpression[callee.name='require'][arguments.0.value='express']").length > 0) { 94 | return true; 95 | } 96 | // const express = await import("express"); 97 | if (query(AST, "ImportExpression[source.value='express']").length > 0) { 98 | return true; 99 | } 100 | return false; 101 | }; 102 | 103 | interface AnalyzeDependencyParams { 104 | filePath: string; 105 | } 106 | 107 | export async function analyzeDependency({ filePath }: AnalyzeDependencyParams) { 108 | const fileContent = await fs.readFile(filePath, "utf-8"); 109 | try { 110 | const AST = parse(fileContent, { 111 | sourceType: "module", 112 | plugins: ["jsx", "typescript"] 113 | }); 114 | if (!hasImportExpress(AST)) { 115 | return []; 116 | } 117 | return findRouting({ AST, fileContent }); 118 | } catch (e) { 119 | console.error("Error while analyzing", filePath); 120 | console.error(e); 121 | return []; 122 | } 123 | } 124 | 125 | export type AnalyzeDependenciesResult = { 126 | filePath: string; 127 | routers: FindRoutingResult[]; 128 | }; 129 | 130 | export async function analyzeDependencies({ 131 | filePaths, 132 | cwd 133 | }: { 134 | filePaths: string[]; 135 | cwd: string; 136 | }): Promise { 137 | return Promise.all( 138 | filePaths.map(async (filePath) => { 139 | const absoluteFilePath = toAbsolute(cwd, filePath); 140 | return { 141 | filePath: absoluteFilePath, 142 | routers: await analyzeDependency({ filePath: absoluteFilePath }) 143 | }; 144 | }) 145 | ); 146 | } 147 | 148 | export const formatMarkdown = ({ 149 | cwd, 150 | results, 151 | rootBaseUrl 152 | }: { 153 | cwd: string; 154 | results: AnalyzeDependenciesResult[]; 155 | rootBaseUrl: string; 156 | }) => { 157 | const toRelative = (f: string) => { 158 | return path.relative(cwd, f); 159 | }; 160 | const table = [["File", "Method", "Routing", "Middlewares", "FilePath"]]; 161 | for (const result of results) { 162 | if (result.routers.length === 0) { 163 | continue; 164 | } 165 | table.push([`${rootBaseUrl}${toRelative(result.filePath)}`]); 166 | result.routers.forEach((router) => { 167 | table.push([ 168 | "", 169 | router.method, 170 | router.path, 171 | router.middlewares.join(", ").split(/\r?\n/g).join(" "), 172 | `${rootBaseUrl}${toRelative(result.filePath)}#L${router.loc.start.line}-L${router.loc.end.line}` 173 | ]); 174 | }); 175 | } 176 | return markdownTable(table); 177 | }; 178 | -------------------------------------------------------------------------------- /test/index.test.ts: -------------------------------------------------------------------------------- 1 | import path from "node:path"; 2 | import assert from "node:assert"; 3 | import { analyzeDependencies, formatMarkdown } from "../src/index.js"; 4 | import { globby } from "globby"; 5 | import fs from "node:fs"; 6 | 7 | const __dirname = path.dirname(new URL(import.meta.url).pathname); 8 | const pathReplacer = (dirPath: string) => { 9 | return function replacer(key: string, value: any) { 10 | if (key === "filePath") { 11 | return value.replace(dirPath, ""); 12 | } 13 | return value; 14 | }; 15 | }; 16 | const normalize = (o: object | string, rootDir: string) => { 17 | return JSON.parse(JSON.stringify(o, pathReplacer(rootDir))); 18 | }; 19 | const fixturesDir = path.join(__dirname, "snapshots"); 20 | describe("Snapshot testing", () => { 21 | fs.readdirSync(fixturesDir).map((caseName) => { 22 | const normalizedTestName = caseName.replace(/-/g, " "); 23 | it(`Test ${normalizedTestName}`, async function () { 24 | const fixtureDir = path.join(fixturesDir, caseName); 25 | const jsonResults = await analyzeDependencies({ 26 | filePaths: await globby(["**/*.{js,ts}"], { cwd: fixtureDir }), 27 | cwd: fixtureDir 28 | }); 29 | const mdResults = formatMarkdown({ 30 | results: jsonResults, 31 | cwd: fixtureDir, 32 | rootBaseUrl: "" 33 | }); 34 | const expectedMdFilePath = path.join(fixtureDir, "output.md"); 35 | const expectedJsonFilePath = path.join(fixtureDir, "output.json"); 36 | // Usage: update snapshots 37 | // UPDATE_SNAPSHOT=1 npm test 38 | if (process.env.UPDATE_SNAPSHOT) { 39 | fs.writeFileSync(expectedMdFilePath, mdResults, "utf-8"); 40 | fs.writeFileSync( 41 | expectedJsonFilePath, 42 | JSON.stringify(normalize(jsonResults, fixtureDir), null, 4), 43 | "utf-8" 44 | ); 45 | this.skip(); 46 | return; 47 | } 48 | // compare input and output 49 | assert.strictEqual(mdResults, fs.readFileSync(expectedMdFilePath, "utf-8")); 50 | assert.deepStrictEqual( 51 | normalize(jsonResults, fixtureDir), 52 | normalize(JSON.parse(fs.readFileSync(expectedJsonFilePath, "utf-8")), fixtureDir) 53 | ); 54 | }); 55 | }); 56 | }); 57 | -------------------------------------------------------------------------------- /test/snapshots/app.use-function/app.ts: -------------------------------------------------------------------------------- 1 | import { Router } from "express"; 2 | const app = Router(); 3 | app.post("/getEvents", async (req, res, next) => {}); 4 | 5 | app.use("/useEvents", async (req, res, next) => { 6 | // use anonymous function 7 | }); 8 | 9 | export = app; 10 | -------------------------------------------------------------------------------- /test/snapshots/app.use-function/output.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "filePath": "/app.ts", 4 | "routers": [ 5 | { 6 | "method": "post", 7 | "path": "/getEvents", 8 | "middlewares": [], 9 | "range": [ 10 | 56, 11 | 108 12 | ], 13 | "loc": { 14 | "start": { 15 | "line": 3, 16 | "column": 0, 17 | "index": 56 18 | }, 19 | "end": { 20 | "line": 3, 21 | "column": 52, 22 | "index": 108 23 | } 24 | } 25 | }, 26 | { 27 | "method": "use", 28 | "path": "/useEvents", 29 | "middlewares": [ 30 | "Anonymous Function" 31 | ], 32 | "range": [ 33 | 111, 34 | 193 35 | ], 36 | "loc": { 37 | "start": { 38 | "line": 5, 39 | "column": 0, 40 | "index": 111 41 | }, 42 | "end": { 43 | "line": 7, 44 | "column": 2, 45 | "index": 193 46 | } 47 | } 48 | } 49 | ] 50 | } 51 | ] -------------------------------------------------------------------------------- /test/snapshots/app.use-function/output.md: -------------------------------------------------------------------------------- 1 | | File | Method | Routing | Middlewares | FilePath | 2 | | ------ | ------ | ---------- | ------------------ | ------------ | 3 | | app.ts | | | | | 4 | | | post | /getEvents | | app.ts#L3-L3 | 5 | | | use | /useEvents | Anonymous Function | app.ts#L5-L7 | -------------------------------------------------------------------------------- /test/snapshots/app/output.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "filePath": "/src/game.ts", 4 | "routers": [ 5 | { 6 | "method": "get", 7 | "path": "/getGameById", 8 | "middlewares": [ 9 | "requireRead" 10 | ], 11 | "range": [ 12 | 288, 13 | 337 14 | ], 15 | "loc": { 16 | "start": { 17 | "line": 11, 18 | "column": 0, 19 | "index": 288 20 | }, 21 | "end": { 22 | "line": 11, 23 | "column": 49, 24 | "index": 337 25 | } 26 | } 27 | }, 28 | { 29 | "method": "get", 30 | "path": "/getGameList", 31 | "middlewares": [ 32 | "requireRead" 33 | ], 34 | "range": [ 35 | 339, 36 | 388 37 | ], 38 | "loc": { 39 | "start": { 40 | "line": 12, 41 | "column": 0, 42 | "index": 339 43 | }, 44 | "end": { 45 | "line": 12, 46 | "column": 49, 47 | "index": 388 48 | } 49 | } 50 | }, 51 | { 52 | "method": "post", 53 | "path": "/updateGameById", 54 | "middlewares": [ 55 | "requireWrite" 56 | ], 57 | "range": [ 58 | 390, 59 | 444 60 | ], 61 | "loc": { 62 | "start": { 63 | "line": 13, 64 | "column": 0, 65 | "index": 390 66 | }, 67 | "end": { 68 | "line": 13, 69 | "column": 54, 70 | "index": 444 71 | } 72 | } 73 | }, 74 | { 75 | "method": "delete", 76 | "path": "/deleteGameById", 77 | "middlewares": [ 78 | "requireWrite" 79 | ], 80 | "range": [ 81 | 446, 82 | 502 83 | ], 84 | "loc": { 85 | "start": { 86 | "line": 14, 87 | "column": 0, 88 | "index": 446 89 | }, 90 | "end": { 91 | "line": 14, 92 | "column": 56, 93 | "index": 502 94 | } 95 | } 96 | } 97 | ] 98 | }, 99 | { 100 | "filePath": "/src/index.ts", 101 | "routers": [ 102 | { 103 | "method": "use", 104 | "path": "/user", 105 | "middlewares": [ 106 | "user" 107 | ], 108 | "range": [ 109 | 140, 110 | 162 111 | ], 112 | "loc": { 113 | "start": { 114 | "line": 8, 115 | "column": 0, 116 | "index": 140 117 | }, 118 | "end": { 119 | "line": 8, 120 | "column": 22, 121 | "index": 162 122 | } 123 | } 124 | }, 125 | { 126 | "method": "use", 127 | "path": "/game", 128 | "middlewares": [ 129 | "game" 130 | ], 131 | "range": [ 132 | 164, 133 | 186 134 | ], 135 | "loc": { 136 | "start": { 137 | "line": 9, 138 | "column": 0, 139 | "index": 164 140 | }, 141 | "end": { 142 | "line": 9, 143 | "column": 22, 144 | "index": 186 145 | } 146 | } 147 | } 148 | ] 149 | }, 150 | { 151 | "filePath": "/src/user.ts", 152 | "routers": [ 153 | { 154 | "method": "get", 155 | "path": "/getUserById", 156 | "middlewares": [ 157 | "requireRead" 158 | ], 159 | "range": [ 160 | 287, 161 | 336 162 | ], 163 | "loc": { 164 | "start": { 165 | "line": 10, 166 | "column": 0, 167 | "index": 287 168 | }, 169 | "end": { 170 | "line": 10, 171 | "column": 49, 172 | "index": 336 173 | } 174 | } 175 | }, 176 | { 177 | "method": "get", 178 | "path": "/getUserList", 179 | "middlewares": [ 180 | "requireRead" 181 | ], 182 | "range": [ 183 | 338, 184 | 387 185 | ], 186 | "loc": { 187 | "start": { 188 | "line": 11, 189 | "column": 0, 190 | "index": 338 191 | }, 192 | "end": { 193 | "line": 11, 194 | "column": 49, 195 | "index": 387 196 | } 197 | } 198 | }, 199 | { 200 | "method": "post", 201 | "path": "/updateUserById", 202 | "middlewares": [ 203 | "requireWrite" 204 | ], 205 | "range": [ 206 | 389, 207 | 443 208 | ], 209 | "loc": { 210 | "start": { 211 | "line": 12, 212 | "column": 0, 213 | "index": 389 214 | }, 215 | "end": { 216 | "line": 12, 217 | "column": 54, 218 | "index": 443 219 | } 220 | } 221 | }, 222 | { 223 | "method": "delete", 224 | "path": "/deleteUserById", 225 | "middlewares": [ 226 | "requireWrite" 227 | ], 228 | "range": [ 229 | 445, 230 | 501 231 | ], 232 | "loc": { 233 | "start": { 234 | "line": 13, 235 | "column": 0, 236 | "index": 445 237 | }, 238 | "end": { 239 | "line": 13, 240 | "column": 56, 241 | "index": 501 242 | } 243 | } 244 | } 245 | ] 246 | } 247 | ] -------------------------------------------------------------------------------- /test/snapshots/app/output.md: -------------------------------------------------------------------------------- 1 | | File | Method | Routing | Middlewares | FilePath | 2 | | ------------ | ------ | --------------- | ------------ | ------------------- | 3 | | src/game.ts | | | | | 4 | | | get | /getGameById | requireRead | src/game.ts#L11-L11 | 5 | | | get | /getGameList | requireRead | src/game.ts#L12-L12 | 6 | | | post | /updateGameById | requireWrite | src/game.ts#L13-L13 | 7 | | | delete | /deleteGameById | requireWrite | src/game.ts#L14-L14 | 8 | | src/index.ts | | | | | 9 | | | use | /user | user | src/index.ts#L8-L8 | 10 | | | use | /game | game | src/index.ts#L9-L9 | 11 | | src/user.ts | | | | | 12 | | | get | /getUserById | requireRead | src/user.ts#L10-L10 | 13 | | | get | /getUserList | requireRead | src/user.ts#L11-L11 | 14 | | | post | /updateUserById | requireWrite | src/user.ts#L12-L12 | 15 | | | delete | /deleteUserById | requireWrite | src/user.ts#L13-L13 | -------------------------------------------------------------------------------- /test/snapshots/app/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "name": "app", 4 | "devDependencies": { 5 | "@types/express": "^4.17.11", 6 | "express": "^4.17.1" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /test/snapshots/app/src/game.ts: -------------------------------------------------------------------------------- 1 | import express, { Request, Response, NextFunction } from "express"; 2 | 3 | const router = express.Router(); 4 | const requireRead = (_req: Request, _res: Response, next: NextFunction) => { 5 | next(); 6 | }; 7 | const requireWrite = (_req: Request, _res: Response, next: NextFunction) => { 8 | next(); 9 | }; 10 | 11 | router.get("/getGameById", requireRead, () => {}); 12 | router.get("/getGameList", requireRead, () => {}); 13 | router.post("/updateGameById", requireWrite, () => {}); 14 | router.delete("/deleteGameById", requireWrite, () => {}); 15 | export default router; 16 | -------------------------------------------------------------------------------- /test/snapshots/app/src/index.ts: -------------------------------------------------------------------------------- 1 | import express from "express"; 2 | import user from "./user"; 3 | import game from "./game"; 4 | 5 | const app = express(); 6 | const port = 3000; 7 | // handlers 8 | app.use("/user", user); 9 | app.use("/game", game); 10 | 11 | app.listen(port, () => { 12 | console.log(`http://localhost:${port}`); 13 | }); 14 | -------------------------------------------------------------------------------- /test/snapshots/app/src/user.ts: -------------------------------------------------------------------------------- 1 | import express, { Request, Response, NextFunction } from "express"; 2 | const router = express.Router(); 3 | const requireRead = (_req: Request, _res: Response, next: NextFunction) => { 4 | next(); 5 | }; 6 | const requireWrite = (_req: Request, _res: Response, next: NextFunction) => { 7 | next(); 8 | }; 9 | 10 | router.get("/getUserById", requireRead, () => {}); 11 | router.get("/getUserList", requireRead, () => {}); 12 | router.post("/updateUserById", requireWrite, () => {}); 13 | router.delete("/deleteUserById", requireWrite, () => {}); 14 | export default router; 15 | -------------------------------------------------------------------------------- /test/snapshots/req.get-but-it-is-not-router/app.ts: -------------------------------------------------------------------------------- 1 | import { Router } from "express"; 2 | 3 | const app = Router(); 4 | 5 | app.get("/get", (req) => { 6 | const host = req.get("host"); // it is not router 7 | }); 8 | export default app; 9 | -------------------------------------------------------------------------------- /test/snapshots/req.get-but-it-is-not-router/output.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "filePath": "/app.ts", 4 | "routers": [ 5 | { 6 | "method": "get", 7 | "path": "/get", 8 | "middlewares": [], 9 | "range": [ 10 | 58, 11 | 141 12 | ], 13 | "loc": { 14 | "start": { 15 | "line": 5, 16 | "column": 0, 17 | "index": 58 18 | }, 19 | "end": { 20 | "line": 7, 21 | "column": 2, 22 | "index": 141 23 | } 24 | } 25 | } 26 | ] 27 | } 28 | ] -------------------------------------------------------------------------------- /test/snapshots/req.get-but-it-is-not-router/output.md: -------------------------------------------------------------------------------- 1 | | File | Method | Routing | Middlewares | FilePath | 2 | | ------ | ------ | ------- | ----------- | ------------ | 3 | | app.ts | | | | | 4 | | | get | /get | | app.ts#L5-L7 | -------------------------------------------------------------------------------- /test/snapshots/res.set-get-but-it-is-not-router/app.ts: -------------------------------------------------------------------------------- 1 | import { Router } from "express"; 2 | 3 | const app = Router(); 4 | 5 | app.get("/get", (req, res) => { 6 | res.set("key", req.get("host")); 7 | }); 8 | export default app; 9 | -------------------------------------------------------------------------------- /test/snapshots/res.set-get-but-it-is-not-router/output.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "filePath": "/app.ts", 4 | "routers": [ 5 | { 6 | "method": "get", 7 | "path": "/get", 8 | "middlewares": [], 9 | "range": [ 10 | 58, 11 | 129 12 | ], 13 | "loc": { 14 | "start": { 15 | "line": 5, 16 | "column": 0, 17 | "index": 58 18 | }, 19 | "end": { 20 | "line": 7, 21 | "column": 2, 22 | "index": 129 23 | } 24 | } 25 | } 26 | ] 27 | } 28 | ] -------------------------------------------------------------------------------- /test/snapshots/res.set-get-but-it-is-not-router/output.md: -------------------------------------------------------------------------------- 1 | | File | Method | Routing | Middlewares | FilePath | 2 | | ------ | ------ | ------- | ----------- | ------------ | 3 | | app.ts | | | | | 4 | | | get | /get | | app.ts#L5-L7 | -------------------------------------------------------------------------------- /test/snapshots/skip-wrong-path/output.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "filePath": "/src/game.ts", 4 | "routers": [ 5 | { 6 | "method": "get", 7 | "path": "/getGameById", 8 | "middlewares": [ 9 | "requireRead" 10 | ], 11 | "range": [ 12 | 288, 13 | 337 14 | ], 15 | "loc": { 16 | "start": { 17 | "line": 11, 18 | "column": 0, 19 | "index": 288 20 | }, 21 | "end": { 22 | "line": 11, 23 | "column": 49, 24 | "index": 337 25 | } 26 | } 27 | }, 28 | { 29 | "method": "get", 30 | "path": "/getGameList", 31 | "middlewares": [ 32 | "requireRead" 33 | ], 34 | "range": [ 35 | 339, 36 | 388 37 | ], 38 | "loc": { 39 | "start": { 40 | "line": 12, 41 | "column": 0, 42 | "index": 339 43 | }, 44 | "end": { 45 | "line": 12, 46 | "column": 49, 47 | "index": 388 48 | } 49 | } 50 | }, 51 | { 52 | "method": "post", 53 | "path": "/updateGameById", 54 | "middlewares": [ 55 | "requireWrite" 56 | ], 57 | "range": [ 58 | 390, 59 | 444 60 | ], 61 | "loc": { 62 | "start": { 63 | "line": 13, 64 | "column": 0, 65 | "index": 390 66 | }, 67 | "end": { 68 | "line": 13, 69 | "column": 54, 70 | "index": 444 71 | } 72 | } 73 | }, 74 | { 75 | "method": "delete", 76 | "path": "/deleteGameById", 77 | "middlewares": [ 78 | "requireWrite" 79 | ], 80 | "range": [ 81 | 446, 82 | 502 83 | ], 84 | "loc": { 85 | "start": { 86 | "line": 14, 87 | "column": 0, 88 | "index": 446 89 | }, 90 | "end": { 91 | "line": 14, 92 | "column": 56, 93 | "index": 502 94 | } 95 | } 96 | } 97 | ] 98 | }, 99 | { 100 | "filePath": "/src/index.ts", 101 | "routers": [ 102 | { 103 | "method": "use", 104 | "path": "/game", 105 | "middlewares": [ 106 | "game" 107 | ], 108 | "range": [ 109 | 167, 110 | 189 111 | ], 112 | "loc": { 113 | "start": { 114 | "line": 7, 115 | "column": 0, 116 | "index": 167 117 | }, 118 | "end": { 119 | "line": 7, 120 | "column": 22, 121 | "index": 189 122 | } 123 | } 124 | } 125 | ] 126 | } 127 | ] -------------------------------------------------------------------------------- /test/snapshots/skip-wrong-path/output.md: -------------------------------------------------------------------------------- 1 | | File | Method | Routing | Middlewares | FilePath | 2 | | ------------ | ------ | --------------- | ------------ | ------------------- | 3 | | src/game.ts | | | | | 4 | | | get | /getGameById | requireRead | src/game.ts#L11-L11 | 5 | | | get | /getGameList | requireRead | src/game.ts#L12-L12 | 6 | | | post | /updateGameById | requireWrite | src/game.ts#L13-L13 | 7 | | | delete | /deleteGameById | requireWrite | src/game.ts#L14-L14 | 8 | | src/index.ts | | | | | 9 | | | use | /game | game | src/index.ts#L7-L7 | -------------------------------------------------------------------------------- /test/snapshots/skip-wrong-path/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "name": "app", 4 | "devDependencies": { 5 | "@types/express": "^4.17.11", 6 | "express": "^4.17.1" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /test/snapshots/skip-wrong-path/src/game.ts: -------------------------------------------------------------------------------- 1 | import express, { Request, Response, NextFunction } from "express"; 2 | 3 | const router = express.Router(); 4 | const requireRead = (_req: Request, _res: Response, next: NextFunction) => { 5 | next(); 6 | }; 7 | const requireWrite = (_req: Request, _res: Response, next: NextFunction) => { 8 | next(); 9 | }; 10 | 11 | router.get("/getGameById", requireRead, () => {}); 12 | router.get("/getGameList", requireRead, () => {}); 13 | router.post("/updateGameById", requireWrite, () => {}); 14 | router.delete("/deleteGameById", requireWrite, () => {}); 15 | export default router; 16 | -------------------------------------------------------------------------------- /test/snapshots/skip-wrong-path/src/index.ts: -------------------------------------------------------------------------------- 1 | import express from "express"; 2 | import game from "./game"; 3 | // @ts-ignore: IT IS NOT FOUND!! 4 | import WRONG_PATH from "./#/#/#"; 5 | const app = express(); 6 | const port = 3000; 7 | app.use("/game", game); 8 | 9 | app.listen(port, () => { 10 | console.log(`http://localhost:${port}`); 11 | }); 12 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Basic Options */ 4 | "module": "esnext", 5 | "moduleResolution": "NodeNext", 6 | "esModuleInterop": true, 7 | "newLine": "LF", 8 | "outDir": "./module/", 9 | "target": "ES2020", 10 | "sourceMap": true, 11 | "declaration": true, 12 | "declarationMap": true, 13 | "jsx": "preserve", 14 | "lib": [ 15 | "esnext", 16 | "dom" 17 | ], 18 | "strict": true, 19 | "skipLibCheck": true, 20 | "noUnusedLocals": true, 21 | "noUnusedParameters": true, 22 | "noImplicitReturns": true, 23 | "noFallthroughCasesInSwitch": true, 24 | }, 25 | "include": [ 26 | "src/**/*" 27 | ], 28 | "exclude": [ 29 | ".git", 30 | "node_modules" 31 | ], 32 | "ts-node": { 33 | "compilerOptions": { 34 | "noEmit": true 35 | }, 36 | "include": [ 37 | "./src/**/*", 38 | "./test/*" 39 | ] 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /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.22.5" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.5.tgz#234d98e1551960604f1246e6475891a570ad5658" 8 | integrity sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ== 9 | dependencies: 10 | "@babel/highlight" "^7.22.5" 11 | 12 | "@babel/helper-validator-identifier@^7.22.5": 13 | version "7.22.5" 14 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" 15 | integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ== 16 | 17 | "@babel/highlight@^7.22.5": 18 | version "7.22.5" 19 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.5.tgz#aa6c05c5407a67ebce408162b7ede789b4d22031" 20 | integrity sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw== 21 | dependencies: 22 | "@babel/helper-validator-identifier" "^7.22.5" 23 | chalk "^2.0.0" 24 | js-tokens "^4.0.0" 25 | 26 | "@babel/parser@^7.21.4": 27 | version "7.22.7" 28 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.7.tgz#df8cf085ce92ddbdbf668a7f186ce848c9036cae" 29 | integrity sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q== 30 | 31 | "@cspotcode/source-map-support@^0.8.0": 32 | version "0.8.1" 33 | resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" 34 | integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== 35 | dependencies: 36 | "@jridgewell/trace-mapping" "0.3.9" 37 | 38 | "@isaacs/cliui@^8.0.2": 39 | version "8.0.2" 40 | resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" 41 | integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== 42 | dependencies: 43 | string-width "^5.1.2" 44 | string-width-cjs "npm:string-width@^4.2.0" 45 | strip-ansi "^7.0.1" 46 | strip-ansi-cjs "npm:strip-ansi@^6.0.1" 47 | wrap-ansi "^8.1.0" 48 | wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" 49 | 50 | "@jridgewell/resolve-uri@^3.0.3": 51 | version "3.1.1" 52 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" 53 | integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== 54 | 55 | "@jridgewell/sourcemap-codec@^1.4.10": 56 | version "1.4.15" 57 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" 58 | integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== 59 | 60 | "@jridgewell/trace-mapping@0.3.9": 61 | version "0.3.9" 62 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" 63 | integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== 64 | dependencies: 65 | "@jridgewell/resolve-uri" "^3.0.3" 66 | "@jridgewell/sourcemap-codec" "^1.4.10" 67 | 68 | "@nodelib/fs.scandir@2.1.5": 69 | version "2.1.5" 70 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" 71 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== 72 | dependencies: 73 | "@nodelib/fs.stat" "2.0.5" 74 | run-parallel "^1.1.9" 75 | 76 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": 77 | version "2.0.5" 78 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" 79 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== 80 | 81 | "@nodelib/fs.walk@^1.2.3": 82 | version "1.2.8" 83 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" 84 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== 85 | dependencies: 86 | "@nodelib/fs.scandir" "2.1.5" 87 | fastq "^1.6.0" 88 | 89 | "@pkgjs/parseargs@^0.11.0": 90 | version "0.11.0" 91 | resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" 92 | integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== 93 | 94 | "@tsconfig/node10@^1.0.7": 95 | version "1.0.9" 96 | resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" 97 | integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== 98 | 99 | "@tsconfig/node12@^1.0.7": 100 | version "1.0.11" 101 | resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" 102 | integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== 103 | 104 | "@tsconfig/node14@^1.0.0": 105 | version "1.0.3" 106 | resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" 107 | integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== 108 | 109 | "@tsconfig/node16@^1.0.2": 110 | version "1.0.4" 111 | resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" 112 | integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== 113 | 114 | "@types/body-parser@*": 115 | version "1.19.2" 116 | resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" 117 | integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== 118 | dependencies: 119 | "@types/connect" "*" 120 | "@types/node" "*" 121 | 122 | "@types/connect@*": 123 | version "3.4.35" 124 | resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" 125 | integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== 126 | dependencies: 127 | "@types/node" "*" 128 | 129 | "@types/esquery@^1.0.1": 130 | version "1.5.0" 131 | resolved "https://registry.yarnpkg.com/@types/esquery/-/esquery-1.5.0.tgz#928ccc6e61786dcd7c0759c06b803589855dd75a" 132 | integrity sha512-MNQ5gCt3j1idWHlj/dEF+WPS1kl6Woe0Agzwy96JvrwDQdDadqeIBhY7mUca51CCUzxf7BsnXzcyKi6ENpEtmQ== 133 | dependencies: 134 | "@types/estree" "*" 135 | 136 | "@types/estree@*": 137 | version "1.0.1" 138 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" 139 | integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== 140 | 141 | "@types/express-serve-static-core@^4.17.33": 142 | version "4.17.35" 143 | resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz#c95dd4424f0d32e525d23812aa8ab8e4d3906c4f" 144 | integrity sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg== 145 | dependencies: 146 | "@types/node" "*" 147 | "@types/qs" "*" 148 | "@types/range-parser" "*" 149 | "@types/send" "*" 150 | 151 | "@types/express@^4.17.17": 152 | version "4.17.17" 153 | resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4" 154 | integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== 155 | dependencies: 156 | "@types/body-parser" "*" 157 | "@types/express-serve-static-core" "^4.17.33" 158 | "@types/qs" "*" 159 | "@types/serve-static" "*" 160 | 161 | "@types/http-errors@*": 162 | version "2.0.1" 163 | resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.1.tgz#20172f9578b225f6c7da63446f56d4ce108d5a65" 164 | integrity sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ== 165 | 166 | "@types/mime@*": 167 | version "3.0.1" 168 | resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" 169 | integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== 170 | 171 | "@types/mime@^1": 172 | version "1.3.2" 173 | resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" 174 | integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== 175 | 176 | "@types/minimist@^1.2.2": 177 | version "1.2.2" 178 | resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" 179 | integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== 180 | 181 | "@types/mocha@^10.0.1": 182 | version "10.0.1" 183 | resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.1.tgz#2f4f65bb08bc368ac39c96da7b2f09140b26851b" 184 | integrity sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q== 185 | 186 | "@types/node@*": 187 | version "20.4.2" 188 | resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.2.tgz#129cc9ae69f93824f92fac653eebfb4812ab4af9" 189 | integrity sha512-Dd0BYtWgnWJKwO1jkmTrzofjK2QXXcai0dmtzvIBhcA+RsG5h8R3xlyta0kGOZRNfL9GuRtb1knmPEhQrePCEw== 190 | 191 | "@types/node@^18.15.11": 192 | version "18.16.19" 193 | resolved "https://registry.yarnpkg.com/@types/node/-/node-18.16.19.tgz#cb03fca8910fdeb7595b755126a8a78144714eea" 194 | integrity sha512-IXl7o+R9iti9eBW4Wg2hx1xQDig183jj7YLn8F7udNceyfkbn1ZxmzZXuak20gR40D7pIkIY1kYGx5VIGbaHKA== 195 | 196 | "@types/normalize-package-data@^2.4.1": 197 | version "2.4.1" 198 | resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" 199 | integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== 200 | 201 | "@types/qs@*": 202 | version "6.9.7" 203 | resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" 204 | integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== 205 | 206 | "@types/range-parser@*": 207 | version "1.2.4" 208 | resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" 209 | integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== 210 | 211 | "@types/send@*": 212 | version "0.17.1" 213 | resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.1.tgz#ed4932b8a2a805f1fe362a70f4e62d0ac994e301" 214 | integrity sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q== 215 | dependencies: 216 | "@types/mime" "^1" 217 | "@types/node" "*" 218 | 219 | "@types/serve-static@*": 220 | version "1.15.2" 221 | resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.2.tgz#3e5419ecd1e40e7405d34093f10befb43f63381a" 222 | integrity sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw== 223 | dependencies: 224 | "@types/http-errors" "*" 225 | "@types/mime" "*" 226 | "@types/node" "*" 227 | 228 | accepts@~1.3.8: 229 | version "1.3.8" 230 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" 231 | integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== 232 | dependencies: 233 | mime-types "~2.1.34" 234 | negotiator "0.6.3" 235 | 236 | acorn-walk@^8.1.1: 237 | version "8.2.0" 238 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" 239 | integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== 240 | 241 | acorn@^8.4.1: 242 | version "8.10.0" 243 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" 244 | integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== 245 | 246 | aggregate-error@^3.0.0: 247 | version "3.1.0" 248 | resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" 249 | integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== 250 | dependencies: 251 | clean-stack "^2.0.0" 252 | indent-string "^4.0.0" 253 | 254 | ansi-colors@4.1.1: 255 | version "4.1.1" 256 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" 257 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== 258 | 259 | ansi-escapes@^4.3.0: 260 | version "4.3.2" 261 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" 262 | integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== 263 | dependencies: 264 | type-fest "^0.21.3" 265 | 266 | ansi-regex@^5.0.1: 267 | version "5.0.1" 268 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 269 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 270 | 271 | ansi-regex@^6.0.1: 272 | version "6.0.1" 273 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" 274 | integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== 275 | 276 | ansi-styles@^3.2.1: 277 | version "3.2.1" 278 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 279 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 280 | dependencies: 281 | color-convert "^1.9.0" 282 | 283 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 284 | version "4.3.0" 285 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 286 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 287 | dependencies: 288 | color-convert "^2.0.1" 289 | 290 | ansi-styles@^6.0.0, ansi-styles@^6.1.0: 291 | version "6.2.1" 292 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" 293 | integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== 294 | 295 | anymatch@~3.1.2: 296 | version "3.1.3" 297 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" 298 | integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== 299 | dependencies: 300 | normalize-path "^3.0.0" 301 | picomatch "^2.0.4" 302 | 303 | arg@^4.1.0: 304 | version "4.1.3" 305 | resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" 306 | integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== 307 | 308 | argparse@^2.0.1: 309 | version "2.0.1" 310 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 311 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 312 | 313 | array-flatten@1.1.1: 314 | version "1.1.1" 315 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 316 | integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== 317 | 318 | arrify@^1.0.1: 319 | version "1.0.1" 320 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" 321 | integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== 322 | 323 | astral-regex@^2.0.0: 324 | version "2.0.0" 325 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" 326 | integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== 327 | 328 | balanced-match@^1.0.0: 329 | version "1.0.2" 330 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 331 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 332 | 333 | binary-extensions@^2.0.0: 334 | version "2.2.0" 335 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 336 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 337 | 338 | body-parser@1.20.1: 339 | version "1.20.1" 340 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" 341 | integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== 342 | dependencies: 343 | bytes "3.1.2" 344 | content-type "~1.0.4" 345 | debug "2.6.9" 346 | depd "2.0.0" 347 | destroy "1.2.0" 348 | http-errors "2.0.0" 349 | iconv-lite "0.4.24" 350 | on-finished "2.4.1" 351 | qs "6.11.0" 352 | raw-body "2.5.1" 353 | type-is "~1.6.18" 354 | unpipe "1.0.0" 355 | 356 | brace-expansion@^1.1.7: 357 | version "1.1.11" 358 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 359 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 360 | dependencies: 361 | balanced-match "^1.0.0" 362 | concat-map "0.0.1" 363 | 364 | brace-expansion@^2.0.1: 365 | version "2.0.1" 366 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" 367 | integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== 368 | dependencies: 369 | balanced-match "^1.0.0" 370 | 371 | braces@^3.0.2, braces@~3.0.2: 372 | version "3.0.2" 373 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 374 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 375 | dependencies: 376 | fill-range "^7.0.1" 377 | 378 | browser-stdout@1.3.1: 379 | version "1.3.1" 380 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" 381 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== 382 | 383 | bytes@3.1.2: 384 | version "3.1.2" 385 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" 386 | integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== 387 | 388 | call-bind@^1.0.0: 389 | version "1.0.2" 390 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 391 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== 392 | dependencies: 393 | function-bind "^1.1.1" 394 | get-intrinsic "^1.0.2" 395 | 396 | camelcase-keys@^8.0.2: 397 | version "8.0.2" 398 | resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-8.0.2.tgz#a7140ba7c797aea32161d4ce5cdbda11d09eb414" 399 | integrity sha512-qMKdlOfsjlezMqxkUGGMaWWs17i2HoL15tM+wtx8ld4nLrUwU58TFdvyGOz/piNP842KeO8yXvggVQSdQ828NA== 400 | dependencies: 401 | camelcase "^7.0.0" 402 | map-obj "^4.3.0" 403 | quick-lru "^6.1.1" 404 | type-fest "^2.13.0" 405 | 406 | camelcase@^6.0.0: 407 | version "6.3.0" 408 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" 409 | integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== 410 | 411 | camelcase@^7.0.0: 412 | version "7.0.1" 413 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-7.0.1.tgz#f02e50af9fd7782bc8b88a3558c32fd3a388f048" 414 | integrity sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw== 415 | 416 | chalk@5.2.0: 417 | version "5.2.0" 418 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.2.0.tgz#249623b7d66869c673699fb66d65723e54dfcfb3" 419 | integrity sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA== 420 | 421 | chalk@^2.0.0: 422 | version "2.4.2" 423 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 424 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 425 | dependencies: 426 | ansi-styles "^3.2.1" 427 | escape-string-regexp "^1.0.5" 428 | supports-color "^5.3.0" 429 | 430 | chalk@^4.1.0: 431 | version "4.1.2" 432 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 433 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 434 | dependencies: 435 | ansi-styles "^4.1.0" 436 | supports-color "^7.1.0" 437 | 438 | chokidar@3.5.3: 439 | version "3.5.3" 440 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" 441 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== 442 | dependencies: 443 | anymatch "~3.1.2" 444 | braces "~3.0.2" 445 | glob-parent "~5.1.2" 446 | is-binary-path "~2.1.0" 447 | is-glob "~4.0.1" 448 | normalize-path "~3.0.0" 449 | readdirp "~3.6.0" 450 | optionalDependencies: 451 | fsevents "~2.3.2" 452 | 453 | clean-stack@^2.0.0: 454 | version "2.2.0" 455 | resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" 456 | integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== 457 | 458 | cli-cursor@^3.1.0: 459 | version "3.1.0" 460 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" 461 | integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== 462 | dependencies: 463 | restore-cursor "^3.1.0" 464 | 465 | cli-truncate@^2.1.0: 466 | version "2.1.0" 467 | resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" 468 | integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== 469 | dependencies: 470 | slice-ansi "^3.0.0" 471 | string-width "^4.2.0" 472 | 473 | cli-truncate@^3.1.0: 474 | version "3.1.0" 475 | resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-3.1.0.tgz#3f23ab12535e3d73e839bb43e73c9de487db1389" 476 | integrity sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA== 477 | dependencies: 478 | slice-ansi "^5.0.0" 479 | string-width "^5.0.0" 480 | 481 | cliui@^7.0.2: 482 | version "7.0.4" 483 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" 484 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== 485 | dependencies: 486 | string-width "^4.2.0" 487 | strip-ansi "^6.0.0" 488 | wrap-ansi "^7.0.0" 489 | 490 | color-convert@^1.9.0: 491 | version "1.9.3" 492 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 493 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 494 | dependencies: 495 | color-name "1.1.3" 496 | 497 | color-convert@^2.0.1: 498 | version "2.0.1" 499 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 500 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 501 | dependencies: 502 | color-name "~1.1.4" 503 | 504 | color-name@1.1.3: 505 | version "1.1.3" 506 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 507 | integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== 508 | 509 | color-name@~1.1.4: 510 | version "1.1.4" 511 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 512 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 513 | 514 | colorette@^2.0.19: 515 | version "2.0.20" 516 | resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" 517 | integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== 518 | 519 | commander@^10.0.0: 520 | version "10.0.1" 521 | resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" 522 | integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== 523 | 524 | concat-map@0.0.1: 525 | version "0.0.1" 526 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 527 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 528 | 529 | content-disposition@0.5.4: 530 | version "0.5.4" 531 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" 532 | integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== 533 | dependencies: 534 | safe-buffer "5.2.1" 535 | 536 | content-type@~1.0.4: 537 | version "1.0.5" 538 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" 539 | integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== 540 | 541 | cookie-signature@1.0.6: 542 | version "1.0.6" 543 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 544 | integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== 545 | 546 | cookie@0.5.0: 547 | version "0.5.0" 548 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" 549 | integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== 550 | 551 | create-require@^1.1.0: 552 | version "1.1.1" 553 | resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" 554 | integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== 555 | 556 | cross-spawn@^7.0.0, cross-spawn@^7.0.3: 557 | version "7.0.3" 558 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 559 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 560 | dependencies: 561 | path-key "^3.1.0" 562 | shebang-command "^2.0.0" 563 | which "^2.0.1" 564 | 565 | debug@2.6.9: 566 | version "2.6.9" 567 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 568 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 569 | dependencies: 570 | ms "2.0.0" 571 | 572 | debug@4.3.4, debug@^4.3.4: 573 | version "4.3.4" 574 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 575 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 576 | dependencies: 577 | ms "2.1.2" 578 | 579 | decamelize-keys@^1.1.0: 580 | version "1.1.1" 581 | resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8" 582 | integrity sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg== 583 | dependencies: 584 | decamelize "^1.1.0" 585 | map-obj "^1.0.0" 586 | 587 | decamelize@^1.1.0: 588 | version "1.2.0" 589 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 590 | integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== 591 | 592 | decamelize@^4.0.0: 593 | version "4.0.0" 594 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" 595 | integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== 596 | 597 | decamelize@^6.0.0: 598 | version "6.0.0" 599 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-6.0.0.tgz#8cad4d916fde5c41a264a43d0ecc56fe3d31749e" 600 | integrity sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA== 601 | 602 | depd@2.0.0: 603 | version "2.0.0" 604 | resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" 605 | integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== 606 | 607 | destroy@1.2.0: 608 | version "1.2.0" 609 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" 610 | integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== 611 | 612 | diff@5.0.0: 613 | version "5.0.0" 614 | resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" 615 | integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== 616 | 617 | diff@^4.0.1: 618 | version "4.0.2" 619 | resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" 620 | integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== 621 | 622 | dir-glob@^3.0.1: 623 | version "3.0.1" 624 | resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" 625 | integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== 626 | dependencies: 627 | path-type "^4.0.0" 628 | 629 | eastasianwidth@^0.2.0: 630 | version "0.2.0" 631 | resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" 632 | integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== 633 | 634 | ee-first@1.1.1: 635 | version "1.1.1" 636 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 637 | integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== 638 | 639 | emoji-regex@^8.0.0: 640 | version "8.0.0" 641 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 642 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 643 | 644 | emoji-regex@^9.2.2: 645 | version "9.2.2" 646 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" 647 | integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== 648 | 649 | encodeurl@~1.0.2: 650 | version "1.0.2" 651 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 652 | integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== 653 | 654 | error-ex@^1.3.1: 655 | version "1.3.2" 656 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 657 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 658 | dependencies: 659 | is-arrayish "^0.2.1" 660 | 661 | escalade@^3.1.1: 662 | version "3.1.1" 663 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 664 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 665 | 666 | escape-html@~1.0.3: 667 | version "1.0.3" 668 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 669 | integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== 670 | 671 | escape-string-regexp@4.0.0: 672 | version "4.0.0" 673 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 674 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 675 | 676 | escape-string-regexp@^1.0.5: 677 | version "1.0.5" 678 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 679 | integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== 680 | 681 | esquery@^1.5.0: 682 | version "1.5.0" 683 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" 684 | integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== 685 | dependencies: 686 | estraverse "^5.1.0" 687 | 688 | estraverse@^5.1.0: 689 | version "5.3.0" 690 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" 691 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== 692 | 693 | etag@~1.8.1: 694 | version "1.8.1" 695 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" 696 | integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== 697 | 698 | execa@^7.0.0: 699 | version "7.1.1" 700 | resolved "https://registry.yarnpkg.com/execa/-/execa-7.1.1.tgz#3eb3c83d239488e7b409d48e8813b76bb55c9c43" 701 | integrity sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q== 702 | dependencies: 703 | cross-spawn "^7.0.3" 704 | get-stream "^6.0.1" 705 | human-signals "^4.3.0" 706 | is-stream "^3.0.0" 707 | merge-stream "^2.0.0" 708 | npm-run-path "^5.1.0" 709 | onetime "^6.0.0" 710 | signal-exit "^3.0.7" 711 | strip-final-newline "^3.0.0" 712 | 713 | express@^4.18.2: 714 | version "4.18.2" 715 | resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" 716 | integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== 717 | dependencies: 718 | accepts "~1.3.8" 719 | array-flatten "1.1.1" 720 | body-parser "1.20.1" 721 | content-disposition "0.5.4" 722 | content-type "~1.0.4" 723 | cookie "0.5.0" 724 | cookie-signature "1.0.6" 725 | debug "2.6.9" 726 | depd "2.0.0" 727 | encodeurl "~1.0.2" 728 | escape-html "~1.0.3" 729 | etag "~1.8.1" 730 | finalhandler "1.2.0" 731 | fresh "0.5.2" 732 | http-errors "2.0.0" 733 | merge-descriptors "1.0.1" 734 | methods "~1.1.2" 735 | on-finished "2.4.1" 736 | parseurl "~1.3.3" 737 | path-to-regexp "0.1.7" 738 | proxy-addr "~2.0.7" 739 | qs "6.11.0" 740 | range-parser "~1.2.1" 741 | safe-buffer "5.2.1" 742 | send "0.18.0" 743 | serve-static "1.15.0" 744 | setprototypeof "1.2.0" 745 | statuses "2.0.1" 746 | type-is "~1.6.18" 747 | utils-merge "1.0.1" 748 | vary "~1.1.2" 749 | 750 | fast-glob@^3.3.0: 751 | version "3.3.0" 752 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.0.tgz#7c40cb491e1e2ed5664749e87bfb516dbe8727c0" 753 | integrity sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA== 754 | dependencies: 755 | "@nodelib/fs.stat" "^2.0.2" 756 | "@nodelib/fs.walk" "^1.2.3" 757 | glob-parent "^5.1.2" 758 | merge2 "^1.3.0" 759 | micromatch "^4.0.4" 760 | 761 | fastq@^1.6.0: 762 | version "1.15.0" 763 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" 764 | integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== 765 | dependencies: 766 | reusify "^1.0.4" 767 | 768 | fill-range@^7.0.1: 769 | version "7.0.1" 770 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 771 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 772 | dependencies: 773 | to-regex-range "^5.0.1" 774 | 775 | finalhandler@1.2.0: 776 | version "1.2.0" 777 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" 778 | integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== 779 | dependencies: 780 | debug "2.6.9" 781 | encodeurl "~1.0.2" 782 | escape-html "~1.0.3" 783 | on-finished "2.4.1" 784 | parseurl "~1.3.3" 785 | statuses "2.0.1" 786 | unpipe "~1.0.0" 787 | 788 | find-up@5.0.0: 789 | version "5.0.0" 790 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" 791 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 792 | dependencies: 793 | locate-path "^6.0.0" 794 | path-exists "^4.0.0" 795 | 796 | find-up@^6.3.0: 797 | version "6.3.0" 798 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-6.3.0.tgz#2abab3d3280b2dc7ac10199ef324c4e002c8c790" 799 | integrity sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw== 800 | dependencies: 801 | locate-path "^7.1.0" 802 | path-exists "^5.0.0" 803 | 804 | flat@^5.0.2: 805 | version "5.0.2" 806 | resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" 807 | integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== 808 | 809 | foreground-child@^3.1.0: 810 | version "3.1.1" 811 | resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" 812 | integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== 813 | dependencies: 814 | cross-spawn "^7.0.0" 815 | signal-exit "^4.0.1" 816 | 817 | forwarded@0.2.0: 818 | version "0.2.0" 819 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" 820 | integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== 821 | 822 | fresh@0.5.2: 823 | version "0.5.2" 824 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" 825 | integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== 826 | 827 | fs.realpath@^1.0.0: 828 | version "1.0.0" 829 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 830 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 831 | 832 | fsevents@~2.3.2: 833 | version "2.3.2" 834 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 835 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 836 | 837 | function-bind@^1.1.1: 838 | version "1.1.1" 839 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 840 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 841 | 842 | get-caller-file@^2.0.5: 843 | version "2.0.5" 844 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 845 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 846 | 847 | get-intrinsic@^1.0.2: 848 | version "1.2.1" 849 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" 850 | integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== 851 | dependencies: 852 | function-bind "^1.1.1" 853 | has "^1.0.3" 854 | has-proto "^1.0.1" 855 | has-symbols "^1.0.3" 856 | 857 | get-stream@^6.0.1: 858 | version "6.0.1" 859 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" 860 | integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== 861 | 862 | glob-parent@^5.1.2, glob-parent@~5.1.2: 863 | version "5.1.2" 864 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 865 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 866 | dependencies: 867 | is-glob "^4.0.1" 868 | 869 | glob@7.2.0: 870 | version "7.2.0" 871 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" 872 | integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== 873 | dependencies: 874 | fs.realpath "^1.0.0" 875 | inflight "^1.0.4" 876 | inherits "2" 877 | minimatch "^3.0.4" 878 | once "^1.3.0" 879 | path-is-absolute "^1.0.0" 880 | 881 | glob@^10.2.5: 882 | version "10.3.3" 883 | resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.3.tgz#8360a4ffdd6ed90df84aa8d52f21f452e86a123b" 884 | integrity sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw== 885 | dependencies: 886 | foreground-child "^3.1.0" 887 | jackspeak "^2.0.3" 888 | minimatch "^9.0.1" 889 | minipass "^5.0.0 || ^6.0.2 || ^7.0.0" 890 | path-scurry "^1.10.1" 891 | 892 | globby@^13.2.2: 893 | version "13.2.2" 894 | resolved "https://registry.yarnpkg.com/globby/-/globby-13.2.2.tgz#63b90b1bf68619c2135475cbd4e71e66aa090592" 895 | integrity sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w== 896 | dependencies: 897 | dir-glob "^3.0.1" 898 | fast-glob "^3.3.0" 899 | ignore "^5.2.4" 900 | merge2 "^1.4.1" 901 | slash "^4.0.0" 902 | 903 | hard-rejection@^2.1.0: 904 | version "2.1.0" 905 | resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" 906 | integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== 907 | 908 | has-flag@^3.0.0: 909 | version "3.0.0" 910 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 911 | integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== 912 | 913 | has-flag@^4.0.0: 914 | version "4.0.0" 915 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 916 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 917 | 918 | has-proto@^1.0.1: 919 | version "1.0.1" 920 | resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" 921 | integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== 922 | 923 | has-symbols@^1.0.3: 924 | version "1.0.3" 925 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" 926 | integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== 927 | 928 | has@^1.0.3: 929 | version "1.0.3" 930 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 931 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 932 | dependencies: 933 | function-bind "^1.1.1" 934 | 935 | he@1.2.0: 936 | version "1.2.0" 937 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" 938 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 939 | 940 | hosted-git-info@^4.0.1: 941 | version "4.1.0" 942 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" 943 | integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== 944 | dependencies: 945 | lru-cache "^6.0.0" 946 | 947 | hosted-git-info@^5.0.0: 948 | version "5.2.1" 949 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-5.2.1.tgz#0ba1c97178ef91f3ab30842ae63d6a272341156f" 950 | integrity sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw== 951 | dependencies: 952 | lru-cache "^7.5.1" 953 | 954 | http-errors@2.0.0: 955 | version "2.0.0" 956 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" 957 | integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== 958 | dependencies: 959 | depd "2.0.0" 960 | inherits "2.0.4" 961 | setprototypeof "1.2.0" 962 | statuses "2.0.1" 963 | toidentifier "1.0.1" 964 | 965 | human-signals@^4.3.0: 966 | version "4.3.1" 967 | resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-4.3.1.tgz#ab7f811e851fca97ffbd2c1fe9a958964de321b2" 968 | integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== 969 | 970 | iconv-lite@0.4.24: 971 | version "0.4.24" 972 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 973 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 974 | dependencies: 975 | safer-buffer ">= 2.1.2 < 3" 976 | 977 | ignore@^5.2.4: 978 | version "5.2.4" 979 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" 980 | integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== 981 | 982 | indent-string@^4.0.0: 983 | version "4.0.0" 984 | resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" 985 | integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== 986 | 987 | indent-string@^5.0.0: 988 | version "5.0.0" 989 | resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-5.0.0.tgz#4fd2980fccaf8622d14c64d694f4cf33c81951a5" 990 | integrity sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg== 991 | 992 | inflight@^1.0.4: 993 | version "1.0.6" 994 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 995 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 996 | dependencies: 997 | once "^1.3.0" 998 | wrappy "1" 999 | 1000 | inherits@2, inherits@2.0.4: 1001 | version "2.0.4" 1002 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1003 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1004 | 1005 | ipaddr.js@1.9.1: 1006 | version "1.9.1" 1007 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" 1008 | integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== 1009 | 1010 | is-arrayish@^0.2.1: 1011 | version "0.2.1" 1012 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 1013 | integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== 1014 | 1015 | is-binary-path@~2.1.0: 1016 | version "2.1.0" 1017 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 1018 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 1019 | dependencies: 1020 | binary-extensions "^2.0.0" 1021 | 1022 | is-core-module@^2.5.0, is-core-module@^2.8.1: 1023 | version "2.12.1" 1024 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.1.tgz#0c0b6885b6f80011c71541ce15c8d66cf5a4f9fd" 1025 | integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg== 1026 | dependencies: 1027 | has "^1.0.3" 1028 | 1029 | is-extglob@^2.1.1: 1030 | version "2.1.1" 1031 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1032 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 1033 | 1034 | is-fullwidth-code-point@^3.0.0: 1035 | version "3.0.0" 1036 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 1037 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 1038 | 1039 | is-fullwidth-code-point@^4.0.0: 1040 | version "4.0.0" 1041 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88" 1042 | integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== 1043 | 1044 | is-glob@^4.0.1, is-glob@~4.0.1: 1045 | version "4.0.3" 1046 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 1047 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 1048 | dependencies: 1049 | is-extglob "^2.1.1" 1050 | 1051 | is-number@^7.0.0: 1052 | version "7.0.0" 1053 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 1054 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 1055 | 1056 | is-plain-obj@^1.1.0: 1057 | version "1.1.0" 1058 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" 1059 | integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== 1060 | 1061 | is-plain-obj@^2.1.0: 1062 | version "2.1.0" 1063 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" 1064 | integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== 1065 | 1066 | is-stream@^3.0.0: 1067 | version "3.0.0" 1068 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" 1069 | integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== 1070 | 1071 | is-unicode-supported@^0.1.0: 1072 | version "0.1.0" 1073 | resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" 1074 | integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== 1075 | 1076 | isexe@^2.0.0: 1077 | version "2.0.0" 1078 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1079 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== 1080 | 1081 | jackspeak@^2.0.3: 1082 | version "2.2.1" 1083 | resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.2.1.tgz#655e8cf025d872c9c03d3eb63e8f0c024fef16a6" 1084 | integrity sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw== 1085 | dependencies: 1086 | "@isaacs/cliui" "^8.0.2" 1087 | optionalDependencies: 1088 | "@pkgjs/parseargs" "^0.11.0" 1089 | 1090 | js-tokens@^4.0.0: 1091 | version "4.0.0" 1092 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1093 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1094 | 1095 | js-yaml@4.1.0: 1096 | version "4.1.0" 1097 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" 1098 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 1099 | dependencies: 1100 | argparse "^2.0.1" 1101 | 1102 | json-parse-even-better-errors@^2.3.0: 1103 | version "2.3.1" 1104 | resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" 1105 | integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== 1106 | 1107 | kind-of@^6.0.3: 1108 | version "6.0.3" 1109 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" 1110 | integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== 1111 | 1112 | lilconfig@2.1.0: 1113 | version "2.1.0" 1114 | resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" 1115 | integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== 1116 | 1117 | lines-and-columns@^1.1.6: 1118 | version "1.2.4" 1119 | resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" 1120 | integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== 1121 | 1122 | lint-staged@^13.2.1: 1123 | version "13.2.3" 1124 | resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-13.2.3.tgz#f899aad6c093473467e9c9e316e3c2d8a28f87a7" 1125 | integrity sha512-zVVEXLuQIhr1Y7R7YAWx4TZLdvuzk7DnmrsTNL0fax6Z3jrpFcas+vKbzxhhvp6TA55m1SQuWkpzI1qbfDZbAg== 1126 | dependencies: 1127 | chalk "5.2.0" 1128 | cli-truncate "^3.1.0" 1129 | commander "^10.0.0" 1130 | debug "^4.3.4" 1131 | execa "^7.0.0" 1132 | lilconfig "2.1.0" 1133 | listr2 "^5.0.7" 1134 | micromatch "^4.0.5" 1135 | normalize-path "^3.0.0" 1136 | object-inspect "^1.12.3" 1137 | pidtree "^0.6.0" 1138 | string-argv "^0.3.1" 1139 | yaml "^2.2.2" 1140 | 1141 | listr2@^5.0.7: 1142 | version "5.0.8" 1143 | resolved "https://registry.yarnpkg.com/listr2/-/listr2-5.0.8.tgz#a9379ffeb4bd83a68931a65fb223a11510d6ba23" 1144 | integrity sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA== 1145 | dependencies: 1146 | cli-truncate "^2.1.0" 1147 | colorette "^2.0.19" 1148 | log-update "^4.0.0" 1149 | p-map "^4.0.0" 1150 | rfdc "^1.3.0" 1151 | rxjs "^7.8.0" 1152 | through "^2.3.8" 1153 | wrap-ansi "^7.0.0" 1154 | 1155 | locate-path@^6.0.0: 1156 | version "6.0.0" 1157 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" 1158 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 1159 | dependencies: 1160 | p-locate "^5.0.0" 1161 | 1162 | locate-path@^7.1.0: 1163 | version "7.2.0" 1164 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-7.2.0.tgz#69cb1779bd90b35ab1e771e1f2f89a202c2a8a8a" 1165 | integrity sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA== 1166 | dependencies: 1167 | p-locate "^6.0.0" 1168 | 1169 | log-symbols@4.1.0: 1170 | version "4.1.0" 1171 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" 1172 | integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== 1173 | dependencies: 1174 | chalk "^4.1.0" 1175 | is-unicode-supported "^0.1.0" 1176 | 1177 | log-update@^4.0.0: 1178 | version "4.0.0" 1179 | resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" 1180 | integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== 1181 | dependencies: 1182 | ansi-escapes "^4.3.0" 1183 | cli-cursor "^3.1.0" 1184 | slice-ansi "^4.0.0" 1185 | wrap-ansi "^6.2.0" 1186 | 1187 | lru-cache@^6.0.0: 1188 | version "6.0.0" 1189 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 1190 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 1191 | dependencies: 1192 | yallist "^4.0.0" 1193 | 1194 | lru-cache@^7.5.1: 1195 | version "7.18.3" 1196 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" 1197 | integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== 1198 | 1199 | "lru-cache@^9.1.1 || ^10.0.0": 1200 | version "10.0.0" 1201 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.0.tgz#b9e2a6a72a129d81ab317202d93c7691df727e61" 1202 | integrity sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw== 1203 | 1204 | make-error@^1.1.1: 1205 | version "1.3.6" 1206 | resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" 1207 | integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== 1208 | 1209 | map-obj@^1.0.0: 1210 | version "1.0.1" 1211 | resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" 1212 | integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== 1213 | 1214 | map-obj@^4.3.0: 1215 | version "4.3.0" 1216 | resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" 1217 | integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== 1218 | 1219 | markdown-table@^3.0.3: 1220 | version "3.0.3" 1221 | resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-3.0.3.tgz#e6331d30e493127e031dd385488b5bd326e4a6bd" 1222 | integrity sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw== 1223 | 1224 | media-typer@0.3.0: 1225 | version "0.3.0" 1226 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 1227 | integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== 1228 | 1229 | meow@^11.0.0: 1230 | version "11.0.0" 1231 | resolved "https://registry.yarnpkg.com/meow/-/meow-11.0.0.tgz#273a19c12d49d013c56effe9f011994022887157" 1232 | integrity sha512-Cl0yeeIrko6d94KpUo1M+0X1sB14ikoaqlIGuTH1fW4I+E3+YljL54/hb/BWmVfrV9tTV9zU04+xjw08Fh2WkA== 1233 | dependencies: 1234 | "@types/minimist" "^1.2.2" 1235 | camelcase-keys "^8.0.2" 1236 | decamelize "^6.0.0" 1237 | decamelize-keys "^1.1.0" 1238 | hard-rejection "^2.1.0" 1239 | minimist-options "4.1.0" 1240 | normalize-package-data "^4.0.1" 1241 | read-pkg-up "^9.1.0" 1242 | redent "^4.0.0" 1243 | trim-newlines "^4.0.2" 1244 | type-fest "^3.1.0" 1245 | yargs-parser "^21.1.1" 1246 | 1247 | merge-descriptors@1.0.1: 1248 | version "1.0.1" 1249 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 1250 | integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== 1251 | 1252 | merge-stream@^2.0.0: 1253 | version "2.0.0" 1254 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 1255 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 1256 | 1257 | merge2@^1.3.0, merge2@^1.4.1: 1258 | version "1.4.1" 1259 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" 1260 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 1261 | 1262 | methods@~1.1.2: 1263 | version "1.1.2" 1264 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 1265 | integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== 1266 | 1267 | micromatch@^4.0.4, micromatch@^4.0.5: 1268 | version "4.0.5" 1269 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" 1270 | integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== 1271 | dependencies: 1272 | braces "^3.0.2" 1273 | picomatch "^2.3.1" 1274 | 1275 | mime-db@1.52.0: 1276 | version "1.52.0" 1277 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" 1278 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== 1279 | 1280 | mime-types@~2.1.24, mime-types@~2.1.34: 1281 | version "2.1.35" 1282 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" 1283 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== 1284 | dependencies: 1285 | mime-db "1.52.0" 1286 | 1287 | mime@1.6.0: 1288 | version "1.6.0" 1289 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 1290 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 1291 | 1292 | mimic-fn@^2.1.0: 1293 | version "2.1.0" 1294 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 1295 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 1296 | 1297 | mimic-fn@^4.0.0: 1298 | version "4.0.0" 1299 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" 1300 | integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== 1301 | 1302 | min-indent@^1.0.1: 1303 | version "1.0.1" 1304 | resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" 1305 | integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== 1306 | 1307 | minimatch@5.0.1: 1308 | version "5.0.1" 1309 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" 1310 | integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== 1311 | dependencies: 1312 | brace-expansion "^2.0.1" 1313 | 1314 | minimatch@^3.0.4: 1315 | version "3.1.2" 1316 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 1317 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 1318 | dependencies: 1319 | brace-expansion "^1.1.7" 1320 | 1321 | minimatch@^9.0.1: 1322 | version "9.0.3" 1323 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" 1324 | integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== 1325 | dependencies: 1326 | brace-expansion "^2.0.1" 1327 | 1328 | minimist-options@4.1.0: 1329 | version "4.1.0" 1330 | resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" 1331 | integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== 1332 | dependencies: 1333 | arrify "^1.0.1" 1334 | is-plain-obj "^1.1.0" 1335 | kind-of "^6.0.3" 1336 | 1337 | "minipass@^5.0.0 || ^6.0.2 || ^7.0.0": 1338 | version "7.0.2" 1339 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.2.tgz#58a82b7d81c7010da5bd4b2c0c85ac4b4ec5131e" 1340 | integrity sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA== 1341 | 1342 | mocha@^10.2.0: 1343 | version "10.2.0" 1344 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.2.0.tgz#1fd4a7c32ba5ac372e03a17eef435bd00e5c68b8" 1345 | integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg== 1346 | dependencies: 1347 | ansi-colors "4.1.1" 1348 | browser-stdout "1.3.1" 1349 | chokidar "3.5.3" 1350 | debug "4.3.4" 1351 | diff "5.0.0" 1352 | escape-string-regexp "4.0.0" 1353 | find-up "5.0.0" 1354 | glob "7.2.0" 1355 | he "1.2.0" 1356 | js-yaml "4.1.0" 1357 | log-symbols "4.1.0" 1358 | minimatch "5.0.1" 1359 | ms "2.1.3" 1360 | nanoid "3.3.3" 1361 | serialize-javascript "6.0.0" 1362 | strip-json-comments "3.1.1" 1363 | supports-color "8.1.1" 1364 | workerpool "6.2.1" 1365 | yargs "16.2.0" 1366 | yargs-parser "20.2.4" 1367 | yargs-unparser "2.0.0" 1368 | 1369 | ms@2.0.0: 1370 | version "2.0.0" 1371 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1372 | integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== 1373 | 1374 | ms@2.1.2: 1375 | version "2.1.2" 1376 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1377 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1378 | 1379 | ms@2.1.3: 1380 | version "2.1.3" 1381 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 1382 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 1383 | 1384 | nanoid@3.3.3: 1385 | version "3.3.3" 1386 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" 1387 | integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== 1388 | 1389 | negotiator@0.6.3: 1390 | version "0.6.3" 1391 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" 1392 | integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== 1393 | 1394 | normalize-package-data@^3.0.2: 1395 | version "3.0.3" 1396 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" 1397 | integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== 1398 | dependencies: 1399 | hosted-git-info "^4.0.1" 1400 | is-core-module "^2.5.0" 1401 | semver "^7.3.4" 1402 | validate-npm-package-license "^3.0.1" 1403 | 1404 | normalize-package-data@^4.0.1: 1405 | version "4.0.1" 1406 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-4.0.1.tgz#b46b24e0616d06cadf9d5718b29b6d445a82a62c" 1407 | integrity sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg== 1408 | dependencies: 1409 | hosted-git-info "^5.0.0" 1410 | is-core-module "^2.8.1" 1411 | semver "^7.3.5" 1412 | validate-npm-package-license "^3.0.4" 1413 | 1414 | normalize-path@^3.0.0, normalize-path@~3.0.0: 1415 | version "3.0.0" 1416 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 1417 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 1418 | 1419 | npm-run-path@^5.1.0: 1420 | version "5.1.0" 1421 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00" 1422 | integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== 1423 | dependencies: 1424 | path-key "^4.0.0" 1425 | 1426 | object-inspect@^1.12.3, object-inspect@^1.9.0: 1427 | version "1.12.3" 1428 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" 1429 | integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== 1430 | 1431 | on-finished@2.4.1: 1432 | version "2.4.1" 1433 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" 1434 | integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== 1435 | dependencies: 1436 | ee-first "1.1.1" 1437 | 1438 | once@^1.3.0: 1439 | version "1.4.0" 1440 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1441 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 1442 | dependencies: 1443 | wrappy "1" 1444 | 1445 | onetime@^5.1.0: 1446 | version "5.1.2" 1447 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" 1448 | integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== 1449 | dependencies: 1450 | mimic-fn "^2.1.0" 1451 | 1452 | onetime@^6.0.0: 1453 | version "6.0.0" 1454 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" 1455 | integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== 1456 | dependencies: 1457 | mimic-fn "^4.0.0" 1458 | 1459 | p-limit@^3.0.2: 1460 | version "3.1.0" 1461 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 1462 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 1463 | dependencies: 1464 | yocto-queue "^0.1.0" 1465 | 1466 | p-limit@^4.0.0: 1467 | version "4.0.0" 1468 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644" 1469 | integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== 1470 | dependencies: 1471 | yocto-queue "^1.0.0" 1472 | 1473 | p-locate@^5.0.0: 1474 | version "5.0.0" 1475 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" 1476 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 1477 | dependencies: 1478 | p-limit "^3.0.2" 1479 | 1480 | p-locate@^6.0.0: 1481 | version "6.0.0" 1482 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-6.0.0.tgz#3da9a49d4934b901089dca3302fa65dc5a05c04f" 1483 | integrity sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw== 1484 | dependencies: 1485 | p-limit "^4.0.0" 1486 | 1487 | p-map@^4.0.0: 1488 | version "4.0.0" 1489 | resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" 1490 | integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== 1491 | dependencies: 1492 | aggregate-error "^3.0.0" 1493 | 1494 | parse-json@^5.2.0: 1495 | version "5.2.0" 1496 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" 1497 | integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== 1498 | dependencies: 1499 | "@babel/code-frame" "^7.0.0" 1500 | error-ex "^1.3.1" 1501 | json-parse-even-better-errors "^2.3.0" 1502 | lines-and-columns "^1.1.6" 1503 | 1504 | parseurl@~1.3.3: 1505 | version "1.3.3" 1506 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" 1507 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== 1508 | 1509 | path-exists@^4.0.0: 1510 | version "4.0.0" 1511 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 1512 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 1513 | 1514 | path-exists@^5.0.0: 1515 | version "5.0.0" 1516 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-5.0.0.tgz#a6aad9489200b21fab31e49cf09277e5116fb9e7" 1517 | integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ== 1518 | 1519 | path-is-absolute@^1.0.0: 1520 | version "1.0.1" 1521 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1522 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 1523 | 1524 | path-key@^3.1.0: 1525 | version "3.1.1" 1526 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1527 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1528 | 1529 | path-key@^4.0.0: 1530 | version "4.0.0" 1531 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" 1532 | integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== 1533 | 1534 | path-scurry@^1.10.1: 1535 | version "1.10.1" 1536 | resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" 1537 | integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== 1538 | dependencies: 1539 | lru-cache "^9.1.1 || ^10.0.0" 1540 | minipass "^5.0.0 || ^6.0.2 || ^7.0.0" 1541 | 1542 | path-to-regexp@0.1.7: 1543 | version "0.1.7" 1544 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 1545 | integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== 1546 | 1547 | path-type@^4.0.0: 1548 | version "4.0.0" 1549 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 1550 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 1551 | 1552 | picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: 1553 | version "2.3.1" 1554 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 1555 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 1556 | 1557 | pidtree@^0.6.0: 1558 | version "0.6.0" 1559 | resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.6.0.tgz#90ad7b6d42d5841e69e0a2419ef38f8883aa057c" 1560 | integrity sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g== 1561 | 1562 | prettier@^2.8.7: 1563 | version "2.8.8" 1564 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" 1565 | integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== 1566 | 1567 | proxy-addr@~2.0.7: 1568 | version "2.0.7" 1569 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" 1570 | integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== 1571 | dependencies: 1572 | forwarded "0.2.0" 1573 | ipaddr.js "1.9.1" 1574 | 1575 | qs@6.11.0: 1576 | version "6.11.0" 1577 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" 1578 | integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== 1579 | dependencies: 1580 | side-channel "^1.0.4" 1581 | 1582 | queue-microtask@^1.2.2: 1583 | version "1.2.3" 1584 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" 1585 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== 1586 | 1587 | quick-lru@^6.1.1: 1588 | version "6.1.1" 1589 | resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-6.1.1.tgz#f8e5bf9010376c126c80c1a62827a526c0e60adf" 1590 | integrity sha512-S27GBT+F0NTRiehtbrgaSE1idUAJ5bX8dPAQTdylEyNlrdcH5X4Lz7Edz3DYzecbsCluD5zO8ZNEe04z3D3u6Q== 1591 | 1592 | randombytes@^2.1.0: 1593 | version "2.1.0" 1594 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" 1595 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 1596 | dependencies: 1597 | safe-buffer "^5.1.0" 1598 | 1599 | range-parser@~1.2.1: 1600 | version "1.2.1" 1601 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" 1602 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== 1603 | 1604 | raw-body@2.5.1: 1605 | version "2.5.1" 1606 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" 1607 | integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== 1608 | dependencies: 1609 | bytes "3.1.2" 1610 | http-errors "2.0.0" 1611 | iconv-lite "0.4.24" 1612 | unpipe "1.0.0" 1613 | 1614 | read-pkg-up@^9.1.0: 1615 | version "9.1.0" 1616 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-9.1.0.tgz#38ca48e0bc6c6b260464b14aad9bcd4e5b1fbdc3" 1617 | integrity sha512-vaMRR1AC1nrd5CQM0PhlRsO5oc2AAigqr7cCrZ/MW/Rsaflz4RlgzkpL4qoU/z1F6wrbd85iFv1OQj/y5RdGvg== 1618 | dependencies: 1619 | find-up "^6.3.0" 1620 | read-pkg "^7.1.0" 1621 | type-fest "^2.5.0" 1622 | 1623 | read-pkg@^7.1.0: 1624 | version "7.1.0" 1625 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-7.1.0.tgz#438b4caed1ad656ba359b3e00fd094f3c427a43e" 1626 | integrity sha512-5iOehe+WF75IccPc30bWTbpdDQLOCc3Uu8bi3Dte3Eueij81yx1Mrufk8qBx/YAbR4uL1FdUr+7BKXDwEtisXg== 1627 | dependencies: 1628 | "@types/normalize-package-data" "^2.4.1" 1629 | normalize-package-data "^3.0.2" 1630 | parse-json "^5.2.0" 1631 | type-fest "^2.0.0" 1632 | 1633 | readdirp@~3.6.0: 1634 | version "3.6.0" 1635 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 1636 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 1637 | dependencies: 1638 | picomatch "^2.2.1" 1639 | 1640 | redent@^4.0.0: 1641 | version "4.0.0" 1642 | resolved "https://registry.yarnpkg.com/redent/-/redent-4.0.0.tgz#0c0ba7caabb24257ab3bb7a4fd95dd1d5c5681f9" 1643 | integrity sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag== 1644 | dependencies: 1645 | indent-string "^5.0.0" 1646 | strip-indent "^4.0.0" 1647 | 1648 | require-directory@^2.1.1: 1649 | version "2.1.1" 1650 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 1651 | integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== 1652 | 1653 | restore-cursor@^3.1.0: 1654 | version "3.1.0" 1655 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" 1656 | integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== 1657 | dependencies: 1658 | onetime "^5.1.0" 1659 | signal-exit "^3.0.2" 1660 | 1661 | reusify@^1.0.4: 1662 | version "1.0.4" 1663 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" 1664 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 1665 | 1666 | rfdc@^1.3.0: 1667 | version "1.3.0" 1668 | resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" 1669 | integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== 1670 | 1671 | rimraf@^5.0.0: 1672 | version "5.0.1" 1673 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-5.0.1.tgz#0881323ab94ad45fec7c0221f27ea1a142f3f0d0" 1674 | integrity sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg== 1675 | dependencies: 1676 | glob "^10.2.5" 1677 | 1678 | run-parallel@^1.1.9: 1679 | version "1.2.0" 1680 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" 1681 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 1682 | dependencies: 1683 | queue-microtask "^1.2.2" 1684 | 1685 | rxjs@^7.8.0: 1686 | version "7.8.1" 1687 | resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" 1688 | integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== 1689 | dependencies: 1690 | tslib "^2.1.0" 1691 | 1692 | safe-buffer@5.2.1, safe-buffer@^5.1.0: 1693 | version "5.2.1" 1694 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1695 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1696 | 1697 | "safer-buffer@>= 2.1.2 < 3": 1698 | version "2.1.2" 1699 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1700 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1701 | 1702 | semver@^7.3.4, semver@^7.3.5: 1703 | version "7.5.4" 1704 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" 1705 | integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== 1706 | dependencies: 1707 | lru-cache "^6.0.0" 1708 | 1709 | send@0.18.0: 1710 | version "0.18.0" 1711 | resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" 1712 | integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== 1713 | dependencies: 1714 | debug "2.6.9" 1715 | depd "2.0.0" 1716 | destroy "1.2.0" 1717 | encodeurl "~1.0.2" 1718 | escape-html "~1.0.3" 1719 | etag "~1.8.1" 1720 | fresh "0.5.2" 1721 | http-errors "2.0.0" 1722 | mime "1.6.0" 1723 | ms "2.1.3" 1724 | on-finished "2.4.1" 1725 | range-parser "~1.2.1" 1726 | statuses "2.0.1" 1727 | 1728 | serialize-javascript@6.0.0: 1729 | version "6.0.0" 1730 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" 1731 | integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== 1732 | dependencies: 1733 | randombytes "^2.1.0" 1734 | 1735 | serve-static@1.15.0: 1736 | version "1.15.0" 1737 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" 1738 | integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== 1739 | dependencies: 1740 | encodeurl "~1.0.2" 1741 | escape-html "~1.0.3" 1742 | parseurl "~1.3.3" 1743 | send "0.18.0" 1744 | 1745 | setprototypeof@1.2.0: 1746 | version "1.2.0" 1747 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" 1748 | integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== 1749 | 1750 | shebang-command@^2.0.0: 1751 | version "2.0.0" 1752 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1753 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1754 | dependencies: 1755 | shebang-regex "^3.0.0" 1756 | 1757 | shebang-regex@^3.0.0: 1758 | version "3.0.0" 1759 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1760 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1761 | 1762 | side-channel@^1.0.4: 1763 | version "1.0.4" 1764 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" 1765 | integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== 1766 | dependencies: 1767 | call-bind "^1.0.0" 1768 | get-intrinsic "^1.0.2" 1769 | object-inspect "^1.9.0" 1770 | 1771 | signal-exit@^3.0.2, signal-exit@^3.0.7: 1772 | version "3.0.7" 1773 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" 1774 | integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== 1775 | 1776 | signal-exit@^4.0.1: 1777 | version "4.0.2" 1778 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.0.2.tgz#ff55bb1d9ff2114c13b400688fa544ac63c36967" 1779 | integrity sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q== 1780 | 1781 | slash@^4.0.0: 1782 | version "4.0.0" 1783 | resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" 1784 | integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== 1785 | 1786 | slice-ansi@^3.0.0: 1787 | version "3.0.0" 1788 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" 1789 | integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== 1790 | dependencies: 1791 | ansi-styles "^4.0.0" 1792 | astral-regex "^2.0.0" 1793 | is-fullwidth-code-point "^3.0.0" 1794 | 1795 | slice-ansi@^4.0.0: 1796 | version "4.0.0" 1797 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" 1798 | integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== 1799 | dependencies: 1800 | ansi-styles "^4.0.0" 1801 | astral-regex "^2.0.0" 1802 | is-fullwidth-code-point "^3.0.0" 1803 | 1804 | slice-ansi@^5.0.0: 1805 | version "5.0.0" 1806 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-5.0.0.tgz#b73063c57aa96f9cd881654b15294d95d285c42a" 1807 | integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ== 1808 | dependencies: 1809 | ansi-styles "^6.0.0" 1810 | is-fullwidth-code-point "^4.0.0" 1811 | 1812 | spdx-correct@^3.0.0: 1813 | version "3.2.0" 1814 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" 1815 | integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== 1816 | dependencies: 1817 | spdx-expression-parse "^3.0.0" 1818 | spdx-license-ids "^3.0.0" 1819 | 1820 | spdx-exceptions@^2.1.0: 1821 | version "2.3.0" 1822 | resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" 1823 | integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== 1824 | 1825 | spdx-expression-parse@^3.0.0: 1826 | version "3.0.1" 1827 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" 1828 | integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== 1829 | dependencies: 1830 | spdx-exceptions "^2.1.0" 1831 | spdx-license-ids "^3.0.0" 1832 | 1833 | spdx-license-ids@^3.0.0: 1834 | version "3.0.13" 1835 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz#7189a474c46f8d47c7b0da4b987bb45e908bd2d5" 1836 | integrity sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w== 1837 | 1838 | statuses@2.0.1: 1839 | version "2.0.1" 1840 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" 1841 | integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== 1842 | 1843 | string-argv@^0.3.1: 1844 | version "0.3.2" 1845 | resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6" 1846 | integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== 1847 | 1848 | "string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0: 1849 | version "4.2.3" 1850 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 1851 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1852 | dependencies: 1853 | emoji-regex "^8.0.0" 1854 | is-fullwidth-code-point "^3.0.0" 1855 | strip-ansi "^6.0.1" 1856 | 1857 | string-width@^5.0.0, string-width@^5.0.1, string-width@^5.1.2: 1858 | version "5.1.2" 1859 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" 1860 | integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== 1861 | dependencies: 1862 | eastasianwidth "^0.2.0" 1863 | emoji-regex "^9.2.2" 1864 | strip-ansi "^7.0.1" 1865 | 1866 | "strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: 1867 | version "6.0.1" 1868 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 1869 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1870 | dependencies: 1871 | ansi-regex "^5.0.1" 1872 | 1873 | strip-ansi@^7.0.1: 1874 | version "7.1.0" 1875 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" 1876 | integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== 1877 | dependencies: 1878 | ansi-regex "^6.0.1" 1879 | 1880 | strip-final-newline@^3.0.0: 1881 | version "3.0.0" 1882 | resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" 1883 | integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== 1884 | 1885 | strip-indent@^4.0.0: 1886 | version "4.0.0" 1887 | resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-4.0.0.tgz#b41379433dd06f5eae805e21d631e07ee670d853" 1888 | integrity sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA== 1889 | dependencies: 1890 | min-indent "^1.0.1" 1891 | 1892 | strip-json-comments@3.1.1: 1893 | version "3.1.1" 1894 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 1895 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1896 | 1897 | supports-color@8.1.1: 1898 | version "8.1.1" 1899 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" 1900 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== 1901 | dependencies: 1902 | has-flag "^4.0.0" 1903 | 1904 | supports-color@^5.3.0: 1905 | version "5.5.0" 1906 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1907 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1908 | dependencies: 1909 | has-flag "^3.0.0" 1910 | 1911 | supports-color@^7.1.0: 1912 | version "7.2.0" 1913 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1914 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1915 | dependencies: 1916 | has-flag "^4.0.0" 1917 | 1918 | through@^2.3.8: 1919 | version "2.3.8" 1920 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 1921 | integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== 1922 | 1923 | to-regex-range@^5.0.1: 1924 | version "5.0.1" 1925 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1926 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1927 | dependencies: 1928 | is-number "^7.0.0" 1929 | 1930 | toidentifier@1.0.1: 1931 | version "1.0.1" 1932 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" 1933 | integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== 1934 | 1935 | trim-newlines@^4.0.2: 1936 | version "4.1.1" 1937 | resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-4.1.1.tgz#28c88deb50ed10c7ba6dc2474421904a00139125" 1938 | integrity sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ== 1939 | 1940 | ts-node@^10.9.1: 1941 | version "10.9.1" 1942 | resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" 1943 | integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== 1944 | dependencies: 1945 | "@cspotcode/source-map-support" "^0.8.0" 1946 | "@tsconfig/node10" "^1.0.7" 1947 | "@tsconfig/node12" "^1.0.7" 1948 | "@tsconfig/node14" "^1.0.0" 1949 | "@tsconfig/node16" "^1.0.2" 1950 | acorn "^8.4.1" 1951 | acorn-walk "^8.1.1" 1952 | arg "^4.1.0" 1953 | create-require "^1.1.0" 1954 | diff "^4.0.1" 1955 | make-error "^1.1.1" 1956 | v8-compile-cache-lib "^3.0.1" 1957 | yn "3.1.1" 1958 | 1959 | tslib@^2.1.0: 1960 | version "2.6.0" 1961 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.0.tgz#b295854684dbda164e181d259a22cd779dcd7bc3" 1962 | integrity sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA== 1963 | 1964 | type-fest@^0.21.3: 1965 | version "0.21.3" 1966 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" 1967 | integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== 1968 | 1969 | type-fest@^2.0.0, type-fest@^2.13.0, type-fest@^2.5.0: 1970 | version "2.19.0" 1971 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" 1972 | integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== 1973 | 1974 | type-fest@^3.1.0: 1975 | version "3.13.1" 1976 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-3.13.1.tgz#bb744c1f0678bea7543a2d1ec24e83e68e8c8706" 1977 | integrity sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g== 1978 | 1979 | type-is@~1.6.18: 1980 | version "1.6.18" 1981 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" 1982 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== 1983 | dependencies: 1984 | media-typer "0.3.0" 1985 | mime-types "~2.1.24" 1986 | 1987 | typescript@^5.0.4: 1988 | version "5.1.6" 1989 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.6.tgz#02f8ac202b6dad2c0dd5e0913745b47a37998274" 1990 | integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA== 1991 | 1992 | unpipe@1.0.0, unpipe@~1.0.0: 1993 | version "1.0.0" 1994 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 1995 | integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== 1996 | 1997 | utils-merge@1.0.1: 1998 | version "1.0.1" 1999 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" 2000 | integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== 2001 | 2002 | v8-compile-cache-lib@^3.0.1: 2003 | version "3.0.1" 2004 | resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" 2005 | integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== 2006 | 2007 | validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: 2008 | version "3.0.4" 2009 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" 2010 | integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== 2011 | dependencies: 2012 | spdx-correct "^3.0.0" 2013 | spdx-expression-parse "^3.0.0" 2014 | 2015 | vary@~1.1.2: 2016 | version "1.1.2" 2017 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" 2018 | integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== 2019 | 2020 | which@^2.0.1: 2021 | version "2.0.2" 2022 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 2023 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 2024 | dependencies: 2025 | isexe "^2.0.0" 2026 | 2027 | workerpool@6.2.1: 2028 | version "6.2.1" 2029 | resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" 2030 | integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== 2031 | 2032 | "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: 2033 | version "7.0.0" 2034 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 2035 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 2036 | dependencies: 2037 | ansi-styles "^4.0.0" 2038 | string-width "^4.1.0" 2039 | strip-ansi "^6.0.0" 2040 | 2041 | wrap-ansi@^6.2.0: 2042 | version "6.2.0" 2043 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" 2044 | integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== 2045 | dependencies: 2046 | ansi-styles "^4.0.0" 2047 | string-width "^4.1.0" 2048 | strip-ansi "^6.0.0" 2049 | 2050 | wrap-ansi@^8.1.0: 2051 | version "8.1.0" 2052 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" 2053 | integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== 2054 | dependencies: 2055 | ansi-styles "^6.1.0" 2056 | string-width "^5.0.1" 2057 | strip-ansi "^7.0.1" 2058 | 2059 | wrappy@1: 2060 | version "1.0.2" 2061 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2062 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 2063 | 2064 | y18n@^5.0.5: 2065 | version "5.0.8" 2066 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 2067 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 2068 | 2069 | yallist@^4.0.0: 2070 | version "4.0.0" 2071 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 2072 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 2073 | 2074 | yaml@^2.2.2: 2075 | version "2.3.1" 2076 | resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.1.tgz#02fe0975d23cd441242aa7204e09fc28ac2ac33b" 2077 | integrity sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ== 2078 | 2079 | yargs-parser@20.2.4: 2080 | version "20.2.4" 2081 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" 2082 | integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== 2083 | 2084 | yargs-parser@^20.2.2: 2085 | version "20.2.9" 2086 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" 2087 | integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== 2088 | 2089 | yargs-parser@^21.1.1: 2090 | version "21.1.1" 2091 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" 2092 | integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== 2093 | 2094 | yargs-unparser@2.0.0: 2095 | version "2.0.0" 2096 | resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" 2097 | integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== 2098 | dependencies: 2099 | camelcase "^6.0.0" 2100 | decamelize "^4.0.0" 2101 | flat "^5.0.2" 2102 | is-plain-obj "^2.1.0" 2103 | 2104 | yargs@16.2.0: 2105 | version "16.2.0" 2106 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" 2107 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== 2108 | dependencies: 2109 | cliui "^7.0.2" 2110 | escalade "^3.1.1" 2111 | get-caller-file "^2.0.5" 2112 | require-directory "^2.1.1" 2113 | string-width "^4.2.0" 2114 | y18n "^5.0.5" 2115 | yargs-parser "^20.2.2" 2116 | 2117 | yn@3.1.1: 2118 | version "3.1.1" 2119 | resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" 2120 | integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== 2121 | 2122 | yocto-queue@^0.1.0: 2123 | version "0.1.0" 2124 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 2125 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 2126 | 2127 | yocto-queue@^1.0.0: 2128 | version "1.0.0" 2129 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251" 2130 | integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== 2131 | --------------------------------------------------------------------------------