├── .codebeatsettings ├── .editorconfig ├── .gitattributes ├── .github ├── FUNDING.yml └── workflows │ └── build.yml ├── .gitignore ├── .npmignore ├── .prettierignore ├── .prettierrc ├── .travis.yml ├── .whitesource ├── LICENSE ├── README.md ├── _.config.yml ├── _config.yml ├── demo └── index.html ├── eslint.config.mjs ├── package.json ├── renovate.json ├── rollup.config.mjs ├── src └── touchsweep.ts ├── tsconfig.json └── yarn.lock /.codebeatsettings: -------------------------------------------------------------------------------- 1 | { 2 | "TYPESCRIPT": { 3 | "ABC": [ 4 | 20, 5 | 40, 6 | 80, 7 | 120 8 | ], 9 | "LOC": [ 10 | 50, 11 | 80, 12 | 120, 13 | 160 14 | ], 15 | "TOTAL_LOC": [ 16 | 400, 17 | 500, 18 | 640, 19 | 900 20 | ], 21 | "BLOCK_NESTING": [ 22 | 6, 23 | 8, 24 | 10, 25 | 12 26 | ] 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | end_of_line = lf 7 | indent_style = tab 8 | indent_size = 4 9 | insert_final_newline = true 10 | trim_trailing_whitespace = true 11 | 12 | [{*.json,*.yml}] 13 | indent_style = space 14 | indent_size = 2 15 | 16 | [*.md] 17 | trim_trailing_whitespace = false 18 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | ## GITATTRIBUTES FOR WEB PROJECTS 2 | # 3 | # These settings are for any web project. 4 | # 5 | # Details per file setting: 6 | # text These files should be normalized (i.e. convert CRLF to LF). 7 | # binary These files are binary and should be left untouched. 8 | # 9 | # Note that binary is a macro for -text -diff. 10 | ###################################################################### 11 | 12 | ## AUTO-DETECT 13 | ## Handle line endings automatically for files detected as 14 | ## text and leave all files detected as binary untouched. 15 | ## This will handle all files NOT defined below. 16 | * text=auto 17 | 18 | ## SOURCE CODE 19 | *.bat text eol=crlf 20 | *.coffee text 21 | *.css text 22 | *.htm text 23 | *.html text 24 | *.inc text 25 | *.ini text 26 | *.js text 27 | *.json text 28 | *.jsx text 29 | *.less text 30 | *.od text 31 | *.onlydata text 32 | *.php text 33 | *.pl text 34 | *.py text 35 | *.rb text 36 | *.sass text 37 | *.scm text 38 | *.scss text 39 | *.sh text eol=lf 40 | *.sql text 41 | *.styl text 42 | *.tag text 43 | *.ts text 44 | *.tsx text 45 | *.xml text 46 | *.xhtml text 47 | 48 | ## DOCKER 49 | *.dockerignore text 50 | Dockerfile text 51 | 52 | ## DOCUMENTATION 53 | *.markdown text 54 | *.md text 55 | *.mdwn text 56 | *.mdown text 57 | *.mkd text 58 | *.mkdn text 59 | *.mdtxt text 60 | *.mdtext text 61 | *.txt text 62 | AUTHORS text 63 | CHANGELOG text 64 | CHANGES text 65 | CONTRIBUTING text 66 | COPYING text 67 | copyright text 68 | *COPYRIGHT* text 69 | INSTALL text 70 | license text 71 | LICENSE text 72 | NEWS text 73 | readme text 74 | *README* text 75 | TODO text 76 | 77 | ## TEMPLATES 78 | *.dot text 79 | *.ejs text 80 | *.haml text 81 | *.handlebars text 82 | *.hbs text 83 | *.hbt text 84 | *.jade text 85 | *.latte text 86 | *.mustache text 87 | *.njk text 88 | *.phtml text 89 | *.tmpl text 90 | *.tpl text 91 | *.twig text 92 | 93 | ## LINTERS 94 | .csslintrc text 95 | .eslintrc text 96 | .htmlhintrc text 97 | .jscsrc text 98 | .jshintrc text 99 | .jshintignore text 100 | .stylelintrc text 101 | 102 | ## CONFIGS 103 | *.bowerrc text 104 | *.cnf text 105 | *.conf text 106 | *.config text 107 | .browserslistrc text 108 | .editorconfig text 109 | .gitattributes text 110 | .gitconfig text 111 | .htaccess text 112 | *.npmignore text 113 | *.yaml text 114 | *.yml text 115 | browserslist text 116 | Makefile text 117 | makefile text 118 | 119 | ## HEROKU 120 | Procfile text 121 | .slugignore text 122 | 123 | ## GRAPHICS 124 | *.ai binary 125 | *.bmp binary 126 | *.eps binary 127 | *.gif binary 128 | *.ico binary 129 | *.jng binary 130 | *.jp2 binary 131 | *.jpg binary 132 | *.jpeg binary 133 | *.jpx binary 134 | *.jxr binary 135 | *.pdf binary 136 | *.png binary 137 | *.psb binary 138 | *.psd binary 139 | *.svg text 140 | *.svgz binary 141 | *.tif binary 142 | *.tiff binary 143 | *.wbmp binary 144 | *.webp binary 145 | 146 | ## AUDIO 147 | *.kar binary 148 | *.m4a binary 149 | *.mid binary 150 | *.midi binary 151 | *.mp3 binary 152 | *.ogg binary 153 | *.ra binary 154 | 155 | ## VIDEO 156 | *.3gpp binary 157 | *.3gp binary 158 | *.as binary 159 | *.asf binary 160 | *.asx binary 161 | *.fla binary 162 | *.flv binary 163 | *.m4v binary 164 | *.mng binary 165 | *.mov binary 166 | *.mp4 binary 167 | *.mpeg binary 168 | *.mpg binary 169 | *.ogv binary 170 | *.swc binary 171 | *.swf binary 172 | *.webm binary 173 | 174 | ## ARCHIVES 175 | *.7z binary 176 | *.gz binary 177 | *.jar binary 178 | *.rar binary 179 | *.tar binary 180 | *.zip binary 181 | 182 | ## FONTS 183 | *.ttf binary 184 | *.eot binary 185 | *.otf binary 186 | *.woff binary 187 | *.woff2 binary 188 | 189 | ## EXECUTABLES 190 | *.exe binary 191 | *.pyc binary 192 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: [scriptex] 4 | patreon: atanas 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: scriptex 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: scriptex 10 | issuehunt: scriptex 11 | otechie: # Replace with a single Otechie username 12 | custom: ['paypal.me/scriptex', 'revolut.me/scriptex'] 13 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: Build 2 | 3 | on: [push, pull_request] 4 | 5 | jobs: 6 | build: 7 | runs-on: ubuntu-latest 8 | 9 | strategy: 10 | matrix: 11 | node-version: [lts/*] 12 | 13 | steps: 14 | - uses: actions/checkout@v4 15 | - name: Use Node.js ${{ matrix.node-version }} 16 | uses: actions/setup-node@v4 17 | with: 18 | node-version: ${{ matrix.node-version }} 19 | - run: yarn 20 | - run: yarn lint 21 | - run: yarn build 22 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Dependency directory 9 | node_modules/ 10 | 11 | # Misc 12 | .DS_Store 13 | .DS_Store? 14 | ._* 15 | .Spotlight-V100 16 | .Trashes 17 | ehthumbs.db 18 | Thumbs.db 19 | 20 | dist 21 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Dependency directory 9 | node_modules 10 | 11 | # Misc 12 | .DS_Store 13 | .DS_Store? 14 | ._* 15 | .Spotlight-V100 16 | .Trashes 17 | ehthumbs.db 18 | Thumbs.db 19 | 20 | # Config folders and files 21 | .github 22 | _config.yml 23 | _.config.yml 24 | .codebeatsettings 25 | .editorconfig 26 | .eslintrc 27 | .gitattributes 28 | .gitignore 29 | .nvmrc 30 | .prettierignore 31 | .prettierrc 32 | .stylelintignore 33 | .stylelintrc 34 | .travis.yml 35 | .whitesource 36 | renovate.json 37 | tsconfig.json 38 | tslint.json 39 | yarn.lock 40 | 41 | !dist 42 | demo 43 | rollup.config.mjs 44 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 120, 3 | "tabWidth": 4, 4 | "useTabs": true, 5 | "semi": true, 6 | "singleQuote": true, 7 | "jsxSingleQuote": false, 8 | "trailingComma": "none", 9 | "bracketSpacing": true, 10 | "jsxBracketSameLine": false, 11 | "arrowParens": "avoid", 12 | "proseWrap": "preserve" 13 | } 14 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | sudo: false 3 | node_js: 4 | - 'lts/*' 5 | install: 6 | - yarn 7 | script: 8 | - yarn lint 9 | - yarn build 10 | -------------------------------------------------------------------------------- /.whitesource: -------------------------------------------------------------------------------- 1 | { 2 | "generalSettings": { 3 | "shouldScanRepo": true 4 | }, 5 | "checkRunSettings": { 6 | "vulnerableCheckRunConclusionLevel": "success" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018-Present Atanas Atanasov 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Travis CI](https://travis-ci.com/scriptex/touchsweep.svg?branch=master)](https://travis-ci.com/scriptex/touchsweep) 2 | [![Github Build](https://github.com/scriptex/touchsweep/workflows/Build/badge.svg)](https://github.com/scriptex/touchsweep/actions?query=workflow%3ABuild) 3 | [![Codacy Badge](https://app.codacy.com/project/badge/Grade/34d3d75710534dc6a38c3584a1dcd068)](https://www.codacy.com/gh/scriptex/touchsweep/dashboard?utm_source=github.com&utm_medium=referral&utm_content=scriptex/touchsweep&utm_campaign=Badge_Grade) 4 | [![Codebeat Badge](https://codebeat.co/badges/d765a4c8-2c0e-44f2-89c3-fa364fdc14e6)](https://codebeat.co/projects/github-com-scriptex-touchsweep-master) 5 | [![CodeFactor Badge](https://www.codefactor.io/repository/github/scriptex/touchsweep/badge)](https://www.codefactor.io/repository/github/scriptex/touchsweep) 6 | [![DeepScan grade](https://deepscan.io/api/teams/3574/projects/5257/branches/40799/badge/grade.svg)](https://deepscan.io/dashboard#view=project&tid=3574&pid=5257&bid=40799) 7 | [![Analytics](https://ga-beacon-361907.ew.r.appspot.com/UA-83446952-1/github.com/scriptex/touchsweep/README.md?pixel)](https://github.com/scriptex/touchsweep/) 8 | 9 | # TouchSweep 10 | 11 | > Super tiny vanilla JS module to detect swipe direction and trigger custom events accordingly. 12 | 13 | ## Visitor stats 14 | 15 | ![GitHub stars](https://img.shields.io/github/stars/scriptex/touchsweep?style=social) 16 | ![GitHub forks](https://img.shields.io/github/forks/scriptex/touchsweep?style=social) 17 | ![GitHub watchers](https://img.shields.io/github/watchers/scriptex/touchsweep?style=social) 18 | ![GitHub followers](https://img.shields.io/github/followers/scriptex?style=social) 19 | 20 | ## Code stats 21 | 22 | ![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/scriptex/touchsweep) 23 | ![GitHub repo size](https://img.shields.io/github/repo-size/scriptex/touchsweep?style=plastic) 24 | ![GitHub language count](https://img.shields.io/github/languages/count/scriptex/touchsweep?style=plastic) 25 | ![GitHub top language](https://img.shields.io/github/languages/top/scriptex/touchsweep?style=plastic) 26 | ![GitHub last commit](https://img.shields.io/github/last-commit/scriptex/touchsweep?style=plastic) 27 | 28 | ## Install 29 | 30 | ```sh 31 | npm i touchsweep 32 | ``` 33 | 34 | or 35 | 36 | ```sh 37 | yarn add touchsweep 38 | ``` 39 | 40 | ## Usage 41 | 42 | ```javascript 43 | import TouchSweep from 'touchsweep'; 44 | 45 | const area = document.getElementById('swipe-area'); 46 | const data = { 47 | value: 1 48 | }; 49 | const touchThreshold = 20; 50 | 51 | const touchSweepInstance = new TouchSweep(area, data, touchThreshold); 52 | 53 | // Then listen for custom swipe events and do your magic: 54 | 55 | area.addEventListener('swipeleft', event => { 56 | // You have swiped left 57 | // Custom event data is located in `event.detail` 58 | // Details about coordinates are also available under `event.detail` 59 | }); 60 | 61 | area.addEventListener('swiperight', event => { 62 | // You have swiped right 63 | // Custom event data is located in `event.detail` 64 | // Details about coordinates are also available under `event.detail` 65 | }); 66 | 67 | area.addEventListener('swipedown', event => { 68 | // You have swiped down 69 | // Custom event data is located in `event.detail` 70 | // Details about coordinates are also available under `event.detail` 71 | }); 72 | 73 | area.addEventListener('swipeup', event => { 74 | // You have swiped up 75 | // Custom event data is located in `event.detail` 76 | // Details about coordinates are also available under `event.detail` 77 | }); 78 | 79 | area.addEventListener('swipemove', event => { 80 | // You are swiped continuously 81 | // Custom event data is located in `event.detail` 82 | // Details about coordinates are also available under `event.detail` 83 | }); 84 | 85 | area.addEventListener('tap', event => { 86 | // You have tapped 87 | // Custom event data is located in `event.detail` 88 | // Details about coordinates are also available under `event.detail` 89 | }); 90 | ``` 91 | 92 | ## Options and default settings 93 | 94 | The module constructor accepts three (3) arguments: 95 | 96 | - `element`: A HTML Element. Default is `document.body` 97 | - `eventData`: A plain JS object. Default is `{}` 98 | - `threshold`: How many pixels to count until an event is fired. Default is 40 99 | 100 | ## API 101 | 102 | TouchSweep provides a minimal API for you to use. 103 | 104 | The `TouchSweep` instance exposes two public methods which allow you to add or to remove all event listeners responsible for the module functionality. 105 | 106 | This is useful in cases where you want to remove the `TouchSweep` container/area from the DOM and prevent possible memory leaks by removing all event listeners related to this DOM element. 107 | 108 | In order to remove all previously attached event listeners: 109 | 110 | ```javascript 111 | touchSweepInstance.unbind(); 112 | ``` 113 | 114 | In order to add all previously removed event listeners: 115 | 116 | ```javascript 117 | touchSweepInstance.bind(); 118 | ``` 119 | 120 | ## Supported Browsers 121 | 122 | Currently all evergreen browsers are supported. 123 | 124 | ## Demo 125 | 126 | There is a simple demo illustrating how the TouchSweep library works. 127 | 128 | Check the code [here](https://github.com/scriptex/touchsweep/blob/master/demo/index.html) and the live demo [here](https://touchsweep.atanas.info) 129 | 130 | ## Typescript 131 | 132 | `TouchSweep` is written in Typescript and provides full Typescript support out of the box. 133 | 134 | ## LICENSE 135 | 136 | MIT 137 | 138 | --- 139 | 140 |
141 | Connect with me: 142 |
143 | 144 |
145 | 146 |
147 | 148 | 149 | 150 |   151 | 152 | 153 | 154 |   155 | 156 | 157 | 158 |   159 | 160 | 161 | 162 |   163 | 164 | 165 | 166 |   167 | 168 | 169 | 170 |   171 | 172 | 173 | 174 |   175 | 176 | 177 | 178 |   179 | 180 | 181 | 182 |   183 | 184 | 185 | 186 |   187 | 188 | 189 | 190 |   191 | 192 | 193 | 194 |
195 | 196 | --- 197 | 198 |
199 | Support and sponsor my work: 200 |
201 |
202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 |
230 | -------------------------------------------------------------------------------- /_.config.yml: -------------------------------------------------------------------------------- 1 | plugins: 2 | - jekyll-relative-links 3 | relative_links: 4 | enabled: true 5 | collections: true 6 | include: 7 | - CONTRIBUTING.md 8 | - README.md 9 | - LICENSE.md 10 | - COPYING.md 11 | - CODE_OF_CONDUCT.md 12 | - CONTRIBUTING.md 13 | - ISSUE_TEMPLATE.md 14 | - PULL_REQUEST_TEMPLATE.md 15 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-slate 2 | -------------------------------------------------------------------------------- /demo/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | TouchSweep Demo 8 | 9 | 10 | 11 | 15 | 16 | 21 | 22 | 28 | 29 | 129 | 130 | 131 | 137 | See code on Github 138 | 139 | 140 |
141 |
142 |
143 |

Touchsweep

144 | 145 |

Detect your swipe events direction

146 | 147 |

Installation

148 | 149 | 150 | 151 |
152 | npm install touchsweep
153 | 
154 | # or
155 | 
156 | yarn add touchsweep
157 | 
158 |
159 | 160 |

Usage

161 | 162 | 163 | 164 |
165 | import TouchSweep from 'touchsweep';
166 | 
167 | const area = document.getElementById('area');
168 | 
169 | const instance = new TouchSweep(
170 |   area,
171 |   {
172 |     value: 1
173 |   },
174 |   20
175 | );
176 | 
177 | area.addEventListener('swipeleft', event => {
178 |   // Swipe direction: left
179 | });
180 | 
181 | area.addEventListener('swiperight', event => {
182 |   // Swipe direction: right
183 | });
184 | 
185 | area.addEventListener('swipeup', event => {
186 |   // Swipe direction: up
187 | });
188 | 
189 | area.addEventListener('swipedown', event => {
190 |   // Swipe direction: down
191 | });
192 | 
193 | area.addEventListener('swipemove', event => {
194 | 	// Swipe direction: none
195 | 	// Swipe event: swipemove
196 | });
197 | 
198 | area.addEventListener('tap', event => {
199 |   // Swipe direction: none
200 | });
201 | 
202 |
203 |
204 | 205 |
206 |
207 | 208 |

Result

209 | 210 |

211 | 				
212 |
213 |
214 | 215 | 216 | 217 | 316 | 317 | 318 | -------------------------------------------------------------------------------- /eslint.config.mjs: -------------------------------------------------------------------------------- 1 | import globals from 'globals'; 2 | 3 | import prettier from 'eslint-config-prettier'; 4 | import tsEsLint from '@typescript-eslint/eslint-plugin'; 5 | import tsParser from '@typescript-eslint/parser'; 6 | 7 | export default [ 8 | { 9 | files: ['src/**/*.ts'], 10 | languageOptions: { 11 | globals: { 12 | ...globals.browser, 13 | ...globals.node 14 | }, 15 | parser: tsParser, 16 | parserOptions: { 17 | project: 'tsconfig.json', 18 | sourceType: 'module' 19 | } 20 | }, 21 | plugins: { 22 | prettier, 23 | tsEsLint 24 | }, 25 | rules: { 26 | 'no-console': 'error' 27 | } 28 | } 29 | ]; 30 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "touchsweep", 3 | "version": "2.2.0", 4 | "description": "Super tiny vanilla JS module to detect swipe direction", 5 | "keywords": [ 6 | "Touch swipe", 7 | "Touch events", 8 | "Mouse events", 9 | "Touch event detection", 10 | "Mouse event detection" 11 | ], 12 | "homepage": "https://touchsweep.atanas.info", 13 | "bugs": { 14 | "url": "https://github.com/scriptex/touchsweep/issues", 15 | "email": "hi@atanas.info" 16 | }, 17 | "license": "MIT", 18 | "author": "Atanas Atanasov (https://atanas.info)", 19 | "funding": "https://github.com/sponsors/scriptex", 20 | "main": "dist/touchsweep.js", 21 | "types": "dist/touchsweep.d.ts", 22 | "repository": { 23 | "type": "git", 24 | "url": "github:scriptex/touchsweep" 25 | }, 26 | "scripts": { 27 | "lint": "eslint", 28 | "copy": "cp -r dist demo", 29 | "clean": "rm -rf dist && rm -rf demo/dist", 30 | "build": "yarn clean && rollup -c && yarn copy" 31 | }, 32 | "dependencies": {}, 33 | "devDependencies": { 34 | "@rollup/plugin-commonjs": "28.0.3", 35 | "@rollup/plugin-typescript": "12.1.2", 36 | "@typescript-eslint/eslint-plugin": "8.33.1", 37 | "@typescript-eslint/parser": "8.33.1", 38 | "eslint": "9.28.0", 39 | "eslint-config-prettier": "10.1.5", 40 | "rollup": "4.41.1", 41 | "tslib": "2.8.1", 42 | "typescript": "5.8.3" 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": [ 3 | "config:base", 4 | ":automergePatch", 5 | ":automergeMinor", 6 | ":automergeBranch", 7 | ":disableDependencyDashboard", 8 | "group:allNonMajor" 9 | ], 10 | "travis": { 11 | "enabled": true 12 | }, 13 | "assignees": ["@scriptex"], 14 | "labels": ["dependencies"], 15 | "rebaseWhen": "conflicted", 16 | "vulnerabilityAlerts": { 17 | "labels": ["security"], 18 | "assignees": ["@scriptex"] 19 | }, 20 | "major": { 21 | "automerge": false 22 | }, 23 | "schedule": ["* * 5,19 * *"] 24 | } 25 | -------------------------------------------------------------------------------- /rollup.config.mjs: -------------------------------------------------------------------------------- 1 | import commonjs from '@rollup/plugin-commonjs'; 2 | import typescript from '@rollup/plugin-typescript'; 3 | 4 | export default { 5 | input: 'src/touchsweep.ts', 6 | output: { 7 | dir: 'dist', 8 | name: 'Touchsweep', 9 | format: 'umd', 10 | exports: 'named', 11 | sourcemap: true 12 | }, 13 | plugins: [typescript(), commonjs()] 14 | }; 15 | -------------------------------------------------------------------------------- /src/touchsweep.ts: -------------------------------------------------------------------------------- 1 | export const enum TouchSwipeEventType { 2 | up = 'swipeup', 3 | tap = 'tap', 4 | down = 'swipedown', 5 | move = 'swipemove', 6 | left = 'swipeleft', 7 | right = 'swiperight' 8 | } 9 | 10 | export type TouchSwipeCoordinateType = 'startX' | 'startY' | 'moveX' | 'moveY' | 'endX' | 'endY'; 11 | 12 | export type TouchSwipeCoordinates = Record<'x' | 'y', number>; 13 | 14 | const defaultCoordinates = { 15 | endX: 0, 16 | endY: 0, 17 | moveX: 0, 18 | moveY: 0, 19 | startX: 0, 20 | startY: 0 21 | }; 22 | 23 | export default class TouchSweep { 24 | public eventData: Record; 25 | 26 | private element: HTMLElement; 27 | private threshold: number; 28 | 29 | private coords: Record; 30 | private isMoving: boolean; 31 | private moveCoords: TouchSwipeCoordinates; 32 | 33 | constructor(element = document.body, data = {}, threshold = 40) { 34 | this.element = element; 35 | this.eventData = data; 36 | this.threshold = threshold; 37 | 38 | this.coords = defaultCoordinates; 39 | this.isMoving = false; 40 | this.moveCoords = { x: 0, y: 0 }; 41 | 42 | this.onStart = this.onStart.bind(this); 43 | this.onMove = this.onMove.bind(this); 44 | this.onEnd = this.onEnd.bind(this); 45 | 46 | this.bind(); 47 | 48 | return this; //NOSONAR 49 | } 50 | 51 | public bind(): void { 52 | const { element } = this; 53 | 54 | element.addEventListener('touchstart', this.onStart, { passive: true }); 55 | element.addEventListener('touchmove', this.onMove, { passive: true }); 56 | element.addEventListener('touchend', this.onEnd, { passive: true }); 57 | element.addEventListener('mousedown', this.onStart, { passive: true }); 58 | element.addEventListener('mousemove', this.onMove, { passive: true }); 59 | element.addEventListener('mouseup', this.onEnd, { passive: true }); 60 | } 61 | 62 | public unbind(): void { 63 | const { element } = this; 64 | 65 | // https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener#matching_event_listeners_for_removal 66 | element.removeEventListener('touchstart', this.onStart, false); 67 | element.removeEventListener('touchmove', this.onMove, false); 68 | element.removeEventListener('touchend', this.onEnd, false); 69 | element.removeEventListener('mousedown', this.onStart, false); 70 | element.removeEventListener('mousemove', this.onMove, false); 71 | element.removeEventListener('mouseup', this.onEnd, false); 72 | } 73 | 74 | private getCoords(event: MouseEvent | TouchEvent): TouchSwipeCoordinates { 75 | const result = this.moveCoords; 76 | const isMouseEvent = 'pageX' in event; 77 | 78 | result.x = isMouseEvent ? event.pageX : event.changedTouches[0].screenX; 79 | result.y = isMouseEvent ? event.pageY : event.changedTouches[0].screenY; 80 | 81 | return result; 82 | } 83 | 84 | private resetCoords(): void { 85 | this.coords = defaultCoordinates; 86 | } 87 | 88 | // prettier-ignore 89 | private getEndEventName(): TouchSwipeEventType | '' { //NOSONAR 90 | const threshold = this.threshold; 91 | const { startX, startY, endX, endY } = this.coords; 92 | const distanceX = Math.abs(endX - startX); 93 | const distanceY = Math.abs(endY - startY); 94 | const isSwipeX = distanceX > distanceY; 95 | 96 | if (isSwipeX) { 97 | if (endX < startX && distanceX > threshold) { 98 | return TouchSwipeEventType.left; 99 | } 100 | 101 | if (endX > startX && distanceX > threshold) { 102 | return TouchSwipeEventType.right; 103 | } 104 | } else { 105 | if (endY < startY && distanceY > threshold) { 106 | return TouchSwipeEventType.up; 107 | } 108 | 109 | if (endY > startY && distanceY > threshold) { 110 | return TouchSwipeEventType.down; 111 | } 112 | } 113 | 114 | if (endY === startY && endX === startX) { 115 | return TouchSwipeEventType.tap; 116 | } 117 | 118 | return ''; 119 | } 120 | 121 | private dispatchEvent(type: TouchSwipeEventType): void { 122 | const event = new CustomEvent(type, { 123 | detail: { 124 | ...this.eventData, 125 | coords: this.coords 126 | } 127 | }); 128 | 129 | this.element.dispatchEvent(event); 130 | } 131 | 132 | private dispatchEnd(): void { 133 | const eventName = this.getEndEventName(); 134 | 135 | if (!eventName) { 136 | return; 137 | } 138 | 139 | this.dispatchEvent(eventName); 140 | } 141 | 142 | private onStart(event: MouseEvent | TouchEvent): void { 143 | const { x, y } = this.getCoords(event); 144 | 145 | this.isMoving = true; 146 | 147 | this.coords.startX = x; 148 | this.coords.startY = y; 149 | } 150 | 151 | private onMove(event: MouseEvent | TouchEvent): void { 152 | if (!this.isMoving) { 153 | return; 154 | } 155 | 156 | const { x, y } = this.getCoords(event); 157 | 158 | this.coords.moveX = x; 159 | this.coords.moveY = y; 160 | 161 | this.dispatchEvent(TouchSwipeEventType.move); 162 | } 163 | 164 | private onEnd(event: MouseEvent | TouchEvent): void { 165 | const { x, y } = this.getCoords(event); 166 | 167 | this.isMoving = false; 168 | 169 | this.coords.endX = x; 170 | this.coords.endY = y; 171 | 172 | this.dispatchEnd(); 173 | this.resetCoords(); 174 | } 175 | } 176 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowJs": false, 4 | "allowSyntheticDefaultImports": true, 5 | "alwaysStrict": true, 6 | "baseUrl": "./", 7 | "checkJs": false, 8 | "declaration": true, 9 | "emitDecoratorMetadata": true, 10 | "experimentalDecorators": true, 11 | "forceConsistentCasingInFileNames": true, 12 | "importHelpers": false, 13 | "isolatedModules": true, 14 | "jsx": "react", 15 | "lib": ["DOM", "ESNext"], 16 | "module": "ES2015", 17 | "moduleResolution": "Node", 18 | "noEmit": false, 19 | "noEmitHelpers": false, 20 | "noEmitOnError": true, 21 | "noFallthroughCasesInSwitch": true, 22 | "noImplicitAny": true, 23 | "noImplicitReturns": true, 24 | "noImplicitThis": true, 25 | "noStrictGenericChecks": false, 26 | "outDir": "./dist", 27 | "pretty": true, 28 | "removeComments": false, 29 | "sourceMap": true, 30 | "strict": true, 31 | "strictBindCallApply": true, 32 | "strictFunctionTypes": true, 33 | "strictPropertyInitialization": true, 34 | "strictNullChecks": true, 35 | "target": "ES5" 36 | }, 37 | "include": ["src/*.ts"], 38 | "exclude": ["node_modules"] 39 | } 40 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@aashutoshrathi/word-wrap@^1.2.3": 6 | version "1.2.6" 7 | resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" 8 | integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== 9 | 10 | "@eslint-community/eslint-utils@^4.2.0": 11 | version "4.4.0" 12 | resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" 13 | integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== 14 | dependencies: 15 | eslint-visitor-keys "^3.3.0" 16 | 17 | "@eslint-community/eslint-utils@^4.7.0": 18 | version "4.7.0" 19 | resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz#607084630c6c033992a082de6e6fbc1a8b52175a" 20 | integrity sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw== 21 | dependencies: 22 | eslint-visitor-keys "^3.4.3" 23 | 24 | "@eslint-community/regexpp@^4.10.0": 25 | version "4.10.0" 26 | resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" 27 | integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== 28 | 29 | "@eslint-community/regexpp@^4.12.1": 30 | version "4.12.1" 31 | resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" 32 | integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== 33 | 34 | "@eslint/config-array@^0.20.0": 35 | version "0.20.0" 36 | resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.20.0.tgz#7a1232e82376712d3340012a2f561a2764d1988f" 37 | integrity sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ== 38 | dependencies: 39 | "@eslint/object-schema" "^2.1.6" 40 | debug "^4.3.1" 41 | minimatch "^3.1.2" 42 | 43 | "@eslint/config-helpers@^0.2.1": 44 | version "0.2.1" 45 | resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.2.1.tgz#26042c028d1beee5ce2235a7929b91c52651646d" 46 | integrity sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw== 47 | 48 | "@eslint/core@^0.14.0": 49 | version "0.14.0" 50 | resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.14.0.tgz#326289380968eaf7e96f364e1e4cf8f3adf2d003" 51 | integrity sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg== 52 | dependencies: 53 | "@types/json-schema" "^7.0.15" 54 | 55 | "@eslint/eslintrc@^3.3.1": 56 | version "3.3.1" 57 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.3.1.tgz#e55f7f1dd400600dd066dbba349c4c0bac916964" 58 | integrity sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ== 59 | dependencies: 60 | ajv "^6.12.4" 61 | debug "^4.3.2" 62 | espree "^10.0.1" 63 | globals "^14.0.0" 64 | ignore "^5.2.0" 65 | import-fresh "^3.2.1" 66 | js-yaml "^4.1.0" 67 | minimatch "^3.1.2" 68 | strip-json-comments "^3.1.1" 69 | 70 | "@eslint/js@9.28.0": 71 | version "9.28.0" 72 | resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.28.0.tgz#7822ccc2f8cae7c3cd4f902377d520e9ae03f844" 73 | integrity sha512-fnqSjGWd/CoIp4EXIxWVK/sHA6DOHN4+8Ix2cX5ycOY7LG0UY8nHCU5pIp2eaE1Mc7Qd8kHspYNzYXT2ojPLzg== 74 | 75 | "@eslint/object-schema@^2.1.6": 76 | version "2.1.6" 77 | resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.6.tgz#58369ab5b5b3ca117880c0f6c0b0f32f6950f24f" 78 | integrity sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA== 79 | 80 | "@eslint/plugin-kit@^0.3.1": 81 | version "0.3.1" 82 | resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.3.1.tgz#b71b037b2d4d68396df04a8c35a49481e5593067" 83 | integrity sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w== 84 | dependencies: 85 | "@eslint/core" "^0.14.0" 86 | levn "^0.4.1" 87 | 88 | "@humanfs/core@^0.19.1": 89 | version "0.19.1" 90 | resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77" 91 | integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== 92 | 93 | "@humanfs/node@^0.16.6": 94 | version "0.16.6" 95 | resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.6.tgz#ee2a10eaabd1131987bf0488fd9b820174cd765e" 96 | integrity sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw== 97 | dependencies: 98 | "@humanfs/core" "^0.19.1" 99 | "@humanwhocodes/retry" "^0.3.0" 100 | 101 | "@humanwhocodes/module-importer@^1.0.1": 102 | version "1.0.1" 103 | resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" 104 | integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== 105 | 106 | "@humanwhocodes/retry@^0.3.0": 107 | version "0.3.0" 108 | resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.0.tgz#6d86b8cb322660f03d3f0aa94b99bdd8e172d570" 109 | integrity sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew== 110 | 111 | "@humanwhocodes/retry@^0.4.2": 112 | version "0.4.2" 113 | resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.2.tgz#1860473de7dfa1546767448f333db80cb0ff2161" 114 | integrity sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ== 115 | 116 | "@jridgewell/sourcemap-codec@^1.4.15": 117 | version "1.4.15" 118 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" 119 | integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== 120 | 121 | "@nodelib/fs.scandir@2.1.5": 122 | version "2.1.5" 123 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" 124 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== 125 | dependencies: 126 | "@nodelib/fs.stat" "2.0.5" 127 | run-parallel "^1.1.9" 128 | 129 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": 130 | version "2.0.5" 131 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" 132 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== 133 | 134 | "@nodelib/fs.walk@^1.2.3": 135 | version "1.2.8" 136 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" 137 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== 138 | dependencies: 139 | "@nodelib/fs.scandir" "2.1.5" 140 | fastq "^1.6.0" 141 | 142 | "@rollup/plugin-commonjs@28.0.3": 143 | version "28.0.3" 144 | resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-28.0.3.tgz#44c2cc7c955c6113b96696b55e6bc2446bd67913" 145 | integrity sha512-pyltgilam1QPdn+Zd9gaCfOLcnjMEJ9gV+bTw6/r73INdvzf1ah9zLIJBm+kW7R6IUFIQ1YO+VqZtYxZNWFPEQ== 146 | dependencies: 147 | "@rollup/pluginutils" "^5.0.1" 148 | commondir "^1.0.1" 149 | estree-walker "^2.0.2" 150 | fdir "^6.2.0" 151 | is-reference "1.2.1" 152 | magic-string "^0.30.3" 153 | picomatch "^4.0.2" 154 | 155 | "@rollup/plugin-typescript@12.1.2": 156 | version "12.1.2" 157 | resolved "https://registry.yarnpkg.com/@rollup/plugin-typescript/-/plugin-typescript-12.1.2.tgz#ebaeec2e7376faa889030ccd7cb485a649e63118" 158 | integrity sha512-cdtSp154H5sv637uMr1a8OTWB0L1SWDSm1rDGiyfcGcvQ6cuTs4MDk2BVEBGysUWago4OJN4EQZqOTl/QY3Jgg== 159 | dependencies: 160 | "@rollup/pluginutils" "^5.1.0" 161 | resolve "^1.22.1" 162 | 163 | "@rollup/pluginutils@^5.0.1", "@rollup/pluginutils@^5.1.0": 164 | version "5.1.0" 165 | resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.0.tgz#7e53eddc8c7f483a4ad0b94afb1f7f5fd3c771e0" 166 | integrity sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g== 167 | dependencies: 168 | "@types/estree" "^1.0.0" 169 | estree-walker "^2.0.2" 170 | picomatch "^2.3.1" 171 | 172 | "@rollup/rollup-android-arm-eabi@4.41.1": 173 | version "4.41.1" 174 | resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.41.1.tgz#f39f09f60d4a562de727c960d7b202a2cf797424" 175 | integrity sha512-NELNvyEWZ6R9QMkiytB4/L4zSEaBC03KIXEghptLGLZWJ6VPrL63ooZQCOnlx36aQPGhzuOMwDerC1Eb2VmrLw== 176 | 177 | "@rollup/rollup-android-arm64@4.41.1": 178 | version "4.41.1" 179 | resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.41.1.tgz#d19af7e23760717f1d879d4ca3d2cd247742dff2" 180 | integrity sha512-DXdQe1BJ6TK47ukAoZLehRHhfKnKg9BjnQYUu9gzhI8Mwa1d2fzxA1aw2JixHVl403bwp1+/o/NhhHtxWJBgEA== 181 | 182 | "@rollup/rollup-darwin-arm64@4.41.1": 183 | version "4.41.1" 184 | resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.41.1.tgz#1c3a2fbf205d80641728e05f4a56c909e95218b7" 185 | integrity sha512-5afxvwszzdulsU2w8JKWwY8/sJOLPzf0e1bFuvcW5h9zsEg+RQAojdW0ux2zyYAz7R8HvvzKCjLNJhVq965U7w== 186 | 187 | "@rollup/rollup-darwin-x64@4.41.1": 188 | version "4.41.1" 189 | resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.41.1.tgz#aa66d2ba1a25e609500e13bef06dc0e71cc0c0d4" 190 | integrity sha512-egpJACny8QOdHNNMZKf8xY0Is6gIMz+tuqXlusxquWu3F833DcMwmGM7WlvCO9sB3OsPjdC4U0wHw5FabzCGZg== 191 | 192 | "@rollup/rollup-freebsd-arm64@4.41.1": 193 | version "4.41.1" 194 | resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.41.1.tgz#df10a7b6316a0ef1028c6ca71a081124c537e30d" 195 | integrity sha512-DBVMZH5vbjgRk3r0OzgjS38z+atlupJ7xfKIDJdZZL6sM6wjfDNo64aowcLPKIx7LMQi8vybB56uh1Ftck/Atg== 196 | 197 | "@rollup/rollup-freebsd-x64@4.41.1": 198 | version "4.41.1" 199 | resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.41.1.tgz#a3fdce8a05e95b068cbcb46e4df5185e407d0c35" 200 | integrity sha512-3FkydeohozEskBxNWEIbPfOE0aqQgB6ttTkJ159uWOFn42VLyfAiyD9UK5mhu+ItWzft60DycIN1Xdgiy8o/SA== 201 | 202 | "@rollup/rollup-linux-arm-gnueabihf@4.41.1": 203 | version "4.41.1" 204 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.41.1.tgz#49f766c55383bd0498014a9d76924348c2f3890c" 205 | integrity sha512-wC53ZNDgt0pqx5xCAgNunkTzFE8GTgdZ9EwYGVcg+jEjJdZGtq9xPjDnFgfFozQI/Xm1mh+D9YlYtl+ueswNEg== 206 | 207 | "@rollup/rollup-linux-arm-musleabihf@4.41.1": 208 | version "4.41.1" 209 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.41.1.tgz#1d4d7d32fc557e17d52e1857817381ea365e2959" 210 | integrity sha512-jwKCca1gbZkZLhLRtsrka5N8sFAaxrGz/7wRJ8Wwvq3jug7toO21vWlViihG85ei7uJTpzbXZRcORotE+xyrLA== 211 | 212 | "@rollup/rollup-linux-arm64-gnu@4.41.1": 213 | version "4.41.1" 214 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.41.1.tgz#f4fc317268441e9589edad3be8f62b6c03009bc1" 215 | integrity sha512-g0UBcNknsmmNQ8V2d/zD2P7WWfJKU0F1nu0k5pW4rvdb+BIqMm8ToluW/eeRmxCared5dD76lS04uL4UaNgpNA== 216 | 217 | "@rollup/rollup-linux-arm64-musl@4.41.1": 218 | version "4.41.1" 219 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.41.1.tgz#63a1f1b0671cb17822dabae827fef0e443aebeb7" 220 | integrity sha512-XZpeGB5TKEZWzIrj7sXr+BEaSgo/ma/kCgrZgL0oo5qdB1JlTzIYQKel/RmhT6vMAvOdM2teYlAaOGJpJ9lahg== 221 | 222 | "@rollup/rollup-linux-loongarch64-gnu@4.41.1": 223 | version "4.41.1" 224 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.41.1.tgz#c659b01cc6c0730b547571fc3973e1e955369f98" 225 | integrity sha512-bkCfDJ4qzWfFRCNt5RVV4DOw6KEgFTUZi2r2RuYhGWC8WhCA8lCAJhDeAmrM/fdiAH54m0mA0Vk2FGRPyzI+tw== 226 | 227 | "@rollup/rollup-linux-powerpc64le-gnu@4.41.1": 228 | version "4.41.1" 229 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.41.1.tgz#612e746f9ad7e58480f964d65e0d6c3f4aae69a8" 230 | integrity sha512-3mr3Xm+gvMX+/8EKogIZSIEF0WUu0HL9di+YWlJpO8CQBnoLAEL/roTCxuLncEdgcfJcvA4UMOf+2dnjl4Ut1A== 231 | 232 | "@rollup/rollup-linux-riscv64-gnu@4.41.1": 233 | version "4.41.1" 234 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.41.1.tgz#4610dbd1dcfbbae32fbc10c20ae7387acb31110c" 235 | integrity sha512-3rwCIh6MQ1LGrvKJitQjZFuQnT2wxfU+ivhNBzmxXTXPllewOF7JR1s2vMX/tWtUYFgphygxjqMl76q4aMotGw== 236 | 237 | "@rollup/rollup-linux-riscv64-musl@4.41.1": 238 | version "4.41.1" 239 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.41.1.tgz#054911fab40dc83fafc21e470193c058108f19d8" 240 | integrity sha512-LdIUOb3gvfmpkgFZuccNa2uYiqtgZAz3PTzjuM5bH3nvuy9ty6RGc/Q0+HDFrHrizJGVpjnTZ1yS5TNNjFlklw== 241 | 242 | "@rollup/rollup-linux-s390x-gnu@4.41.1": 243 | version "4.41.1" 244 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.41.1.tgz#98896eca8012547c7f04bd07eaa6896825f9e1a5" 245 | integrity sha512-oIE6M8WC9ma6xYqjvPhzZYk6NbobIURvP/lEbh7FWplcMO6gn7MM2yHKA1eC/GvYwzNKK/1LYgqzdkZ8YFxR8g== 246 | 247 | "@rollup/rollup-linux-x64-gnu@4.41.1": 248 | version "4.41.1" 249 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.41.1.tgz#01cf56844a1e636ee80dfb364e72c2b7142ad896" 250 | integrity sha512-cWBOvayNvA+SyeQMp79BHPK8ws6sHSsYnK5zDcsC3Hsxr1dgTABKjMnMslPq1DvZIp6uO7kIWhiGwaTdR4Og9A== 251 | 252 | "@rollup/rollup-linux-x64-musl@4.41.1": 253 | version "4.41.1" 254 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.41.1.tgz#e67c7531df6dff0b4c241101d4096617fbca87c3" 255 | integrity sha512-y5CbN44M+pUCdGDlZFzGGBSKCA4A/J2ZH4edTYSSxFg7ce1Xt3GtydbVKWLlzL+INfFIZAEg1ZV6hh9+QQf9YQ== 256 | 257 | "@rollup/rollup-win32-arm64-msvc@4.41.1": 258 | version "4.41.1" 259 | resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.41.1.tgz#7eeada98444e580674de6989284e4baacd48ea65" 260 | integrity sha512-lZkCxIrjlJlMt1dLO/FbpZbzt6J/A8p4DnqzSa4PWqPEUUUnzXLeki/iyPLfV0BmHItlYgHUqJe+3KiyydmiNQ== 261 | 262 | "@rollup/rollup-win32-ia32-msvc@4.41.1": 263 | version "4.41.1" 264 | resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.41.1.tgz#516c4b54f80587b4a390aaf4940b40870271d35d" 265 | integrity sha512-+psFT9+pIh2iuGsxFYYa/LhS5MFKmuivRsx9iPJWNSGbh2XVEjk90fmpUEjCnILPEPJnikAU6SFDiEUyOv90Pg== 266 | 267 | "@rollup/rollup-win32-x64-msvc@4.41.1": 268 | version "4.41.1" 269 | resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.41.1.tgz#848f99b0d9936d92221bb6070baeff4db6947a30" 270 | integrity sha512-Wq2zpapRYLfi4aKxf2Xff0tN+7slj2d4R87WEzqw7ZLsVvO5zwYCIuEGSZYiK41+GlwUo1HiR+GdkLEJnCKTCw== 271 | 272 | "@types/estree@*", "@types/estree@^1.0.0": 273 | version "1.0.5" 274 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" 275 | integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== 276 | 277 | "@types/estree@1.0.7": 278 | version "1.0.7" 279 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.7.tgz#4158d3105276773d5b7695cd4834b1722e4f37a8" 280 | integrity sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ== 281 | 282 | "@types/estree@^1.0.6": 283 | version "1.0.6" 284 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" 285 | integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== 286 | 287 | "@types/json-schema@^7.0.15": 288 | version "7.0.15" 289 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" 290 | integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== 291 | 292 | "@typescript-eslint/eslint-plugin@8.33.1": 293 | version "8.33.1" 294 | resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.33.1.tgz#532641b416ed2afd5be893cddb2a58e9cd1f7a3e" 295 | integrity sha512-TDCXj+YxLgtvxvFlAvpoRv9MAncDLBV2oT9Bd7YBGC/b/sEURoOYuIwLI99rjWOfY3QtDzO+mk0n4AmdFExW8A== 296 | dependencies: 297 | "@eslint-community/regexpp" "^4.10.0" 298 | "@typescript-eslint/scope-manager" "8.33.1" 299 | "@typescript-eslint/type-utils" "8.33.1" 300 | "@typescript-eslint/utils" "8.33.1" 301 | "@typescript-eslint/visitor-keys" "8.33.1" 302 | graphemer "^1.4.0" 303 | ignore "^7.0.0" 304 | natural-compare "^1.4.0" 305 | ts-api-utils "^2.1.0" 306 | 307 | "@typescript-eslint/parser@8.33.1": 308 | version "8.33.1" 309 | resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.33.1.tgz#ef9a5ee6aa37a6b4f46cc36d08a14f828238afe2" 310 | integrity sha512-qwxv6dq682yVvgKKp2qWwLgRbscDAYktPptK4JPojCwwi3R9cwrvIxS4lvBpzmcqzR4bdn54Z0IG1uHFskW4dA== 311 | dependencies: 312 | "@typescript-eslint/scope-manager" "8.33.1" 313 | "@typescript-eslint/types" "8.33.1" 314 | "@typescript-eslint/typescript-estree" "8.33.1" 315 | "@typescript-eslint/visitor-keys" "8.33.1" 316 | debug "^4.3.4" 317 | 318 | "@typescript-eslint/project-service@8.33.1": 319 | version "8.33.1" 320 | resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.33.1.tgz#c85e7d9a44d6a11fe64e73ac1ed47de55dc2bf9f" 321 | integrity sha512-DZR0efeNklDIHHGRpMpR5gJITQpu6tLr9lDJnKdONTC7vvzOlLAG/wcfxcdxEWrbiZApcoBCzXqU/Z458Za5Iw== 322 | dependencies: 323 | "@typescript-eslint/tsconfig-utils" "^8.33.1" 324 | "@typescript-eslint/types" "^8.33.1" 325 | debug "^4.3.4" 326 | 327 | "@typescript-eslint/scope-manager@8.33.1": 328 | version "8.33.1" 329 | resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.33.1.tgz#d1e0efb296da5097d054bc9972e69878a2afea73" 330 | integrity sha512-dM4UBtgmzHR9bS0Rv09JST0RcHYearoEoo3pG5B6GoTR9XcyeqX87FEhPo+5kTvVfKCvfHaHrcgeJQc6mrDKrA== 331 | dependencies: 332 | "@typescript-eslint/types" "8.33.1" 333 | "@typescript-eslint/visitor-keys" "8.33.1" 334 | 335 | "@typescript-eslint/tsconfig-utils@8.33.1", "@typescript-eslint/tsconfig-utils@^8.33.1": 336 | version "8.33.1" 337 | resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.33.1.tgz#7836afcc097a4657a5ed56670851a450d8b70ab8" 338 | integrity sha512-STAQsGYbHCF0/e+ShUQ4EatXQ7ceh3fBCXkNU7/MZVKulrlq1usH7t2FhxvCpuCi5O5oi1vmVaAjrGeL71OK1g== 339 | 340 | "@typescript-eslint/type-utils@8.33.1": 341 | version "8.33.1" 342 | resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.33.1.tgz#d73ee1a29d8a0abe60d4abbff4f1d040f0de15fa" 343 | integrity sha512-1cG37d9xOkhlykom55WVwG2QRNC7YXlxMaMzqw2uPeJixBFfKWZgaP/hjAObqMN/u3fr5BrTwTnc31/L9jQ2ww== 344 | dependencies: 345 | "@typescript-eslint/typescript-estree" "8.33.1" 346 | "@typescript-eslint/utils" "8.33.1" 347 | debug "^4.3.4" 348 | ts-api-utils "^2.1.0" 349 | 350 | "@typescript-eslint/types@8.33.1", "@typescript-eslint/types@^8.33.1": 351 | version "8.33.1" 352 | resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.33.1.tgz#b693111bc2180f8098b68e9958cf63761657a55f" 353 | integrity sha512-xid1WfizGhy/TKMTwhtVOgalHwPtV8T32MS9MaH50Cwvz6x6YqRIPdD2WvW0XaqOzTV9p5xdLY0h/ZusU5Lokg== 354 | 355 | "@typescript-eslint/typescript-estree@8.33.1": 356 | version "8.33.1" 357 | resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.33.1.tgz#d271beed470bc915b8764e22365d4925c2ea265d" 358 | integrity sha512-+s9LYcT8LWjdYWu7IWs7FvUxpQ/DGkdjZeE/GGulHvv8rvYwQvVaUZ6DE+j5x/prADUgSbbCWZ2nPI3usuVeOA== 359 | dependencies: 360 | "@typescript-eslint/project-service" "8.33.1" 361 | "@typescript-eslint/tsconfig-utils" "8.33.1" 362 | "@typescript-eslint/types" "8.33.1" 363 | "@typescript-eslint/visitor-keys" "8.33.1" 364 | debug "^4.3.4" 365 | fast-glob "^3.3.2" 366 | is-glob "^4.0.3" 367 | minimatch "^9.0.4" 368 | semver "^7.6.0" 369 | ts-api-utils "^2.1.0" 370 | 371 | "@typescript-eslint/utils@8.33.1": 372 | version "8.33.1" 373 | resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.33.1.tgz#ea22f40d3553da090f928cf17907e963643d4b96" 374 | integrity sha512-52HaBiEQUaRYqAXpfzWSR2U3gxk92Kw006+xZpElaPMg3C4PgM+A5LqwoQI1f9E5aZ/qlxAZxzm42WX+vn92SQ== 375 | dependencies: 376 | "@eslint-community/eslint-utils" "^4.7.0" 377 | "@typescript-eslint/scope-manager" "8.33.1" 378 | "@typescript-eslint/types" "8.33.1" 379 | "@typescript-eslint/typescript-estree" "8.33.1" 380 | 381 | "@typescript-eslint/visitor-keys@8.33.1": 382 | version "8.33.1" 383 | resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.33.1.tgz#6c6e002c24d13211df3df851767f24dfdb4f42bc" 384 | integrity sha512-3i8NrFcZeeDHJ+7ZUuDkGT+UHq+XoFGsymNK2jZCOHcfEzRQ0BdpRtdpSx/Iyf3MHLWIcLS0COuOPibKQboIiQ== 385 | dependencies: 386 | "@typescript-eslint/types" "8.33.1" 387 | eslint-visitor-keys "^4.2.0" 388 | 389 | acorn-jsx@^5.3.2: 390 | version "5.3.2" 391 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" 392 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== 393 | 394 | acorn@^8.11.3: 395 | version "8.11.3" 396 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" 397 | integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== 398 | 399 | acorn@^8.14.0: 400 | version "8.14.0" 401 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" 402 | integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== 403 | 404 | ajv@^6.12.4: 405 | version "6.12.6" 406 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 407 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 408 | dependencies: 409 | fast-deep-equal "^3.1.1" 410 | fast-json-stable-stringify "^2.0.0" 411 | json-schema-traverse "^0.4.1" 412 | uri-js "^4.2.2" 413 | 414 | ansi-styles@^4.1.0: 415 | version "4.3.0" 416 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 417 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 418 | dependencies: 419 | color-convert "^2.0.1" 420 | 421 | argparse@^2.0.1: 422 | version "2.0.1" 423 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 424 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 425 | 426 | balanced-match@^1.0.0: 427 | version "1.0.2" 428 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 429 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 430 | 431 | brace-expansion@^1.1.7: 432 | version "1.1.11" 433 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 434 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 435 | dependencies: 436 | balanced-match "^1.0.0" 437 | concat-map "0.0.1" 438 | 439 | brace-expansion@^2.0.1: 440 | version "2.0.1" 441 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" 442 | integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== 443 | dependencies: 444 | balanced-match "^1.0.0" 445 | 446 | braces@^3.0.3: 447 | version "3.0.3" 448 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" 449 | integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== 450 | dependencies: 451 | fill-range "^7.1.1" 452 | 453 | callsites@^3.0.0: 454 | version "3.1.0" 455 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 456 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 457 | 458 | chalk@^4.0.0: 459 | version "4.1.2" 460 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 461 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 462 | dependencies: 463 | ansi-styles "^4.1.0" 464 | supports-color "^7.1.0" 465 | 466 | color-convert@^2.0.1: 467 | version "2.0.1" 468 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 469 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 470 | dependencies: 471 | color-name "~1.1.4" 472 | 473 | color-name@~1.1.4: 474 | version "1.1.4" 475 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 476 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 477 | 478 | commondir@^1.0.1: 479 | version "1.0.1" 480 | resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" 481 | integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== 482 | 483 | concat-map@0.0.1: 484 | version "0.0.1" 485 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 486 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 487 | 488 | cross-spawn@^7.0.6: 489 | version "7.0.6" 490 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" 491 | integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== 492 | dependencies: 493 | path-key "^3.1.0" 494 | shebang-command "^2.0.0" 495 | which "^2.0.1" 496 | 497 | debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: 498 | version "4.3.4" 499 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 500 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 501 | dependencies: 502 | ms "2.1.2" 503 | 504 | deep-is@^0.1.3: 505 | version "0.1.4" 506 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" 507 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== 508 | 509 | escape-string-regexp@^4.0.0: 510 | version "4.0.0" 511 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 512 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 513 | 514 | eslint-config-prettier@10.1.5: 515 | version "10.1.5" 516 | resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-10.1.5.tgz#00c18d7225043b6fbce6a665697377998d453782" 517 | integrity sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw== 518 | 519 | eslint-scope@^8.3.0: 520 | version "8.3.0" 521 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.3.0.tgz#10cd3a918ffdd722f5f3f7b5b83db9b23c87340d" 522 | integrity sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ== 523 | dependencies: 524 | esrecurse "^4.3.0" 525 | estraverse "^5.2.0" 526 | 527 | eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.3: 528 | version "3.4.3" 529 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" 530 | integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== 531 | 532 | eslint-visitor-keys@^4.0.0: 533 | version "4.0.0" 534 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz#e3adc021aa038a2a8e0b2f8b0ce8f66b9483b1fb" 535 | integrity sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw== 536 | 537 | eslint-visitor-keys@^4.2.0: 538 | version "4.2.0" 539 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45" 540 | integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== 541 | 542 | eslint@9.28.0: 543 | version "9.28.0" 544 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.28.0.tgz#b0bcbe82a16945a40906924bea75e8b4980ced7d" 545 | integrity sha512-ocgh41VhRlf9+fVpe7QKzwLj9c92fDiqOj8Y3Sd4/ZmVA4Btx4PlUYPq4pp9JDyupkf1upbEXecxL2mwNV7jPQ== 546 | dependencies: 547 | "@eslint-community/eslint-utils" "^4.2.0" 548 | "@eslint-community/regexpp" "^4.12.1" 549 | "@eslint/config-array" "^0.20.0" 550 | "@eslint/config-helpers" "^0.2.1" 551 | "@eslint/core" "^0.14.0" 552 | "@eslint/eslintrc" "^3.3.1" 553 | "@eslint/js" "9.28.0" 554 | "@eslint/plugin-kit" "^0.3.1" 555 | "@humanfs/node" "^0.16.6" 556 | "@humanwhocodes/module-importer" "^1.0.1" 557 | "@humanwhocodes/retry" "^0.4.2" 558 | "@types/estree" "^1.0.6" 559 | "@types/json-schema" "^7.0.15" 560 | ajv "^6.12.4" 561 | chalk "^4.0.0" 562 | cross-spawn "^7.0.6" 563 | debug "^4.3.2" 564 | escape-string-regexp "^4.0.0" 565 | eslint-scope "^8.3.0" 566 | eslint-visitor-keys "^4.2.0" 567 | espree "^10.3.0" 568 | esquery "^1.5.0" 569 | esutils "^2.0.2" 570 | fast-deep-equal "^3.1.3" 571 | file-entry-cache "^8.0.0" 572 | find-up "^5.0.0" 573 | glob-parent "^6.0.2" 574 | ignore "^5.2.0" 575 | imurmurhash "^0.1.4" 576 | is-glob "^4.0.0" 577 | json-stable-stringify-without-jsonify "^1.0.1" 578 | lodash.merge "^4.6.2" 579 | minimatch "^3.1.2" 580 | natural-compare "^1.4.0" 581 | optionator "^0.9.3" 582 | 583 | espree@^10.0.1: 584 | version "10.0.1" 585 | resolved "https://registry.yarnpkg.com/espree/-/espree-10.0.1.tgz#600e60404157412751ba4a6f3a2ee1a42433139f" 586 | integrity sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww== 587 | dependencies: 588 | acorn "^8.11.3" 589 | acorn-jsx "^5.3.2" 590 | eslint-visitor-keys "^4.0.0" 591 | 592 | espree@^10.3.0: 593 | version "10.3.0" 594 | resolved "https://registry.yarnpkg.com/espree/-/espree-10.3.0.tgz#29267cf5b0cb98735b65e64ba07e0ed49d1eed8a" 595 | integrity sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg== 596 | dependencies: 597 | acorn "^8.14.0" 598 | acorn-jsx "^5.3.2" 599 | eslint-visitor-keys "^4.2.0" 600 | 601 | esquery@^1.5.0: 602 | version "1.5.0" 603 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" 604 | integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== 605 | dependencies: 606 | estraverse "^5.1.0" 607 | 608 | esrecurse@^4.3.0: 609 | version "4.3.0" 610 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 611 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 612 | dependencies: 613 | estraverse "^5.2.0" 614 | 615 | estraverse@^5.1.0, estraverse@^5.2.0: 616 | version "5.3.0" 617 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" 618 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== 619 | 620 | estree-walker@^2.0.2: 621 | version "2.0.2" 622 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" 623 | integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== 624 | 625 | esutils@^2.0.2: 626 | version "2.0.3" 627 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 628 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 629 | 630 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: 631 | version "3.1.3" 632 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 633 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 634 | 635 | fast-glob@^3.3.2: 636 | version "3.3.2" 637 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" 638 | integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== 639 | dependencies: 640 | "@nodelib/fs.stat" "^2.0.2" 641 | "@nodelib/fs.walk" "^1.2.3" 642 | glob-parent "^5.1.2" 643 | merge2 "^1.3.0" 644 | micromatch "^4.0.4" 645 | 646 | fast-json-stable-stringify@^2.0.0: 647 | version "2.1.0" 648 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 649 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 650 | 651 | fast-levenshtein@^2.0.6: 652 | version "2.0.6" 653 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 654 | integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== 655 | 656 | fastq@^1.6.0: 657 | version "1.17.1" 658 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" 659 | integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== 660 | dependencies: 661 | reusify "^1.0.4" 662 | 663 | fdir@^6.2.0: 664 | version "6.4.2" 665 | resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.4.2.tgz#ddaa7ce1831b161bc3657bb99cb36e1622702689" 666 | integrity sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ== 667 | 668 | file-entry-cache@^8.0.0: 669 | version "8.0.0" 670 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f" 671 | integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== 672 | dependencies: 673 | flat-cache "^4.0.0" 674 | 675 | fill-range@^7.1.1: 676 | version "7.1.1" 677 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" 678 | integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== 679 | dependencies: 680 | to-regex-range "^5.0.1" 681 | 682 | find-up@^5.0.0: 683 | version "5.0.0" 684 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" 685 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 686 | dependencies: 687 | locate-path "^6.0.0" 688 | path-exists "^4.0.0" 689 | 690 | flat-cache@^4.0.0: 691 | version "4.0.1" 692 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c" 693 | integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== 694 | dependencies: 695 | flatted "^3.2.9" 696 | keyv "^4.5.4" 697 | 698 | flatted@^3.2.9: 699 | version "3.3.1" 700 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" 701 | integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== 702 | 703 | fsevents@~2.3.2: 704 | version "2.3.3" 705 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" 706 | integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== 707 | 708 | function-bind@^1.1.2: 709 | version "1.1.2" 710 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" 711 | integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== 712 | 713 | glob-parent@^5.1.2: 714 | version "5.1.2" 715 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 716 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 717 | dependencies: 718 | is-glob "^4.0.1" 719 | 720 | glob-parent@^6.0.2: 721 | version "6.0.2" 722 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" 723 | integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== 724 | dependencies: 725 | is-glob "^4.0.3" 726 | 727 | globals@^14.0.0: 728 | version "14.0.0" 729 | resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" 730 | integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== 731 | 732 | graphemer@^1.4.0: 733 | version "1.4.0" 734 | resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" 735 | integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== 736 | 737 | has-flag@^4.0.0: 738 | version "4.0.0" 739 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 740 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 741 | 742 | hasown@^2.0.0: 743 | version "2.0.2" 744 | resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" 745 | integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== 746 | dependencies: 747 | function-bind "^1.1.2" 748 | 749 | ignore@^5.2.0: 750 | version "5.3.1" 751 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" 752 | integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== 753 | 754 | ignore@^7.0.0: 755 | version "7.0.4" 756 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-7.0.4.tgz#a12c70d0f2607c5bf508fb65a40c75f037d7a078" 757 | integrity sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A== 758 | 759 | import-fresh@^3.2.1: 760 | version "3.3.0" 761 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 762 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 763 | dependencies: 764 | parent-module "^1.0.0" 765 | resolve-from "^4.0.0" 766 | 767 | imurmurhash@^0.1.4: 768 | version "0.1.4" 769 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 770 | integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== 771 | 772 | is-core-module@^2.13.0: 773 | version "2.13.1" 774 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" 775 | integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== 776 | dependencies: 777 | hasown "^2.0.0" 778 | 779 | is-extglob@^2.1.1: 780 | version "2.1.1" 781 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 782 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 783 | 784 | is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: 785 | version "4.0.3" 786 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 787 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 788 | dependencies: 789 | is-extglob "^2.1.1" 790 | 791 | is-number@^7.0.0: 792 | version "7.0.0" 793 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 794 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 795 | 796 | is-reference@1.2.1: 797 | version "1.2.1" 798 | resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" 799 | integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== 800 | dependencies: 801 | "@types/estree" "*" 802 | 803 | isexe@^2.0.0: 804 | version "2.0.0" 805 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 806 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== 807 | 808 | js-yaml@^4.1.0: 809 | version "4.1.0" 810 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" 811 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 812 | dependencies: 813 | argparse "^2.0.1" 814 | 815 | json-buffer@3.0.1: 816 | version "3.0.1" 817 | resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" 818 | integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== 819 | 820 | json-schema-traverse@^0.4.1: 821 | version "0.4.1" 822 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 823 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 824 | 825 | json-stable-stringify-without-jsonify@^1.0.1: 826 | version "1.0.1" 827 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 828 | integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== 829 | 830 | keyv@^4.5.4: 831 | version "4.5.4" 832 | resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" 833 | integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== 834 | dependencies: 835 | json-buffer "3.0.1" 836 | 837 | levn@^0.4.1: 838 | version "0.4.1" 839 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 840 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 841 | dependencies: 842 | prelude-ls "^1.2.1" 843 | type-check "~0.4.0" 844 | 845 | locate-path@^6.0.0: 846 | version "6.0.0" 847 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" 848 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 849 | dependencies: 850 | p-locate "^5.0.0" 851 | 852 | lodash.merge@^4.6.2: 853 | version "4.6.2" 854 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" 855 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== 856 | 857 | lru-cache@^6.0.0: 858 | version "6.0.0" 859 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 860 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 861 | dependencies: 862 | yallist "^4.0.0" 863 | 864 | magic-string@^0.30.3: 865 | version "0.30.9" 866 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.9.tgz#8927ae21bfdd856310e07a1bc8dd5e73cb6c251d" 867 | integrity sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw== 868 | dependencies: 869 | "@jridgewell/sourcemap-codec" "^1.4.15" 870 | 871 | merge2@^1.3.0: 872 | version "1.4.1" 873 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" 874 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 875 | 876 | micromatch@^4.0.4: 877 | version "4.0.8" 878 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" 879 | integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== 880 | dependencies: 881 | braces "^3.0.3" 882 | picomatch "^2.3.1" 883 | 884 | minimatch@^3.1.2: 885 | version "3.1.2" 886 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 887 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 888 | dependencies: 889 | brace-expansion "^1.1.7" 890 | 891 | minimatch@^9.0.4: 892 | version "9.0.4" 893 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.4.tgz#8e49c731d1749cbec05050ee5145147b32496a51" 894 | integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw== 895 | dependencies: 896 | brace-expansion "^2.0.1" 897 | 898 | ms@2.1.2: 899 | version "2.1.2" 900 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 901 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 902 | 903 | natural-compare@^1.4.0: 904 | version "1.4.0" 905 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 906 | integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== 907 | 908 | optionator@^0.9.3: 909 | version "0.9.3" 910 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" 911 | integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== 912 | dependencies: 913 | "@aashutoshrathi/word-wrap" "^1.2.3" 914 | deep-is "^0.1.3" 915 | fast-levenshtein "^2.0.6" 916 | levn "^0.4.1" 917 | prelude-ls "^1.2.1" 918 | type-check "^0.4.0" 919 | 920 | p-limit@^3.0.2: 921 | version "3.1.0" 922 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 923 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 924 | dependencies: 925 | yocto-queue "^0.1.0" 926 | 927 | p-locate@^5.0.0: 928 | version "5.0.0" 929 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" 930 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 931 | dependencies: 932 | p-limit "^3.0.2" 933 | 934 | parent-module@^1.0.0: 935 | version "1.0.1" 936 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 937 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 938 | dependencies: 939 | callsites "^3.0.0" 940 | 941 | path-exists@^4.0.0: 942 | version "4.0.0" 943 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 944 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 945 | 946 | path-key@^3.1.0: 947 | version "3.1.1" 948 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 949 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 950 | 951 | path-parse@^1.0.7: 952 | version "1.0.7" 953 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 954 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 955 | 956 | picomatch@^2.3.1: 957 | version "2.3.1" 958 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 959 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 960 | 961 | picomatch@^4.0.2: 962 | version "4.0.2" 963 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab" 964 | integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== 965 | 966 | prelude-ls@^1.2.1: 967 | version "1.2.1" 968 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 969 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 970 | 971 | punycode@^2.1.0: 972 | version "2.3.1" 973 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" 974 | integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== 975 | 976 | queue-microtask@^1.2.2: 977 | version "1.2.3" 978 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" 979 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== 980 | 981 | resolve-from@^4.0.0: 982 | version "4.0.0" 983 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 984 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 985 | 986 | resolve@^1.22.1: 987 | version "1.22.8" 988 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" 989 | integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== 990 | dependencies: 991 | is-core-module "^2.13.0" 992 | path-parse "^1.0.7" 993 | supports-preserve-symlinks-flag "^1.0.0" 994 | 995 | reusify@^1.0.4: 996 | version "1.0.4" 997 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" 998 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 999 | 1000 | rollup@4.41.1: 1001 | version "4.41.1" 1002 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.41.1.tgz#46ddc1b33cf1b0baa99320d3b0b4973dc2253b6a" 1003 | integrity sha512-cPmwD3FnFv8rKMBc1MxWCwVQFxwf1JEmSX3iQXrRVVG15zerAIXRjMFVWnd5Q5QvgKF7Aj+5ykXFhUl+QGnyOw== 1004 | dependencies: 1005 | "@types/estree" "1.0.7" 1006 | optionalDependencies: 1007 | "@rollup/rollup-android-arm-eabi" "4.41.1" 1008 | "@rollup/rollup-android-arm64" "4.41.1" 1009 | "@rollup/rollup-darwin-arm64" "4.41.1" 1010 | "@rollup/rollup-darwin-x64" "4.41.1" 1011 | "@rollup/rollup-freebsd-arm64" "4.41.1" 1012 | "@rollup/rollup-freebsd-x64" "4.41.1" 1013 | "@rollup/rollup-linux-arm-gnueabihf" "4.41.1" 1014 | "@rollup/rollup-linux-arm-musleabihf" "4.41.1" 1015 | "@rollup/rollup-linux-arm64-gnu" "4.41.1" 1016 | "@rollup/rollup-linux-arm64-musl" "4.41.1" 1017 | "@rollup/rollup-linux-loongarch64-gnu" "4.41.1" 1018 | "@rollup/rollup-linux-powerpc64le-gnu" "4.41.1" 1019 | "@rollup/rollup-linux-riscv64-gnu" "4.41.1" 1020 | "@rollup/rollup-linux-riscv64-musl" "4.41.1" 1021 | "@rollup/rollup-linux-s390x-gnu" "4.41.1" 1022 | "@rollup/rollup-linux-x64-gnu" "4.41.1" 1023 | "@rollup/rollup-linux-x64-musl" "4.41.1" 1024 | "@rollup/rollup-win32-arm64-msvc" "4.41.1" 1025 | "@rollup/rollup-win32-ia32-msvc" "4.41.1" 1026 | "@rollup/rollup-win32-x64-msvc" "4.41.1" 1027 | fsevents "~2.3.2" 1028 | 1029 | run-parallel@^1.1.9: 1030 | version "1.2.0" 1031 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" 1032 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 1033 | dependencies: 1034 | queue-microtask "^1.2.2" 1035 | 1036 | semver@^7.6.0: 1037 | version "7.6.0" 1038 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" 1039 | integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== 1040 | dependencies: 1041 | lru-cache "^6.0.0" 1042 | 1043 | shebang-command@^2.0.0: 1044 | version "2.0.0" 1045 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1046 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1047 | dependencies: 1048 | shebang-regex "^3.0.0" 1049 | 1050 | shebang-regex@^3.0.0: 1051 | version "3.0.0" 1052 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1053 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1054 | 1055 | strip-json-comments@^3.1.1: 1056 | version "3.1.1" 1057 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 1058 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1059 | 1060 | supports-color@^7.1.0: 1061 | version "7.2.0" 1062 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1063 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1064 | dependencies: 1065 | has-flag "^4.0.0" 1066 | 1067 | supports-preserve-symlinks-flag@^1.0.0: 1068 | version "1.0.0" 1069 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 1070 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 1071 | 1072 | to-regex-range@^5.0.1: 1073 | version "5.0.1" 1074 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1075 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1076 | dependencies: 1077 | is-number "^7.0.0" 1078 | 1079 | ts-api-utils@^2.1.0: 1080 | version "2.1.0" 1081 | resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.1.0.tgz#595f7094e46eed364c13fd23e75f9513d29baf91" 1082 | integrity sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ== 1083 | 1084 | tslib@2.8.1: 1085 | version "2.8.1" 1086 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" 1087 | integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== 1088 | 1089 | type-check@^0.4.0, type-check@~0.4.0: 1090 | version "0.4.0" 1091 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 1092 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 1093 | dependencies: 1094 | prelude-ls "^1.2.1" 1095 | 1096 | typescript@5.8.3: 1097 | version "5.8.3" 1098 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.3.tgz#92f8a3e5e3cf497356f4178c34cd65a7f5e8440e" 1099 | integrity sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ== 1100 | 1101 | uri-js@^4.2.2: 1102 | version "4.4.1" 1103 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 1104 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 1105 | dependencies: 1106 | punycode "^2.1.0" 1107 | 1108 | which@^2.0.1: 1109 | version "2.0.2" 1110 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1111 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1112 | dependencies: 1113 | isexe "^2.0.0" 1114 | 1115 | yallist@^4.0.0: 1116 | version "4.0.0" 1117 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 1118 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 1119 | 1120 | yocto-queue@^0.1.0: 1121 | version "0.1.0" 1122 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 1123 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 1124 | --------------------------------------------------------------------------------