├── .githooks └── pre-commit ├── .mocharc.json ├── tsconfig.module.json ├── test ├── tsconfig.json └── express-lazy-router.test.ts ├── .github ├── workflows │ └── test.yml └── release.yml ├── tsconfig.json ├── LICENSE ├── package.json ├── src └── express-lazy-router.ts ├── .gitignore ├── README.md └── yarn.lock /.githooks/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | npx --no-install lint-staged 3 | -------------------------------------------------------------------------------- /.mocharc.json: -------------------------------------------------------------------------------- 1 | { 2 | "require": [ 3 | "ts-node-test-register" 4 | ] 5 | } -------------------------------------------------------------------------------- /tsconfig.module.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "module": "ESNext", 5 | "outDir": "./module/", 6 | } 7 | } -------------------------------------------------------------------------------- /test/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "declaration": false, 5 | "noEmit": true 6 | }, 7 | "include": [ 8 | "../src/**/*", 9 | "./**/*" 10 | ] 11 | } -------------------------------------------------------------------------------- /.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: [ 20, 22 ] 10 | steps: 11 | - name: checkout 12 | uses: actions/checkout@v2 13 | - name: setup Node.js ${{ matrix.node-version }} 14 | uses: actions/setup-node@v2 15 | with: 16 | node-version: ${{ matrix.node-version }} 17 | - name: Install 18 | run: yarn install 19 | - name: Test 20 | run: yarn test 21 | -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Basic Options */ 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "esModuleInterop": true, 7 | "newLine": "LF", 8 | "outDir": "./lib/", 9 | "target": "es5", 10 | "sourceMap": true, 11 | "declaration": true, 12 | "jsx": "preserve", 13 | "lib": [ 14 | "esnext", 15 | "dom" 16 | ], 17 | /* Strict Type-Checking Options */ 18 | "strict": true, 19 | /* Additional Checks */ 20 | /* Report errors on unused locals. */ 21 | "noUnusedLocals": true, 22 | /* Report errors on unused parameters. */ 23 | "noUnusedParameters": true, 24 | /* Report error when not all code paths in function return a value. */ 25 | "noImplicitReturns": true, 26 | /* Report errors for fallthrough cases in switch statement. */ 27 | "noFallthroughCasesInSwitch": true 28 | }, 29 | "include": [ 30 | "src/**/*" 31 | ], 32 | "exclude": [ 33 | ".git", 34 | "node_modules" 35 | ] 36 | } -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "express-lazy-router", 3 | "version": "1.0.6", 4 | "description": "Lazy loading for express router", 5 | "keywords": [ 6 | "express", 7 | "lazy", 8 | "performance" 9 | ], 10 | "homepage": "https://github.com/azu/express-lazy-router", 11 | "bugs": { 12 | "url": "https://github.com/azu/express-lazy-router/issues" 13 | }, 14 | "repository": { 15 | "type": "git", 16 | "url": "https://github.com/azu/express-lazy-router.git" 17 | }, 18 | "license": "MIT", 19 | "author": "azu", 20 | "sideEffects": false, 21 | "main": "lib/express-lazy-router.js", 22 | "module": "module/express-lazy-router.js", 23 | "types": "lib/express-lazy-router.d.ts", 24 | "directories": { 25 | "lib": "lib", 26 | "test": "test" 27 | }, 28 | "files": [ 29 | "bin/", 30 | "lib/", 31 | "module/", 32 | "src/" 33 | ], 34 | "scripts": { 35 | "build": "tsc -p . && tsc -p ./tsconfig.module.json", 36 | "clean": "rimraf lib/ module/", 37 | "prepare": "git config --local core.hooksPath .githooks", 38 | "prepublishOnly": "npm run clean && npm run build", 39 | "prettier": "prettier --write \"**/*.{js,jsx,ts,tsx,css}\"", 40 | "test": "mocha \"test/**/*.ts\"", 41 | "watch": "tsc -p . --watch" 42 | }, 43 | "lint-staged": { 44 | "*.{js,jsx,ts,tsx,css}": [ 45 | "prettier --write" 46 | ] 47 | }, 48 | "prettier": { 49 | "printWidth": 120, 50 | "singleQuote": false, 51 | "tabWidth": 4, 52 | "trailingComma": "none" 53 | }, 54 | "devDependencies": { 55 | "@types/express": "^5.0.0", 56 | "@types/mocha": "^10.0.10", 57 | "@types/node": "^22.13.8", 58 | "@types/supertest": "^6.0.2", 59 | "express": "^4.21.2", 60 | "lint-staged": "^15.4.3", 61 | "mocha": "^11.1.0", 62 | "node-fetch": "^3.3.2", 63 | "prettier": "^3.5.2", 64 | "rimraf": "^6.0.1", 65 | "supertest": "^7.0.0", 66 | "ts-node": "^10.9.2", 67 | "ts-node-test-register": "^10.0.0", 68 | "typescript": "^5.8.2" 69 | }, 70 | "peerDependencies": { 71 | "express": "^4.0.0" 72 | }, 73 | "packageManager": "yarn@1.22.22+sha256.c17d3797fb9a9115bf375e31bfd30058cac6bc9c3b8807a3d8cb2094794b51ca" 74 | } 75 | -------------------------------------------------------------------------------- /src/express-lazy-router.ts: -------------------------------------------------------------------------------- 1 | import express from "express"; 2 | 3 | export type createLazyLoaderOptions = { 4 | /** 5 | * if preload is true, load router asap 6 | * Default: false 7 | */ 8 | preload?: boolean; 9 | }; 10 | 11 | /** 12 | * @param options 13 | * @example 14 | * ```js 15 | * const lazyLoad = createLazyLoader(); 16 | * router.use( 17 | * '/path_to_router', 18 | * lazyLoad(() => import('./path_to_router')), 19 | * ); 20 | * ``` 21 | */ 22 | export function createLazyRouter(options: createLazyLoaderOptions = {}) { 23 | const preload = options.preload ?? false; 24 | /** 25 | * lazy load express router 26 | * @param resolver 27 | */ 28 | return function lazyRouter(resolver: () => Promise<{ default: express.Router } | express.Router>) { 29 | const lazyRouter = express.Router(); 30 | // Preserve loading order of router for default error handler 31 | // https://github.com/azu/express-lazy-router/issues/1 32 | let loadedRouter: express.Router; 33 | const resolveResolver = () => { 34 | return resolver().then((router) => { 35 | if (!router) { 36 | throw new Error(`lazyLoad(resolver) the resolver function should return a promise object, but it returns falsy value: ${router} 37 | 38 | You need to return a promise object from the callback function. 39 | 40 | lazyLoad(() => import('./path_to_router')), 41 | `); 42 | } 43 | if ("default" in router) { 44 | loadedRouter = router.default; 45 | } else { 46 | loadedRouter = router; 47 | } 48 | }); 49 | }; 50 | lazyRouter.use(function lazyRouterHandler(req, res, next) { 51 | if (loadedRouter) { 52 | return loadedRouter(req, res, next); 53 | } else { 54 | // request handler at first time 55 | resolveResolver() 56 | .then(() => { 57 | return loadedRouter(req, res, next); 58 | }) 59 | .catch((error) => { 60 | next(error); 61 | }); 62 | } 63 | }); 64 | if (preload) { 65 | resolveResolver().catch((error) => { 66 | console.error("[lazy-router] Fail to preload", error); 67 | }); 68 | } 69 | return lazyRouter; 70 | }; 71 | } 72 | -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # express-lazy-router 2 | 3 | Lazy loading for express router. 4 | 5 | ## Motivation 6 | 7 | I've used [ts-node](https://github.com/TypeStrong/ts-node)([ts-node-dev](https://github.com/wclr/ts-node-dev)) for 8 | developing Node.js Web Application. It means that compile all TypeScript files at start time. 9 | 10 | Many compilation make startup of the web app slow. Lazy routing avoid this compilation overhead by compiled when needed. 11 | 12 | - [Compilation is unbelievably slow · Issue #754 · TypeStrong/ts-node](https://github.com/TypeStrong/ts-node/issues/754) 13 | 14 | In a frontend, We have already used lazy loading with router like React Router, Vue Router. 15 | 16 | - [Route-based code splitting | React](https://reactjs.org/docs/code-splitting.html#route-based-code-splitting) 17 | - [Lazy Loading Routes | Vue Router](https://router.vuejs.org/guide/advanced/lazy-loading.html) 18 | 19 | Also, [webpack](https://github.com/webpack/webpack) support [experiments.lazyCompilation](https://github.com/webpack/webpack/releases/tag/v5.17.0) as experimentally. 20 | 21 | My motivation that We can do lazy routing in Node.js [Express routing](https://expressjs.com/en/guide/routing.html) too. 22 | 23 | Results of my project: 24 | 25 | > Use ts-node-dev + express 26 | 27 | - Before: 28 | - 123 ts file Compilation 29 | - Total startup time: 34236ms 30 | - After(use express-lazy-router): 31 | - 14 ts file Compilation 32 | - Total startup time: 14238ms 33 | - Summary: 34 | - Compilation time is 200ms per 1 ts file 35 | 36 | ## Install 37 | 38 | Install with [npm](https://www.npmjs.com/): 39 | 40 | npm install express-lazy-router 41 | 42 | ## Usage 43 | 44 | ```ts 45 | import express from 'express'; 46 | import { createLazyRouter } from 'express-lazy-router'; 47 | const lazyLoad = createLazyRouter({ 48 | // In production, Load router asap 49 | preload: process.env.NODE_ENV === 'production', 50 | }); 51 | const app = express(); 52 | // Load ./path_to_router.js when receive request to "/path_to_router" 53 | app.use( 54 | '/path_to_router', 55 | lazyLoad(() => import('./path_to_router')), 56 | ); 57 | app.listen(8000, () => { 58 | console.log(`Example app listening at http://localhost:8000`) 59 | }); 60 | ``` 61 | 62 | ## Options 63 | 64 | ### `preload` 65 | 66 | > Default: false 67 | 68 | If it is `true`, preload the router module as soon as. 69 | It does not mean sync loading. 70 | 71 | ## Examples 72 | 73 | **Before**: No lazy loading 74 | 75 | `index.js`: 76 | 77 | ```js 78 | import express from 'express'; 79 | import api from "./api"; 80 | const app = express(); 81 | app.use( 82 | '/api', 83 | api 84 | ); 85 | app.listen(8000, () => { 86 | console.log(`Example app listening at http://localhost:8000`) 87 | }); 88 | ``` 89 | 90 | `api.js`: 91 | 92 | ```js 93 | import express from 'express'; 94 | const router = express.Router(); 95 | // GET api/status 96 | router.get("/status", (_, res) => { 97 | res.json({ ok: true }) 98 | }); 99 | export default router; 100 | ``` 101 | 102 | Behavior: 103 | 104 | - load `index.js` 105 | - load `api.js` 106 | - complete to launch the express app 107 | - `GET /api/status` 108 | - > `{ ok: true }` 109 | 110 | **After**: lazy loading for api.js 111 | 112 | `index.js`: 113 | 114 | ```diff 115 | import express from 'express'; 116 | - import api from "./api"; 117 | + import { createLazyRouter } from 'express-lazy-router'; 118 | + const lazyLoad = createLazyRouter({ 119 | + preload: process.env.NODE_ENV === 'production', 120 | + }); 121 | const app = express(); 122 | app.use( 123 | '/api', 124 | - api 125 | + lazyLoad(() => import("./api")) 126 | ); 127 | app.listen(8000, () => { 128 | console.log(`Example app listening at http://localhost:8000`) 129 | }); 130 | ``` 131 | 132 | `api.js`: No need to change! 133 | 134 | Behavior: 135 | 136 | - load `index.js` 137 | - complete to launch the express app 138 | - `GET /api/status` 139 | - load `api.js` 140 | - > `{ ok: true }` 141 | 142 | The more details behavior when you use loader like [@babel/register](https://babeljs.io/docs/en/babel-register) or [ts-node](https://github.com/TypeStrong/ts-node). 143 | 144 | - load `index.js` 145 | - Compile `index.js` by babel or ts-node 146 | - complete to launch the express app 147 | - `GET /api/status` 148 | - load `api.js` 149 | - Compile `api.js` by babel or ts-node 150 | - > `{ ok: true }` 151 | 152 | ## Limitation 153 | 154 | ### Avoid to use non-path router 155 | 156 | NG: express-lazy-router does not expect this way. 157 | 158 | ```ts 159 | import { createLazyRouter } from 'express-lazy-router'; 160 | const lazyLoad = createLazyRouter(); 161 | const app = express(); 162 | app.use(lazyLoad(() => import('./path_to_router'))); 163 | app.listen(port, () => { 164 | console.log(`Example app listening at http://localhost:${port}`) 165 | }); 166 | ``` 167 | 168 | ## Changelog 169 | 170 | See [Releases page](https://github.com/azu/express-lazy-router/releases). 171 | 172 | ## Running tests 173 | 174 | Install devDependencies and Run `npm test`: 175 | 176 | npm test 177 | 178 | ## Contributing 179 | 180 | Pull requests and stars are always welcome. 181 | 182 | For bugs and feature requests, [please create an issue](https://github.com/azu/express-lazy-router/issues). 183 | 184 | 1. Fork it! 185 | 2. Create your feature branch: `git checkout -b my-new-feature` 186 | 3. Commit your changes: `git commit -am 'Add some feature'` 187 | 4. Push to the branch: `git push origin my-new-feature` 188 | 5. Submit a pull request :D 189 | 190 | ## Author 191 | 192 | - azu: [GitHub](https://github.com/azu), [Twitter](https://twitter.com/azu_re) 193 | 194 | ## License 195 | 196 | MIT © azu 197 | -------------------------------------------------------------------------------- /test/express-lazy-router.test.ts: -------------------------------------------------------------------------------- 1 | import express, { ErrorRequestHandler, RequestHandler } from "express"; 2 | import request from "supertest"; 3 | 4 | import { createLazyRouter } from "../src/express-lazy-router"; 5 | import assert from "assert"; 6 | 7 | const createMockRouter = (requestHandler: RequestHandler, path: string = "/"): express.Router => { 8 | const router = express.Router(); 9 | router.get(path, requestHandler); 10 | return router; 11 | }; 12 | const waitFor = (ms: number) => { 13 | return new Promise((resolve) => { 14 | setTimeout(resolve, ms); 15 | }); 16 | }; 17 | describe("express-lazy-router", function () { 18 | describe("default", () => { 19 | const lazyLoad = createLazyRouter(); 20 | it("should lazy load router", async () => { 21 | const app = express(); 22 | let testRouterCalled = 0; 23 | app.use( 24 | "/test", 25 | lazyLoad(async () => { 26 | testRouterCalled++; 27 | return createMockRouter((_, res) => { 28 | res.json({ 29 | ok: true 30 | }); 31 | }); 32 | }) 33 | ); 34 | await waitFor(100); 35 | assert.strictEqual(testRouterCalled, 0); 36 | return request(app) 37 | .get("/test") 38 | .set("Accept", "application/json") 39 | .expect("Content-Type", /json/) 40 | .expect(200) 41 | .then(() => { 42 | assert.strictEqual(testRouterCalled, 1); 43 | }); 44 | }); 45 | it("should lazy load router has sub path", async () => { 46 | const app = express(); 47 | const requestTracker = new assert.CallTracker(); 48 | const requestHandler: RequestHandler = requestTracker.calls((_, res) => { 49 | res.json({ 50 | ok: true 51 | }); 52 | }, 1); 53 | // /api/status 54 | app.use( 55 | "/api", 56 | lazyLoad(async () => createMockRouter(requestHandler, "/status")) 57 | ); 58 | return request(app) 59 | .get("/api/status") 60 | .set("Accept", "application/json") 61 | .expect("Content-Type", /json/) 62 | .expect(200) 63 | .then((response) => { 64 | assert.deepStrictEqual(response.body, { ok: true }); 65 | requestTracker.verify(); 66 | }); 67 | }); 68 | it("should work with default(last) error handing ", async () => { 69 | const app = express(); 70 | const expectedError = new Error("ERROR IN REQUEST HANDLER"); 71 | const requestTracker = new assert.CallTracker(); 72 | const defaultErrorTracker = new assert.CallTracker(); 73 | const shouldBeCalled = defaultErrorTracker.calls(() => {}, 1); 74 | const requestHandler: RequestHandler = requestTracker.calls((_, _res, next) => { 75 | next(expectedError); 76 | }, 1); 77 | app.use( 78 | "/test", 79 | lazyLoad(async () => createMockRouter(requestHandler)) 80 | ); 81 | app.use(((err, _req, res, _next) => { 82 | shouldBeCalled(); 83 | assert.strictEqual(err.message, expectedError.message); 84 | res.status(400).json({ 85 | ok: false 86 | }); 87 | }) as ErrorRequestHandler); 88 | return request(app) 89 | .get("/test") 90 | .set("Accept", "application/json") 91 | .expect("Content-Type", /json/) 92 | .expect(400) 93 | .then((res) => { 94 | assert.deepStrictEqual(res.body, { ok: false }); 95 | requestTracker.verify(); 96 | defaultErrorTracker.verify(); 97 | }); 98 | }); 99 | it("should lazy load router when receive request", () => { 100 | const app = express(); 101 | const requestTracker = new assert.CallTracker(); 102 | const requestHandler: RequestHandler = requestTracker.calls((_, res) => { 103 | res.json({ 104 | ok: true 105 | }); 106 | }, 1); 107 | app.use( 108 | "/test", 109 | lazyLoad(async () => createMockRouter(requestHandler)) 110 | ); 111 | return request(app) 112 | .get("/test") 113 | .set("Accept", "application/json") 114 | .expect("Content-Type", /json/) 115 | .expect(200) 116 | .then((response) => { 117 | assert.deepStrictEqual(response.body, { ok: true }); 118 | requestTracker.verify(); 119 | }); 120 | }); 121 | it("should not multiple calls lazy load router when multiple requests to /test", async () => { 122 | const app = express(); 123 | let testRouterCalledCount = 0; 124 | app.use( 125 | "/test", 126 | lazyLoad(async () => { 127 | testRouterCalledCount++; 128 | return createMockRouter((_, res) => { 129 | res.json({ 130 | ok: true 131 | }); 132 | }); 133 | }) 134 | ); 135 | await waitFor(100); 136 | assert.strictEqual(testRouterCalledCount, 0); 137 | // When multiple requests 138 | return Promise.all([ 139 | request(app).get("/test").set("Accept", "application/json"), 140 | request(app).get("/test").set("Accept", "application/json") 141 | ]).then(() => { 142 | assert.strictEqual(testRouterCalledCount, 1, "router initialized at once"); 143 | }); 144 | }); 145 | }); 146 | describe("{ preload: true }", () => { 147 | const lazyLoad = createLazyRouter({ 148 | preload: true 149 | }); 150 | it("should preload lazy load router", async () => { 151 | const app = express(); 152 | let testRouterCalledCount = 0; 153 | app.use( 154 | "/test", 155 | lazyLoad(async () => { 156 | testRouterCalledCount++; 157 | return createMockRouter((_, res) => { 158 | res.json({ 159 | ok: true 160 | }); 161 | }); 162 | }) 163 | ); 164 | await waitFor(100); 165 | assert.strictEqual(testRouterCalledCount, 1); 166 | return request(app) 167 | .get("/test") 168 | .set("Accept", "application/json") 169 | .expect("Content-Type", /json/) 170 | .expect(200) 171 | .then(() => { 172 | assert.strictEqual(testRouterCalledCount, 1); 173 | }); 174 | }); 175 | it("should not multiple calls lazy load router when multiple requests to /test", async () => { 176 | const app = express(); 177 | let testRouterCalledCount = 0; 178 | app.use( 179 | "/test", 180 | lazyLoad(async () => { 181 | testRouterCalledCount++; 182 | return createMockRouter((_, res) => { 183 | res.json({ 184 | ok: true 185 | }); 186 | }); 187 | }) 188 | ); 189 | await waitFor(100); 190 | assert.strictEqual(testRouterCalledCount, 1); 191 | // When multiple requests 192 | return Promise.all([ 193 | request(app).get("/test").set("Accept", "application/json"), 194 | request(app).get("/test").set("Accept", "application/json") 195 | ]).then(() => { 196 | assert.strictEqual(testRouterCalledCount, 1, "router initialized at once"); 197 | }); 198 | }); 199 | it("should lazy load router when receive request", () => { 200 | const app = express(); 201 | const requestTracker = new assert.CallTracker(); 202 | const requestHandler: RequestHandler = requestTracker.calls((_, res) => { 203 | res.json({ 204 | ok: true 205 | }); 206 | }, 1); 207 | app.use( 208 | "/test", 209 | lazyLoad(async () => createMockRouter(requestHandler)) 210 | ); 211 | return request(app) 212 | .get("/test") 213 | .set("Accept", "application/json") 214 | .expect("Content-Type", /json/) 215 | .expect(200) 216 | .then((response) => { 217 | assert.deepStrictEqual(response.body, { ok: true }); 218 | requestTracker.verify(); 219 | }); 220 | }); 221 | }); 222 | }); 223 | -------------------------------------------------------------------------------- /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.12.11" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" 8 | integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== 9 | dependencies: 10 | "@babel/highlight" "^7.10.4" 11 | 12 | "@babel/helper-validator-identifier@^7.10.4": 13 | version "7.12.11" 14 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" 15 | integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== 16 | 17 | "@babel/highlight@^7.10.4": 18 | version "7.10.4" 19 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" 20 | integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== 21 | dependencies: 22 | "@babel/helper-validator-identifier" "^7.10.4" 23 | chalk "^2.0.0" 24 | js-tokens "^4.0.0" 25 | 26 | "@cspotcode/source-map-support@^0.8.0": 27 | version "0.8.1" 28 | resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" 29 | integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== 30 | dependencies: 31 | "@jridgewell/trace-mapping" "0.3.9" 32 | 33 | "@isaacs/cliui@^8.0.2": 34 | version "8.0.2" 35 | resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" 36 | integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== 37 | dependencies: 38 | string-width "^5.1.2" 39 | string-width-cjs "npm:string-width@^4.2.0" 40 | strip-ansi "^7.0.1" 41 | strip-ansi-cjs "npm:strip-ansi@^6.0.1" 42 | wrap-ansi "^8.1.0" 43 | wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" 44 | 45 | "@jridgewell/resolve-uri@^3.0.3": 46 | version "3.1.2" 47 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" 48 | integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== 49 | 50 | "@jridgewell/sourcemap-codec@^1.4.10": 51 | version "1.5.0" 52 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" 53 | integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== 54 | 55 | "@jridgewell/trace-mapping@0.3.9": 56 | version "0.3.9" 57 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" 58 | integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== 59 | dependencies: 60 | "@jridgewell/resolve-uri" "^3.0.3" 61 | "@jridgewell/sourcemap-codec" "^1.4.10" 62 | 63 | "@pkgjs/parseargs@^0.11.0": 64 | version "0.11.0" 65 | resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" 66 | integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== 67 | 68 | "@tsconfig/node10@^1.0.7": 69 | version "1.0.11" 70 | resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" 71 | integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw== 72 | 73 | "@tsconfig/node12@^1.0.7": 74 | version "1.0.11" 75 | resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" 76 | integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== 77 | 78 | "@tsconfig/node14@^1.0.0": 79 | version "1.0.3" 80 | resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" 81 | integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== 82 | 83 | "@tsconfig/node16@^1.0.2": 84 | version "1.0.4" 85 | resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" 86 | integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== 87 | 88 | "@types/body-parser@*": 89 | version "1.19.0" 90 | resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.0.tgz#0685b3c47eb3006ffed117cdd55164b61f80538f" 91 | integrity sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ== 92 | dependencies: 93 | "@types/connect" "*" 94 | "@types/node" "*" 95 | 96 | "@types/connect@*": 97 | version "3.4.34" 98 | resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.34.tgz#170a40223a6d666006d93ca128af2beb1d9b1901" 99 | integrity sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ== 100 | dependencies: 101 | "@types/node" "*" 102 | 103 | "@types/cookiejar@^2.1.5": 104 | version "2.1.5" 105 | resolved "https://registry.yarnpkg.com/@types/cookiejar/-/cookiejar-2.1.5.tgz#14a3e83fa641beb169a2dd8422d91c3c345a9a78" 106 | integrity sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q== 107 | 108 | "@types/express-serve-static-core@^5.0.0": 109 | version "5.0.6" 110 | resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-5.0.6.tgz#41fec4ea20e9c7b22f024ab88a95c6bb288f51b8" 111 | integrity sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA== 112 | dependencies: 113 | "@types/node" "*" 114 | "@types/qs" "*" 115 | "@types/range-parser" "*" 116 | "@types/send" "*" 117 | 118 | "@types/express@^5.0.0": 119 | version "5.0.0" 120 | resolved "https://registry.yarnpkg.com/@types/express/-/express-5.0.0.tgz#13a7d1f75295e90d19ed6e74cab3678488eaa96c" 121 | integrity sha512-DvZriSMehGHL1ZNLzi6MidnsDhUZM/x2pRdDIKdwbUNqqwHxMlRdkxtn6/EPKyqKpHqTl/4nRZsRNLpZxZRpPQ== 122 | dependencies: 123 | "@types/body-parser" "*" 124 | "@types/express-serve-static-core" "^5.0.0" 125 | "@types/qs" "*" 126 | "@types/serve-static" "*" 127 | 128 | "@types/methods@^1.1.4": 129 | version "1.1.4" 130 | resolved "https://registry.yarnpkg.com/@types/methods/-/methods-1.1.4.tgz#d3b7ac30ac47c91054ea951ce9eed07b1051e547" 131 | integrity sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ== 132 | 133 | "@types/mime@^1": 134 | version "1.3.2" 135 | resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" 136 | integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== 137 | 138 | "@types/mocha@^10.0.10": 139 | version "10.0.10" 140 | resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.10.tgz#91f62905e8d23cbd66225312f239454a23bebfa0" 141 | integrity sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q== 142 | 143 | "@types/node@*": 144 | version "14.14.22" 145 | resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.22.tgz#0d29f382472c4ccf3bd96ff0ce47daf5b7b84b18" 146 | integrity sha512-g+f/qj/cNcqKkc3tFqlXOYjrmZA+jNBiDzbP3kH+B+otKFqAdPgVTGP1IeKRdMml/aE69as5S4FqtxAbl+LaMw== 147 | 148 | "@types/node@^22.13.8": 149 | version "22.13.8" 150 | resolved "https://registry.yarnpkg.com/@types/node/-/node-22.13.8.tgz#57e2450295b33a6518d6fd4f65f47236d3e41d8d" 151 | integrity sha512-G3EfaZS+iOGYWLLRCEAXdWK9my08oHNZ+FHluRiggIYJPOXzhOiDgpVCUHaUvyIC5/fj7C/p637jdzC666AOKQ== 152 | dependencies: 153 | undici-types "~6.20.0" 154 | 155 | "@types/normalize-package-data@^2.4.0": 156 | version "2.4.0" 157 | resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" 158 | integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== 159 | 160 | "@types/qs@*": 161 | version "6.9.5" 162 | resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.5.tgz#434711bdd49eb5ee69d90c1d67c354a9a8ecb18b" 163 | integrity sha512-/JHkVHtx/REVG0VVToGRGH2+23hsYLHdyG+GrvoUGlGAd0ErauXDyvHtRI/7H7mzLm+tBCKA7pfcpkQ1lf58iQ== 164 | 165 | "@types/range-parser@*": 166 | version "1.2.3" 167 | resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" 168 | integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== 169 | 170 | "@types/send@*": 171 | version "0.17.4" 172 | resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.4.tgz#6619cd24e7270793702e4e6a4b958a9010cfc57a" 173 | integrity sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA== 174 | dependencies: 175 | "@types/mime" "^1" 176 | "@types/node" "*" 177 | 178 | "@types/serve-static@*": 179 | version "1.13.9" 180 | resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.9.tgz#aacf28a85a05ee29a11fb7c3ead935ac56f33e4e" 181 | integrity sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA== 182 | dependencies: 183 | "@types/mime" "^1" 184 | "@types/node" "*" 185 | 186 | "@types/superagent@^8.1.0": 187 | version "8.1.9" 188 | resolved "https://registry.yarnpkg.com/@types/superagent/-/superagent-8.1.9.tgz#28bfe4658e469838ed0bf66d898354bcab21f49f" 189 | integrity sha512-pTVjI73witn+9ILmoJdajHGW2jkSaOzhiFYF1Rd3EQ94kymLqB9PjD9ISg7WaALC7+dCHT0FGe9T2LktLq/3GQ== 190 | dependencies: 191 | "@types/cookiejar" "^2.1.5" 192 | "@types/methods" "^1.1.4" 193 | "@types/node" "*" 194 | form-data "^4.0.0" 195 | 196 | "@types/supertest@^6.0.2": 197 | version "6.0.2" 198 | resolved "https://registry.yarnpkg.com/@types/supertest/-/supertest-6.0.2.tgz#2af1c466456aaf82c7c6106c6b5cbd73a5e86588" 199 | integrity sha512-137ypx2lk/wTQbW6An6safu9hXmajAifU/s7szAHLN/FeIm5w7yR0Wkl9fdJMRSHwOn4HLAI0DaB2TOORuhPDg== 200 | dependencies: 201 | "@types/methods" "^1.1.4" 202 | "@types/superagent" "^8.1.0" 203 | 204 | accepts@~1.3.8: 205 | version "1.3.8" 206 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" 207 | integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== 208 | dependencies: 209 | mime-types "~2.1.34" 210 | negotiator "0.6.3" 211 | 212 | acorn-walk@^8.1.1: 213 | version "8.3.4" 214 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" 215 | integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== 216 | dependencies: 217 | acorn "^8.11.0" 218 | 219 | acorn@^8.11.0, acorn@^8.4.1: 220 | version "8.14.0" 221 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" 222 | integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== 223 | 224 | ansi-colors@^4.1.3: 225 | version "4.1.3" 226 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" 227 | integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== 228 | 229 | ansi-escapes@^7.0.0: 230 | version "7.0.0" 231 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-7.0.0.tgz#00fc19f491bbb18e1d481b97868204f92109bfe7" 232 | integrity sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw== 233 | dependencies: 234 | environment "^1.0.0" 235 | 236 | ansi-regex@^5.0.0: 237 | version "5.0.0" 238 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 239 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== 240 | 241 | ansi-regex@^5.0.1: 242 | version "5.0.1" 243 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 244 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 245 | 246 | ansi-regex@^6.0.1: 247 | version "6.1.0" 248 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" 249 | integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== 250 | 251 | ansi-styles@^3.2.1: 252 | version "3.2.1" 253 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 254 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 255 | dependencies: 256 | color-convert "^1.9.0" 257 | 258 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 259 | version "4.3.0" 260 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 261 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 262 | dependencies: 263 | color-convert "^2.0.1" 264 | 265 | ansi-styles@^6.0.0, ansi-styles@^6.1.0, ansi-styles@^6.2.1: 266 | version "6.2.1" 267 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" 268 | integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== 269 | 270 | anymatch@~3.1.2: 271 | version "3.1.3" 272 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" 273 | integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== 274 | dependencies: 275 | normalize-path "^3.0.0" 276 | picomatch "^2.0.4" 277 | 278 | arg@^4.1.0: 279 | version "4.1.3" 280 | resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" 281 | integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== 282 | 283 | argparse@^2.0.1: 284 | version "2.0.1" 285 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 286 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 287 | 288 | array-flatten@1.1.1: 289 | version "1.1.1" 290 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 291 | integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= 292 | 293 | asap@^2.0.0: 294 | version "2.0.6" 295 | resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" 296 | integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== 297 | 298 | asynckit@^0.4.0: 299 | version "0.4.0" 300 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 301 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= 302 | 303 | balanced-match@^1.0.0: 304 | version "1.0.0" 305 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 306 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 307 | 308 | binary-extensions@^2.0.0: 309 | version "2.2.0" 310 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 311 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 312 | 313 | body-parser@1.20.3: 314 | version "1.20.3" 315 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6" 316 | integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== 317 | dependencies: 318 | bytes "3.1.2" 319 | content-type "~1.0.5" 320 | debug "2.6.9" 321 | depd "2.0.0" 322 | destroy "1.2.0" 323 | http-errors "2.0.0" 324 | iconv-lite "0.4.24" 325 | on-finished "2.4.1" 326 | qs "6.13.0" 327 | raw-body "2.5.2" 328 | type-is "~1.6.18" 329 | unpipe "1.0.0" 330 | 331 | brace-expansion@^2.0.1: 332 | version "2.0.1" 333 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" 334 | integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== 335 | dependencies: 336 | balanced-match "^1.0.0" 337 | 338 | braces@^3.0.3: 339 | version "3.0.3" 340 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" 341 | integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== 342 | dependencies: 343 | fill-range "^7.1.1" 344 | 345 | braces@~3.0.2: 346 | version "3.0.2" 347 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 348 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 349 | dependencies: 350 | fill-range "^7.0.1" 351 | 352 | browser-stdout@^1.3.1: 353 | version "1.3.1" 354 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" 355 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== 356 | 357 | bytes@3.1.2: 358 | version "3.1.2" 359 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" 360 | integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== 361 | 362 | call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: 363 | version "1.0.2" 364 | resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" 365 | integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== 366 | dependencies: 367 | es-errors "^1.3.0" 368 | function-bind "^1.1.2" 369 | 370 | call-bound@^1.0.2: 371 | version "1.0.3" 372 | resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.3.tgz#41cfd032b593e39176a71533ab4f384aa04fd681" 373 | integrity sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA== 374 | dependencies: 375 | call-bind-apply-helpers "^1.0.1" 376 | get-intrinsic "^1.2.6" 377 | 378 | camelcase@^6.0.0: 379 | version "6.2.0" 380 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" 381 | integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== 382 | 383 | chalk@^2.0.0: 384 | version "2.4.2" 385 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 386 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 387 | dependencies: 388 | ansi-styles "^3.2.1" 389 | escape-string-regexp "^1.0.5" 390 | supports-color "^5.3.0" 391 | 392 | chalk@^4.1.0: 393 | version "4.1.0" 394 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" 395 | integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== 396 | dependencies: 397 | ansi-styles "^4.1.0" 398 | supports-color "^7.1.0" 399 | 400 | chalk@^5.4.1: 401 | version "5.4.1" 402 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.4.1.tgz#1b48bf0963ec158dce2aacf69c093ae2dd2092d8" 403 | integrity sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w== 404 | 405 | chokidar@^3.5.3: 406 | version "3.6.0" 407 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" 408 | integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== 409 | dependencies: 410 | anymatch "~3.1.2" 411 | braces "~3.0.2" 412 | glob-parent "~5.1.2" 413 | is-binary-path "~2.1.0" 414 | is-glob "~4.0.1" 415 | normalize-path "~3.0.0" 416 | readdirp "~3.6.0" 417 | optionalDependencies: 418 | fsevents "~2.3.2" 419 | 420 | cli-cursor@^5.0.0: 421 | version "5.0.0" 422 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-5.0.0.tgz#24a4831ecf5a6b01ddeb32fb71a4b2088b0dce38" 423 | integrity sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw== 424 | dependencies: 425 | restore-cursor "^5.0.0" 426 | 427 | cli-truncate@^4.0.0: 428 | version "4.0.0" 429 | resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-4.0.0.tgz#6cc28a2924fee9e25ce91e973db56c7066e6172a" 430 | integrity sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA== 431 | dependencies: 432 | slice-ansi "^5.0.0" 433 | string-width "^7.0.0" 434 | 435 | cliui@^8.0.1: 436 | version "8.0.1" 437 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" 438 | integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== 439 | dependencies: 440 | string-width "^4.2.0" 441 | strip-ansi "^6.0.1" 442 | wrap-ansi "^7.0.0" 443 | 444 | color-convert@^1.9.0: 445 | version "1.9.3" 446 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 447 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 448 | dependencies: 449 | color-name "1.1.3" 450 | 451 | color-convert@^2.0.1: 452 | version "2.0.1" 453 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 454 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 455 | dependencies: 456 | color-name "~1.1.4" 457 | 458 | color-name@1.1.3: 459 | version "1.1.3" 460 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 461 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 462 | 463 | color-name@~1.1.4: 464 | version "1.1.4" 465 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 466 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 467 | 468 | colorette@^2.0.20: 469 | version "2.0.20" 470 | resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" 471 | integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== 472 | 473 | combined-stream@^1.0.8: 474 | version "1.0.8" 475 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 476 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 477 | dependencies: 478 | delayed-stream "~1.0.0" 479 | 480 | commander@^13.1.0: 481 | version "13.1.0" 482 | resolved "https://registry.yarnpkg.com/commander/-/commander-13.1.0.tgz#776167db68c78f38dcce1f9b8d7b8b9a488abf46" 483 | integrity sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw== 484 | 485 | component-emitter@^1.3.0: 486 | version "1.3.0" 487 | resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" 488 | integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== 489 | 490 | content-disposition@0.5.4: 491 | version "0.5.4" 492 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" 493 | integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== 494 | dependencies: 495 | safe-buffer "5.2.1" 496 | 497 | content-type@~1.0.4: 498 | version "1.0.4" 499 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" 500 | integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== 501 | 502 | content-type@~1.0.5: 503 | version "1.0.5" 504 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" 505 | integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== 506 | 507 | cookie-signature@1.0.6: 508 | version "1.0.6" 509 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 510 | integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= 511 | 512 | cookie@0.7.1: 513 | version "0.7.1" 514 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.1.tgz#2f73c42142d5d5cf71310a74fc4ae61670e5dbc9" 515 | integrity sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w== 516 | 517 | cookiejar@^2.1.4: 518 | version "2.1.4" 519 | resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.4.tgz#ee669c1fea2cf42dc31585469d193fef0d65771b" 520 | integrity sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw== 521 | 522 | create-require@^1.1.0: 523 | version "1.1.1" 524 | resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" 525 | integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== 526 | 527 | cross-spawn@^7.0.3, cross-spawn@^7.0.6: 528 | version "7.0.6" 529 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" 530 | integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== 531 | dependencies: 532 | path-key "^3.1.0" 533 | shebang-command "^2.0.0" 534 | which "^2.0.1" 535 | 536 | data-uri-to-buffer@^4.0.0: 537 | version "4.0.1" 538 | resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e" 539 | integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A== 540 | 541 | debug@2.6.9: 542 | version "2.6.9" 543 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 544 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 545 | dependencies: 546 | ms "2.0.0" 547 | 548 | debug@^4.3.4, debug@^4.3.5, debug@^4.4.0: 549 | version "4.4.0" 550 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" 551 | integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== 552 | dependencies: 553 | ms "^2.1.3" 554 | 555 | decamelize@^4.0.0: 556 | version "4.0.0" 557 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" 558 | integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== 559 | 560 | delayed-stream@~1.0.0: 561 | version "1.0.0" 562 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 563 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= 564 | 565 | depd@2.0.0: 566 | version "2.0.0" 567 | resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" 568 | integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== 569 | 570 | destroy@1.2.0: 571 | version "1.2.0" 572 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" 573 | integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== 574 | 575 | dezalgo@^1.0.4: 576 | version "1.0.4" 577 | resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.4.tgz#751235260469084c132157dfa857f386d4c33d81" 578 | integrity sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig== 579 | dependencies: 580 | asap "^2.0.0" 581 | wrappy "1" 582 | 583 | diff@^4.0.1: 584 | version "4.0.2" 585 | resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" 586 | integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== 587 | 588 | diff@^5.2.0: 589 | version "5.2.0" 590 | resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" 591 | integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== 592 | 593 | dunder-proto@^1.0.1: 594 | version "1.0.1" 595 | resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" 596 | integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== 597 | dependencies: 598 | call-bind-apply-helpers "^1.0.1" 599 | es-errors "^1.3.0" 600 | gopd "^1.2.0" 601 | 602 | eastasianwidth@^0.2.0: 603 | version "0.2.0" 604 | resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" 605 | integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== 606 | 607 | ee-first@1.1.1: 608 | version "1.1.1" 609 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 610 | integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= 611 | 612 | emoji-regex@^10.3.0: 613 | version "10.4.0" 614 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.4.0.tgz#03553afea80b3975749cfcb36f776ca268e413d4" 615 | integrity sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw== 616 | 617 | emoji-regex@^8.0.0: 618 | version "8.0.0" 619 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 620 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 621 | 622 | emoji-regex@^9.2.2: 623 | version "9.2.2" 624 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" 625 | integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== 626 | 627 | encodeurl@~1.0.2: 628 | version "1.0.2" 629 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 630 | integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= 631 | 632 | encodeurl@~2.0.0: 633 | version "2.0.0" 634 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" 635 | integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== 636 | 637 | environment@^1.0.0: 638 | version "1.1.0" 639 | resolved "https://registry.yarnpkg.com/environment/-/environment-1.1.0.tgz#8e86c66b180f363c7ab311787e0259665f45a9f1" 640 | integrity sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q== 641 | 642 | error-ex@^1.3.1: 643 | version "1.3.2" 644 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 645 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 646 | dependencies: 647 | is-arrayish "^0.2.1" 648 | 649 | es-define-property@^1.0.1: 650 | version "1.0.1" 651 | resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" 652 | integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== 653 | 654 | es-errors@^1.3.0: 655 | version "1.3.0" 656 | resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" 657 | integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== 658 | 659 | es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: 660 | version "1.1.1" 661 | resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" 662 | integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== 663 | dependencies: 664 | es-errors "^1.3.0" 665 | 666 | es-set-tostringtag@^2.1.0: 667 | version "2.1.0" 668 | resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" 669 | integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== 670 | dependencies: 671 | es-errors "^1.3.0" 672 | get-intrinsic "^1.2.6" 673 | has-tostringtag "^1.0.2" 674 | hasown "^2.0.2" 675 | 676 | escalade@^3.1.1: 677 | version "3.2.0" 678 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" 679 | integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== 680 | 681 | escape-html@~1.0.3: 682 | version "1.0.3" 683 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 684 | integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= 685 | 686 | escape-string-regexp@^1.0.5: 687 | version "1.0.5" 688 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 689 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 690 | 691 | escape-string-regexp@^4.0.0: 692 | version "4.0.0" 693 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 694 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 695 | 696 | etag@~1.8.1: 697 | version "1.8.1" 698 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" 699 | integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= 700 | 701 | eventemitter3@^5.0.1: 702 | version "5.0.1" 703 | resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" 704 | integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== 705 | 706 | execa@^8.0.1: 707 | version "8.0.1" 708 | resolved "https://registry.yarnpkg.com/execa/-/execa-8.0.1.tgz#51f6a5943b580f963c3ca9c6321796db8cc39b8c" 709 | integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg== 710 | dependencies: 711 | cross-spawn "^7.0.3" 712 | get-stream "^8.0.1" 713 | human-signals "^5.0.0" 714 | is-stream "^3.0.0" 715 | merge-stream "^2.0.0" 716 | npm-run-path "^5.1.0" 717 | onetime "^6.0.0" 718 | signal-exit "^4.1.0" 719 | strip-final-newline "^3.0.0" 720 | 721 | express@^4.21.2: 722 | version "4.21.2" 723 | resolved "https://registry.yarnpkg.com/express/-/express-4.21.2.tgz#cf250e48362174ead6cea4a566abef0162c1ec32" 724 | integrity sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA== 725 | dependencies: 726 | accepts "~1.3.8" 727 | array-flatten "1.1.1" 728 | body-parser "1.20.3" 729 | content-disposition "0.5.4" 730 | content-type "~1.0.4" 731 | cookie "0.7.1" 732 | cookie-signature "1.0.6" 733 | debug "2.6.9" 734 | depd "2.0.0" 735 | encodeurl "~2.0.0" 736 | escape-html "~1.0.3" 737 | etag "~1.8.1" 738 | finalhandler "1.3.1" 739 | fresh "0.5.2" 740 | http-errors "2.0.0" 741 | merge-descriptors "1.0.3" 742 | methods "~1.1.2" 743 | on-finished "2.4.1" 744 | parseurl "~1.3.3" 745 | path-to-regexp "0.1.12" 746 | proxy-addr "~2.0.7" 747 | qs "6.13.0" 748 | range-parser "~1.2.1" 749 | safe-buffer "5.2.1" 750 | send "0.19.0" 751 | serve-static "1.16.2" 752 | setprototypeof "1.2.0" 753 | statuses "2.0.1" 754 | type-is "~1.6.18" 755 | utils-merge "1.0.1" 756 | vary "~1.1.2" 757 | 758 | fast-safe-stringify@^2.1.1: 759 | version "2.1.1" 760 | resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" 761 | integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== 762 | 763 | fetch-blob@^3.1.2, fetch-blob@^3.1.4: 764 | version "3.2.0" 765 | resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.2.0.tgz#f09b8d4bbd45adc6f0c20b7e787e793e309dcce9" 766 | integrity sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ== 767 | dependencies: 768 | node-domexception "^1.0.0" 769 | web-streams-polyfill "^3.0.3" 770 | 771 | fill-range@^7.0.1: 772 | version "7.0.1" 773 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 774 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 775 | dependencies: 776 | to-regex-range "^5.0.1" 777 | 778 | fill-range@^7.1.1: 779 | version "7.1.1" 780 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" 781 | integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== 782 | dependencies: 783 | to-regex-range "^5.0.1" 784 | 785 | finalhandler@1.3.1: 786 | version "1.3.1" 787 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.3.1.tgz#0c575f1d1d324ddd1da35ad7ece3df7d19088019" 788 | integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ== 789 | dependencies: 790 | debug "2.6.9" 791 | encodeurl "~2.0.0" 792 | escape-html "~1.0.3" 793 | on-finished "2.4.1" 794 | parseurl "~1.3.3" 795 | statuses "2.0.1" 796 | unpipe "~1.0.0" 797 | 798 | find-up@^5.0.0: 799 | version "5.0.0" 800 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" 801 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 802 | dependencies: 803 | locate-path "^6.0.0" 804 | path-exists "^4.0.0" 805 | 806 | flat@^5.0.2: 807 | version "5.0.2" 808 | resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" 809 | integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== 810 | 811 | foreground-child@^3.1.0: 812 | version "3.3.1" 813 | resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.1.tgz#32e8e9ed1b68a3497befb9ac2b6adf92a638576f" 814 | integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw== 815 | dependencies: 816 | cross-spawn "^7.0.6" 817 | signal-exit "^4.0.1" 818 | 819 | form-data@^4.0.0: 820 | version "4.0.2" 821 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.2.tgz#35cabbdd30c3ce73deb2c42d3c8d3ed9ca51794c" 822 | integrity sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w== 823 | dependencies: 824 | asynckit "^0.4.0" 825 | combined-stream "^1.0.8" 826 | es-set-tostringtag "^2.1.0" 827 | mime-types "^2.1.12" 828 | 829 | formdata-polyfill@^4.0.10: 830 | version "4.0.10" 831 | resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423" 832 | integrity sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g== 833 | dependencies: 834 | fetch-blob "^3.1.2" 835 | 836 | formidable@^3.5.1: 837 | version "3.5.2" 838 | resolved "https://registry.yarnpkg.com/formidable/-/formidable-3.5.2.tgz#207c33fecdecb22044c82ba59d0c63a12fb81d77" 839 | integrity sha512-Jqc1btCy3QzRbJaICGwKcBfGWuLADRerLzDqi2NwSt/UkXLsHJw2TVResiaoBufHVHy9aSgClOHCeJsSsFLTbg== 840 | dependencies: 841 | dezalgo "^1.0.4" 842 | hexoid "^2.0.0" 843 | once "^1.4.0" 844 | 845 | forwarded@0.2.0: 846 | version "0.2.0" 847 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" 848 | integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== 849 | 850 | fresh@0.5.2: 851 | version "0.5.2" 852 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" 853 | integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= 854 | 855 | fsevents@~2.3.2: 856 | version "2.3.3" 857 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" 858 | integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== 859 | 860 | function-bind@^1.1.1: 861 | version "1.1.1" 862 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 863 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 864 | 865 | function-bind@^1.1.2: 866 | version "1.1.2" 867 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" 868 | integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== 869 | 870 | get-caller-file@^2.0.5: 871 | version "2.0.5" 872 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 873 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 874 | 875 | get-east-asian-width@^1.0.0: 876 | version "1.3.0" 877 | resolved "https://registry.yarnpkg.com/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz#21b4071ee58ed04ee0db653371b55b4299875389" 878 | integrity sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ== 879 | 880 | get-intrinsic@^1.2.5, get-intrinsic@^1.2.6: 881 | version "1.3.0" 882 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" 883 | integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== 884 | dependencies: 885 | call-bind-apply-helpers "^1.0.2" 886 | es-define-property "^1.0.1" 887 | es-errors "^1.3.0" 888 | es-object-atoms "^1.1.1" 889 | function-bind "^1.1.2" 890 | get-proto "^1.0.1" 891 | gopd "^1.2.0" 892 | has-symbols "^1.1.0" 893 | hasown "^2.0.2" 894 | math-intrinsics "^1.1.0" 895 | 896 | get-proto@^1.0.1: 897 | version "1.0.1" 898 | resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" 899 | integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== 900 | dependencies: 901 | dunder-proto "^1.0.1" 902 | es-object-atoms "^1.0.0" 903 | 904 | get-stream@^8.0.1: 905 | version "8.0.1" 906 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2" 907 | integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== 908 | 909 | glob-parent@~5.1.2: 910 | version "5.1.2" 911 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 912 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 913 | dependencies: 914 | is-glob "^4.0.1" 915 | 916 | glob@^10.4.5: 917 | version "10.4.5" 918 | resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" 919 | integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== 920 | dependencies: 921 | foreground-child "^3.1.0" 922 | jackspeak "^3.1.2" 923 | minimatch "^9.0.4" 924 | minipass "^7.1.2" 925 | package-json-from-dist "^1.0.0" 926 | path-scurry "^1.11.1" 927 | 928 | glob@^11.0.0: 929 | version "11.0.1" 930 | resolved "https://registry.yarnpkg.com/glob/-/glob-11.0.1.tgz#1c3aef9a59d680e611b53dcd24bb8639cef064d9" 931 | integrity sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw== 932 | dependencies: 933 | foreground-child "^3.1.0" 934 | jackspeak "^4.0.1" 935 | minimatch "^10.0.0" 936 | minipass "^7.1.2" 937 | package-json-from-dist "^1.0.0" 938 | path-scurry "^2.0.0" 939 | 940 | gopd@^1.2.0: 941 | version "1.2.0" 942 | resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" 943 | integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== 944 | 945 | has-flag@^3.0.0: 946 | version "3.0.0" 947 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 948 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 949 | 950 | has-flag@^4.0.0: 951 | version "4.0.0" 952 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 953 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 954 | 955 | has-symbols@^1.0.3, has-symbols@^1.1.0: 956 | version "1.1.0" 957 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" 958 | integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== 959 | 960 | has-tostringtag@^1.0.2: 961 | version "1.0.2" 962 | resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" 963 | integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== 964 | dependencies: 965 | has-symbols "^1.0.3" 966 | 967 | has@^1.0.3: 968 | version "1.0.3" 969 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 970 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 971 | dependencies: 972 | function-bind "^1.1.1" 973 | 974 | hasown@^2.0.2: 975 | version "2.0.2" 976 | resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" 977 | integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== 978 | dependencies: 979 | function-bind "^1.1.2" 980 | 981 | he@^1.2.0: 982 | version "1.2.0" 983 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" 984 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 985 | 986 | hexoid@^2.0.0: 987 | version "2.0.0" 988 | resolved "https://registry.yarnpkg.com/hexoid/-/hexoid-2.0.0.tgz#fb36c740ebbf364403fa1ec0c7efd268460ec5b9" 989 | integrity sha512-qlspKUK7IlSQv2o+5I7yhUd7TxlOG2Vr5LTa3ve2XSNVKAL/n/u/7KLvKmFNimomDIKvZFXWHv0T12mv7rT8Aw== 990 | 991 | hosted-git-info@^2.1.4: 992 | version "2.8.8" 993 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" 994 | integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== 995 | 996 | http-errors@2.0.0: 997 | version "2.0.0" 998 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" 999 | integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== 1000 | dependencies: 1001 | depd "2.0.0" 1002 | inherits "2.0.4" 1003 | setprototypeof "1.2.0" 1004 | statuses "2.0.1" 1005 | toidentifier "1.0.1" 1006 | 1007 | human-signals@^5.0.0: 1008 | version "5.0.0" 1009 | resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28" 1010 | integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== 1011 | 1012 | iconv-lite@0.4.24: 1013 | version "0.4.24" 1014 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 1015 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 1016 | dependencies: 1017 | safer-buffer ">= 2.1.2 < 3" 1018 | 1019 | inherits@2.0.4: 1020 | version "2.0.4" 1021 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1022 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1023 | 1024 | ipaddr.js@1.9.1: 1025 | version "1.9.1" 1026 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" 1027 | integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== 1028 | 1029 | is-arrayish@^0.2.1: 1030 | version "0.2.1" 1031 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 1032 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= 1033 | 1034 | is-binary-path@~2.1.0: 1035 | version "2.1.0" 1036 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 1037 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 1038 | dependencies: 1039 | binary-extensions "^2.0.0" 1040 | 1041 | is-core-module@^2.1.0: 1042 | version "2.2.0" 1043 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" 1044 | integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== 1045 | dependencies: 1046 | has "^1.0.3" 1047 | 1048 | is-extglob@^2.1.1: 1049 | version "2.1.1" 1050 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1051 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 1052 | 1053 | is-fullwidth-code-point@^3.0.0: 1054 | version "3.0.0" 1055 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 1056 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 1057 | 1058 | is-fullwidth-code-point@^4.0.0: 1059 | version "4.0.0" 1060 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88" 1061 | integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== 1062 | 1063 | is-fullwidth-code-point@^5.0.0: 1064 | version "5.0.0" 1065 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz#9609efced7c2f97da7b60145ef481c787c7ba704" 1066 | integrity sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA== 1067 | dependencies: 1068 | get-east-asian-width "^1.0.0" 1069 | 1070 | is-glob@^4.0.1, is-glob@~4.0.1: 1071 | version "4.0.1" 1072 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 1073 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 1074 | dependencies: 1075 | is-extglob "^2.1.1" 1076 | 1077 | is-number@^7.0.0: 1078 | version "7.0.0" 1079 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 1080 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 1081 | 1082 | is-plain-obj@^2.1.0: 1083 | version "2.1.0" 1084 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" 1085 | integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== 1086 | 1087 | is-stream@^3.0.0: 1088 | version "3.0.0" 1089 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" 1090 | integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== 1091 | 1092 | is-unicode-supported@^0.1.0: 1093 | version "0.1.0" 1094 | resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" 1095 | integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== 1096 | 1097 | isexe@^2.0.0: 1098 | version "2.0.0" 1099 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1100 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 1101 | 1102 | jackspeak@^3.1.2: 1103 | version "3.4.3" 1104 | resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" 1105 | integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== 1106 | dependencies: 1107 | "@isaacs/cliui" "^8.0.2" 1108 | optionalDependencies: 1109 | "@pkgjs/parseargs" "^0.11.0" 1110 | 1111 | jackspeak@^4.0.1: 1112 | version "4.1.0" 1113 | resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-4.1.0.tgz#c489c079f2b636dc4cbe9b0312a13ff1282e561b" 1114 | integrity sha512-9DDdhb5j6cpeitCbvLO7n7J4IxnbM6hoF6O1g4HQ5TfhvvKN8ywDM7668ZhMHRqVmxqhps/F6syWK2KcPxYlkw== 1115 | dependencies: 1116 | "@isaacs/cliui" "^8.0.2" 1117 | 1118 | js-tokens@^4.0.0: 1119 | version "4.0.0" 1120 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1121 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1122 | 1123 | js-yaml@^4.1.0: 1124 | version "4.1.0" 1125 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" 1126 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 1127 | dependencies: 1128 | argparse "^2.0.1" 1129 | 1130 | json-parse-even-better-errors@^2.3.0: 1131 | version "2.3.1" 1132 | resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" 1133 | integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== 1134 | 1135 | lilconfig@^3.1.3: 1136 | version "3.1.3" 1137 | resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.3.tgz#a1bcfd6257f9585bf5ae14ceeebb7b559025e4c4" 1138 | integrity sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw== 1139 | 1140 | lines-and-columns@^1.1.6: 1141 | version "1.1.6" 1142 | resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" 1143 | integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= 1144 | 1145 | lint-staged@^15.4.3: 1146 | version "15.4.3" 1147 | resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-15.4.3.tgz#e73587cc857f580c99f907abefe9ac8d8d5e74c1" 1148 | integrity sha512-FoH1vOeouNh1pw+90S+cnuoFwRfUD9ijY2GKy5h7HS3OR7JVir2N2xrsa0+Twc1B7cW72L+88geG5cW4wIhn7g== 1149 | dependencies: 1150 | chalk "^5.4.1" 1151 | commander "^13.1.0" 1152 | debug "^4.4.0" 1153 | execa "^8.0.1" 1154 | lilconfig "^3.1.3" 1155 | listr2 "^8.2.5" 1156 | micromatch "^4.0.8" 1157 | pidtree "^0.6.0" 1158 | string-argv "^0.3.2" 1159 | yaml "^2.7.0" 1160 | 1161 | listr2@^8.2.5: 1162 | version "8.2.5" 1163 | resolved "https://registry.yarnpkg.com/listr2/-/listr2-8.2.5.tgz#5c9db996e1afeb05db0448196d3d5f64fec2593d" 1164 | integrity sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ== 1165 | dependencies: 1166 | cli-truncate "^4.0.0" 1167 | colorette "^2.0.20" 1168 | eventemitter3 "^5.0.1" 1169 | log-update "^6.1.0" 1170 | rfdc "^1.4.1" 1171 | wrap-ansi "^9.0.0" 1172 | 1173 | locate-path@^6.0.0: 1174 | version "6.0.0" 1175 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" 1176 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 1177 | dependencies: 1178 | p-locate "^5.0.0" 1179 | 1180 | log-symbols@^4.1.0: 1181 | version "4.1.0" 1182 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" 1183 | integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== 1184 | dependencies: 1185 | chalk "^4.1.0" 1186 | is-unicode-supported "^0.1.0" 1187 | 1188 | log-update@^6.1.0: 1189 | version "6.1.0" 1190 | resolved "https://registry.yarnpkg.com/log-update/-/log-update-6.1.0.tgz#1a04ff38166f94647ae1af562f4bd6a15b1b7cd4" 1191 | integrity sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w== 1192 | dependencies: 1193 | ansi-escapes "^7.0.0" 1194 | cli-cursor "^5.0.0" 1195 | slice-ansi "^7.1.0" 1196 | strip-ansi "^7.1.0" 1197 | wrap-ansi "^9.0.0" 1198 | 1199 | lru-cache@^10.2.0: 1200 | version "10.4.3" 1201 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" 1202 | integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== 1203 | 1204 | lru-cache@^11.0.0: 1205 | version "11.0.2" 1206 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.0.2.tgz#fbd8e7cf8211f5e7e5d91905c415a3f55755ca39" 1207 | integrity sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA== 1208 | 1209 | make-error@^1.1.1: 1210 | version "1.3.6" 1211 | resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" 1212 | integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== 1213 | 1214 | math-intrinsics@^1.1.0: 1215 | version "1.1.0" 1216 | resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" 1217 | integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== 1218 | 1219 | media-typer@0.3.0: 1220 | version "0.3.0" 1221 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 1222 | integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= 1223 | 1224 | merge-descriptors@1.0.3: 1225 | version "1.0.3" 1226 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5" 1227 | integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== 1228 | 1229 | merge-stream@^2.0.0: 1230 | version "2.0.0" 1231 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 1232 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 1233 | 1234 | methods@^1.1.2, methods@~1.1.2: 1235 | version "1.1.2" 1236 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 1237 | integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= 1238 | 1239 | micromatch@^4.0.8: 1240 | version "4.0.8" 1241 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" 1242 | integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== 1243 | dependencies: 1244 | braces "^3.0.3" 1245 | picomatch "^2.3.1" 1246 | 1247 | mime-db@1.45.0: 1248 | version "1.45.0" 1249 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea" 1250 | integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w== 1251 | 1252 | mime-db@1.52.0: 1253 | version "1.52.0" 1254 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" 1255 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== 1256 | 1257 | mime-types@^2.1.12, mime-types@~2.1.24: 1258 | version "2.1.28" 1259 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.28.tgz#1160c4757eab2c5363888e005273ecf79d2a0ecd" 1260 | integrity sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ== 1261 | dependencies: 1262 | mime-db "1.45.0" 1263 | 1264 | mime-types@~2.1.34: 1265 | version "2.1.35" 1266 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" 1267 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== 1268 | dependencies: 1269 | mime-db "1.52.0" 1270 | 1271 | mime@1.6.0: 1272 | version "1.6.0" 1273 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 1274 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 1275 | 1276 | mime@2.6.0: 1277 | version "2.6.0" 1278 | resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" 1279 | integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== 1280 | 1281 | mimic-fn@^4.0.0: 1282 | version "4.0.0" 1283 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" 1284 | integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== 1285 | 1286 | mimic-function@^5.0.0: 1287 | version "5.0.1" 1288 | resolved "https://registry.yarnpkg.com/mimic-function/-/mimic-function-5.0.1.tgz#acbe2b3349f99b9deaca7fb70e48b83e94e67076" 1289 | integrity sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA== 1290 | 1291 | minimatch@^10.0.0: 1292 | version "10.0.1" 1293 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.0.1.tgz#ce0521856b453c86e25f2c4c0d03e6ff7ddc440b" 1294 | integrity sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ== 1295 | dependencies: 1296 | brace-expansion "^2.0.1" 1297 | 1298 | minimatch@^5.1.6: 1299 | version "5.1.6" 1300 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" 1301 | integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== 1302 | dependencies: 1303 | brace-expansion "^2.0.1" 1304 | 1305 | minimatch@^9.0.4: 1306 | version "9.0.5" 1307 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" 1308 | integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== 1309 | dependencies: 1310 | brace-expansion "^2.0.1" 1311 | 1312 | "minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: 1313 | version "7.1.2" 1314 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" 1315 | integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== 1316 | 1317 | mocha@^11.1.0: 1318 | version "11.1.0" 1319 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-11.1.0.tgz#20d7c6ac4d6d6bcb60a8aa47971fca74c65c3c66" 1320 | integrity sha512-8uJR5RTC2NgpY3GrYcgpZrsEd9zKbPDpob1RezyR2upGHRQtHWofmzTMzTMSV6dru3tj5Ukt0+Vnq1qhFEEwAg== 1321 | dependencies: 1322 | ansi-colors "^4.1.3" 1323 | browser-stdout "^1.3.1" 1324 | chokidar "^3.5.3" 1325 | debug "^4.3.5" 1326 | diff "^5.2.0" 1327 | escape-string-regexp "^4.0.0" 1328 | find-up "^5.0.0" 1329 | glob "^10.4.5" 1330 | he "^1.2.0" 1331 | js-yaml "^4.1.0" 1332 | log-symbols "^4.1.0" 1333 | minimatch "^5.1.6" 1334 | ms "^2.1.3" 1335 | serialize-javascript "^6.0.2" 1336 | strip-json-comments "^3.1.1" 1337 | supports-color "^8.1.1" 1338 | workerpool "^6.5.1" 1339 | yargs "^17.7.2" 1340 | yargs-parser "^21.1.1" 1341 | yargs-unparser "^2.0.0" 1342 | 1343 | ms@2.0.0: 1344 | version "2.0.0" 1345 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1346 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 1347 | 1348 | ms@2.1.3, ms@^2.1.3: 1349 | version "2.1.3" 1350 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 1351 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 1352 | 1353 | negotiator@0.6.3: 1354 | version "0.6.3" 1355 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" 1356 | integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== 1357 | 1358 | node-domexception@^1.0.0: 1359 | version "1.0.0" 1360 | resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" 1361 | integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== 1362 | 1363 | node-fetch@^3.3.2: 1364 | version "3.3.2" 1365 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.2.tgz#d1e889bacdf733b4ff3b2b243eb7a12866a0b78b" 1366 | integrity sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA== 1367 | dependencies: 1368 | data-uri-to-buffer "^4.0.0" 1369 | fetch-blob "^3.1.4" 1370 | formdata-polyfill "^4.0.10" 1371 | 1372 | normalize-package-data@^2.5.0: 1373 | version "2.5.0" 1374 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" 1375 | integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== 1376 | dependencies: 1377 | hosted-git-info "^2.1.4" 1378 | resolve "^1.10.0" 1379 | semver "2 || 3 || 4 || 5" 1380 | validate-npm-package-license "^3.0.1" 1381 | 1382 | normalize-path@^3.0.0, normalize-path@~3.0.0: 1383 | version "3.0.0" 1384 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 1385 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 1386 | 1387 | npm-run-path@^5.1.0: 1388 | version "5.3.0" 1389 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.3.0.tgz#e23353d0ebb9317f174e93417e4a4d82d0249e9f" 1390 | integrity sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ== 1391 | dependencies: 1392 | path-key "^4.0.0" 1393 | 1394 | object-inspect@^1.13.3: 1395 | version "1.13.4" 1396 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" 1397 | integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== 1398 | 1399 | on-finished@2.4.1: 1400 | version "2.4.1" 1401 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" 1402 | integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== 1403 | dependencies: 1404 | ee-first "1.1.1" 1405 | 1406 | once@^1.4.0: 1407 | version "1.4.0" 1408 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1409 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1410 | dependencies: 1411 | wrappy "1" 1412 | 1413 | onetime@^6.0.0: 1414 | version "6.0.0" 1415 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" 1416 | integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== 1417 | dependencies: 1418 | mimic-fn "^4.0.0" 1419 | 1420 | onetime@^7.0.0: 1421 | version "7.0.0" 1422 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-7.0.0.tgz#9f16c92d8c9ef5120e3acd9dd9957cceecc1ab60" 1423 | integrity sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ== 1424 | dependencies: 1425 | mimic-function "^5.0.0" 1426 | 1427 | p-limit@^3.0.2: 1428 | version "3.1.0" 1429 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 1430 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 1431 | dependencies: 1432 | yocto-queue "^0.1.0" 1433 | 1434 | p-locate@^5.0.0: 1435 | version "5.0.0" 1436 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" 1437 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 1438 | dependencies: 1439 | p-limit "^3.0.2" 1440 | 1441 | package-json-from-dist@^1.0.0: 1442 | version "1.0.1" 1443 | resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" 1444 | integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== 1445 | 1446 | parse-json@^5.0.0: 1447 | version "5.2.0" 1448 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" 1449 | integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== 1450 | dependencies: 1451 | "@babel/code-frame" "^7.0.0" 1452 | error-ex "^1.3.1" 1453 | json-parse-even-better-errors "^2.3.0" 1454 | lines-and-columns "^1.1.6" 1455 | 1456 | parseurl@~1.3.3: 1457 | version "1.3.3" 1458 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" 1459 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== 1460 | 1461 | path-exists@^4.0.0: 1462 | version "4.0.0" 1463 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 1464 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 1465 | 1466 | path-key@^3.1.0: 1467 | version "3.1.1" 1468 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1469 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1470 | 1471 | path-key@^4.0.0: 1472 | version "4.0.0" 1473 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" 1474 | integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== 1475 | 1476 | path-parse@^1.0.6: 1477 | version "1.0.6" 1478 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 1479 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== 1480 | 1481 | path-scurry@^1.11.1: 1482 | version "1.11.1" 1483 | resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" 1484 | integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== 1485 | dependencies: 1486 | lru-cache "^10.2.0" 1487 | minipass "^5.0.0 || ^6.0.2 || ^7.0.0" 1488 | 1489 | path-scurry@^2.0.0: 1490 | version "2.0.0" 1491 | resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-2.0.0.tgz#9f052289f23ad8bf9397a2a0425e7b8615c58580" 1492 | integrity sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg== 1493 | dependencies: 1494 | lru-cache "^11.0.0" 1495 | minipass "^7.1.2" 1496 | 1497 | path-to-regexp@0.1.12: 1498 | version "0.1.12" 1499 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.12.tgz#d5e1a12e478a976d432ef3c58d534b9923164bb7" 1500 | integrity sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ== 1501 | 1502 | picomatch@^2.0.4, picomatch@^2.2.1: 1503 | version "2.2.2" 1504 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" 1505 | integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== 1506 | 1507 | picomatch@^2.3.1: 1508 | version "2.3.1" 1509 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 1510 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 1511 | 1512 | pidtree@^0.6.0: 1513 | version "0.6.0" 1514 | resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.6.0.tgz#90ad7b6d42d5841e69e0a2419ef38f8883aa057c" 1515 | integrity sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g== 1516 | 1517 | prettier@^3.5.2: 1518 | version "3.5.2" 1519 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.5.2.tgz#d066c6053200da0234bf8fa1ef45168abed8b914" 1520 | integrity sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg== 1521 | 1522 | proxy-addr@~2.0.7: 1523 | version "2.0.7" 1524 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" 1525 | integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== 1526 | dependencies: 1527 | forwarded "0.2.0" 1528 | ipaddr.js "1.9.1" 1529 | 1530 | qs@6.13.0: 1531 | version "6.13.0" 1532 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906" 1533 | integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg== 1534 | dependencies: 1535 | side-channel "^1.0.6" 1536 | 1537 | qs@^6.11.0: 1538 | version "6.14.0" 1539 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.0.tgz#c63fa40680d2c5c941412a0e899c89af60c0a930" 1540 | integrity sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w== 1541 | dependencies: 1542 | side-channel "^1.1.0" 1543 | 1544 | randombytes@^2.1.0: 1545 | version "2.1.0" 1546 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" 1547 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 1548 | dependencies: 1549 | safe-buffer "^5.1.0" 1550 | 1551 | range-parser@~1.2.1: 1552 | version "1.2.1" 1553 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" 1554 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== 1555 | 1556 | raw-body@2.5.2: 1557 | version "2.5.2" 1558 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" 1559 | integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== 1560 | dependencies: 1561 | bytes "3.1.2" 1562 | http-errors "2.0.0" 1563 | iconv-lite "0.4.24" 1564 | unpipe "1.0.0" 1565 | 1566 | read-pkg@^5.2.0: 1567 | version "5.2.0" 1568 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" 1569 | integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== 1570 | dependencies: 1571 | "@types/normalize-package-data" "^2.4.0" 1572 | normalize-package-data "^2.5.0" 1573 | parse-json "^5.0.0" 1574 | type-fest "^0.6.0" 1575 | 1576 | readdirp@~3.6.0: 1577 | version "3.6.0" 1578 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 1579 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 1580 | dependencies: 1581 | picomatch "^2.2.1" 1582 | 1583 | require-directory@^2.1.1: 1584 | version "2.1.1" 1585 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 1586 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 1587 | 1588 | resolve@^1.10.0: 1589 | version "1.19.0" 1590 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" 1591 | integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== 1592 | dependencies: 1593 | is-core-module "^2.1.0" 1594 | path-parse "^1.0.6" 1595 | 1596 | restore-cursor@^5.0.0: 1597 | version "5.1.0" 1598 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-5.1.0.tgz#0766d95699efacb14150993f55baf0953ea1ebe7" 1599 | integrity sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA== 1600 | dependencies: 1601 | onetime "^7.0.0" 1602 | signal-exit "^4.1.0" 1603 | 1604 | rfdc@^1.4.1: 1605 | version "1.4.1" 1606 | resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.4.1.tgz#778f76c4fb731d93414e8f925fbecf64cce7f6ca" 1607 | integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA== 1608 | 1609 | rimraf@^6.0.1: 1610 | version "6.0.1" 1611 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-6.0.1.tgz#ffb8ad8844dd60332ab15f52bc104bc3ed71ea4e" 1612 | integrity sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A== 1613 | dependencies: 1614 | glob "^11.0.0" 1615 | package-json-from-dist "^1.0.0" 1616 | 1617 | safe-buffer@5.2.1, safe-buffer@^5.1.0: 1618 | version "5.2.1" 1619 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1620 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1621 | 1622 | "safer-buffer@>= 2.1.2 < 3": 1623 | version "2.1.2" 1624 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1625 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1626 | 1627 | "semver@2 || 3 || 4 || 5": 1628 | version "5.7.1" 1629 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 1630 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 1631 | 1632 | send@0.19.0: 1633 | version "0.19.0" 1634 | resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8" 1635 | integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw== 1636 | dependencies: 1637 | debug "2.6.9" 1638 | depd "2.0.0" 1639 | destroy "1.2.0" 1640 | encodeurl "~1.0.2" 1641 | escape-html "~1.0.3" 1642 | etag "~1.8.1" 1643 | fresh "0.5.2" 1644 | http-errors "2.0.0" 1645 | mime "1.6.0" 1646 | ms "2.1.3" 1647 | on-finished "2.4.1" 1648 | range-parser "~1.2.1" 1649 | statuses "2.0.1" 1650 | 1651 | serialize-javascript@^6.0.2: 1652 | version "6.0.2" 1653 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" 1654 | integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== 1655 | dependencies: 1656 | randombytes "^2.1.0" 1657 | 1658 | serve-static@1.16.2: 1659 | version "1.16.2" 1660 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.2.tgz#b6a5343da47f6bdd2673848bf45754941e803296" 1661 | integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw== 1662 | dependencies: 1663 | encodeurl "~2.0.0" 1664 | escape-html "~1.0.3" 1665 | parseurl "~1.3.3" 1666 | send "0.19.0" 1667 | 1668 | setprototypeof@1.2.0: 1669 | version "1.2.0" 1670 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" 1671 | integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== 1672 | 1673 | shebang-command@^2.0.0: 1674 | version "2.0.0" 1675 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1676 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1677 | dependencies: 1678 | shebang-regex "^3.0.0" 1679 | 1680 | shebang-regex@^3.0.0: 1681 | version "3.0.0" 1682 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1683 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1684 | 1685 | side-channel-list@^1.0.0: 1686 | version "1.0.0" 1687 | resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad" 1688 | integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA== 1689 | dependencies: 1690 | es-errors "^1.3.0" 1691 | object-inspect "^1.13.3" 1692 | 1693 | side-channel-map@^1.0.1: 1694 | version "1.0.1" 1695 | resolved "https://registry.yarnpkg.com/side-channel-map/-/side-channel-map-1.0.1.tgz#d6bb6b37902c6fef5174e5f533fab4c732a26f42" 1696 | integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== 1697 | dependencies: 1698 | call-bound "^1.0.2" 1699 | es-errors "^1.3.0" 1700 | get-intrinsic "^1.2.5" 1701 | object-inspect "^1.13.3" 1702 | 1703 | side-channel-weakmap@^1.0.2: 1704 | version "1.0.2" 1705 | resolved "https://registry.yarnpkg.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz#11dda19d5368e40ce9ec2bdc1fb0ecbc0790ecea" 1706 | integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== 1707 | dependencies: 1708 | call-bound "^1.0.2" 1709 | es-errors "^1.3.0" 1710 | get-intrinsic "^1.2.5" 1711 | object-inspect "^1.13.3" 1712 | side-channel-map "^1.0.1" 1713 | 1714 | side-channel@^1.0.6, side-channel@^1.1.0: 1715 | version "1.1.0" 1716 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9" 1717 | integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== 1718 | dependencies: 1719 | es-errors "^1.3.0" 1720 | object-inspect "^1.13.3" 1721 | side-channel-list "^1.0.0" 1722 | side-channel-map "^1.0.1" 1723 | side-channel-weakmap "^1.0.2" 1724 | 1725 | signal-exit@^4.0.1, signal-exit@^4.1.0: 1726 | version "4.1.0" 1727 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" 1728 | integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== 1729 | 1730 | slice-ansi@^5.0.0: 1731 | version "5.0.0" 1732 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-5.0.0.tgz#b73063c57aa96f9cd881654b15294d95d285c42a" 1733 | integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ== 1734 | dependencies: 1735 | ansi-styles "^6.0.0" 1736 | is-fullwidth-code-point "^4.0.0" 1737 | 1738 | slice-ansi@^7.1.0: 1739 | version "7.1.0" 1740 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-7.1.0.tgz#cd6b4655e298a8d1bdeb04250a433094b347b9a9" 1741 | integrity sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg== 1742 | dependencies: 1743 | ansi-styles "^6.2.1" 1744 | is-fullwidth-code-point "^5.0.0" 1745 | 1746 | spdx-correct@^3.0.0: 1747 | version "3.1.1" 1748 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" 1749 | integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== 1750 | dependencies: 1751 | spdx-expression-parse "^3.0.0" 1752 | spdx-license-ids "^3.0.0" 1753 | 1754 | spdx-exceptions@^2.1.0: 1755 | version "2.3.0" 1756 | resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" 1757 | integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== 1758 | 1759 | spdx-expression-parse@^3.0.0: 1760 | version "3.0.1" 1761 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" 1762 | integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== 1763 | dependencies: 1764 | spdx-exceptions "^2.1.0" 1765 | spdx-license-ids "^3.0.0" 1766 | 1767 | spdx-license-ids@^3.0.0: 1768 | version "3.0.7" 1769 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65" 1770 | integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ== 1771 | 1772 | statuses@2.0.1: 1773 | version "2.0.1" 1774 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" 1775 | integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== 1776 | 1777 | string-argv@^0.3.2: 1778 | version "0.3.2" 1779 | resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6" 1780 | integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== 1781 | 1782 | "string-width-cjs@npm:string-width@^4.2.0": 1783 | version "4.2.3" 1784 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 1785 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1786 | dependencies: 1787 | emoji-regex "^8.0.0" 1788 | is-fullwidth-code-point "^3.0.0" 1789 | strip-ansi "^6.0.1" 1790 | 1791 | string-width@^4.1.0, string-width@^4.2.0: 1792 | version "4.2.0" 1793 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" 1794 | integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== 1795 | dependencies: 1796 | emoji-regex "^8.0.0" 1797 | is-fullwidth-code-point "^3.0.0" 1798 | strip-ansi "^6.0.0" 1799 | 1800 | string-width@^4.2.3: 1801 | version "4.2.3" 1802 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 1803 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1804 | dependencies: 1805 | emoji-regex "^8.0.0" 1806 | is-fullwidth-code-point "^3.0.0" 1807 | strip-ansi "^6.0.1" 1808 | 1809 | string-width@^5.0.1, string-width@^5.1.2: 1810 | version "5.1.2" 1811 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" 1812 | integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== 1813 | dependencies: 1814 | eastasianwidth "^0.2.0" 1815 | emoji-regex "^9.2.2" 1816 | strip-ansi "^7.0.1" 1817 | 1818 | string-width@^7.0.0: 1819 | version "7.2.0" 1820 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-7.2.0.tgz#b5bb8e2165ce275d4d43476dd2700ad9091db6dc" 1821 | integrity sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ== 1822 | dependencies: 1823 | emoji-regex "^10.3.0" 1824 | get-east-asian-width "^1.0.0" 1825 | strip-ansi "^7.1.0" 1826 | 1827 | "strip-ansi-cjs@npm:strip-ansi@^6.0.1": 1828 | version "6.0.1" 1829 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 1830 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1831 | dependencies: 1832 | ansi-regex "^5.0.1" 1833 | 1834 | strip-ansi@^6.0.0: 1835 | version "6.0.0" 1836 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 1837 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== 1838 | dependencies: 1839 | ansi-regex "^5.0.0" 1840 | 1841 | strip-ansi@^6.0.1: 1842 | version "6.0.1" 1843 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 1844 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1845 | dependencies: 1846 | ansi-regex "^5.0.1" 1847 | 1848 | strip-ansi@^7.0.1, strip-ansi@^7.1.0: 1849 | version "7.1.0" 1850 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" 1851 | integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== 1852 | dependencies: 1853 | ansi-regex "^6.0.1" 1854 | 1855 | strip-final-newline@^3.0.0: 1856 | version "3.0.0" 1857 | resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" 1858 | integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== 1859 | 1860 | strip-json-comments@^3.1.1: 1861 | version "3.1.1" 1862 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 1863 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1864 | 1865 | superagent@^9.0.1: 1866 | version "9.0.2" 1867 | resolved "https://registry.yarnpkg.com/superagent/-/superagent-9.0.2.tgz#a18799473fc57557289d6b63960610e358bdebc1" 1868 | integrity sha512-xuW7dzkUpcJq7QnhOsnNUgtYp3xRwpt2F7abdRYIpCsAt0hhUqia0EdxyXZQQpNmGtsCzYHryaKSV3q3GJnq7w== 1869 | dependencies: 1870 | component-emitter "^1.3.0" 1871 | cookiejar "^2.1.4" 1872 | debug "^4.3.4" 1873 | fast-safe-stringify "^2.1.1" 1874 | form-data "^4.0.0" 1875 | formidable "^3.5.1" 1876 | methods "^1.1.2" 1877 | mime "2.6.0" 1878 | qs "^6.11.0" 1879 | 1880 | supertest@^7.0.0: 1881 | version "7.0.0" 1882 | resolved "https://registry.yarnpkg.com/supertest/-/supertest-7.0.0.tgz#cac53b3d6872a0b317980b2b0cfa820f09cd7634" 1883 | integrity sha512-qlsr7fIC0lSddmA3tzojvzubYxvlGtzumcdHgPwbFWMISQwL22MhM2Y3LNt+6w9Yyx7559VW5ab70dgphm8qQA== 1884 | dependencies: 1885 | methods "^1.1.2" 1886 | superagent "^9.0.1" 1887 | 1888 | supports-color@^5.3.0: 1889 | version "5.5.0" 1890 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1891 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1892 | dependencies: 1893 | has-flag "^3.0.0" 1894 | 1895 | supports-color@^7.1.0: 1896 | version "7.2.0" 1897 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1898 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1899 | dependencies: 1900 | has-flag "^4.0.0" 1901 | 1902 | supports-color@^8.1.1: 1903 | version "8.1.1" 1904 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" 1905 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== 1906 | dependencies: 1907 | has-flag "^4.0.0" 1908 | 1909 | to-regex-range@^5.0.1: 1910 | version "5.0.1" 1911 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1912 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1913 | dependencies: 1914 | is-number "^7.0.0" 1915 | 1916 | toidentifier@1.0.1: 1917 | version "1.0.1" 1918 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" 1919 | integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== 1920 | 1921 | ts-node-test-register@^10.0.0: 1922 | version "10.0.0" 1923 | resolved "https://registry.yarnpkg.com/ts-node-test-register/-/ts-node-test-register-10.0.0.tgz#eb8cbe40954331f2f70c8e5fb83c677965ac14f9" 1924 | integrity sha512-W8yzvufsG7/ulT65G1D218HMPf6uduojDXuSrGAaakkZlUtuLC+3pxphDktBe/N9w5Gi7teAxKCaTpBH5p6fkQ== 1925 | dependencies: 1926 | read-pkg "^5.2.0" 1927 | 1928 | ts-node@^10.9.2: 1929 | version "10.9.2" 1930 | resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" 1931 | integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== 1932 | dependencies: 1933 | "@cspotcode/source-map-support" "^0.8.0" 1934 | "@tsconfig/node10" "^1.0.7" 1935 | "@tsconfig/node12" "^1.0.7" 1936 | "@tsconfig/node14" "^1.0.0" 1937 | "@tsconfig/node16" "^1.0.2" 1938 | acorn "^8.4.1" 1939 | acorn-walk "^8.1.1" 1940 | arg "^4.1.0" 1941 | create-require "^1.1.0" 1942 | diff "^4.0.1" 1943 | make-error "^1.1.1" 1944 | v8-compile-cache-lib "^3.0.1" 1945 | yn "3.1.1" 1946 | 1947 | type-fest@^0.6.0: 1948 | version "0.6.0" 1949 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" 1950 | integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== 1951 | 1952 | type-is@~1.6.18: 1953 | version "1.6.18" 1954 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" 1955 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== 1956 | dependencies: 1957 | media-typer "0.3.0" 1958 | mime-types "~2.1.24" 1959 | 1960 | typescript@^5.8.2: 1961 | version "5.8.2" 1962 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.2.tgz#8170b3702f74b79db2e5a96207c15e65807999e4" 1963 | integrity sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ== 1964 | 1965 | undici-types@~6.20.0: 1966 | version "6.20.0" 1967 | resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433" 1968 | integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg== 1969 | 1970 | unpipe@1.0.0, unpipe@~1.0.0: 1971 | version "1.0.0" 1972 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 1973 | integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= 1974 | 1975 | utils-merge@1.0.1: 1976 | version "1.0.1" 1977 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" 1978 | integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= 1979 | 1980 | v8-compile-cache-lib@^3.0.1: 1981 | version "3.0.1" 1982 | resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" 1983 | integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== 1984 | 1985 | validate-npm-package-license@^3.0.1: 1986 | version "3.0.4" 1987 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" 1988 | integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== 1989 | dependencies: 1990 | spdx-correct "^3.0.0" 1991 | spdx-expression-parse "^3.0.0" 1992 | 1993 | vary@~1.1.2: 1994 | version "1.1.2" 1995 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" 1996 | integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= 1997 | 1998 | web-streams-polyfill@^3.0.3: 1999 | version "3.3.3" 2000 | resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz#2073b91a2fdb1fbfbd401e7de0ac9f8214cecb4b" 2001 | integrity sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw== 2002 | 2003 | which@^2.0.1: 2004 | version "2.0.2" 2005 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 2006 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 2007 | dependencies: 2008 | isexe "^2.0.0" 2009 | 2010 | workerpool@^6.5.1: 2011 | version "6.5.1" 2012 | resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.5.1.tgz#060f73b39d0caf97c6db64da004cd01b4c099544" 2013 | integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA== 2014 | 2015 | "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": 2016 | version "7.0.0" 2017 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 2018 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 2019 | dependencies: 2020 | ansi-styles "^4.0.0" 2021 | string-width "^4.1.0" 2022 | strip-ansi "^6.0.0" 2023 | 2024 | wrap-ansi@^7.0.0: 2025 | version "7.0.0" 2026 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 2027 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 2028 | dependencies: 2029 | ansi-styles "^4.0.0" 2030 | string-width "^4.1.0" 2031 | strip-ansi "^6.0.0" 2032 | 2033 | wrap-ansi@^8.1.0: 2034 | version "8.1.0" 2035 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" 2036 | integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== 2037 | dependencies: 2038 | ansi-styles "^6.1.0" 2039 | string-width "^5.0.1" 2040 | strip-ansi "^7.0.1" 2041 | 2042 | wrap-ansi@^9.0.0: 2043 | version "9.0.0" 2044 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-9.0.0.tgz#1a3dc8b70d85eeb8398ddfb1e4a02cd186e58b3e" 2045 | integrity sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q== 2046 | dependencies: 2047 | ansi-styles "^6.2.1" 2048 | string-width "^7.0.0" 2049 | strip-ansi "^7.1.0" 2050 | 2051 | wrappy@1: 2052 | version "1.0.2" 2053 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2054 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 2055 | 2056 | y18n@^5.0.5: 2057 | version "5.0.8" 2058 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 2059 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 2060 | 2061 | yaml@^2.7.0: 2062 | version "2.7.0" 2063 | resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.7.0.tgz#aef9bb617a64c937a9a748803786ad8d3ffe1e98" 2064 | integrity sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA== 2065 | 2066 | yargs-parser@^21.1.1: 2067 | version "21.1.1" 2068 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" 2069 | integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== 2070 | 2071 | yargs-unparser@^2.0.0: 2072 | version "2.0.0" 2073 | resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" 2074 | integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== 2075 | dependencies: 2076 | camelcase "^6.0.0" 2077 | decamelize "^4.0.0" 2078 | flat "^5.0.2" 2079 | is-plain-obj "^2.1.0" 2080 | 2081 | yargs@^17.7.2: 2082 | version "17.7.2" 2083 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" 2084 | integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== 2085 | dependencies: 2086 | cliui "^8.0.1" 2087 | escalade "^3.1.1" 2088 | get-caller-file "^2.0.5" 2089 | require-directory "^2.1.1" 2090 | string-width "^4.2.3" 2091 | y18n "^5.0.5" 2092 | yargs-parser "^21.1.1" 2093 | 2094 | yn@3.1.1: 2095 | version "3.1.1" 2096 | resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" 2097 | integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== 2098 | 2099 | yocto-queue@^0.1.0: 2100 | version "0.1.0" 2101 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 2102 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 2103 | --------------------------------------------------------------------------------