├── .envrc ├── .github ├── FUNDING.yml └── workflows │ ├── gh-pages.yml │ └── npm-publish.yml ├── .gitignore ├── .nvmrc ├── .yarn └── releases │ └── yarn-4.6.0.cjs ├── .yarnrc.yml ├── LICENSE ├── README.md ├── calculate-sizes ├── hooks └── pre-commit ├── package.json ├── src ├── demo │ ├── feature_toggle.css │ ├── index.css │ ├── index.html │ ├── index.ts │ ├── page.css │ ├── slider-multi.ts │ ├── slider-responsive.ts │ └── slider-simple.ts └── lib │ ├── ScrollSnapAutoplay.ts │ ├── ScrollSnapDraggable.ts │ ├── ScrollSnapLoop.ts │ ├── ScrollSnapPlugin.ts │ ├── ScrollSnapSlider.ts │ ├── index.ts │ └── scroll-snap-slider.css ├── tsconfig.json ├── tsconfig.node.json ├── typedoc.json ├── vite.config.ts └── yarn.lock /.envrc: -------------------------------------------------------------------------------- 1 | git config core.hooksPath hooks 2 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: barthy-koeln 4 | -------------------------------------------------------------------------------- /.github/workflows/gh-pages.yml: -------------------------------------------------------------------------------- 1 | name: Deploy site to Pages 2 | 3 | on: 4 | push: 5 | branches: ["main"] 6 | 7 | workflow_dispatch: 8 | 9 | permissions: 10 | contents: read 11 | pages: write 12 | id-token: write 13 | 14 | concurrency: 15 | group: "pages" 16 | cancel-in-progress: false 17 | 18 | env: 19 | BUILD_PATH: "." 20 | 21 | jobs: 22 | build: 23 | name: Build 24 | runs-on: ubuntu-latest 25 | steps: 26 | - name: Checkout 27 | uses: actions/checkout@v4 28 | 29 | - name: Setup Node 30 | uses: actions/setup-node@v4 31 | with: 32 | cache: yarn 33 | cache-dependency-path: ${{ env.BUILD_PATH }}/yarn.lock 34 | 35 | - name: Setup Pages 36 | id: pages 37 | uses: actions/configure-pages@v5 38 | 39 | - name: Install dependencies 40 | run: yarn install --immutable 41 | working-directory: ${{ env.BUILD_PATH }} 42 | 43 | - name: Build 44 | run: yarn build:demo 45 | working-directory: ${{ env.BUILD_PATH }} 46 | 47 | - name: Upload artifact 48 | uses: actions/upload-pages-artifact@v3 49 | with: 50 | path: ${{ env.BUILD_PATH }}/demo 51 | 52 | deploy: 53 | environment: 54 | name: github-pages 55 | url: ${{ steps.deployment.outputs.page_url }} 56 | needs: build 57 | runs-on: ubuntu-latest 58 | name: Deploy 59 | steps: 60 | - name: Deploy to GitHub Pages 61 | id: deployment 62 | uses: actions/deploy-pages@v4 63 | -------------------------------------------------------------------------------- /.github/workflows/npm-publish.yml: -------------------------------------------------------------------------------- 1 | name: publish-to-npm 2 | 3 | on: 4 | workflow_dispatch: 5 | release: 6 | types: [ created ] 7 | 8 | jobs: 9 | publish-npm: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v4 13 | - uses: actions/setup-node@v4 14 | with: 15 | registry-url: https://registry.npmjs.org/ 16 | always-auth: true 17 | - run: yarn 18 | - run: yarn build:lib 19 | env: 20 | NODE_ENV: production 21 | - run: npm publish --provenance --access public 22 | env: 23 | NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} 24 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ### Logs 2 | logs 3 | *.log 4 | yarn-debug.log* 5 | yarn-error.log* 6 | 7 | ### Dependency directories 8 | node_modules/ 9 | 10 | ### Optional eslint cache 11 | .eslintcache 12 | 13 | ### Yarn Integrity file 14 | .yarn-integrity 15 | 16 | ### yarn v2 17 | .yarn/cache 18 | .yarn/unplugged 19 | .yarn/build-state.yml 20 | .yarn/install-state.gz 21 | .pnp.* 22 | 23 | ### Sass template 24 | .sass-cache/ 25 | *.css.map 26 | *.sass.map 27 | *.scss.map 28 | 29 | ### IDE 30 | .idea 31 | 32 | /demo 33 | /dist 34 | -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | 22 2 | -------------------------------------------------------------------------------- /.yarnrc.yml: -------------------------------------------------------------------------------- 1 | nodeLinker: node-modules 2 | 3 | yarnPath: .yarn/releases/yarn-4.6.0.cjs 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Barthélémy Bonhomme 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 | # Scroll Snap Slider 2 | 3 | [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com) 4 | [![Maintainability](https://api.codeclimate.com/v1/badges/c4c7edd819ca59e9f5e2/maintainability)](https://codeclimate.com/github/barthy-koeln/scroll-snap-slider/maintainability) 5 | [![Tree Shaking: Supported](https://badgen.net/bundlephobia/tree-shaking/scroll-snap-slider)](https://bundlephobia.com/result?p=scroll-snap-slider) 6 |
7 | [![npm Version](https://badgen.net/npm/v/scroll-snap-slider)](https://www.npmjs.com/package/scroll-snap-slider) 8 | [![Dependency Count: 0](https://badgen.net/bundlephobia/dependency-count/scroll-snap-slider)](https://bundlephobia.com/result?p=scroll-snap-slider) 9 | [![minzipped Size](https://badgen.net/bundlephobia/minzip/scroll-snap-slider)](https://bundlephobia.com/result?p=scroll-snap-slider) 10 | 11 | Mostly CSS slider with great performance. 12 | 13 | [demo](https://barthy-koeln.github.io/scroll-snap-slider/) | [docs](https://barthy-koeln.github.io/scroll-snap-slider/docs/) 14 | 15 | ## Table of Contents 16 | 17 | - [Premise](#premise) 18 | - [Sizes](#sizes) 19 | - [Restrictions](#restrictions) 20 | - [Installing](#installing) 21 | - [Usage](#usage) 22 | - [Markup](#markup) 23 | - [CSS](#css) 24 | - [Additional Styles](#additional-styles) 25 | - [JavaScript](#javascript) 26 | - [API](#api) 27 | - [Events](#events) 28 | - [Public Properties](#public-properties) 29 | - [Support](#support) 30 | - [Contributing](#contributing) 31 | 32 | ## Features 33 | 34 | * Native touch integration (draggable) 35 | * Native scroll integration (any peripheral — if it can scroll, it can use this slider) 36 | * Full HTML slides (any content possible) 37 | * Usable with native DOM methods like `scrollIntoView()` 38 | 39 | ## Premise 40 | 41 | This library is an opinionated minimal implementation of a common feature across many websites. 42 | To keep it small, there are not many fancy features and there is almost no error handling. 43 | 44 | However, with a clear API and the use of a ES6 class, it can provide a useful base for custom extensions. 45 | 46 | What this module contains: 47 | 48 | * Example markup for a `scroll-snap` slider 49 | * CSS default styling for a `scroll-snap` slider without scrollbars 50 | * ES6 class to slightly enhance functionality 51 | * ES6 class plugins for `loop`, `autoplay`, and desktop/mouse `draggable` features 52 | * TypeScript Typings 53 | 54 | ## Sizes 55 | 56 | Here are the sizes of individual modules, using terser and gzip with default options. 57 | 58 | | Item | minified (terser) | minified + gzipped | 59 | |------------------|-------------------|--------------------| 60 | | complete exports | 8.4 kB | 2.1 kB | 61 | 62 | ## Restrictions 63 | 64 | This library only handles sliders on the X-axis. 65 | 66 | For more "fully-featured" implementations, go to: 67 | 68 | * [Nick Piscitelli's Glider.js](https://github.com/NickPiscitelli/Glider.js) 69 | * [Tanner Hodges' snap-slider](https://tannerhodges.github.io/snap-slider/) 70 | 71 | ## Installing 72 | 73 | ```shell 74 | npm install scroll-snap-slider 75 | 76 | yarn add scroll-snap-slider 77 | ``` 78 | 79 | ## Usage 80 | 81 | The class provided in this package augments a slider with a few events and methods. 82 | 83 | ### Markup 84 | 85 | You can add whatever markup inside the slides. 86 | 87 | ```html 88 | 89 | 103 | ``` 104 | 105 | ### CSS 106 | 107 | ```css 108 | @import 'scroll-snap-slider'; 109 | ``` 110 | 111 | ### Additional Styles 112 | 113 | Prevents page navigation on horizontal scrolling, i.E. on macOS. 114 | [\[Support tables\]](https://caniuse.com/?search=overscroll-behavior) 115 | 116 | ```css 117 | .scroll-snap-slider { 118 | overscroll-behavior-x: none; 119 | overscroll-behavior-y: auto; 120 | } 121 | ``` 122 | 123 | Prevents scrolling past elements in the slider: 124 | [\[Support tables\]](https://caniuse.com/?search=scroll-snap-stop) 125 | 126 | ```css 127 | .scroll-snap-slide { 128 | scroll-snap-stop: always; 129 | } 130 | ``` 131 | 132 | ### JavaScript 133 | 134 | If you do not want to add any additional behaviour, the JavaScript instance is not needed. This class dispatches several 135 | events and exposes a few methods, with which you can enhance your slider's behaviour. 136 | 137 | **Default behaviour:** 138 | 139 | ```javascript 140 | import { ScrollSnapSlider } from 'scroll-snap-slider' 141 | 142 | const element = document.querySelector('.example-slider') 143 | const slider = new ScrollSnapSlider({ element }) 144 | 145 | slider.addEventListener('slide-start', function (event) { 146 | console.info(`Started sliding towards slide ${event.detail}.`) 147 | }) 148 | 149 | slider.addEventListener('slide-pass', function (event) { 150 | console.info(`Passing slide ${event.detail}.`) 151 | }) 152 | 153 | slider.addEventListener('slide-stop', function (event) { 154 | console.info(`Stopped sliding at slide ${event.detail}.`) 155 | }) 156 | ``` 157 | 158 | **Advanced config:** 159 | 160 | ```javascript 161 | import { ScrollSnapSlider } from 'scroll-snap-slider' 162 | 163 | // Do not automatically attach scroll listener 164 | const slider = new ScrollSnapSlider({ 165 | element: document.querySelector('.example-slider'), 166 | scrollTimeout: 50, // Sets a shorter timeout to detect scroll end 167 | roundingMethod: Math.round, // Dispatch 'slide-pass' events around the center of each slide 168 | // roundingMethod: Math.ceil, // Dispatch 'slide-pass' events as soon as the next one is visible 169 | // roundingMethod: Math.floor, // Dispatch 'slide-pass' events only when the next one is fully visible 170 | sizingMethod (slider) { 171 | 172 | // with padding 173 | return slider.element.firstElementChild.offsetWidth 174 | 175 | // without padding 176 | // return slider.element.firstElementChild.clientWidth 177 | } 178 | }) 179 | ``` 180 | 181 | **Plugins:** 182 | 183 | You can add one or multiple of the available Plugins: 184 | 185 | * `ScrollSnapAutoplay`: Automatically slides at a given interval 186 | * `ScrollSnapLoop`: Sliding past the last element shows the first without sliding to the start (and vice-versa) 187 | * `ScrollSnapDraggable`: Drag the slider with your mouse. Note: this does not affect mobile behaviour and is not 188 | necessary for touch sliding. 189 | 190 | ```javascript 191 | import { ScrollSnapSlider, ScrollSnapAutoplay, ScrollSnapLoop } from 'scroll-snap-slider'; 192 | 193 | const element = document.querySelector('.example-slider') 194 | const slider = new ScrollSnapSlider({ element }).with([ 195 | new ScrollSnapAutoplay(1200), 196 | new ScrollSnapLoop 197 | ]) 198 | ``` 199 | 200 | Creating your own plugin: 201 | 202 | ```javascript 203 | export class CustomPlugin extends ScrollSnapPlugin { 204 | 205 | /** 206 | * Pass any config here 207 | * @param {*} config 208 | */ 209 | constructor (config) { 210 | super() 211 | 212 | this.config = config 213 | } 214 | 215 | /** 216 | * Chose a unique plugin name. If you need multiple instances of the same plugin on a slider, each must return a unique id. 217 | * @return {String} 218 | */ 219 | get id () { 220 | return 'lubba-wubba-dub-dub' 221 | } 222 | 223 | /** 224 | * Attach listeners, fetch DOM things, save reference to the slider 225 | * @param {ScrollSnapSlider} slider 226 | * @override 227 | */ 228 | enable (slider) { 229 | // TODO method stub 230 | } 231 | 232 | /** 233 | * Free resources, remove listeners, ... 234 | * @override 235 | */ 236 | disable () { 237 | // TODO method stub 238 | } 239 | } 240 | ``` 241 | 242 | ## API 243 | 244 | | Method | Description | 245 | |--------------------------------|-----------------------------------------------------------------------------| 246 | | `slideTo(index: Number): void` | Scrolls to slide at `index`. | 247 | | `addEventListener(...)` | This is a shortcut for `slider.element.addEventListener(...)`. | 248 | | `removeEventListener(...)` | This is a shortcut for `slider.element.removeEventListener(...)`. | 249 | | `attachEventListeners()` | Enables the JS behaviour of this plugin. This is called in the constructor. | 250 | | `detachEventListeners()` | Disables the JS behaviour of this plugin. | 251 | | `destroy()` | Free resources and listeners. You can/should do `slider = null` after this. | 252 | 253 | ## Events 254 | 255 | Events dispatched on the slider's `element`: 256 | 257 | | Event Name | Event Detail Type | Description | 258 | |---------------|-------------------|----------------------------------------------------------------------------------------------------------------------------------------------| 259 | | `slide-start` | `Number` | Dispatched when sliding starts toward slide at `event.detail`. | 260 | | `slide-pass` | `Number` | Dispatched when sliding passes (crosses the threshold to) slide at `event.detail`. The threshold is defined/altered by the `roundingMethod`. | 261 | | `slide-stop` | `Number` | Dispatched when sliding stopped at index `event.detail`, i.e. the last scroll event happened before `scrollTimeout` ms. | 262 | 263 | You can use the proxy methods `addEventListener` and `removeEventListener` to listen to them. 264 | 265 | ## Public Properties 266 | 267 | | Property | Description | 268 | |------------------------------------------|-----------------------------------------------------------------------| 269 | | `slide: Number` (read only) | Currently active slide. | 270 | | `element: Element` (read only) | The element passed into the constructor. | 271 | | `scrollTimeout: Number` | Timeout delay in milliseconds used to catch the end of scroll events. | 272 | | `plugins: Map` | Map of plugins enabled for this slider | 273 | 274 | ## Support 275 | 276 | Check out the [support tables for CSS scroll snap](https://caniuse.com/css-snappoints). 277 | Note that it's up to you to inject or add vendor specific code. 278 | 279 | ## Contributing 280 | 281 | Feel free to open issues and pull requests, but keep the minimalist approach of this project in mind. When in doubt, 282 | open an issue first and we can discuss. 283 | 284 | ### Running locally 285 | 286 | ```shell 287 | yarn # install deps 288 | yarn dev # run a local dev-server of the demo 289 | yarn build # build the module 290 | ``` 291 | -------------------------------------------------------------------------------- /calculate-sizes: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | DIR=$(dirname "$(realpath "$0")") 4 | FILES=$(ls "$DIR/dist/"*.js) 5 | 6 | echo "| Item | minified (terser) | minified + gzipped |" 7 | echo "|--------------------------------|-----------------------|-----------------------|" 8 | 9 | 10 | for FILE in $FILES; do 11 | BASENAME=$(basename "$FILE" .js) 12 | MINIFIED="$DIR/dist/$BASENAME.js.min" 13 | ZIPPED="$DIR/dist/$BASENAME.js.gz" 14 | terser --module --rename "$FILE" >"$MINIFIED" 15 | gzip -c "$MINIFIED" >"$ZIPPED" 16 | 17 | PADDING=' ' 18 | if [[ "$BASENAME" == 'scroll-snap-slider' ]]; then 19 | PADDING="\t" 20 | fi 21 | 22 | echo -e "| $BASENAME$PADDING\t | $(gstat --printf="%s" "$MINIFIED") B \t\t | $(gstat --printf="%s" "$ZIPPED") B \t\t |" 23 | 24 | rm "$MINIFIED" 25 | rm "$ZIPPED" 26 | done 27 | 28 | echo -e "\n" 29 | -------------------------------------------------------------------------------- /hooks/pre-commit: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # We want to use globs to pass multiple files 3 | # shellcheck disable=SC2046 4 | # shellcheck disable=SC2086 5 | # SC2046 Quote this to prevent word splitting: https://github.com/koalaman/shellcheck/wiki/SC2046 6 | # SC2086 Double quote to prevent globbing and word splitting: https://github.com/koalaman/shellcheck/wiki/SC2086 7 | 8 | DIR=$(realpath "$(dirname "${BASH_SOURCE[0]}")") 9 | source "$DIR/../node_modules/.bin/echolorized" 10 | 11 | colored_output "$GREEN" "\n[EXECUTING PRE COMMIT HOOK]" 12 | 13 | DIRECTORIES="src" 14 | 15 | if grep "console" $(find "$DIRECTORIES" -type f -name '*.ts') > /dev/null; then 16 | e_error "Remove console.log from the code." 17 | exit 1 18 | fi 19 | 20 | #e_info "Linting & Fixing JS Code Style" 21 | #if ! eslint --fix $(find "$DIRECTORIES" -type f -name '*.js'); then 22 | # e_error "JavaScript Error in JavaScript file. Run ${YELLOW}eslint src/**/*.js${RESET} to check." 23 | # exit 1 24 | #fi 25 | # 26 | #e_info "Linting & Fixing CSS Code Style" 27 | #if ! stylelint --fix $(find "$DIRECTORIES" -type f -name '*.css'); then 28 | # e_error "Error in CSS file. Run ${YELLOW}stylelint *.css${RESET} to check." 29 | # exit 1 30 | #fi 31 | 32 | e_info "All good, staging additional changes.\n" 33 | git update-index --again 34 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "scroll-snap-slider", 3 | "version": "3.3.2", 4 | "description": "Mostly CSS slider with great performance.", 5 | "keywords": [ 6 | "slider", 7 | "carousel", 8 | "scroll", 9 | "scroll-snap" 10 | ], 11 | "main": "dist/scroll-snap-slider.js", 12 | "module": "dist/scroll-snap-slider.mjs", 13 | "types": "dist/scroll-snap-slider.d.ts", 14 | "style": "dist/scroll-snap-slider.css", 15 | "exports": { 16 | ".": { 17 | "types": "./dist/scroll-snap-slider.d.ts", 18 | "import": "./dist/scroll-snap-slider.mjs", 19 | "require": "./dist/scroll-snap-slider.js" 20 | }, 21 | "./dist/scroll-snap-slider.css": "./dist/scroll-snap-slider.css" 22 | }, 23 | "files": [ 24 | "dist" 25 | ], 26 | "sideEffects": false, 27 | "browserslist": [ 28 | "defaults" 29 | ], 30 | "repository": "https://github.com/barthy-koeln/scroll-snap-slider", 31 | "author": "Barthy Bonhomme ", 32 | "license": "MIT", 33 | "devDependencies": { 34 | "@types/node": "^22.13.8", 35 | "@typescript-eslint/eslint-plugin": "^8.25.0", 36 | "@typescript-eslint/parser": "^8.25.0", 37 | "bash-echolorized": "^1.0.1", 38 | "core-js": "^3.40.0", 39 | "terser": "^5.39.0", 40 | "typedoc": "^0.27.9", 41 | "typescript": "^5.8.2", 42 | "vite": "5.4.6", 43 | "vite-plugin-dts": "^4.5.1" 44 | }, 45 | "scripts": { 46 | "build:doc": "typedoc --tsconfig tsconfig.json --options ./typedoc.json src", 47 | "build:css": "mkdir -p dist && cp src/lib/scroll-snap-slider.css dist/scroll-snap-slider.css", 48 | "build:demo": "vite build --mode demo --base scroll-snap-slider && yarn build:doc", 49 | "build:lib": "vite build --mode lib && yarn build:css", 50 | "dev": "vite dev" 51 | }, 52 | "packageManager": "yarn@4.6.0" 53 | } 54 | -------------------------------------------------------------------------------- /src/demo/feature_toggle.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --toggle-padding: 0.18rem; 3 | --toggle-height: calc(2rem - var(--toggle-padding)); 4 | --toggle-inner-height: calc(var(--toggle-height) - 4 * var(--toggle-padding)); 5 | --toggle-width: calc(2 * var(--toggle-height)); 6 | } 7 | 8 | .feature-toggle { 9 | align-items: center; 10 | cursor: pointer; 11 | display: flex; 12 | flex-direction: row; 13 | gap: var(--spacer-half); 14 | justify-content: flex-end; 15 | position: relative; 16 | } 17 | 18 | .feature-toggle__input { 19 | height: 0; 20 | opacity: 0; 21 | width: 0; 22 | } 23 | 24 | .feature-toggle__slider { 25 | background-color: var(--color-neutral); 26 | border: 3px solid var(--color-neutral); 27 | border-radius: var(--toggle-height); 28 | box-sizing: border-box; 29 | cursor: pointer; 30 | height: calc(var(--toggle-height)); 31 | position: relative; 32 | transition-duration: var(--transition-duration); 33 | transition-property: border-color, background-color; 34 | width: calc(2 * var(--toggle-height)); 35 | } 36 | 37 | .feature-toggle__slider::before { 38 | background-color: var(--color-light); 39 | border-radius: 50%; 40 | bottom: var(--toggle-padding); 41 | content: ""; 42 | height: var(--toggle-inner-height); 43 | left: var(--toggle-padding); 44 | position: absolute; 45 | transition: var(--transition-duration); 46 | width: var(--toggle-inner-height); 47 | } 48 | 49 | .feature-toggle__input:checked + .feature-toggle__slider { 50 | background-color: var(--color-accent); 51 | border-color: var(--color-accent); 52 | } 53 | 54 | .feature-toggle__input:disabled + .feature-toggle__slider { 55 | background-color: rgb(224 224 224 / 50%); 56 | cursor: not-allowed; 57 | opacity: 0.7; 58 | } 59 | 60 | .feature-toggle__input:focus + .feature-toggle__slider { 61 | border-color: var(--color-accent); 62 | } 63 | 64 | .feature-toggle__input:checked:focus + .feature-toggle__slider { 65 | border-color: var(--color-accent-active); 66 | } 67 | 68 | .feature-toggle__input:checked + .feature-toggle__slider::before { 69 | transform: translateX(calc(var(--toggle-width) - 4 * var(--toggle-padding) - 100%)); 70 | } 71 | -------------------------------------------------------------------------------- /src/demo/index.css: -------------------------------------------------------------------------------- 1 | @import "page.css"; 2 | @import "feature_toggle.css"; 3 | @import "../lib/scroll-snap-slider.css"; 4 | 5 | .scroll-snap-slider { 6 | --slider-h: 300px; 7 | --slider-w: 400px; 8 | 9 | box-sizing: border-box; 10 | height: var(--slider-h); 11 | margin: 1rem auto; 12 | width: var(--slider-w); 13 | } 14 | 15 | .scroll-snap-slider.-simple { 16 | --slider-h: 600px; 17 | --slider-w: 900px; 18 | } 19 | 20 | .scroll-snap-slider.-multi, 21 | .scroll-snap-slider.-responsive { 22 | max-width: calc(3 * var(--slider-w)); 23 | width: 100%; 24 | } 25 | 26 | .scroll-snap-slider.-draggable { 27 | cursor: grab; 28 | } 29 | 30 | .scroll-snap-slider.-draggable.-dragging { 31 | cursor: grabbing; 32 | } 33 | 34 | .scroll-snap-slider .scroll-snap-slide { 35 | scroll-margin-block: 8rem; 36 | width: var(--slider-w); 37 | } 38 | 39 | .scroll-snap-slider .scroll-snap-slide article { 40 | align-items: center; 41 | background: var(--color-dark); 42 | color: var(--color-light); 43 | display: flex; 44 | flex-direction: column; 45 | height: 100%; 46 | justify-content: center; 47 | text-align: center; 48 | width: 100%; 49 | } 50 | 51 | .scroll-snap-slider img { 52 | height: 100%; 53 | object-fit: cover; 54 | object-position: center; 55 | width: 100%; 56 | } 57 | 58 | .features { 59 | display: flex; 60 | flex-direction: column; 61 | gap: var(--spacer); 62 | left: 0; 63 | margin: auto; 64 | padding: 2rem; 65 | position: absolute; 66 | text-align: end; 67 | transform: translateX(-100%); 68 | } 69 | 70 | .indicators { 71 | align-items: center; 72 | display: flex; 73 | flex-direction: row; 74 | gap: var(--spacer-half); 75 | justify-content: center; 76 | opacity: 1; 77 | transition: opacity var(--transition-duration) var(--transition-easing); 78 | } 79 | 80 | .indicators.-hidden { 81 | opacity: 0; 82 | } 83 | 84 | .indicators input[type="radio"] { 85 | display: none; 86 | } 87 | 88 | .indicator { 89 | background-color: var(--color-neutral); 90 | border: 0; 91 | border-radius: 50%; 92 | cursor: pointer; 93 | display: block; 94 | height: var(--spacer); 95 | transition: background-color var(--transition-duration) var(--transition-easing); 96 | width: var(--spacer); 97 | } 98 | 99 | .indicator:not(.-active):hover { 100 | background-color: var(--color-active); 101 | } 102 | 103 | .indicators .indicator.-active { 104 | background-color: var(--color-accent); 105 | } 106 | 107 | .visually-hidden:not(:focus, :active) { 108 | clip: rect(0 0 0 0); 109 | clip-path: inset(50%); 110 | height: 1px; 111 | overflow: hidden; 112 | position: absolute; 113 | white-space: nowrap; 114 | width: 1px; 115 | } 116 | 117 | .arrow { 118 | background: transparent; 119 | border: 0; 120 | cursor: pointer; 121 | height: var(--spacer-double); 122 | margin: 0 var(--spacer-half); 123 | } 124 | 125 | .arrow.-disabled { 126 | cursor: not-allowed; 127 | opacity: 0.3; 128 | } 129 | 130 | .arrow svg { 131 | height: 100%; 132 | width: auto; 133 | } 134 | 135 | .arrow.-prev svg { 136 | transform: rotate(180deg); 137 | } 138 | -------------------------------------------------------------------------------- /src/demo/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ScrollSnapSlider - Mostly CSS slider with great performance! 5 | 6 | 7 | 8 | 12 | 13 | 17 | 18 | 19 |
20 | 29 | 30 |
31 |

Scroll Snap Slider

32 |

Mostly CSS Slider with great performance

33 |

34 | These demos include some additional UI. The Arrows and dots are not included in the library, but code samples 35 | can be copied from the demo code. 36 |

37 |

38 | 42 | Read more on GitHub. 43 | 44 |

45 |

46 | 50 | Or scroll through the auto-generated docs. 51 | 52 |

53 |
54 | 55 |
56 | 76 |
77 | 78 |
82 |

Simple Slider

83 |

Scroll/Swipe horizontally or use the navigation dots...

84 |

You can even add anchor links, like this one that leads to slide number three.

85 |
86 |
87 |
88 |

Included Plug-Ins:

89 | 98 | 107 | 116 |
117 |
118 |
119 |
    120 |
  • 125 | pug in a blanket 132 |
  • 133 |
  • 138 | cat's nose up close 145 |
  • 146 |
  • 152 |
    153 |

    This one is just text

    154 |

    Lorem ipsum and all that stuff.

    155 |
    156 |
  • 157 |
  • 162 | same pug in another blanket 169 |
  • 170 |
  • 175 | cute puppy eyes 182 |
  • 183 |
184 | 185 |
186 | 201 | 202 | 210 | 211 | 218 | 219 | 226 | 227 | 234 | 235 | 242 | 243 | 258 |
259 |
260 |
261 |
262 | 263 |
267 |

Multiple Slides Visible

268 |

The arrows tell you if you can go the next/prev slide.

269 |
    270 |
  • 274 | pug in a blanket 280 |
  • 281 |
  • 285 | cat's nose up close 291 |
  • 292 |
  • 296 |
    297 |

    This one is just text

    298 |

    Lorem ipsum and all that stuff.

    299 |
    300 |
  • 301 |
  • 305 | same pug in another blanket 311 |
  • 312 |
  • 316 | cute puppy eyes 322 |
  • 323 |
  • 327 | cute puppy eyes 333 |
  • 334 |
  • 338 | cute puppy eyes 344 |
  • 345 |
  • 349 | cute puppy eyes 355 |
  • 356 |
357 |
358 | 373 | 374 | 389 |
390 |
391 | 392 |
396 |

Responsiveness Example

397 |

These arrows disappear if there's nothing to scroll.

398 |
    399 |
  • 403 | pug in a blanket 409 |
  • 410 |
  • 414 | cat's nose up close 420 |
  • 421 |
  • 425 |
    426 |

    This one is just text

    427 |

    Lorem ipsum and all that stuff.

    428 |
    429 |
  • 430 |
431 |
432 | 447 | 448 | 463 |
464 |
465 | 466 |
470 |

Pure CSS Slider

471 |

It's not pretty but it works. Click the scrollbar arrows, scroll, or drag the scrollbar.

472 |
    473 |
  • 477 | pug in a blanket 483 |
  • 484 |
  • 488 | cat's nose up close 494 |
  • 495 |
  • 499 |
    500 |

    This one is just text

    501 |

    Lorem ipsum and all that stuff.

    502 |
    503 |
  • 504 |
  • 508 | same pug in another blanket 514 |
  • 515 |
  • 519 | cute puppy eyes 525 |
  • 526 |
527 |
528 |
529 | 530 | 531 | -------------------------------------------------------------------------------- /src/demo/index.ts: -------------------------------------------------------------------------------- 1 | import '@/demo/slider-simple' 2 | import '@/demo/slider-multi' 3 | import '@/demo/slider-responsive' 4 | import './index.css' 5 | 6 | document.body.dataset.theme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light' 7 | 8 | document.addEventListener('DOMContentLoaded', function () { 9 | const button = document.querySelector('.toggle-theme input') 10 | 11 | if (document.body.dataset.theme === 'dark') { 12 | button.setAttribute('checked', '') 13 | } 14 | button.addEventListener('change', function () { 15 | document.body.dataset.theme = button.checked ? 'dark' : 'light' 16 | }) 17 | }) 18 | -------------------------------------------------------------------------------- /src/demo/page.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --spacer: 1rem; 3 | --transition-duration: 0.3s; 4 | --transition-easing: cubic-bezier(0.42, 0.42, 0.84, 1); 5 | --spacer-half: 0.5rem; 6 | --spacer-double: 2rem; 7 | --max-width: 1024px; 8 | --color-dark: #181818; 9 | --color-light: #fff; 10 | --color-neutral: #c5c5c5; 11 | --color-active: #707070; 12 | --color-accent: #2196f3; 13 | --color-accent-active: #1766a6; 14 | } 15 | 16 | @media (prefers-reduced-motion) { 17 | :root { 18 | --transition-duration: 0s; 19 | } 20 | } 21 | 22 | *, 23 | *::before, 24 | *::after { 25 | background: transparent; 26 | border: 0; 27 | box-sizing: border-box; 28 | margin: 0; 29 | padding: 0; 30 | position: relative; 31 | } 32 | 33 | html { 34 | scroll-behavior: smooth; 35 | scroll-padding: var(--spacer-double); 36 | } 37 | 38 | body { 39 | background-color: var(--color-light); 40 | color: var(--color-dark); 41 | font-size: 16px; 42 | -webkit-font-smoothing: antialiased; 43 | -moz-osx-font-smoothing: grayscale; 44 | min-height: 100vh; 45 | padding: var(--spacer-double); 46 | text-rendering: optimizelegibility; 47 | } 48 | 49 | body[data-theme="dark"] { 50 | --color-dark: #f2f2f2; 51 | --color-light: #2e2e2e; 52 | } 53 | 54 | h1, 55 | h2, 56 | p { 57 | text-align: center; 58 | } 59 | 60 | a { 61 | color: var(--color-accent); 62 | transition: color var(--transition-duration) var(--transition-easing); 63 | } 64 | 65 | a:hover { 66 | color: var(--color-accent-active); 67 | } 68 | 69 | .container { 70 | align-items: center; 71 | display: flex; 72 | flex-direction: column; 73 | font-family: sans-serif; 74 | gap: 4rem; 75 | justify-content: center; 76 | margin: auto; 77 | min-height: 100%; 78 | padding: 4rem 0; 79 | width: 100%; 80 | } 81 | 82 | .container > * { 83 | flex-shrink: 0; 84 | } 85 | 86 | .row { 87 | display: flex; 88 | flex-flow: row wrap; 89 | gap: var(--spacer); 90 | margin: auto; 91 | max-width: var(--max-width); 92 | } 93 | 94 | details p { 95 | text-align: start; 96 | } 97 | 98 | @media (min-width: var(--max-width)) { 99 | .row .column { 100 | flex-grow: 1; 101 | flex-shrink: 1; 102 | width: auto; 103 | } 104 | } 105 | 106 | .column { 107 | display: flex; 108 | flex-direction: column; 109 | gap: 1rem; 110 | position: relative; 111 | width: 100%; 112 | } 113 | 114 | .column.-intro { 115 | max-width: calc(0.5 * var(--max-width)); 116 | } 117 | 118 | .row .column { 119 | width: 100%; 120 | } 121 | 122 | .github-buttons { 123 | display: flex; 124 | flex-direction: row; 125 | margin: auto; 126 | } 127 | 128 | .github-buttons span { 129 | margin: 0 var(--spacer-half); 130 | } 131 | 132 | .feature-toggle.toggle-theme { 133 | position: fixed; 134 | right: var(--spacer-double); 135 | top: var(--spacer-double); 136 | z-index: 1030; 137 | } 138 | -------------------------------------------------------------------------------- /src/demo/slider-multi.ts: -------------------------------------------------------------------------------- 1 | import { ScrollSnapSlider } from '../lib' 2 | 3 | const sliderMultiElement = document.querySelector('.scroll-snap-slider.-multi') 4 | const sliderMulti = new ScrollSnapSlider({ element: sliderMultiElement }) 5 | 6 | const prev = document.querySelector('.indicators.-multi .arrow.-prev') 7 | const next = document.querySelector('.indicators.-multi .arrow.-next') 8 | 9 | const updateArrows = function () { 10 | prev.classList.toggle('-disabled', sliderMultiElement.scrollLeft === 0) 11 | next.classList.toggle( 12 | '-disabled', 13 | sliderMultiElement.scrollLeft + sliderMultiElement.offsetWidth === sliderMultiElement.scrollWidth 14 | ) 15 | } 16 | 17 | prev.addEventListener('click', function () { 18 | sliderMulti.slideTo(sliderMulti.slide - 1) 19 | }) 20 | 21 | next.addEventListener('click', function () { 22 | sliderMulti.slideTo(sliderMulti.slide + 1) 23 | }) 24 | 25 | sliderMulti.addEventListener('slide-pass', updateArrows) 26 | sliderMulti.addEventListener('slide-stop', updateArrows) 27 | 28 | sliderMulti.slideTo(2) 29 | -------------------------------------------------------------------------------- /src/demo/slider-responsive.ts: -------------------------------------------------------------------------------- 1 | import { ScrollSnapSlider } from 'scroll-snap-slider' 2 | 3 | const sliderResponsiveElement = document.querySelector('.scroll-snap-slider.-responsive') 4 | const sliderResponsive = new ScrollSnapSlider({ element: sliderResponsiveElement }) 5 | 6 | const arrows = document.querySelector('.indicators.-responsive') 7 | const prev = document.querySelector('.indicators.-responsive .arrow.-prev') 8 | const next = document.querySelector('.indicators.-responsive .arrow.-next') 9 | 10 | const updateArrows = function () { 11 | arrows.classList.toggle('-hidden', sliderResponsiveElement.scrollWidth <= sliderResponsiveElement.clientWidth) 12 | } 13 | 14 | prev.addEventListener('click', function () { 15 | sliderResponsive.slideTo(sliderResponsive.slide - 1) 16 | }) 17 | 18 | next.addEventListener('click', function () { 19 | sliderResponsive.slideTo(sliderResponsive.slide + 1) 20 | }) 21 | 22 | window.addEventListener('resize', updateArrows) 23 | updateArrows() 24 | -------------------------------------------------------------------------------- /src/demo/slider-simple.ts: -------------------------------------------------------------------------------- 1 | import { 2 | ScrollSnapAutoplay, 3 | ScrollSnapDraggable, 4 | ScrollSnapLoop, 5 | ScrollSnapPlugin, 6 | ScrollSnapSlider, 7 | } from 'scroll-snap-slider' 8 | 9 | const sliderSimpleElement = document.querySelector('.scroll-snap-slider.-simple') 10 | const slides = sliderSimpleElement.getElementsByClassName('scroll-snap-slide') as HTMLCollectionOf 11 | const sliderSimple = new ScrollSnapSlider({ element: sliderSimpleElement }) 12 | 13 | const autoplayPlugin = new ScrollSnapAutoplay() 14 | const loopPlugin = new ScrollSnapLoop() 15 | const draggablePlugin = new ScrollSnapDraggable(50) 16 | 17 | autoplayPlugin.slider = sliderSimple 18 | loopPlugin.slider = sliderSimple 19 | draggablePlugin.slider = sliderSimple 20 | 21 | const buttons = document.querySelectorAll('.indicators.-simple .indicator') 22 | const currentIndicator = document.querySelector('.indicators.-simple .current-indicator') 23 | const prev = document.querySelector('.indicators.-simple .arrow.-prev') 24 | const next = document.querySelector('.indicators.-simple .arrow.-next') 25 | 26 | const setSelected = function (event: CustomEvent) { 27 | const slideElementIndex = event.detail 28 | const slideElement = slides[slideElementIndex] 29 | 30 | for (const button of buttons) { 31 | const isActive = button.classList.toggle('-active', button.dataset.index === slideElement.dataset.index) 32 | if (isActive) { 33 | button.appendChild(currentIndicator) 34 | } 35 | } 36 | } 37 | 38 | for (const button of buttons) { 39 | button.addEventListener('click', function (event) { 40 | autoplayPlugin.disableTemporarily() 41 | event.preventDefault() 42 | 43 | const slideElementIndex = Array.prototype.slice 44 | .call(slides) 45 | .findIndex(item => item.dataset.index === button.dataset.index) 46 | 47 | sliderSimple.slideTo(slideElementIndex) 48 | }) 49 | } 50 | 51 | prev.addEventListener('click', function () { 52 | autoplayPlugin.disableTemporarily() 53 | sliderSimple.slideTo(sliderSimple.slide - 1) 54 | }) 55 | 56 | next.addEventListener('click', function () { 57 | autoplayPlugin.disableTemporarily() 58 | sliderSimple.slideTo(sliderSimple.slide + 1) 59 | }) 60 | 61 | sliderSimple.addEventListener('slide-pass', setSelected) 62 | sliderSimple.addEventListener('slide-stop', setSelected) 63 | 64 | const autoPlayInput = document.querySelector('#autoplay') 65 | const loopInput = document.querySelector('#loop') 66 | const draggableInput = document.querySelector('#draggable') 67 | 68 | autoPlayInput.addEventListener('change', () => togglePlugin(autoPlayInput, autoplayPlugin)) 69 | loopInput.addEventListener('change', () => togglePlugin(loopInput, loopPlugin)) 70 | draggableInput.addEventListener('change', () => togglePlugin(draggableInput, draggablePlugin)) 71 | 72 | function enablePlugin(plugin: ScrollSnapPlugin) { 73 | plugin.enable() 74 | sliderSimple.plugins.set(plugin.id, plugin) 75 | } 76 | 77 | function disablePlugin(plugin: ScrollSnapPlugin) { 78 | plugin.disable() 79 | sliderSimple.plugins.delete(plugin.id) 80 | } 81 | 82 | function togglePlugin(input: HTMLInputElement, plugin: ScrollSnapPlugin) { 83 | input.checked 84 | ? enablePlugin(plugin) 85 | : disablePlugin(plugin) 86 | } 87 | -------------------------------------------------------------------------------- /src/lib/ScrollSnapAutoplay.ts: -------------------------------------------------------------------------------- 1 | import { ScrollSnapPlugin } from './ScrollSnapPlugin'; 2 | 3 | /** 4 | * Plugin that automatically changes slides. 5 | */ 6 | export class ScrollSnapAutoplay extends ScrollSnapPlugin { 7 | /** 8 | * Duration in milliseconds between slide changes 9 | */ 10 | public intervalDuration: number; 11 | 12 | /** 13 | * Duration in milliseconds after human interaction where the slider will not autoplay 14 | */ 15 | public timeoutDuration: number; 16 | 17 | /** 18 | * Used to debounce the re-enabling after a user interaction 19 | */ 20 | private debounceId: number | null; 21 | 22 | /** 23 | * Interval ID 24 | */ 25 | private interval: number | null; 26 | 27 | /** 28 | * Event names that temporarily disable the autoplay behaviour 29 | */ 30 | private readonly events: string[]; 31 | 32 | public constructor(intervalDuration = 3141, timeoutDuration = 6282, events: string[] = ['touchmove', 'wheel']) { 33 | super(); 34 | 35 | this.intervalDuration = intervalDuration; 36 | this.timeoutDuration = timeoutDuration; 37 | this.interval = null; 38 | this.events = events; 39 | } 40 | 41 | /** 42 | * @inheritDoc 43 | */ 44 | public get id(): string { 45 | return 'ScrollSnapAutoplay'; 46 | } 47 | 48 | /** 49 | * @inheritDoc 50 | * @override 51 | */ 52 | public enable = () => { 53 | this.disable() 54 | 55 | this.interval = setInterval(this.onInterval, this.intervalDuration); 56 | 57 | for (const event of this.events) { 58 | this.slider.addEventListener(event, this.disableTemporarily, { passive: true }); 59 | } 60 | }; 61 | 62 | /** 63 | * @inheritDoc 64 | * @override 65 | */ 66 | public disable(): void { 67 | for (const event of this.events) { 68 | this.slider.removeEventListener(event, this.disableTemporarily); 69 | } 70 | 71 | this.interval && clearInterval(this.interval); 72 | this.interval = null; 73 | this.debounceId && clearTimeout(this.debounceId); 74 | this.debounceId = null; 75 | } 76 | 77 | /** 78 | * Disable the autoplay behaviour and set a timeout to re-enable it. 79 | */ 80 | public disableTemporarily = () => { 81 | if (!this.interval) { 82 | return; 83 | } 84 | 85 | clearInterval(this.interval); 86 | this.interval = null; 87 | 88 | this.debounceId && clearTimeout(this.debounceId); 89 | this.debounceId = setTimeout(this.enable, this.timeoutDuration); 90 | }; 91 | 92 | /** 93 | * Callback for regular intervals to continue to the next slide 94 | */ 95 | public onInterval = () => { 96 | if (this.slider.plugins.has('ScrollSnapLoop')) { 97 | this.slider.slideTo(this.slider.slide + 1); 98 | return; 99 | } 100 | 101 | requestAnimationFrame(() => { 102 | const { scrollLeft, offsetWidth, scrollWidth } = this.slider.element; 103 | const isLastSlide = scrollLeft + offsetWidth === scrollWidth; 104 | const target = isLastSlide ? 0 : this.slider.slide + 1; 105 | 106 | this.slider.slideTo(target); 107 | }); 108 | }; 109 | } 110 | -------------------------------------------------------------------------------- /src/lib/ScrollSnapDraggable.ts: -------------------------------------------------------------------------------- 1 | import { ScrollSnapPlugin } from './ScrollSnapPlugin' 2 | 3 | /** 4 | * Plugin that enables mouse/pointer drag. Note, that touch interaction is enabled natively in all browsers. 5 | */ 6 | export class ScrollSnapDraggable extends ScrollSnapPlugin { 7 | 8 | /** 9 | * If this is null: 10 | * The next/previous slide will not be reached unless you drag for more than half the slider's width. 11 | * 12 | * If this is a number: 13 | * Dragging any slide for more than this distance in pixels will slide to the next slide in the desired direction. 14 | */ 15 | quickSwipeDistance: number | null 16 | 17 | /** 18 | * Last drag event position 19 | */ 20 | private lastX: number | null 21 | 22 | /** 23 | * Where the dragging started 24 | */ 25 | private startX: number | null 26 | 27 | public constructor (quickSwipeDistance: number | null = null) { 28 | super() 29 | 30 | this.lastX = null 31 | this.startX = null 32 | this.slider = null 33 | this.quickSwipeDistance = quickSwipeDistance 34 | } 35 | 36 | /** 37 | * @inheritDoc 38 | */ 39 | public get id (): string { 40 | return 'ScrollSnapDraggable' 41 | } 42 | 43 | /** 44 | * @override 45 | */ 46 | public enable (): void { 47 | this.slider.element.classList.add('-draggable') 48 | this.slider.addEventListener('mousedown', this.startDragging) 49 | addEventListener('mouseup', this.stopDragging, { capture: true }) 50 | } 51 | 52 | /** 53 | * @override 54 | */ 55 | public disable (): void { 56 | this.slider.element.classList.remove('-draggable') 57 | 58 | this.slider.removeEventListener('mousedown', this.startDragging) 59 | removeEventListener('mouseup', this.stopDragging, { capture: true }) 60 | 61 | this.lastX = null 62 | } 63 | 64 | /** 65 | * Disable scroll-snapping 66 | */ 67 | private onSlideStopAfterDrag = () => { 68 | this.slider.element.style.scrollSnapStop = '' 69 | this.slider.element.style.scrollSnapType = '' 70 | } 71 | 72 | /** 73 | * Calculate the target slide after dragging 74 | */ 75 | private getFinalSlide (): number { 76 | if (!this.quickSwipeDistance) { 77 | return this.slider.slide 78 | } 79 | 80 | const distance = Math.abs(this.startX - this.lastX) 81 | const minimumNotReached = this.quickSwipeDistance > distance 82 | const halfPointCrossed = distance > (this.slider.itemSize / 2) 83 | 84 | if (minimumNotReached || halfPointCrossed) { 85 | return this.slider.slide 86 | } 87 | 88 | if (this.startX < this.lastX) { 89 | return this.slider.slide - 1 90 | } 91 | 92 | return this.slider.slide + 1 93 | } 94 | 95 | /** 96 | * Scroll the slider the appropriate amount of pixels and update the last event position 97 | */ 98 | private mouseMove = (event: MouseEvent) => { 99 | const distance = this.lastX - event.clientX 100 | this.lastX = event.clientX 101 | 102 | requestAnimationFrame(() => { 103 | this.slider.element.scrollLeft += distance 104 | }) 105 | } 106 | 107 | /** 108 | * Clear disable timeout, set up variables and styles and attach the listener. 109 | */ 110 | private startDragging = (event: MouseEvent) => { 111 | event.preventDefault() 112 | 113 | this.slider.removeEventListener('slide-stop', this.onSlideStopAfterDrag) 114 | this.startX = this.lastX = event.clientX 115 | this.slider.element.style.scrollBehavior = 'auto' 116 | this.slider.element.style.scrollSnapStop = 'unset' 117 | this.slider.element.style.scrollSnapType = 'none' 118 | this.slider.element.classList.add('-dragging') 119 | 120 | const autoplay = this.slider.plugins.get('ScrollSnapAutoplay') 121 | if (autoplay) { 122 | autoplay.disable() 123 | } 124 | 125 | addEventListener('mousemove', this.mouseMove) 126 | } 127 | 128 | /** 129 | * Remove listener and clean up the styles. 130 | * Note: We first restore the smooth behaviour, then manually snap to the current slide. 131 | * Using a timeout, we then restore the rest of the snap behaviour. 132 | */ 133 | private stopDragging = (event: MouseEvent) => { 134 | if (this.lastX === null) { 135 | return 136 | } 137 | 138 | event.preventDefault() 139 | 140 | const finalSlide = this.getFinalSlide() 141 | 142 | removeEventListener('mousemove', this.mouseMove) 143 | this.lastX = null 144 | this.slider.element.style.scrollBehavior = '' 145 | this.slider.element.classList.remove('-dragging') 146 | 147 | this.slider.slideTo(finalSlide) 148 | 149 | const autoplay = this.slider.plugins.get('ScrollSnapAutoplay') 150 | if (autoplay) { 151 | autoplay.enable() 152 | } 153 | 154 | requestAnimationFrame(() => { 155 | const { scrollLeft, offsetWidth, scrollWidth } = this.slider.element 156 | if (scrollLeft === 0 || scrollWidth - scrollLeft - offsetWidth === 0) { 157 | this.onSlideStopAfterDrag() 158 | return 159 | } 160 | 161 | this.slider.addEventListener('slide-stop', this.onSlideStopAfterDrag, { once: true }) 162 | }) 163 | } 164 | } 165 | -------------------------------------------------------------------------------- /src/lib/ScrollSnapLoop.ts: -------------------------------------------------------------------------------- 1 | import { ScrollSnapPlugin } from './ScrollSnapPlugin' 2 | 3 | /** 4 | * Plugin to loop around to the first slide at the end and to the last slide at the start 5 | * All slides should have a unique and numeric data-index attribute. 6 | */ 7 | export class ScrollSnapLoop extends ScrollSnapPlugin { 8 | 9 | /** 10 | * @inheritDoc 11 | */ 12 | public get id (): string { 13 | return 'ScrollSnapLoop' 14 | } 15 | 16 | /** 17 | * @inheritDoc 18 | * @override 19 | */ 20 | public enable (): void { 21 | this.slider.addEventListener('slide-pass', this.loopSlides) 22 | this.slider.addEventListener('slide-stop', this.loopSlides) 23 | this.loopSlides() 24 | } 25 | 26 | /** 27 | * @inheritDoc 28 | * @override 29 | */ 30 | public disable (): void { 31 | this.slider.removeEventListener('slide-pass', this.loopSlides) 32 | this.slider.removeEventListener('slide-stop', this.loopSlides) 33 | 34 | const slides = this.slider.element.querySelectorAll('[data-index]') 35 | const sortedSlides = Array.from(slides).sort(this.sortFunction) 36 | 37 | Element.prototype.append.apply(this.slider.element, sortedSlides) 38 | } 39 | 40 | /** 41 | * Remove snapping behaviour 42 | */ 43 | private removeSnapping () { 44 | this.slider.detachListeners() 45 | this.slider.element.style.scrollBehavior = 'auto' 46 | this.slider.element.style.scrollSnapStop = 'unset' 47 | this.slider.element.style.scrollSnapType = 'none' 48 | } 49 | 50 | /** 51 | * Add snapping behaviour 52 | */ 53 | private addSnapping () { 54 | this.slider.element.style.scrollBehavior = '' 55 | this.slider.element.style.scrollSnapStop = '' 56 | this.slider.element.style.scrollSnapType = '' 57 | this.slider.attachListeners() 58 | requestAnimationFrame(this.slider.update) 59 | } 60 | 61 | /** 62 | * Move last slide to the start of the slider. 63 | */ 64 | private loopEndToStart () { 65 | requestAnimationFrame(() => { 66 | this.removeSnapping() 67 | this.slider.element.prepend(this.slider.element.children[this.slider.element.children.length - 1]) 68 | this.slider.element.scrollLeft += this.slider.itemSize 69 | this.addSnapping() 70 | }) 71 | } 72 | 73 | /** 74 | * Move first slide to the end of the slider. 75 | */ 76 | private loopStartToEnd () { 77 | requestAnimationFrame(() => { 78 | this.removeSnapping() 79 | this.slider.element.append(this.slider.element.children[0]) 80 | this.slider.element.scrollLeft -= this.slider.itemSize 81 | this.addSnapping() 82 | }) 83 | } 84 | 85 | /** 86 | * Determine which slide to move where and apply the change. 87 | */ 88 | private loopSlides = () => { 89 | if (this.slider.element.children.length < 3) { 90 | return 91 | } 92 | 93 | requestAnimationFrame(() => { 94 | const { scrollLeft, offsetWidth, scrollWidth } = this.slider.element 95 | if (scrollLeft < 5) { 96 | this.loopEndToStart() 97 | return 98 | } 99 | 100 | if (scrollWidth - scrollLeft - offsetWidth < 5) { 101 | this.loopStartToEnd() 102 | } 103 | }) 104 | } 105 | 106 | /** 107 | * Sort items to their initial position after disabling 108 | */ 109 | private sortFunction (a: HTMLOrSVGElement, b: HTMLOrSVGElement): number { 110 | return parseInt(a.dataset.index, 10) - parseInt(b.dataset.index, 10) 111 | } 112 | } 113 | -------------------------------------------------------------------------------- /src/lib/ScrollSnapPlugin.ts: -------------------------------------------------------------------------------- 1 | import type { ScrollSnapSlider } from './ScrollSnapSlider' 2 | 3 | /** 4 | * Abstract class used for plugins, that extend the slider's behaviour. 5 | */ 6 | export abstract class ScrollSnapPlugin { 7 | 8 | /** 9 | * Reference to the slider this plugin is attached to. 10 | */ 11 | public slider: ScrollSnapSlider | null 12 | 13 | public constructor () { 14 | this.slider = null 15 | } 16 | 17 | /** 18 | * Unique Plugin ID, used as index in ScrollSnapSlider::plugins. 19 | * @see {ScrollSnapSlider.plugins} 20 | */ 21 | public abstract get id (): string 22 | 23 | /** 24 | * Add listeners, compute things and enable the desired behaviour. 25 | * Override this with custom behaviour. 26 | */ 27 | public abstract enable (): void 28 | 29 | /** 30 | * Remove listeners, clean up dependencies and free up memory. 31 | * Override this with custom behaviour. 32 | */ 33 | public abstract disable (): void 34 | 35 | } -------------------------------------------------------------------------------- /src/lib/ScrollSnapSlider.ts: -------------------------------------------------------------------------------- 1 | import { ScrollSnapPlugin } from './ScrollSnapPlugin'; 2 | 3 | /** 4 | * All options have sensitive defaults. The only required option is the element. 5 | */ 6 | export type ScrollSnapSliderOptions = Partial & { 7 | element: HTMLElement 8 | } 9 | 10 | declare global { 11 | interface HTMLElementEventMap { 12 | 'slide-pass': CustomEvent; 13 | 'slide-stop': CustomEvent; 14 | 'slide-start': CustomEvent; 15 | } 16 | } 17 | 18 | /** 19 | * Mostly CSS slider with great performance. 20 | */ 21 | export class ScrollSnapSlider { 22 | /** 23 | * Base element of this slider 24 | */ 25 | public element: HTMLElement; 26 | 27 | /** 28 | * additional behaviour 29 | */ 30 | public plugins: Map; 31 | 32 | /** 33 | * @inheritDoc 34 | */ 35 | public removeEventListener: HTMLElement['removeEventListener']; 36 | 37 | /** 38 | * @inheritDoc 39 | */ 40 | public addEventListener: HTMLElement['addEventListener']; 41 | 42 | /** 43 | * Rounding method used to calculate the current slide (e.g. Math.floor, Math.round, Math.ceil, or totally custom.) 44 | * 45 | * @param value - factor indicating th current position (e.g "0" for first slide, "2.5" for third slide and a half) 46 | * @return f(x) - integer factor indicating the currently 'active' slide. 47 | */ 48 | public roundingMethod: (value: number) => number; 49 | 50 | /** 51 | * Timeout delay in milliseconds used to catch the end of scroll events 52 | */ 53 | public scrollTimeout: number; 54 | 55 | /** 56 | * Calculated size of a single item 57 | */ 58 | public itemSize: number; 59 | 60 | /** 61 | * Computes a single number representing the slides widths. 62 | * By default, this will use the first slide's offsetWidth. 63 | * Possible values could be an average of all slides, the min or max values, ... 64 | * 65 | * @param slider current slider 66 | * @param entries resized entries 67 | * @return integer size of a slide in pixels 68 | */ 69 | public sizingMethod: (slider: ScrollSnapSlider, entries?: ResizeObserverEntry[] | undefined) => number; 70 | 71 | /** 72 | * Active slide 73 | */ 74 | public slide: number; 75 | 76 | /** 77 | * Resize observer used to update item size 78 | */ 79 | private resizeObserver: ResizeObserver; 80 | 81 | /** 82 | * Timeout ID used to catch the end of scroll events 83 | */ 84 | private scrollTimeoutId: null | number; 85 | 86 | /** 87 | * Active slide's scrollLeft in the containing element 88 | */ 89 | private slideScrollLeft: number; 90 | 91 | /** 92 | * Bind methods and possibly attach listeners. 93 | */ 94 | constructor(options: ScrollSnapSliderOptions) { 95 | Object.assign(this, { 96 | scrollTimeout: 100, 97 | roundingMethod: Math.round, 98 | sizingMethod: (slider: ScrollSnapSlider) => { 99 | return (slider.element.firstElementChild as HTMLElement).offsetWidth; 100 | }, 101 | ...options, 102 | }); 103 | 104 | this.scrollTimeoutId = null; 105 | this.addEventListener = this.element.addEventListener.bind(this.element); 106 | this.removeEventListener = this.element.removeEventListener.bind(this.element); 107 | this.plugins = new Map(); 108 | 109 | this.resizeObserver = new ResizeObserver(this.onResize); 110 | this.attachListeners(); 111 | } 112 | 113 | /** 114 | * Extend the Slider's functionality with Plugins 115 | * 116 | * @param plugins Plugins to attach 117 | * @param enabled Whether the plugins are enabled right away 118 | */ 119 | public with(plugins: ScrollSnapPlugin[], enabled = true): ScrollSnapSlider { 120 | for (const plugin of plugins) { 121 | plugin.slider = this; 122 | this.plugins.set(plugin.id, plugin); 123 | enabled && plugin.enable(); 124 | } 125 | 126 | return this; 127 | } 128 | 129 | /** 130 | * Attach all necessary listeners 131 | */ 132 | public attachListeners(): void { 133 | this.addEventListener('scroll', this.onScroll, { passive: true }); 134 | 135 | this.resizeObserver.observe(this.element); 136 | for (const child of this.element.children) { 137 | this.resizeObserver.observe(child); 138 | } 139 | } 140 | 141 | /** 142 | * Detach all listeners 143 | */ 144 | public detachListeners(): void { 145 | this.removeEventListener('scroll', this.onScroll); 146 | this.scrollTimeoutId && clearTimeout(this.scrollTimeoutId); 147 | this.resizeObserver.disconnect(); 148 | } 149 | 150 | /** 151 | * Scroll to a slide by index. 152 | */ 153 | public slideTo = (index: number) => { 154 | requestAnimationFrame(() => { 155 | this.element.scrollTo({ 156 | left: index * this.itemSize, 157 | }); 158 | }); 159 | }; 160 | 161 | /** 162 | * Free resources and listeners, disable plugins 163 | */ 164 | public destroy(): void { 165 | this.scrollTimeoutId && clearTimeout(this.scrollTimeoutId); 166 | this.detachListeners(); 167 | 168 | for (const [id, plugin] of this.plugins) { 169 | plugin.disable(); 170 | plugin.slider = null; 171 | this.plugins.delete(id); 172 | } 173 | } 174 | 175 | /** 176 | * Updates the computed values 177 | */ 178 | public update = () => { 179 | this.slide = this.roundingMethod(this.element.scrollLeft / this.itemSize); 180 | this.slideScrollLeft = this.slide * this.itemSize; 181 | }; 182 | 183 | /** 184 | * Calculate all necessary things and dispatch an event when sliding stops 185 | */ 186 | private onScrollEnd = () => { 187 | requestAnimationFrame(() => { 188 | this.scrollTimeoutId = null; 189 | this.update(); 190 | this.dispatch('slide-stop', this.slide); 191 | }); 192 | }; 193 | 194 | /** 195 | * This will recompute the itemSize 196 | * @param entries Optional entries delivered from a ResizeObserver 197 | */ 198 | private onResize = (entries?: ResizeObserverEntry[]) => { 199 | this.itemSize = this.sizingMethod(this, entries); 200 | this.update(); 201 | }; 202 | 203 | /** 204 | * Dispatches an event on the slider's element 205 | */ 206 | private dispatch(event: string, detail?: DetailType): boolean { 207 | return this.element.dispatchEvent( 208 | new CustomEvent(event, { 209 | detail, 210 | }), 211 | ); 212 | } 213 | 214 | /** 215 | * Act when scrolling starts and stops 216 | */ 217 | private onScroll = () => { 218 | requestAnimationFrame(() => { 219 | const { scrollLeft } = this.element; 220 | const newSlide = this.roundingMethod(scrollLeft / this.itemSize); 221 | 222 | if (null === this.scrollTimeoutId) { 223 | const direction = (scrollLeft > this.slideScrollLeft) ? 1 : -1; 224 | this.dispatch('slide-start', this.slide + direction); 225 | } 226 | 227 | if (newSlide !== this.slide) { 228 | this.update(); 229 | this.dispatch('slide-pass', this.slide); 230 | } 231 | 232 | this.scrollTimeoutId && clearTimeout(this.scrollTimeoutId); 233 | this.scrollTimeoutId = setTimeout(this.onScrollEnd, this.scrollTimeout); 234 | }); 235 | }; 236 | } 237 | -------------------------------------------------------------------------------- /src/lib/index.ts: -------------------------------------------------------------------------------- 1 | import { ScrollSnapAutoplay } from './ScrollSnapAutoplay' 2 | import { ScrollSnapDraggable } from './ScrollSnapDraggable' 3 | import { ScrollSnapLoop } from './ScrollSnapLoop' 4 | import { ScrollSnapPlugin } from './ScrollSnapPlugin' 5 | import { ScrollSnapSlider } from './ScrollSnapSlider' 6 | 7 | export { 8 | ScrollSnapSlider, 9 | ScrollSnapPlugin, 10 | ScrollSnapLoop, 11 | ScrollSnapAutoplay, 12 | ScrollSnapDraggable 13 | } 14 | -------------------------------------------------------------------------------- /src/lib/scroll-snap-slider.css: -------------------------------------------------------------------------------- 1 | .scroll-snap-slider { 2 | display: flex; 3 | flex-wrap: nowrap; 4 | justify-content: normal; 5 | overflow-x: auto; 6 | padding-inline: 0; 7 | scroll-behavior: smooth; 8 | scroll-snap-stop: always; 9 | scroll-snap-type: x mandatory; 10 | } 11 | 12 | @media (prefers-reduced-motion) { 13 | .scroll-snap-slider { 14 | scroll-behavior: auto; 15 | } 16 | } 17 | 18 | .scroll-snap-slider:not(.-show-scroll-bar) { 19 | -ms-overflow-style: none; /* IE and Edge */ 20 | scrollbar-width: none; /* Firefox */ 21 | } 22 | 23 | .scroll-snap-slider:not(.-show-scroll-bar)::-webkit-scrollbar { 24 | display: none; 25 | } 26 | 27 | .scroll-snap-slide { 28 | align-items: center; 29 | display: flex; 30 | flex: 0 0 auto; 31 | flex-direction: column; 32 | justify-content: center; 33 | max-width: none; 34 | scroll-snap-align: start; 35 | width: 100%; 36 | } 37 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "strict": true, 4 | "skipLibCheck": true, 5 | "forceConsistentCasingInFileNames": true, 6 | "strictNullChecks": false, 7 | "removeComments": true, 8 | "rootDir": "src", 9 | "outDir": "dist", 10 | "target": "ESNext", 11 | "declaration": true, 12 | "moduleResolution": "Node", 13 | "types": [], 14 | "paths": { 15 | "@/*": ["./src/*"], 16 | "scroll-snap-slider": ["./src/lib/index.ts", "./src/lib/*"], 17 | } 18 | }, 19 | "include": [ 20 | "src/**/*" 21 | ], 22 | "exclude": [ 23 | "node_modules" 24 | ], 25 | "typedocOptions": { 26 | "entryPoints": [ 27 | "src" 28 | ], 29 | "exclude": [ 30 | "node_modules" 31 | ], 32 | "entryPointStrategy": "expand", 33 | "out": "demo/docs", 34 | "githubPages": true, 35 | }, 36 | "references": [ 37 | { 38 | "path": "./tsconfig.node.json" 39 | } 40 | ] 41 | } 42 | -------------------------------------------------------------------------------- /tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "module": "ESNext", 5 | "moduleResolution": "Node", 6 | "allowSyntheticDefaultImports": true 7 | }, 8 | "include": [ 9 | "vite.config.ts" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /typedoc.json: -------------------------------------------------------------------------------- 1 | { 2 | "navigationLinks": { 3 | "Demo": "https://barthy-koeln.github.io/scroll-snap-slider/", 4 | "Repo": "https://github.com/barthy-koeln/scroll-snap-slider", 5 | "Package": "https://www.npmjs.com/package/scroll-snap-slider" 6 | }, 7 | "sort": [ 8 | "source-order" 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { resolve } from 'path' 2 | import { defineConfig } from 'vite' 3 | import dts from 'vite-plugin-dts' 4 | 5 | 6 | export default defineConfig(({ mode }) => { 7 | if(mode === 'lib') { 8 | return { 9 | base: './', 10 | plugins: [ 11 | dts({ rollupTypes: true }) 12 | ], 13 | build: { 14 | target: 'ESNext', 15 | minify: false, 16 | emptyOutDir: false, 17 | lib: { 18 | entry: resolve(__dirname, 'src/lib/index.ts'), 19 | name: 'ScrollSnapSlider', 20 | formats: ['es', 'cjs', 'umd', 'iife'], 21 | fileName: 'scroll-snap-slider' 22 | } 23 | }, 24 | } 25 | } 26 | 27 | return { 28 | root: resolve(__dirname, './src/demo'), 29 | resolve: { 30 | alias: { 31 | '@': resolve(__dirname, './src'), 32 | 'scroll-snap-slider': resolve(__dirname, './src/lib/index.ts') 33 | } 34 | }, 35 | build: { 36 | emptyOutDir: true, 37 | outDir: resolve(__dirname, './demo'), 38 | rollupOptions: { 39 | input: { 40 | main: resolve(__dirname, './src/demo/index.html'), 41 | } 42 | } 43 | } 44 | } 45 | }) 46 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # This file is generated by running "yarn install" inside your project. 2 | # Manual changes might be lost - proceed with caution! 3 | 4 | __metadata: 5 | version: 8 6 | cacheKey: 10c0 7 | 8 | "@babel/helper-string-parser@npm:^7.25.9": 9 | version: 7.25.9 10 | resolution: "@babel/helper-string-parser@npm:7.25.9" 11 | checksum: 10c0/7244b45d8e65f6b4338a6a68a8556f2cb161b782343e97281a5f2b9b93e420cad0d9f5773a59d79f61d0c448913d06f6a2358a87f2e203cf112e3c5b53522ee6 12 | languageName: node 13 | linkType: hard 14 | 15 | "@babel/helper-validator-identifier@npm:^7.25.9": 16 | version: 7.25.9 17 | resolution: "@babel/helper-validator-identifier@npm:7.25.9" 18 | checksum: 10c0/4fc6f830177b7b7e887ad3277ddb3b91d81e6c4a24151540d9d1023e8dc6b1c0505f0f0628ae653601eb4388a8db45c1c14b2c07a9173837aef7e4116456259d 19 | languageName: node 20 | linkType: hard 21 | 22 | "@babel/parser@npm:^7.25.3": 23 | version: 7.26.9 24 | resolution: "@babel/parser@npm:7.26.9" 25 | dependencies: 26 | "@babel/types": "npm:^7.26.9" 27 | bin: 28 | parser: ./bin/babel-parser.js 29 | checksum: 10c0/4b9ef3c9a0d4c328e5e5544f50fe8932c36f8a2c851e7f14a85401487cd3da75cad72c2e1bcec1eac55599a6bbb2fdc091f274c4fcafa6bdd112d4915ff087fc 30 | languageName: node 31 | linkType: hard 32 | 33 | "@babel/types@npm:^7.26.9": 34 | version: 7.26.9 35 | resolution: "@babel/types@npm:7.26.9" 36 | dependencies: 37 | "@babel/helper-string-parser": "npm:^7.25.9" 38 | "@babel/helper-validator-identifier": "npm:^7.25.9" 39 | checksum: 10c0/999c56269ba00e5c57aa711fbe7ff071cd6990bafd1b978341ea7572cc78919986e2aa6ee51dacf4b6a7a6fa63ba4eb3f1a03cf55eee31b896a56d068b895964 40 | languageName: node 41 | linkType: hard 42 | 43 | "@esbuild/aix-ppc64@npm:0.21.5": 44 | version: 0.21.5 45 | resolution: "@esbuild/aix-ppc64@npm:0.21.5" 46 | conditions: os=aix & cpu=ppc64 47 | languageName: node 48 | linkType: hard 49 | 50 | "@esbuild/android-arm64@npm:0.21.5": 51 | version: 0.21.5 52 | resolution: "@esbuild/android-arm64@npm:0.21.5" 53 | conditions: os=android & cpu=arm64 54 | languageName: node 55 | linkType: hard 56 | 57 | "@esbuild/android-arm@npm:0.21.5": 58 | version: 0.21.5 59 | resolution: "@esbuild/android-arm@npm:0.21.5" 60 | conditions: os=android & cpu=arm 61 | languageName: node 62 | linkType: hard 63 | 64 | "@esbuild/android-x64@npm:0.21.5": 65 | version: 0.21.5 66 | resolution: "@esbuild/android-x64@npm:0.21.5" 67 | conditions: os=android & cpu=x64 68 | languageName: node 69 | linkType: hard 70 | 71 | "@esbuild/darwin-arm64@npm:0.21.5": 72 | version: 0.21.5 73 | resolution: "@esbuild/darwin-arm64@npm:0.21.5" 74 | conditions: os=darwin & cpu=arm64 75 | languageName: node 76 | linkType: hard 77 | 78 | "@esbuild/darwin-x64@npm:0.21.5": 79 | version: 0.21.5 80 | resolution: "@esbuild/darwin-x64@npm:0.21.5" 81 | conditions: os=darwin & cpu=x64 82 | languageName: node 83 | linkType: hard 84 | 85 | "@esbuild/freebsd-arm64@npm:0.21.5": 86 | version: 0.21.5 87 | resolution: "@esbuild/freebsd-arm64@npm:0.21.5" 88 | conditions: os=freebsd & cpu=arm64 89 | languageName: node 90 | linkType: hard 91 | 92 | "@esbuild/freebsd-x64@npm:0.21.5": 93 | version: 0.21.5 94 | resolution: "@esbuild/freebsd-x64@npm:0.21.5" 95 | conditions: os=freebsd & cpu=x64 96 | languageName: node 97 | linkType: hard 98 | 99 | "@esbuild/linux-arm64@npm:0.21.5": 100 | version: 0.21.5 101 | resolution: "@esbuild/linux-arm64@npm:0.21.5" 102 | conditions: os=linux & cpu=arm64 103 | languageName: node 104 | linkType: hard 105 | 106 | "@esbuild/linux-arm@npm:0.21.5": 107 | version: 0.21.5 108 | resolution: "@esbuild/linux-arm@npm:0.21.5" 109 | conditions: os=linux & cpu=arm 110 | languageName: node 111 | linkType: hard 112 | 113 | "@esbuild/linux-ia32@npm:0.21.5": 114 | version: 0.21.5 115 | resolution: "@esbuild/linux-ia32@npm:0.21.5" 116 | conditions: os=linux & cpu=ia32 117 | languageName: node 118 | linkType: hard 119 | 120 | "@esbuild/linux-loong64@npm:0.21.5": 121 | version: 0.21.5 122 | resolution: "@esbuild/linux-loong64@npm:0.21.5" 123 | conditions: os=linux & cpu=loong64 124 | languageName: node 125 | linkType: hard 126 | 127 | "@esbuild/linux-mips64el@npm:0.21.5": 128 | version: 0.21.5 129 | resolution: "@esbuild/linux-mips64el@npm:0.21.5" 130 | conditions: os=linux & cpu=mips64el 131 | languageName: node 132 | linkType: hard 133 | 134 | "@esbuild/linux-ppc64@npm:0.21.5": 135 | version: 0.21.5 136 | resolution: "@esbuild/linux-ppc64@npm:0.21.5" 137 | conditions: os=linux & cpu=ppc64 138 | languageName: node 139 | linkType: hard 140 | 141 | "@esbuild/linux-riscv64@npm:0.21.5": 142 | version: 0.21.5 143 | resolution: "@esbuild/linux-riscv64@npm:0.21.5" 144 | conditions: os=linux & cpu=riscv64 145 | languageName: node 146 | linkType: hard 147 | 148 | "@esbuild/linux-s390x@npm:0.21.5": 149 | version: 0.21.5 150 | resolution: "@esbuild/linux-s390x@npm:0.21.5" 151 | conditions: os=linux & cpu=s390x 152 | languageName: node 153 | linkType: hard 154 | 155 | "@esbuild/linux-x64@npm:0.21.5": 156 | version: 0.21.5 157 | resolution: "@esbuild/linux-x64@npm:0.21.5" 158 | conditions: os=linux & cpu=x64 159 | languageName: node 160 | linkType: hard 161 | 162 | "@esbuild/netbsd-x64@npm:0.21.5": 163 | version: 0.21.5 164 | resolution: "@esbuild/netbsd-x64@npm:0.21.5" 165 | conditions: os=netbsd & cpu=x64 166 | languageName: node 167 | linkType: hard 168 | 169 | "@esbuild/openbsd-x64@npm:0.21.5": 170 | version: 0.21.5 171 | resolution: "@esbuild/openbsd-x64@npm:0.21.5" 172 | conditions: os=openbsd & cpu=x64 173 | languageName: node 174 | linkType: hard 175 | 176 | "@esbuild/sunos-x64@npm:0.21.5": 177 | version: 0.21.5 178 | resolution: "@esbuild/sunos-x64@npm:0.21.5" 179 | conditions: os=sunos & cpu=x64 180 | languageName: node 181 | linkType: hard 182 | 183 | "@esbuild/win32-arm64@npm:0.21.5": 184 | version: 0.21.5 185 | resolution: "@esbuild/win32-arm64@npm:0.21.5" 186 | conditions: os=win32 & cpu=arm64 187 | languageName: node 188 | linkType: hard 189 | 190 | "@esbuild/win32-ia32@npm:0.21.5": 191 | version: 0.21.5 192 | resolution: "@esbuild/win32-ia32@npm:0.21.5" 193 | conditions: os=win32 & cpu=ia32 194 | languageName: node 195 | linkType: hard 196 | 197 | "@esbuild/win32-x64@npm:0.21.5": 198 | version: 0.21.5 199 | resolution: "@esbuild/win32-x64@npm:0.21.5" 200 | conditions: os=win32 & cpu=x64 201 | languageName: node 202 | linkType: hard 203 | 204 | "@eslint-community/eslint-utils@npm:^4.4.0": 205 | version: 4.4.0 206 | resolution: "@eslint-community/eslint-utils@npm:4.4.0" 207 | dependencies: 208 | eslint-visitor-keys: "npm:^3.3.0" 209 | peerDependencies: 210 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 211 | checksum: 10c0/7e559c4ce59cd3a06b1b5a517b593912e680a7f981ae7affab0d01d709e99cd5647019be8fafa38c350305bc32f1f7d42c7073edde2ab536c745e365f37b607e 212 | languageName: node 213 | linkType: hard 214 | 215 | "@eslint-community/regexpp@npm:^4.10.0": 216 | version: 4.12.1 217 | resolution: "@eslint-community/regexpp@npm:4.12.1" 218 | checksum: 10c0/a03d98c246bcb9109aec2c08e4d10c8d010256538dcb3f56610191607214523d4fb1b00aa81df830b6dffb74c5fa0be03642513a289c567949d3e550ca11cdf6 219 | languageName: node 220 | linkType: hard 221 | 222 | "@gerrit0/mini-shiki@npm:^1.24.0": 223 | version: 1.24.2 224 | resolution: "@gerrit0/mini-shiki@npm:1.24.2" 225 | dependencies: 226 | "@shikijs/engine-oniguruma": "npm:^1.24.1" 227 | "@shikijs/types": "npm:^1.24.1" 228 | "@shikijs/vscode-textmate": "npm:^9.3.0" 229 | checksum: 10c0/2eabda5e98d33b0aa6c18b88f74b5d5cff15efc08d49d4aed81bbaf8cca0206f31653e3eefcf0fb76117a7be3998ef64bef3cd421e2f84562684d9402ae6e24e 230 | languageName: node 231 | linkType: hard 232 | 233 | "@isaacs/cliui@npm:^8.0.2": 234 | version: 8.0.2 235 | resolution: "@isaacs/cliui@npm:8.0.2" 236 | dependencies: 237 | string-width: "npm:^5.1.2" 238 | string-width-cjs: "npm:string-width@^4.2.0" 239 | strip-ansi: "npm:^7.0.1" 240 | strip-ansi-cjs: "npm:strip-ansi@^6.0.1" 241 | wrap-ansi: "npm:^8.1.0" 242 | wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" 243 | checksum: 10c0/b1bf42535d49f11dc137f18d5e4e63a28c5569de438a221c369483731e9dac9fb797af554e8bf02b6192d1e5eba6e6402cf93900c3d0ac86391d00d04876789e 244 | languageName: node 245 | linkType: hard 246 | 247 | "@isaacs/fs-minipass@npm:^4.0.0": 248 | version: 4.0.1 249 | resolution: "@isaacs/fs-minipass@npm:4.0.1" 250 | dependencies: 251 | minipass: "npm:^7.0.4" 252 | checksum: 10c0/c25b6dc1598790d5b55c0947a9b7d111cfa92594db5296c3b907e2f533c033666f692a3939eadac17b1c7c40d362d0b0635dc874cbfe3e70db7c2b07cc97a5d2 253 | languageName: node 254 | linkType: hard 255 | 256 | "@jridgewell/gen-mapping@npm:^0.3.5": 257 | version: 0.3.5 258 | resolution: "@jridgewell/gen-mapping@npm:0.3.5" 259 | dependencies: 260 | "@jridgewell/set-array": "npm:^1.2.1" 261 | "@jridgewell/sourcemap-codec": "npm:^1.4.10" 262 | "@jridgewell/trace-mapping": "npm:^0.3.24" 263 | checksum: 10c0/1be4fd4a6b0f41337c4f5fdf4afc3bd19e39c3691924817108b82ffcb9c9e609c273f936932b9fba4b3a298ce2eb06d9bff4eb1cc3bd81c4f4ee1b4917e25feb 264 | languageName: node 265 | linkType: hard 266 | 267 | "@jridgewell/resolve-uri@npm:^3.1.0": 268 | version: 3.1.2 269 | resolution: "@jridgewell/resolve-uri@npm:3.1.2" 270 | checksum: 10c0/d502e6fb516b35032331406d4e962c21fe77cdf1cbdb49c6142bcbd9e30507094b18972778a6e27cbad756209cfe34b1a27729e6fa08a2eb92b33943f680cf1e 271 | languageName: node 272 | linkType: hard 273 | 274 | "@jridgewell/set-array@npm:^1.2.1": 275 | version: 1.2.1 276 | resolution: "@jridgewell/set-array@npm:1.2.1" 277 | checksum: 10c0/2a5aa7b4b5c3464c895c802d8ae3f3d2b92fcbe84ad12f8d0bfbb1f5ad006717e7577ee1fd2eac00c088abe486c7adb27976f45d2941ff6b0b92b2c3302c60f4 278 | languageName: node 279 | linkType: hard 280 | 281 | "@jridgewell/source-map@npm:^0.3.3": 282 | version: 0.3.6 283 | resolution: "@jridgewell/source-map@npm:0.3.6" 284 | dependencies: 285 | "@jridgewell/gen-mapping": "npm:^0.3.5" 286 | "@jridgewell/trace-mapping": "npm:^0.3.25" 287 | checksum: 10c0/6a4ecc713ed246ff8e5bdcc1ef7c49aaa93f7463d948ba5054dda18b02dcc6a055e2828c577bcceee058f302ce1fc95595713d44f5c45e43d459f88d267f2f04 288 | languageName: node 289 | linkType: hard 290 | 291 | "@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.5.0": 292 | version: 1.5.0 293 | resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" 294 | checksum: 10c0/2eb864f276eb1096c3c11da3e9bb518f6d9fc0023c78344cdc037abadc725172c70314bdb360f2d4b7bffec7f5d657ce006816bc5d4ecb35e61b66132db00c18 295 | languageName: node 296 | linkType: hard 297 | 298 | "@jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": 299 | version: 0.3.25 300 | resolution: "@jridgewell/trace-mapping@npm:0.3.25" 301 | dependencies: 302 | "@jridgewell/resolve-uri": "npm:^3.1.0" 303 | "@jridgewell/sourcemap-codec": "npm:^1.4.14" 304 | checksum: 10c0/3d1ce6ebc69df9682a5a8896b414c6537e428a1d68b02fcc8363b04284a8ca0df04d0ee3013132252ab14f2527bc13bea6526a912ecb5658f0e39fd2860b4df4 305 | languageName: node 306 | linkType: hard 307 | 308 | "@microsoft/api-extractor-model@npm:7.30.3": 309 | version: 7.30.3 310 | resolution: "@microsoft/api-extractor-model@npm:7.30.3" 311 | dependencies: 312 | "@microsoft/tsdoc": "npm:~0.15.1" 313 | "@microsoft/tsdoc-config": "npm:~0.17.1" 314 | "@rushstack/node-core-library": "npm:5.11.0" 315 | checksum: 10c0/2c6f41435bc927470ae90325955d12f5d19a8aa58fab2a5ebe6b7c4eaa5b84288d65b6abec40703f68275a0702b01fdce1850067b0631ca8c0e24a72dfa3b13a 316 | languageName: node 317 | linkType: hard 318 | 319 | "@microsoft/api-extractor@npm:^7.50.1": 320 | version: 7.51.1 321 | resolution: "@microsoft/api-extractor@npm:7.51.1" 322 | dependencies: 323 | "@microsoft/api-extractor-model": "npm:7.30.3" 324 | "@microsoft/tsdoc": "npm:~0.15.1" 325 | "@microsoft/tsdoc-config": "npm:~0.17.1" 326 | "@rushstack/node-core-library": "npm:5.11.0" 327 | "@rushstack/rig-package": "npm:0.5.3" 328 | "@rushstack/terminal": "npm:0.15.0" 329 | "@rushstack/ts-command-line": "npm:4.23.5" 330 | lodash: "npm:~4.17.15" 331 | minimatch: "npm:~3.0.3" 332 | resolve: "npm:~1.22.1" 333 | semver: "npm:~7.5.4" 334 | source-map: "npm:~0.6.1" 335 | typescript: "npm:5.7.3" 336 | bin: 337 | api-extractor: bin/api-extractor 338 | checksum: 10c0/3596e13fee6223b01937f29b52d8dc64fb688ca4351703b38805b81989be1a96007706a77a2f06a0b2330b594f06fadfb906911845f26c52f00ee34332a4cd55 339 | languageName: node 340 | linkType: hard 341 | 342 | "@microsoft/tsdoc-config@npm:~0.17.1": 343 | version: 0.17.1 344 | resolution: "@microsoft/tsdoc-config@npm:0.17.1" 345 | dependencies: 346 | "@microsoft/tsdoc": "npm:0.15.1" 347 | ajv: "npm:~8.12.0" 348 | jju: "npm:~1.4.0" 349 | resolve: "npm:~1.22.2" 350 | checksum: 10c0/a686355796f492f27af17e2a17d615221309caf4d9f9047a5a8f17f8625c467c4c81e2a7923ddafd71b892631d5e5013c4b8cc49c5867d3cc1d260fd90c1413d 351 | languageName: node 352 | linkType: hard 353 | 354 | "@microsoft/tsdoc@npm:0.15.1, @microsoft/tsdoc@npm:~0.15.1": 355 | version: 0.15.1 356 | resolution: "@microsoft/tsdoc@npm:0.15.1" 357 | checksum: 10c0/09948691fac56c45a0d1920de478d66a30371a325bd81addc92eea5654d95106ce173c440fea1a1bd5bb95b3a544b6d4def7bb0b5a846c05d043575d8369a20c 358 | languageName: node 359 | linkType: hard 360 | 361 | "@nodelib/fs.scandir@npm:2.1.5": 362 | version: 2.1.5 363 | resolution: "@nodelib/fs.scandir@npm:2.1.5" 364 | dependencies: 365 | "@nodelib/fs.stat": "npm:2.0.5" 366 | run-parallel: "npm:^1.1.9" 367 | checksum: 10c0/732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb 368 | languageName: node 369 | linkType: hard 370 | 371 | "@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": 372 | version: 2.0.5 373 | resolution: "@nodelib/fs.stat@npm:2.0.5" 374 | checksum: 10c0/88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d 375 | languageName: node 376 | linkType: hard 377 | 378 | "@nodelib/fs.walk@npm:^1.2.3": 379 | version: 1.2.8 380 | resolution: "@nodelib/fs.walk@npm:1.2.8" 381 | dependencies: 382 | "@nodelib/fs.scandir": "npm:2.1.5" 383 | fastq: "npm:^1.6.0" 384 | checksum: 10c0/db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1 385 | languageName: node 386 | linkType: hard 387 | 388 | "@npmcli/agent@npm:^3.0.0": 389 | version: 3.0.0 390 | resolution: "@npmcli/agent@npm:3.0.0" 391 | dependencies: 392 | agent-base: "npm:^7.1.0" 393 | http-proxy-agent: "npm:^7.0.0" 394 | https-proxy-agent: "npm:^7.0.1" 395 | lru-cache: "npm:^10.0.1" 396 | socks-proxy-agent: "npm:^8.0.3" 397 | checksum: 10c0/efe37b982f30740ee77696a80c196912c274ecd2cb243bc6ae7053a50c733ce0f6c09fda085145f33ecf453be19654acca74b69e81eaad4c90f00ccffe2f9271 398 | languageName: node 399 | linkType: hard 400 | 401 | "@npmcli/fs@npm:^4.0.0": 402 | version: 4.0.0 403 | resolution: "@npmcli/fs@npm:4.0.0" 404 | dependencies: 405 | semver: "npm:^7.3.5" 406 | checksum: 10c0/c90935d5ce670c87b6b14fab04a965a3b8137e585f8b2a6257263bd7f97756dd736cb165bb470e5156a9e718ecd99413dccc54b1138c1a46d6ec7cf325982fe5 407 | languageName: node 408 | linkType: hard 409 | 410 | "@pkgjs/parseargs@npm:^0.11.0": 411 | version: 0.11.0 412 | resolution: "@pkgjs/parseargs@npm:0.11.0" 413 | checksum: 10c0/5bd7576bb1b38a47a7fc7b51ac9f38748e772beebc56200450c4a817d712232b8f1d3ef70532c80840243c657d491cf6a6be1e3a214cff907645819fdc34aadd 414 | languageName: node 415 | linkType: hard 416 | 417 | "@rollup/pluginutils@npm:^5.1.4": 418 | version: 5.1.4 419 | resolution: "@rollup/pluginutils@npm:5.1.4" 420 | dependencies: 421 | "@types/estree": "npm:^1.0.0" 422 | estree-walker: "npm:^2.0.2" 423 | picomatch: "npm:^4.0.2" 424 | peerDependencies: 425 | rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 426 | peerDependenciesMeta: 427 | rollup: 428 | optional: true 429 | checksum: 10c0/6d58fbc6f1024eb4b087bc9bf59a1d655a8056a60c0b4021d3beaeec3f0743503f52467fd89d2cf0e7eccf2831feb40a05ad541a17637ea21ba10b21c2004deb 430 | languageName: node 431 | linkType: hard 432 | 433 | "@rollup/rollup-android-arm-eabi@npm:4.28.1": 434 | version: 4.28.1 435 | resolution: "@rollup/rollup-android-arm-eabi@npm:4.28.1" 436 | conditions: os=android & cpu=arm 437 | languageName: node 438 | linkType: hard 439 | 440 | "@rollup/rollup-android-arm64@npm:4.28.1": 441 | version: 4.28.1 442 | resolution: "@rollup/rollup-android-arm64@npm:4.28.1" 443 | conditions: os=android & cpu=arm64 444 | languageName: node 445 | linkType: hard 446 | 447 | "@rollup/rollup-darwin-arm64@npm:4.28.1": 448 | version: 4.28.1 449 | resolution: "@rollup/rollup-darwin-arm64@npm:4.28.1" 450 | conditions: os=darwin & cpu=arm64 451 | languageName: node 452 | linkType: hard 453 | 454 | "@rollup/rollup-darwin-x64@npm:4.28.1": 455 | version: 4.28.1 456 | resolution: "@rollup/rollup-darwin-x64@npm:4.28.1" 457 | conditions: os=darwin & cpu=x64 458 | languageName: node 459 | linkType: hard 460 | 461 | "@rollup/rollup-freebsd-arm64@npm:4.28.1": 462 | version: 4.28.1 463 | resolution: "@rollup/rollup-freebsd-arm64@npm:4.28.1" 464 | conditions: os=freebsd & cpu=arm64 465 | languageName: node 466 | linkType: hard 467 | 468 | "@rollup/rollup-freebsd-x64@npm:4.28.1": 469 | version: 4.28.1 470 | resolution: "@rollup/rollup-freebsd-x64@npm:4.28.1" 471 | conditions: os=freebsd & cpu=x64 472 | languageName: node 473 | linkType: hard 474 | 475 | "@rollup/rollup-linux-arm-gnueabihf@npm:4.28.1": 476 | version: 4.28.1 477 | resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.28.1" 478 | conditions: os=linux & cpu=arm & libc=glibc 479 | languageName: node 480 | linkType: hard 481 | 482 | "@rollup/rollup-linux-arm-musleabihf@npm:4.28.1": 483 | version: 4.28.1 484 | resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.28.1" 485 | conditions: os=linux & cpu=arm & libc=musl 486 | languageName: node 487 | linkType: hard 488 | 489 | "@rollup/rollup-linux-arm64-gnu@npm:4.28.1": 490 | version: 4.28.1 491 | resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.28.1" 492 | conditions: os=linux & cpu=arm64 & libc=glibc 493 | languageName: node 494 | linkType: hard 495 | 496 | "@rollup/rollup-linux-arm64-musl@npm:4.28.1": 497 | version: 4.28.1 498 | resolution: "@rollup/rollup-linux-arm64-musl@npm:4.28.1" 499 | conditions: os=linux & cpu=arm64 & libc=musl 500 | languageName: node 501 | linkType: hard 502 | 503 | "@rollup/rollup-linux-loongarch64-gnu@npm:4.28.1": 504 | version: 4.28.1 505 | resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.28.1" 506 | conditions: os=linux & cpu=loong64 & libc=glibc 507 | languageName: node 508 | linkType: hard 509 | 510 | "@rollup/rollup-linux-powerpc64le-gnu@npm:4.28.1": 511 | version: 4.28.1 512 | resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.28.1" 513 | conditions: os=linux & cpu=ppc64 & libc=glibc 514 | languageName: node 515 | linkType: hard 516 | 517 | "@rollup/rollup-linux-riscv64-gnu@npm:4.28.1": 518 | version: 4.28.1 519 | resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.28.1" 520 | conditions: os=linux & cpu=riscv64 & libc=glibc 521 | languageName: node 522 | linkType: hard 523 | 524 | "@rollup/rollup-linux-s390x-gnu@npm:4.28.1": 525 | version: 4.28.1 526 | resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.28.1" 527 | conditions: os=linux & cpu=s390x & libc=glibc 528 | languageName: node 529 | linkType: hard 530 | 531 | "@rollup/rollup-linux-x64-gnu@npm:4.28.1": 532 | version: 4.28.1 533 | resolution: "@rollup/rollup-linux-x64-gnu@npm:4.28.1" 534 | conditions: os=linux & cpu=x64 & libc=glibc 535 | languageName: node 536 | linkType: hard 537 | 538 | "@rollup/rollup-linux-x64-musl@npm:4.28.1": 539 | version: 4.28.1 540 | resolution: "@rollup/rollup-linux-x64-musl@npm:4.28.1" 541 | conditions: os=linux & cpu=x64 & libc=musl 542 | languageName: node 543 | linkType: hard 544 | 545 | "@rollup/rollup-win32-arm64-msvc@npm:4.28.1": 546 | version: 4.28.1 547 | resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.28.1" 548 | conditions: os=win32 & cpu=arm64 549 | languageName: node 550 | linkType: hard 551 | 552 | "@rollup/rollup-win32-ia32-msvc@npm:4.28.1": 553 | version: 4.28.1 554 | resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.28.1" 555 | conditions: os=win32 & cpu=ia32 556 | languageName: node 557 | linkType: hard 558 | 559 | "@rollup/rollup-win32-x64-msvc@npm:4.28.1": 560 | version: 4.28.1 561 | resolution: "@rollup/rollup-win32-x64-msvc@npm:4.28.1" 562 | conditions: os=win32 & cpu=x64 563 | languageName: node 564 | linkType: hard 565 | 566 | "@rushstack/node-core-library@npm:5.11.0": 567 | version: 5.11.0 568 | resolution: "@rushstack/node-core-library@npm:5.11.0" 569 | dependencies: 570 | ajv: "npm:~8.13.0" 571 | ajv-draft-04: "npm:~1.0.0" 572 | ajv-formats: "npm:~3.0.1" 573 | fs-extra: "npm:~11.3.0" 574 | import-lazy: "npm:~4.0.0" 575 | jju: "npm:~1.4.0" 576 | resolve: "npm:~1.22.1" 577 | semver: "npm:~7.5.4" 578 | peerDependencies: 579 | "@types/node": "*" 580 | peerDependenciesMeta: 581 | "@types/node": 582 | optional: true 583 | checksum: 10c0/7de70fdfa0274ce2fd5e2617c38156143172d852730d03ffb7cfec9ebd6f1bbbc595b81527a189956ee89fe419d9e7d51ffaeaa2d0ee2fc2deae7d24531b7ffb 584 | languageName: node 585 | linkType: hard 586 | 587 | "@rushstack/rig-package@npm:0.5.3": 588 | version: 0.5.3 589 | resolution: "@rushstack/rig-package@npm:0.5.3" 590 | dependencies: 591 | resolve: "npm:~1.22.1" 592 | strip-json-comments: "npm:~3.1.1" 593 | checksum: 10c0/ef0b0115b60007f965b875f671019ac7fc26592f6bf7d7b40fa8c68e8dc37e9f7dcda3b5533b489ebf04d28a182dc60987bfd365a8d4173c73d482b270647741 594 | languageName: node 595 | linkType: hard 596 | 597 | "@rushstack/terminal@npm:0.15.0": 598 | version: 0.15.0 599 | resolution: "@rushstack/terminal@npm:0.15.0" 600 | dependencies: 601 | "@rushstack/node-core-library": "npm:5.11.0" 602 | supports-color: "npm:~8.1.1" 603 | peerDependencies: 604 | "@types/node": "*" 605 | peerDependenciesMeta: 606 | "@types/node": 607 | optional: true 608 | checksum: 10c0/44e23353e8a4b8024d10d01b9a05fd8d736ddbe2d595a12bfcd290c27842fef156e2471f5e61eed62bad733bd692ba261f1e642c2b1547a0009927805e74e2a6 609 | languageName: node 610 | linkType: hard 611 | 612 | "@rushstack/ts-command-line@npm:4.23.5": 613 | version: 4.23.5 614 | resolution: "@rushstack/ts-command-line@npm:4.23.5" 615 | dependencies: 616 | "@rushstack/terminal": "npm:0.15.0" 617 | "@types/argparse": "npm:1.0.38" 618 | argparse: "npm:~1.0.9" 619 | string-argv: "npm:~0.3.1" 620 | checksum: 10c0/8c4330620658227bb7af27031d720a826f6a8b92f281cc433393c52968475fddc0031d86477f1676377878130b926b2efb7893edb2d73cdb1fa23444b792e88a 621 | languageName: node 622 | linkType: hard 623 | 624 | "@shikijs/engine-oniguruma@npm:^1.24.1": 625 | version: 1.24.2 626 | resolution: "@shikijs/engine-oniguruma@npm:1.24.2" 627 | dependencies: 628 | "@shikijs/types": "npm:1.24.2" 629 | "@shikijs/vscode-textmate": "npm:^9.3.0" 630 | checksum: 10c0/d16a91d7eac1fc3959ef1d0c7c466b81a31a0280b8455cf43c2a66b4b18bd80037e9445d3c068d8f96cc5560287fc18577950bbf689c32e9c3d8ad49dc6bb025 631 | languageName: node 632 | linkType: hard 633 | 634 | "@shikijs/types@npm:1.24.2, @shikijs/types@npm:^1.24.1": 635 | version: 1.24.2 636 | resolution: "@shikijs/types@npm:1.24.2" 637 | dependencies: 638 | "@shikijs/vscode-textmate": "npm:^9.3.0" 639 | "@types/hast": "npm:^3.0.4" 640 | checksum: 10c0/785066b144823f1a93a1b3445a3762ee85799b393675274961b41e2313b38e9943e2c286087eb079853ec3dabee5cc5c5ed75fb52bb3e1d199550497ce760f2a 641 | languageName: node 642 | linkType: hard 643 | 644 | "@shikijs/vscode-textmate@npm:^9.3.0": 645 | version: 9.3.0 646 | resolution: "@shikijs/vscode-textmate@npm:9.3.0" 647 | checksum: 10c0/6aa80798b7d7f8be8029bb397ce1b9b75c0d0963d6aa444b9ae165595ceee931cf3767ca1681ba71a6e27484eeccab584bd38db3420da477f1a8d745040b1b1f 648 | languageName: node 649 | linkType: hard 650 | 651 | "@types/argparse@npm:1.0.38": 652 | version: 1.0.38 653 | resolution: "@types/argparse@npm:1.0.38" 654 | checksum: 10c0/4fc892da5df16923f48180da2d1f4562fa8b0507cf636b24780444fa0a1d7321d4dc0c0ecbee6152968823f5a2ae0d321b4f8c705a489bf1ae1245bdeb0868fd 655 | languageName: node 656 | linkType: hard 657 | 658 | "@types/estree@npm:1.0.6": 659 | version: 1.0.6 660 | resolution: "@types/estree@npm:1.0.6" 661 | checksum: 10c0/cdfd751f6f9065442cd40957c07fd80361c962869aa853c1c2fd03e101af8b9389d8ff4955a43a6fcfa223dd387a089937f95be0f3eec21ca527039fd2d9859a 662 | languageName: node 663 | linkType: hard 664 | 665 | "@types/estree@npm:^1.0.0": 666 | version: 1.0.0 667 | resolution: "@types/estree@npm:1.0.0" 668 | checksum: 10c0/4e73ff606bf7c7ccdaa66092de650c410a4ad2ecc388fdbed8242cac9dbcad72407e1ceff041b7da691babb02ff74ab885d6231fb09368fdd1eabbf1b5253d49 669 | languageName: node 670 | linkType: hard 671 | 672 | "@types/hast@npm:^3.0.4": 673 | version: 3.0.4 674 | resolution: "@types/hast@npm:3.0.4" 675 | dependencies: 676 | "@types/unist": "npm:*" 677 | checksum: 10c0/3249781a511b38f1d330fd1e3344eed3c4e7ea8eff82e835d35da78e637480d36fad37a78be5a7aed8465d237ad0446abc1150859d0fde395354ea634decf9f7 678 | languageName: node 679 | linkType: hard 680 | 681 | "@types/node@npm:^22.13.8": 682 | version: 22.13.8 683 | resolution: "@types/node@npm:22.13.8" 684 | dependencies: 685 | undici-types: "npm:~6.20.0" 686 | checksum: 10c0/bfc92b734a9dce6ac5daee0a52feccdf5dcb3804d895e4bc5384e2f4644612b8801725cd03c8c3c0888fb5eeb16b875877ac44b77641e0196dc1a837b1c2a366 687 | languageName: node 688 | linkType: hard 689 | 690 | "@types/unist@npm:*": 691 | version: 3.0.3 692 | resolution: "@types/unist@npm:3.0.3" 693 | checksum: 10c0/2b1e4adcab78388e088fcc3c0ae8700f76619dbcb4741d7d201f87e2cb346bfc29a89003cfea2d76c996e1061452e14fcd737e8b25aacf949c1f2d6b2bc3dd60 694 | languageName: node 695 | linkType: hard 696 | 697 | "@typescript-eslint/eslint-plugin@npm:^8.25.0": 698 | version: 8.25.0 699 | resolution: "@typescript-eslint/eslint-plugin@npm:8.25.0" 700 | dependencies: 701 | "@eslint-community/regexpp": "npm:^4.10.0" 702 | "@typescript-eslint/scope-manager": "npm:8.25.0" 703 | "@typescript-eslint/type-utils": "npm:8.25.0" 704 | "@typescript-eslint/utils": "npm:8.25.0" 705 | "@typescript-eslint/visitor-keys": "npm:8.25.0" 706 | graphemer: "npm:^1.4.0" 707 | ignore: "npm:^5.3.1" 708 | natural-compare: "npm:^1.4.0" 709 | ts-api-utils: "npm:^2.0.1" 710 | peerDependencies: 711 | "@typescript-eslint/parser": ^8.0.0 || ^8.0.0-alpha.0 712 | eslint: ^8.57.0 || ^9.0.0 713 | typescript: ">=4.8.4 <5.8.0" 714 | checksum: 10c0/11d63850f5f03b29cd31166f8da111788dc74e46877c2e16a5c488d6c4aa4b6c68c0857b9a396ad920aa7f0f3e7166f4faecbb194c19cd2bb9d3f687c5d2b292 715 | languageName: node 716 | linkType: hard 717 | 718 | "@typescript-eslint/parser@npm:^8.25.0": 719 | version: 8.25.0 720 | resolution: "@typescript-eslint/parser@npm:8.25.0" 721 | dependencies: 722 | "@typescript-eslint/scope-manager": "npm:8.25.0" 723 | "@typescript-eslint/types": "npm:8.25.0" 724 | "@typescript-eslint/typescript-estree": "npm:8.25.0" 725 | "@typescript-eslint/visitor-keys": "npm:8.25.0" 726 | debug: "npm:^4.3.4" 727 | peerDependencies: 728 | eslint: ^8.57.0 || ^9.0.0 729 | typescript: ">=4.8.4 <5.8.0" 730 | checksum: 10c0/9a54539ba297791f23093ff42a885cc57d36b26205d7a390e114d1f01cc584ce91ac6ead01819daa46b48f873cac6c829fcf399a436610bdbfa98e5cd78148a2 731 | languageName: node 732 | linkType: hard 733 | 734 | "@typescript-eslint/scope-manager@npm:8.25.0": 735 | version: 8.25.0 736 | resolution: "@typescript-eslint/scope-manager@npm:8.25.0" 737 | dependencies: 738 | "@typescript-eslint/types": "npm:8.25.0" 739 | "@typescript-eslint/visitor-keys": "npm:8.25.0" 740 | checksum: 10c0/0a53a07873bdb569be38053ec006009cc8ba6b12c538b6df0935afd18e431cb17da1eb15b0c9cd267ac211c47aaa44fbc8d7ff3b7b44ff711621ff305fa3b355 741 | languageName: node 742 | linkType: hard 743 | 744 | "@typescript-eslint/type-utils@npm:8.25.0": 745 | version: 8.25.0 746 | resolution: "@typescript-eslint/type-utils@npm:8.25.0" 747 | dependencies: 748 | "@typescript-eslint/typescript-estree": "npm:8.25.0" 749 | "@typescript-eslint/utils": "npm:8.25.0" 750 | debug: "npm:^4.3.4" 751 | ts-api-utils: "npm:^2.0.1" 752 | peerDependencies: 753 | eslint: ^8.57.0 || ^9.0.0 754 | typescript: ">=4.8.4 <5.8.0" 755 | checksum: 10c0/b7477a2d239cfd337f7d28641666763cf680a43a8d377a09dc42415f715670d35fbb4e772e103dfe8cd620c377e66bce740106bb3983ee65a739c28fab7325d1 756 | languageName: node 757 | linkType: hard 758 | 759 | "@typescript-eslint/types@npm:8.25.0": 760 | version: 8.25.0 761 | resolution: "@typescript-eslint/types@npm:8.25.0" 762 | checksum: 10c0/b39addbee4be4d66e3089c2d01f9f1d69cedc13bff20e4fa9ed0ca5a0e7591d7c6e41ab3763c8c35404f971bc0fbf9f7867dbc2832740e5b63ee0049d60289f5 763 | languageName: node 764 | linkType: hard 765 | 766 | "@typescript-eslint/typescript-estree@npm:8.25.0": 767 | version: 8.25.0 768 | resolution: "@typescript-eslint/typescript-estree@npm:8.25.0" 769 | dependencies: 770 | "@typescript-eslint/types": "npm:8.25.0" 771 | "@typescript-eslint/visitor-keys": "npm:8.25.0" 772 | debug: "npm:^4.3.4" 773 | fast-glob: "npm:^3.3.2" 774 | is-glob: "npm:^4.0.3" 775 | minimatch: "npm:^9.0.4" 776 | semver: "npm:^7.6.0" 777 | ts-api-utils: "npm:^2.0.1" 778 | peerDependencies: 779 | typescript: ">=4.8.4 <5.8.0" 780 | checksum: 10c0/fc9de1c4f6ab81fb80b632dedef84d1ecf4c0abdc5f5246698deb6d86d5c6b5d582ef8a44fdef445bf7fbfa6658db516fe875c9d7c984bf4802e3a508b061856 781 | languageName: node 782 | linkType: hard 783 | 784 | "@typescript-eslint/utils@npm:8.25.0": 785 | version: 8.25.0 786 | resolution: "@typescript-eslint/utils@npm:8.25.0" 787 | dependencies: 788 | "@eslint-community/eslint-utils": "npm:^4.4.0" 789 | "@typescript-eslint/scope-manager": "npm:8.25.0" 790 | "@typescript-eslint/types": "npm:8.25.0" 791 | "@typescript-eslint/typescript-estree": "npm:8.25.0" 792 | peerDependencies: 793 | eslint: ^8.57.0 || ^9.0.0 794 | typescript: ">=4.8.4 <5.8.0" 795 | checksum: 10c0/cd15c4919f02899fd3975049a0a051a1455332a108c085a3e90ae9872e2cddac7f20a9a2c616f1366fca84274649e836ad6a437c9c5ead0bdabf5a123d12403f 796 | languageName: node 797 | linkType: hard 798 | 799 | "@typescript-eslint/visitor-keys@npm:8.25.0": 800 | version: 8.25.0 801 | resolution: "@typescript-eslint/visitor-keys@npm:8.25.0" 802 | dependencies: 803 | "@typescript-eslint/types": "npm:8.25.0" 804 | eslint-visitor-keys: "npm:^4.2.0" 805 | checksum: 10c0/7eb84c5899a25b1eb89d3c3f4be3ff18171f934669c57e2530b6dfa5fdd6eaae60629f3c89d06f4c8075fd1c701de76c0b9194e2922895c661ab6091e48f7db9 806 | languageName: node 807 | linkType: hard 808 | 809 | "@volar/language-core@npm:2.4.11, @volar/language-core@npm:~2.4.11": 810 | version: 2.4.11 811 | resolution: "@volar/language-core@npm:2.4.11" 812 | dependencies: 813 | "@volar/source-map": "npm:2.4.11" 814 | checksum: 10c0/ccc5de0c28b4186dc99ff9856b2ac2318ee1818480af3ca406f3c09d42b19b6df8698b525f6cf0fed368332fc76659cd4433fb38e6a55a85c7cefc97d665ccf8 815 | languageName: node 816 | linkType: hard 817 | 818 | "@volar/source-map@npm:2.4.11": 819 | version: 2.4.11 820 | resolution: "@volar/source-map@npm:2.4.11" 821 | checksum: 10c0/8e5badf9f67d669679c48fe32258e082d823523ca2807438d38c0aac6c52b84d43580c8921b559fc5a27c0c7457ffcba569e60de7a597851690dec04ed77c5fc 822 | languageName: node 823 | linkType: hard 824 | 825 | "@volar/typescript@npm:^2.4.11": 826 | version: 2.4.11 827 | resolution: "@volar/typescript@npm:2.4.11" 828 | dependencies: 829 | "@volar/language-core": "npm:2.4.11" 830 | path-browserify: "npm:^1.0.1" 831 | vscode-uri: "npm:^3.0.8" 832 | checksum: 10c0/bca9bda9c8c95fd06672b834d1804810fdad496e15ee8e2099f76de74fa529d835f342afb6b976e6e3bc4599a3bbbfd007a842694fe1300cf6286783b827f917 833 | languageName: node 834 | linkType: hard 835 | 836 | "@vue/compiler-core@npm:3.5.13": 837 | version: 3.5.13 838 | resolution: "@vue/compiler-core@npm:3.5.13" 839 | dependencies: 840 | "@babel/parser": "npm:^7.25.3" 841 | "@vue/shared": "npm:3.5.13" 842 | entities: "npm:^4.5.0" 843 | estree-walker: "npm:^2.0.2" 844 | source-map-js: "npm:^1.2.0" 845 | checksum: 10c0/b89f3e3ca92c3177ae449ada1480df13d99b5b3b2cdcf3202fd37dc30f294a1db1f473209f8bae9233e2d338632219d39b2bfa6941d158cea55255e4b0b30f90 846 | languageName: node 847 | linkType: hard 848 | 849 | "@vue/compiler-dom@npm:^3.5.0": 850 | version: 3.5.13 851 | resolution: "@vue/compiler-dom@npm:3.5.13" 852 | dependencies: 853 | "@vue/compiler-core": "npm:3.5.13" 854 | "@vue/shared": "npm:3.5.13" 855 | checksum: 10c0/8f424a71883c9ef4abdd125d2be8d12dd8cf94ba56089245c88734b1f87c65e10597816070ba2ea0a297a2f66dc579f39275a9a53ef5664c143a12409612cd72 856 | languageName: node 857 | linkType: hard 858 | 859 | "@vue/compiler-vue2@npm:^2.7.16": 860 | version: 2.7.16 861 | resolution: "@vue/compiler-vue2@npm:2.7.16" 862 | dependencies: 863 | de-indent: "npm:^1.0.2" 864 | he: "npm:^1.2.0" 865 | checksum: 10c0/c76c3fad770b9a7da40b314116cc9da173da20e5fd68785c8ed8dd8a87d02f239545fa296e16552e040ec86b47bfb18283b39447b250c2e76e479bd6ae475bb3 866 | languageName: node 867 | linkType: hard 868 | 869 | "@vue/language-core@npm:2.2.4": 870 | version: 2.2.4 871 | resolution: "@vue/language-core@npm:2.2.4" 872 | dependencies: 873 | "@volar/language-core": "npm:~2.4.11" 874 | "@vue/compiler-dom": "npm:^3.5.0" 875 | "@vue/compiler-vue2": "npm:^2.7.16" 876 | "@vue/shared": "npm:^3.5.0" 877 | alien-signals: "npm:^1.0.3" 878 | minimatch: "npm:^9.0.3" 879 | muggle-string: "npm:^0.4.1" 880 | path-browserify: "npm:^1.0.1" 881 | peerDependencies: 882 | typescript: "*" 883 | peerDependenciesMeta: 884 | typescript: 885 | optional: true 886 | checksum: 10c0/7fbb986c49fc63f96149d70df086c7f8e18d861e324214ac661f18cee0b732adbaa8d1ff7cf491a1f0a85863795f776186ad55fa7feef4a45573e24c3a7e444b 887 | languageName: node 888 | linkType: hard 889 | 890 | "@vue/shared@npm:3.5.13, @vue/shared@npm:^3.5.0": 891 | version: 3.5.13 892 | resolution: "@vue/shared@npm:3.5.13" 893 | checksum: 10c0/2c940ef907116f1c2583ca1d7733984e5705983ab07054c4e72f1d95eb0f7bdf4d01efbdaee1776c2008f79595963f44e98fced057f5957d86d57b70028f5025 894 | languageName: node 895 | linkType: hard 896 | 897 | "abbrev@npm:^3.0.0": 898 | version: 3.0.0 899 | resolution: "abbrev@npm:3.0.0" 900 | checksum: 10c0/049704186396f571650eb7b22ed3627b77a5aedf98bb83caf2eac81ca2a3e25e795394b0464cfb2d6076df3db6a5312139eac5b6a126ca296ac53c5008069c28 901 | languageName: node 902 | linkType: hard 903 | 904 | "acorn@npm:^8.14.0, acorn@npm:^8.8.2": 905 | version: 8.14.0 906 | resolution: "acorn@npm:8.14.0" 907 | bin: 908 | acorn: bin/acorn 909 | checksum: 10c0/6d4ee461a7734b2f48836ee0fbb752903606e576cc100eb49340295129ca0b452f3ba91ddd4424a1d4406a98adfb2ebb6bd0ff4c49d7a0930c10e462719bbfd7 910 | languageName: node 911 | linkType: hard 912 | 913 | "agent-base@npm:^7.1.0, agent-base@npm:^7.1.2": 914 | version: 7.1.3 915 | resolution: "agent-base@npm:7.1.3" 916 | checksum: 10c0/6192b580c5b1d8fb399b9c62bf8343d76654c2dd62afcb9a52b2cf44a8b6ace1e3b704d3fe3547d91555c857d3df02603341ff2cb961b9cfe2b12f9f3c38ee11 917 | languageName: node 918 | linkType: hard 919 | 920 | "ajv-draft-04@npm:~1.0.0": 921 | version: 1.0.0 922 | resolution: "ajv-draft-04@npm:1.0.0" 923 | peerDependencies: 924 | ajv: ^8.5.0 925 | peerDependenciesMeta: 926 | ajv: 927 | optional: true 928 | checksum: 10c0/6044310bd38c17d77549fd326bd40ce1506fa10b0794540aa130180808bf94117fac8c9b448c621512bea60e4a947278f6a978e87f10d342950c15b33ddd9271 929 | languageName: node 930 | linkType: hard 931 | 932 | "ajv-formats@npm:~3.0.1": 933 | version: 3.0.1 934 | resolution: "ajv-formats@npm:3.0.1" 935 | dependencies: 936 | ajv: "npm:^8.0.0" 937 | peerDependencies: 938 | ajv: ^8.0.0 939 | peerDependenciesMeta: 940 | ajv: 941 | optional: true 942 | checksum: 10c0/168d6bca1ea9f163b41c8147bae537e67bd963357a5488a1eaf3abe8baa8eec806d4e45f15b10767e6020679315c7e1e5e6803088dfb84efa2b4e9353b83dd0a 943 | languageName: node 944 | linkType: hard 945 | 946 | "ajv@npm:^8.0.0": 947 | version: 8.17.1 948 | resolution: "ajv@npm:8.17.1" 949 | dependencies: 950 | fast-deep-equal: "npm:^3.1.3" 951 | fast-uri: "npm:^3.0.1" 952 | json-schema-traverse: "npm:^1.0.0" 953 | require-from-string: "npm:^2.0.2" 954 | checksum: 10c0/ec3ba10a573c6b60f94639ffc53526275917a2df6810e4ab5a6b959d87459f9ef3f00d5e7865b82677cb7d21590355b34da14d1d0b9c32d75f95a187e76fff35 955 | languageName: node 956 | linkType: hard 957 | 958 | "ajv@npm:~8.12.0": 959 | version: 8.12.0 960 | resolution: "ajv@npm:8.12.0" 961 | dependencies: 962 | fast-deep-equal: "npm:^3.1.1" 963 | json-schema-traverse: "npm:^1.0.0" 964 | require-from-string: "npm:^2.0.2" 965 | uri-js: "npm:^4.2.2" 966 | checksum: 10c0/ac4f72adf727ee425e049bc9d8b31d4a57e1c90da8d28bcd23d60781b12fcd6fc3d68db5df16994c57b78b94eed7988f5a6b482fd376dc5b084125e20a0a622e 967 | languageName: node 968 | linkType: hard 969 | 970 | "ajv@npm:~8.13.0": 971 | version: 8.13.0 972 | resolution: "ajv@npm:8.13.0" 973 | dependencies: 974 | fast-deep-equal: "npm:^3.1.3" 975 | json-schema-traverse: "npm:^1.0.0" 976 | require-from-string: "npm:^2.0.2" 977 | uri-js: "npm:^4.4.1" 978 | checksum: 10c0/14c6497b6f72843986d7344175a1aa0e2c35b1e7f7475e55bc582cddb765fca7e6bf950f465dc7846f817776d9541b706f4b5b3fbedd8dfdeb5fce6f22864264 979 | languageName: node 980 | linkType: hard 981 | 982 | "alien-signals@npm:^1.0.3": 983 | version: 1.0.4 984 | resolution: "alien-signals@npm:1.0.4" 985 | checksum: 10c0/da6e1c9e143dc3faa11bd674a542bbd85cde72da74b3bfa5077194a1a2c4766e9a3f835017e90cfe290a7db929afe458f4de9b35be29f0c8e4f43dad99e3cd97 986 | languageName: node 987 | linkType: hard 988 | 989 | "ansi-regex@npm:^5.0.1": 990 | version: 5.0.1 991 | resolution: "ansi-regex@npm:5.0.1" 992 | checksum: 10c0/9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737 993 | languageName: node 994 | linkType: hard 995 | 996 | "ansi-regex@npm:^6.0.1": 997 | version: 6.0.1 998 | resolution: "ansi-regex@npm:6.0.1" 999 | checksum: 10c0/cbe16dbd2c6b2735d1df7976a7070dd277326434f0212f43abf6d87674095d247968209babdaad31bb00882fa68807256ba9be340eec2f1004de14ca75f52a08 1000 | languageName: node 1001 | linkType: hard 1002 | 1003 | "ansi-styles@npm:^4.0.0": 1004 | version: 4.3.0 1005 | resolution: "ansi-styles@npm:4.3.0" 1006 | dependencies: 1007 | color-convert: "npm:^2.0.1" 1008 | checksum: 10c0/895a23929da416f2bd3de7e9cb4eabd340949328ab85ddd6e484a637d8f6820d485f53933446f5291c3b760cbc488beb8e88573dd0f9c7daf83dccc8fe81b041 1009 | languageName: node 1010 | linkType: hard 1011 | 1012 | "ansi-styles@npm:^6.1.0": 1013 | version: 6.2.1 1014 | resolution: "ansi-styles@npm:6.2.1" 1015 | checksum: 10c0/5d1ec38c123984bcedd996eac680d548f31828bd679a66db2bdf11844634dde55fec3efa9c6bb1d89056a5e79c1ac540c4c784d592ea1d25028a92227d2f2d5c 1016 | languageName: node 1017 | linkType: hard 1018 | 1019 | "argparse@npm:^2.0.1": 1020 | version: 2.0.1 1021 | resolution: "argparse@npm:2.0.1" 1022 | checksum: 10c0/c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e 1023 | languageName: node 1024 | linkType: hard 1025 | 1026 | "argparse@npm:~1.0.9": 1027 | version: 1.0.10 1028 | resolution: "argparse@npm:1.0.10" 1029 | dependencies: 1030 | sprintf-js: "npm:~1.0.2" 1031 | checksum: 10c0/b2972c5c23c63df66bca144dbc65d180efa74f25f8fd9b7d9a0a6c88ae839db32df3d54770dcb6460cf840d232b60695d1a6b1053f599d84e73f7437087712de 1032 | languageName: node 1033 | linkType: hard 1034 | 1035 | "balanced-match@npm:^1.0.0": 1036 | version: 1.0.2 1037 | resolution: "balanced-match@npm:1.0.2" 1038 | checksum: 10c0/9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee 1039 | languageName: node 1040 | linkType: hard 1041 | 1042 | "bash-echolorized@npm:^1.0.1": 1043 | version: 1.0.1 1044 | resolution: "bash-echolorized@npm:1.0.1" 1045 | bin: 1046 | echolorized: bin/echolorized 1047 | checksum: 10c0/248bc29dcc4733de7fb95f38bb0409a9396486bf389efadb72d06336fee68b885bab73359158aac0a817a3db180580e002149bc2c393ceef7af9abf220f4f0fd 1048 | languageName: node 1049 | linkType: hard 1050 | 1051 | "brace-expansion@npm:^1.1.7": 1052 | version: 1.1.11 1053 | resolution: "brace-expansion@npm:1.1.11" 1054 | dependencies: 1055 | balanced-match: "npm:^1.0.0" 1056 | concat-map: "npm:0.0.1" 1057 | checksum: 10c0/695a56cd058096a7cb71fb09d9d6a7070113c7be516699ed361317aca2ec169f618e28b8af352e02ab4233fb54eb0168460a40dc320bab0034b36ab59aaad668 1058 | languageName: node 1059 | linkType: hard 1060 | 1061 | "brace-expansion@npm:^2.0.1": 1062 | version: 2.0.1 1063 | resolution: "brace-expansion@npm:2.0.1" 1064 | dependencies: 1065 | balanced-match: "npm:^1.0.0" 1066 | checksum: 10c0/b358f2fe060e2d7a87aa015979ecea07f3c37d4018f8d6deb5bd4c229ad3a0384fe6029bb76cd8be63c81e516ee52d1a0673edbe2023d53a5191732ae3c3e49f 1067 | languageName: node 1068 | linkType: hard 1069 | 1070 | "braces@npm:^3.0.3": 1071 | version: 3.0.3 1072 | resolution: "braces@npm:3.0.3" 1073 | dependencies: 1074 | fill-range: "npm:^7.1.1" 1075 | checksum: 10c0/7c6dfd30c338d2997ba77500539227b9d1f85e388a5f43220865201e407e076783d0881f2d297b9f80951b4c957fcf0b51c1d2d24227631643c3f7c284b0aa04 1076 | languageName: node 1077 | linkType: hard 1078 | 1079 | "buffer-from@npm:^1.0.0": 1080 | version: 1.1.2 1081 | resolution: "buffer-from@npm:1.1.2" 1082 | checksum: 10c0/124fff9d66d691a86d3b062eff4663fe437a9d9ee4b47b1b9e97f5a5d14f6d5399345db80f796827be7c95e70a8e765dd404b7c3ff3b3324f98e9b0c8826cc34 1083 | languageName: node 1084 | linkType: hard 1085 | 1086 | "cacache@npm:^19.0.1": 1087 | version: 19.0.1 1088 | resolution: "cacache@npm:19.0.1" 1089 | dependencies: 1090 | "@npmcli/fs": "npm:^4.0.0" 1091 | fs-minipass: "npm:^3.0.0" 1092 | glob: "npm:^10.2.2" 1093 | lru-cache: "npm:^10.0.1" 1094 | minipass: "npm:^7.0.3" 1095 | minipass-collect: "npm:^2.0.1" 1096 | minipass-flush: "npm:^1.0.5" 1097 | minipass-pipeline: "npm:^1.2.4" 1098 | p-map: "npm:^7.0.2" 1099 | ssri: "npm:^12.0.0" 1100 | tar: "npm:^7.4.3" 1101 | unique-filename: "npm:^4.0.0" 1102 | checksum: 10c0/01f2134e1bd7d3ab68be851df96c8d63b492b1853b67f2eecb2c37bb682d37cb70bb858a16f2f0554d3c0071be6dfe21456a1ff6fa4b7eed996570d6a25ffe9c 1103 | languageName: node 1104 | linkType: hard 1105 | 1106 | "chownr@npm:^3.0.0": 1107 | version: 3.0.0 1108 | resolution: "chownr@npm:3.0.0" 1109 | checksum: 10c0/43925b87700f7e3893296c8e9c56cc58f926411cce3a6e5898136daaf08f08b9a8eb76d37d3267e707d0dcc17aed2e2ebdf5848c0c3ce95cf910a919935c1b10 1110 | languageName: node 1111 | linkType: hard 1112 | 1113 | "color-convert@npm:^2.0.1": 1114 | version: 2.0.1 1115 | resolution: "color-convert@npm:2.0.1" 1116 | dependencies: 1117 | color-name: "npm:~1.1.4" 1118 | checksum: 10c0/37e1150172f2e311fe1b2df62c6293a342ee7380da7b9cfdba67ea539909afbd74da27033208d01d6d5cfc65ee7868a22e18d7e7648e004425441c0f8a15a7d7 1119 | languageName: node 1120 | linkType: hard 1121 | 1122 | "color-name@npm:~1.1.4": 1123 | version: 1.1.4 1124 | resolution: "color-name@npm:1.1.4" 1125 | checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 1126 | languageName: node 1127 | linkType: hard 1128 | 1129 | "commander@npm:^2.20.0": 1130 | version: 2.20.3 1131 | resolution: "commander@npm:2.20.3" 1132 | checksum: 10c0/74c781a5248c2402a0a3e966a0a2bba3c054aad144f5c023364be83265e796b20565aa9feff624132ff629aa64e16999fa40a743c10c12f7c61e96a794b99288 1133 | languageName: node 1134 | linkType: hard 1135 | 1136 | "compare-versions@npm:^6.1.1": 1137 | version: 6.1.1 1138 | resolution: "compare-versions@npm:6.1.1" 1139 | checksum: 10c0/415205c7627f9e4f358f571266422980c9fe2d99086be0c9a48008ef7c771f32b0fbe8e97a441ffedc3910872f917a0675fe0fe3c3b6d331cda6d8690be06338 1140 | languageName: node 1141 | linkType: hard 1142 | 1143 | "concat-map@npm:0.0.1": 1144 | version: 0.0.1 1145 | resolution: "concat-map@npm:0.0.1" 1146 | checksum: 10c0/c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f 1147 | languageName: node 1148 | linkType: hard 1149 | 1150 | "confbox@npm:^0.1.8": 1151 | version: 0.1.8 1152 | resolution: "confbox@npm:0.1.8" 1153 | checksum: 10c0/fc2c68d97cb54d885b10b63e45bd8da83a8a71459d3ecf1825143dd4c7f9f1b696b3283e07d9d12a144c1301c2ebc7842380bdf0014e55acc4ae1c9550102418 1154 | languageName: node 1155 | linkType: hard 1156 | 1157 | "core-js@npm:^3.40.0": 1158 | version: 3.40.0 1159 | resolution: "core-js@npm:3.40.0" 1160 | checksum: 10c0/db7946ada881e845d8b157061945b1187618fa45cf162f392a151e8a497962aed2da688c982eaa1d444c864be97a70f8be4d73385294b515d224dd164d19f1d4 1161 | languageName: node 1162 | linkType: hard 1163 | 1164 | "cross-spawn@npm:^7.0.0": 1165 | version: 7.0.3 1166 | resolution: "cross-spawn@npm:7.0.3" 1167 | dependencies: 1168 | path-key: "npm:^3.1.0" 1169 | shebang-command: "npm:^2.0.0" 1170 | which: "npm:^2.0.1" 1171 | checksum: 10c0/5738c312387081c98d69c98e105b6327b069197f864a60593245d64c8089c8a0a744e16349281210d56835bb9274130d825a78b2ad6853ca13cfbeffc0c31750 1172 | languageName: node 1173 | linkType: hard 1174 | 1175 | "de-indent@npm:^1.0.2": 1176 | version: 1.0.2 1177 | resolution: "de-indent@npm:1.0.2" 1178 | checksum: 10c0/7058ce58abd6dfc123dd204e36be3797abd419b59482a634605420f47ae97639d0c183ec5d1b904f308a01033f473673897afc2bd59bc620ebf1658763ef4291 1179 | languageName: node 1180 | linkType: hard 1181 | 1182 | "debug@npm:4, debug@npm:^4.4.0": 1183 | version: 4.4.0 1184 | resolution: "debug@npm:4.4.0" 1185 | dependencies: 1186 | ms: "npm:^2.1.3" 1187 | peerDependenciesMeta: 1188 | supports-color: 1189 | optional: true 1190 | checksum: 10c0/db94f1a182bf886f57b4755f85b3a74c39b5114b9377b7ab375dc2cfa3454f09490cc6c30f829df3fc8042bc8b8995f6567ce5cd96f3bc3688bd24027197d9de 1191 | languageName: node 1192 | linkType: hard 1193 | 1194 | "debug@npm:^4.3.4": 1195 | version: 4.3.4 1196 | resolution: "debug@npm:4.3.4" 1197 | dependencies: 1198 | ms: "npm:2.1.2" 1199 | peerDependenciesMeta: 1200 | supports-color: 1201 | optional: true 1202 | checksum: 10c0/cedbec45298dd5c501d01b92b119cd3faebe5438c3917ff11ae1bff86a6c722930ac9c8659792824013168ba6db7c4668225d845c633fbdafbbf902a6389f736 1203 | languageName: node 1204 | linkType: hard 1205 | 1206 | "eastasianwidth@npm:^0.2.0": 1207 | version: 0.2.0 1208 | resolution: "eastasianwidth@npm:0.2.0" 1209 | checksum: 10c0/26f364ebcdb6395f95124fda411f63137a4bfb5d3a06453f7f23dfe52502905bd84e0488172e0f9ec295fdc45f05c23d5d91baf16bd26f0fe9acd777a188dc39 1210 | languageName: node 1211 | linkType: hard 1212 | 1213 | "emoji-regex@npm:^8.0.0": 1214 | version: 8.0.0 1215 | resolution: "emoji-regex@npm:8.0.0" 1216 | checksum: 10c0/b6053ad39951c4cf338f9092d7bfba448cdfd46fe6a2a034700b149ac9ffbc137e361cbd3c442297f86bed2e5f7576c1b54cc0a6bf8ef5106cc62f496af35010 1217 | languageName: node 1218 | linkType: hard 1219 | 1220 | "emoji-regex@npm:^9.2.2": 1221 | version: 9.2.2 1222 | resolution: "emoji-regex@npm:9.2.2" 1223 | checksum: 10c0/af014e759a72064cf66e6e694a7fc6b0ed3d8db680427b021a89727689671cefe9d04151b2cad51dbaf85d5ba790d061cd167f1cf32eb7b281f6368b3c181639 1224 | languageName: node 1225 | linkType: hard 1226 | 1227 | "encoding@npm:^0.1.13": 1228 | version: 0.1.13 1229 | resolution: "encoding@npm:0.1.13" 1230 | dependencies: 1231 | iconv-lite: "npm:^0.6.2" 1232 | checksum: 10c0/36d938712ff00fe1f4bac88b43bcffb5930c1efa57bbcdca9d67e1d9d6c57cfb1200fb01efe0f3109b2ce99b231f90779532814a81370a1bd3274a0f58585039 1233 | languageName: node 1234 | linkType: hard 1235 | 1236 | "entities@npm:^4.4.0, entities@npm:^4.5.0": 1237 | version: 4.5.0 1238 | resolution: "entities@npm:4.5.0" 1239 | checksum: 10c0/5b039739f7621f5d1ad996715e53d964035f75ad3b9a4d38c6b3804bb226e282ffeae2443624d8fdd9c47d8e926ae9ac009c54671243f0c3294c26af7cc85250 1240 | languageName: node 1241 | linkType: hard 1242 | 1243 | "env-paths@npm:^2.2.0": 1244 | version: 2.2.1 1245 | resolution: "env-paths@npm:2.2.1" 1246 | checksum: 10c0/285325677bf00e30845e330eec32894f5105529db97496ee3f598478e50f008c5352a41a30e5e72ec9de8a542b5a570b85699cd63bd2bc646dbcb9f311d83bc4 1247 | languageName: node 1248 | linkType: hard 1249 | 1250 | "err-code@npm:^2.0.2": 1251 | version: 2.0.3 1252 | resolution: "err-code@npm:2.0.3" 1253 | checksum: 10c0/b642f7b4dd4a376e954947550a3065a9ece6733ab8e51ad80db727aaae0817c2e99b02a97a3d6cecc648a97848305e728289cf312d09af395403a90c9d4d8a66 1254 | languageName: node 1255 | linkType: hard 1256 | 1257 | "esbuild@npm:^0.21.3": 1258 | version: 0.21.5 1259 | resolution: "esbuild@npm:0.21.5" 1260 | dependencies: 1261 | "@esbuild/aix-ppc64": "npm:0.21.5" 1262 | "@esbuild/android-arm": "npm:0.21.5" 1263 | "@esbuild/android-arm64": "npm:0.21.5" 1264 | "@esbuild/android-x64": "npm:0.21.5" 1265 | "@esbuild/darwin-arm64": "npm:0.21.5" 1266 | "@esbuild/darwin-x64": "npm:0.21.5" 1267 | "@esbuild/freebsd-arm64": "npm:0.21.5" 1268 | "@esbuild/freebsd-x64": "npm:0.21.5" 1269 | "@esbuild/linux-arm": "npm:0.21.5" 1270 | "@esbuild/linux-arm64": "npm:0.21.5" 1271 | "@esbuild/linux-ia32": "npm:0.21.5" 1272 | "@esbuild/linux-loong64": "npm:0.21.5" 1273 | "@esbuild/linux-mips64el": "npm:0.21.5" 1274 | "@esbuild/linux-ppc64": "npm:0.21.5" 1275 | "@esbuild/linux-riscv64": "npm:0.21.5" 1276 | "@esbuild/linux-s390x": "npm:0.21.5" 1277 | "@esbuild/linux-x64": "npm:0.21.5" 1278 | "@esbuild/netbsd-x64": "npm:0.21.5" 1279 | "@esbuild/openbsd-x64": "npm:0.21.5" 1280 | "@esbuild/sunos-x64": "npm:0.21.5" 1281 | "@esbuild/win32-arm64": "npm:0.21.5" 1282 | "@esbuild/win32-ia32": "npm:0.21.5" 1283 | "@esbuild/win32-x64": "npm:0.21.5" 1284 | dependenciesMeta: 1285 | "@esbuild/aix-ppc64": 1286 | optional: true 1287 | "@esbuild/android-arm": 1288 | optional: true 1289 | "@esbuild/android-arm64": 1290 | optional: true 1291 | "@esbuild/android-x64": 1292 | optional: true 1293 | "@esbuild/darwin-arm64": 1294 | optional: true 1295 | "@esbuild/darwin-x64": 1296 | optional: true 1297 | "@esbuild/freebsd-arm64": 1298 | optional: true 1299 | "@esbuild/freebsd-x64": 1300 | optional: true 1301 | "@esbuild/linux-arm": 1302 | optional: true 1303 | "@esbuild/linux-arm64": 1304 | optional: true 1305 | "@esbuild/linux-ia32": 1306 | optional: true 1307 | "@esbuild/linux-loong64": 1308 | optional: true 1309 | "@esbuild/linux-mips64el": 1310 | optional: true 1311 | "@esbuild/linux-ppc64": 1312 | optional: true 1313 | "@esbuild/linux-riscv64": 1314 | optional: true 1315 | "@esbuild/linux-s390x": 1316 | optional: true 1317 | "@esbuild/linux-x64": 1318 | optional: true 1319 | "@esbuild/netbsd-x64": 1320 | optional: true 1321 | "@esbuild/openbsd-x64": 1322 | optional: true 1323 | "@esbuild/sunos-x64": 1324 | optional: true 1325 | "@esbuild/win32-arm64": 1326 | optional: true 1327 | "@esbuild/win32-ia32": 1328 | optional: true 1329 | "@esbuild/win32-x64": 1330 | optional: true 1331 | bin: 1332 | esbuild: bin/esbuild 1333 | checksum: 10c0/fa08508adf683c3f399e8a014a6382a6b65542213431e26206c0720e536b31c09b50798747c2a105a4bbba1d9767b8d3615a74c2f7bf1ddf6d836cd11eb672de 1334 | languageName: node 1335 | linkType: hard 1336 | 1337 | "eslint-visitor-keys@npm:^3.3.0": 1338 | version: 3.3.0 1339 | resolution: "eslint-visitor-keys@npm:3.3.0" 1340 | checksum: 10c0/fc6a9b5bdee8d90e35e7564fd9db10fdf507a2c089a4f0d4d3dd091f7f4ac6790547c8b1b7a760642ef819f875ef86dd5bcb8cdf01b0775f57a699f4e6a20a18 1341 | languageName: node 1342 | linkType: hard 1343 | 1344 | "eslint-visitor-keys@npm:^4.2.0": 1345 | version: 4.2.0 1346 | resolution: "eslint-visitor-keys@npm:4.2.0" 1347 | checksum: 10c0/2ed81c663b147ca6f578312919483eb040295bbab759e5a371953456c636c5b49a559883e2677112453728d66293c0a4c90ab11cab3428cf02a0236d2e738269 1348 | languageName: node 1349 | linkType: hard 1350 | 1351 | "estree-walker@npm:^2.0.2": 1352 | version: 2.0.2 1353 | resolution: "estree-walker@npm:2.0.2" 1354 | checksum: 10c0/53a6c54e2019b8c914dc395890153ffdc2322781acf4bd7d1a32d7aedc1710807bdcd866ac133903d5629ec601fbb50abe8c2e5553c7f5a0afdd9b6af6c945af 1355 | languageName: node 1356 | linkType: hard 1357 | 1358 | "exponential-backoff@npm:^3.1.1": 1359 | version: 3.1.2 1360 | resolution: "exponential-backoff@npm:3.1.2" 1361 | checksum: 10c0/d9d3e1eafa21b78464297df91f1776f7fbaa3d5e3f7f0995648ca5b89c069d17055033817348d9f4a43d1c20b0eab84f75af6991751e839df53e4dfd6f22e844 1362 | languageName: node 1363 | linkType: hard 1364 | 1365 | "fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": 1366 | version: 3.1.3 1367 | resolution: "fast-deep-equal@npm:3.1.3" 1368 | checksum: 10c0/40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0 1369 | languageName: node 1370 | linkType: hard 1371 | 1372 | "fast-glob@npm:^3.3.2": 1373 | version: 3.3.3 1374 | resolution: "fast-glob@npm:3.3.3" 1375 | dependencies: 1376 | "@nodelib/fs.stat": "npm:^2.0.2" 1377 | "@nodelib/fs.walk": "npm:^1.2.3" 1378 | glob-parent: "npm:^5.1.2" 1379 | merge2: "npm:^1.3.0" 1380 | micromatch: "npm:^4.0.8" 1381 | checksum: 10c0/f6aaa141d0d3384cf73cbcdfc52f475ed293f6d5b65bfc5def368b09163a9f7e5ec2b3014d80f733c405f58e470ee0cc451c2937685045cddcdeaa24199c43fe 1382 | languageName: node 1383 | linkType: hard 1384 | 1385 | "fast-uri@npm:^3.0.1": 1386 | version: 3.0.6 1387 | resolution: "fast-uri@npm:3.0.6" 1388 | checksum: 10c0/74a513c2af0584448aee71ce56005185f81239eab7a2343110e5bad50c39ad4fb19c5a6f99783ead1cac7ccaf3461a6034fda89fffa2b30b6d99b9f21c2f9d29 1389 | languageName: node 1390 | linkType: hard 1391 | 1392 | "fastq@npm:^1.6.0": 1393 | version: 1.15.0 1394 | resolution: "fastq@npm:1.15.0" 1395 | dependencies: 1396 | reusify: "npm:^1.0.4" 1397 | checksum: 10c0/5ce4f83afa5f88c9379e67906b4d31bc7694a30826d6cc8d0f0473c966929017fda65c2174b0ec89f064ede6ace6c67f8a4fe04cef42119b6a55b0d465554c24 1398 | languageName: node 1399 | linkType: hard 1400 | 1401 | "fill-range@npm:^7.1.1": 1402 | version: 7.1.1 1403 | resolution: "fill-range@npm:7.1.1" 1404 | dependencies: 1405 | to-regex-range: "npm:^5.0.1" 1406 | checksum: 10c0/b75b691bbe065472f38824f694c2f7449d7f5004aa950426a2c28f0306c60db9b880c0b0e4ed819997ffb882d1da02cfcfc819bddc94d71627f5269682edf018 1407 | languageName: node 1408 | linkType: hard 1409 | 1410 | "foreground-child@npm:^3.1.0": 1411 | version: 3.1.1 1412 | resolution: "foreground-child@npm:3.1.1" 1413 | dependencies: 1414 | cross-spawn: "npm:^7.0.0" 1415 | signal-exit: "npm:^4.0.1" 1416 | checksum: 10c0/9700a0285628abaeb37007c9a4d92bd49f67210f09067638774338e146c8e9c825c5c877f072b2f75f41dc6a2d0be8664f79ffc03f6576649f54a84fb9b47de0 1417 | languageName: node 1418 | linkType: hard 1419 | 1420 | "fs-extra@npm:~11.3.0": 1421 | version: 11.3.0 1422 | resolution: "fs-extra@npm:11.3.0" 1423 | dependencies: 1424 | graceful-fs: "npm:^4.2.0" 1425 | jsonfile: "npm:^6.0.1" 1426 | universalify: "npm:^2.0.0" 1427 | checksum: 10c0/5f95e996186ff45463059feb115a22fb048bdaf7e487ecee8a8646c78ed8fdca63630e3077d4c16ce677051f5e60d3355a06f3cd61f3ca43f48cc58822a44d0a 1428 | languageName: node 1429 | linkType: hard 1430 | 1431 | "fs-minipass@npm:^3.0.0": 1432 | version: 3.0.3 1433 | resolution: "fs-minipass@npm:3.0.3" 1434 | dependencies: 1435 | minipass: "npm:^7.0.3" 1436 | checksum: 10c0/63e80da2ff9b621e2cb1596abcb9207f1cf82b968b116ccd7b959e3323144cce7fb141462200971c38bbf2ecca51695069db45265705bed09a7cd93ae5b89f94 1437 | languageName: node 1438 | linkType: hard 1439 | 1440 | "fsevents@npm:~2.3.2": 1441 | version: 2.3.2 1442 | resolution: "fsevents@npm:2.3.2" 1443 | dependencies: 1444 | node-gyp: "npm:latest" 1445 | checksum: 10c0/be78a3efa3e181cda3cf7a4637cb527bcebb0bd0ea0440105a3bb45b86f9245b307dc10a2507e8f4498a7d4ec349d1910f4d73e4d4495b16103106e07eee735b 1446 | conditions: os=darwin 1447 | languageName: node 1448 | linkType: hard 1449 | 1450 | "fsevents@npm:~2.3.3": 1451 | version: 2.3.3 1452 | resolution: "fsevents@npm:2.3.3" 1453 | dependencies: 1454 | node-gyp: "npm:latest" 1455 | checksum: 10c0/a1f0c44595123ed717febbc478aa952e47adfc28e2092be66b8ab1635147254ca6cfe1df792a8997f22716d4cbafc73309899ff7bfac2ac3ad8cf2e4ecc3ec60 1456 | conditions: os=darwin 1457 | languageName: node 1458 | linkType: hard 1459 | 1460 | "fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin": 1461 | version: 2.3.2 1462 | resolution: "fsevents@patch:fsevents@npm%3A2.3.2#optional!builtin::version=2.3.2&hash=df0bf1" 1463 | dependencies: 1464 | node-gyp: "npm:latest" 1465 | conditions: os=darwin 1466 | languageName: node 1467 | linkType: hard 1468 | 1469 | "fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": 1470 | version: 2.3.3 1471 | resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" 1472 | dependencies: 1473 | node-gyp: "npm:latest" 1474 | conditions: os=darwin 1475 | languageName: node 1476 | linkType: hard 1477 | 1478 | "function-bind@npm:^1.1.1": 1479 | version: 1.1.1 1480 | resolution: "function-bind@npm:1.1.1" 1481 | checksum: 10c0/60b74b2407e1942e1ed7f8c284f8ef714d0689dcfce5319985a5b7da3fc727f40b4a59ec72dc55aa83365ad7b8fa4fac3a30d93c850a2b452f29ae03dbc10a1e 1482 | languageName: node 1483 | linkType: hard 1484 | 1485 | "function-bind@npm:^1.1.2": 1486 | version: 1.1.2 1487 | resolution: "function-bind@npm:1.1.2" 1488 | checksum: 10c0/d8680ee1e5fcd4c197e4ac33b2b4dce03c71f4d91717292785703db200f5c21f977c568d28061226f9b5900cbcd2c84463646134fd5337e7925e0942bc3f46d5 1489 | languageName: node 1490 | linkType: hard 1491 | 1492 | "glob-parent@npm:^5.1.2": 1493 | version: 5.1.2 1494 | resolution: "glob-parent@npm:5.1.2" 1495 | dependencies: 1496 | is-glob: "npm:^4.0.1" 1497 | checksum: 10c0/cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee 1498 | languageName: node 1499 | linkType: hard 1500 | 1501 | "glob@npm:^10.2.2, glob@npm:^10.3.10": 1502 | version: 10.4.5 1503 | resolution: "glob@npm:10.4.5" 1504 | dependencies: 1505 | foreground-child: "npm:^3.1.0" 1506 | jackspeak: "npm:^3.1.2" 1507 | minimatch: "npm:^9.0.4" 1508 | minipass: "npm:^7.1.2" 1509 | package-json-from-dist: "npm:^1.0.0" 1510 | path-scurry: "npm:^1.11.1" 1511 | bin: 1512 | glob: dist/esm/bin.mjs 1513 | checksum: 10c0/19a9759ea77b8e3ca0a43c2f07ecddc2ad46216b786bb8f993c445aee80d345925a21e5280c7b7c6c59e860a0154b84e4b2b60321fea92cd3c56b4a7489f160e 1514 | languageName: node 1515 | linkType: hard 1516 | 1517 | "glob@npm:^10.3.7": 1518 | version: 10.3.10 1519 | resolution: "glob@npm:10.3.10" 1520 | dependencies: 1521 | foreground-child: "npm:^3.1.0" 1522 | jackspeak: "npm:^2.3.5" 1523 | minimatch: "npm:^9.0.1" 1524 | minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" 1525 | path-scurry: "npm:^1.10.1" 1526 | bin: 1527 | glob: dist/esm/bin.mjs 1528 | checksum: 10c0/13d8a1feb7eac7945f8c8480e11cd4a44b24d26503d99a8d8ac8d5aefbf3e9802a2b6087318a829fad04cb4e829f25c5f4f1110c68966c498720dd261c7e344d 1529 | languageName: node 1530 | linkType: hard 1531 | 1532 | "graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.6": 1533 | version: 4.2.11 1534 | resolution: "graceful-fs@npm:4.2.11" 1535 | checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 1536 | languageName: node 1537 | linkType: hard 1538 | 1539 | "graphemer@npm:^1.4.0": 1540 | version: 1.4.0 1541 | resolution: "graphemer@npm:1.4.0" 1542 | checksum: 10c0/e951259d8cd2e0d196c72ec711add7115d42eb9a8146c8eeda5b8d3ac91e5dd816b9cd68920726d9fd4490368e7ed86e9c423f40db87e2d8dfafa00fa17c3a31 1543 | languageName: node 1544 | linkType: hard 1545 | 1546 | "has-flag@npm:^4.0.0": 1547 | version: 4.0.0 1548 | resolution: "has-flag@npm:4.0.0" 1549 | checksum: 10c0/2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1 1550 | languageName: node 1551 | linkType: hard 1552 | 1553 | "has@npm:^1.0.3": 1554 | version: 1.0.3 1555 | resolution: "has@npm:1.0.3" 1556 | dependencies: 1557 | function-bind: "npm:^1.1.1" 1558 | checksum: 10c0/e1da0d2bd109f116b632f27782cf23182b42f14972ca9540e4c5aa7e52647407a0a4a76937334fddcb56befe94a3494825ec22b19b51f5e5507c3153fd1a5e1b 1559 | languageName: node 1560 | linkType: hard 1561 | 1562 | "hasown@npm:^2.0.2": 1563 | version: 2.0.2 1564 | resolution: "hasown@npm:2.0.2" 1565 | dependencies: 1566 | function-bind: "npm:^1.1.2" 1567 | checksum: 10c0/3769d434703b8ac66b209a4cca0737519925bbdb61dd887f93a16372b14694c63ff4e797686d87c90f08168e81082248b9b028bad60d4da9e0d1148766f56eb9 1568 | languageName: node 1569 | linkType: hard 1570 | 1571 | "he@npm:^1.2.0": 1572 | version: 1.2.0 1573 | resolution: "he@npm:1.2.0" 1574 | bin: 1575 | he: bin/he 1576 | checksum: 10c0/a27d478befe3c8192f006cdd0639a66798979dfa6e2125c6ac582a19a5ebfec62ad83e8382e6036170d873f46e4536a7e795bf8b95bf7c247f4cc0825ccc8c17 1577 | languageName: node 1578 | linkType: hard 1579 | 1580 | "http-cache-semantics@npm:^4.1.1": 1581 | version: 4.1.1 1582 | resolution: "http-cache-semantics@npm:4.1.1" 1583 | checksum: 10c0/ce1319b8a382eb3cbb4a37c19f6bfe14e5bb5be3d09079e885e8c513ab2d3cd9214902f8a31c9dc4e37022633ceabfc2d697405deeaf1b8f3552bb4ed996fdfc 1584 | languageName: node 1585 | linkType: hard 1586 | 1587 | "http-proxy-agent@npm:^7.0.0": 1588 | version: 7.0.2 1589 | resolution: "http-proxy-agent@npm:7.0.2" 1590 | dependencies: 1591 | agent-base: "npm:^7.1.0" 1592 | debug: "npm:^4.3.4" 1593 | checksum: 10c0/4207b06a4580fb85dd6dff521f0abf6db517489e70863dca1a0291daa7f2d3d2d6015a57bd702af068ea5cf9f1f6ff72314f5f5b4228d299c0904135d2aef921 1594 | languageName: node 1595 | linkType: hard 1596 | 1597 | "https-proxy-agent@npm:^7.0.1": 1598 | version: 7.0.6 1599 | resolution: "https-proxy-agent@npm:7.0.6" 1600 | dependencies: 1601 | agent-base: "npm:^7.1.2" 1602 | debug: "npm:4" 1603 | checksum: 10c0/f729219bc735edb621fa30e6e84e60ee5d00802b8247aac0d7b79b0bd6d4b3294737a337b93b86a0bd9e68099d031858a39260c976dc14cdbba238ba1f8779ac 1604 | languageName: node 1605 | linkType: hard 1606 | 1607 | "iconv-lite@npm:^0.6.2": 1608 | version: 0.6.3 1609 | resolution: "iconv-lite@npm:0.6.3" 1610 | dependencies: 1611 | safer-buffer: "npm:>= 2.1.2 < 3.0.0" 1612 | checksum: 10c0/98102bc66b33fcf5ac044099d1257ba0b7ad5e3ccd3221f34dd508ab4070edff183276221684e1e0555b145fce0850c9f7d2b60a9fcac50fbb4ea0d6e845a3b1 1613 | languageName: node 1614 | linkType: hard 1615 | 1616 | "ignore@npm:^5.3.1": 1617 | version: 5.3.2 1618 | resolution: "ignore@npm:5.3.2" 1619 | checksum: 10c0/f9f652c957983634ded1e7f02da3b559a0d4cc210fca3792cb67f1b153623c9c42efdc1c4121af171e295444459fc4a9201101fb041b1104a3c000bccb188337 1620 | languageName: node 1621 | linkType: hard 1622 | 1623 | "import-lazy@npm:~4.0.0": 1624 | version: 4.0.0 1625 | resolution: "import-lazy@npm:4.0.0" 1626 | checksum: 10c0/a3520313e2c31f25c0b06aa66d167f329832b68a4f957d7c9daf6e0fa41822b6e84948191648b9b9d8ca82f94740cdf15eecf2401a5b42cd1c33fd84f2225cca 1627 | languageName: node 1628 | linkType: hard 1629 | 1630 | "imurmurhash@npm:^0.1.4": 1631 | version: 0.1.4 1632 | resolution: "imurmurhash@npm:0.1.4" 1633 | checksum: 10c0/8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6 1634 | languageName: node 1635 | linkType: hard 1636 | 1637 | "ip-address@npm:^9.0.5": 1638 | version: 9.0.5 1639 | resolution: "ip-address@npm:9.0.5" 1640 | dependencies: 1641 | jsbn: "npm:1.1.0" 1642 | sprintf-js: "npm:^1.1.3" 1643 | checksum: 10c0/331cd07fafcb3b24100613e4b53e1a2b4feab11e671e655d46dc09ee233da5011284d09ca40c4ecbdfe1d0004f462958675c224a804259f2f78d2465a87824bc 1644 | languageName: node 1645 | linkType: hard 1646 | 1647 | "is-core-module@npm:^2.11.0": 1648 | version: 2.11.0 1649 | resolution: "is-core-module@npm:2.11.0" 1650 | dependencies: 1651 | has: "npm:^1.0.3" 1652 | checksum: 10c0/fd8f78ef4e243c295deafa809f89381d89aff5aaf38bb63266b17ee6e34b6a051baa5bdc2365456863336d56af6a59a4c1df1256b4eff7d6b4afac618586b004 1653 | languageName: node 1654 | linkType: hard 1655 | 1656 | "is-core-module@npm:^2.16.0": 1657 | version: 2.16.1 1658 | resolution: "is-core-module@npm:2.16.1" 1659 | dependencies: 1660 | hasown: "npm:^2.0.2" 1661 | checksum: 10c0/898443c14780a577e807618aaae2b6f745c8538eca5c7bc11388a3f2dc6de82b9902bcc7eb74f07be672b11bbe82dd6a6edded44a00cb3d8f933d0459905eedd 1662 | languageName: node 1663 | linkType: hard 1664 | 1665 | "is-extglob@npm:^2.1.1": 1666 | version: 2.1.1 1667 | resolution: "is-extglob@npm:2.1.1" 1668 | checksum: 10c0/5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912 1669 | languageName: node 1670 | linkType: hard 1671 | 1672 | "is-fullwidth-code-point@npm:^3.0.0": 1673 | version: 3.0.0 1674 | resolution: "is-fullwidth-code-point@npm:3.0.0" 1675 | checksum: 10c0/bb11d825e049f38e04c06373a8d72782eee0205bda9d908cc550ccb3c59b99d750ff9537982e01733c1c94a58e35400661f57042158ff5e8f3e90cf936daf0fc 1676 | languageName: node 1677 | linkType: hard 1678 | 1679 | "is-glob@npm:^4.0.1, is-glob@npm:^4.0.3": 1680 | version: 4.0.3 1681 | resolution: "is-glob@npm:4.0.3" 1682 | dependencies: 1683 | is-extglob: "npm:^2.1.1" 1684 | checksum: 10c0/17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a 1685 | languageName: node 1686 | linkType: hard 1687 | 1688 | "is-number@npm:^7.0.0": 1689 | version: 7.0.0 1690 | resolution: "is-number@npm:7.0.0" 1691 | checksum: 10c0/b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811 1692 | languageName: node 1693 | linkType: hard 1694 | 1695 | "isexe@npm:^2.0.0": 1696 | version: 2.0.0 1697 | resolution: "isexe@npm:2.0.0" 1698 | checksum: 10c0/228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d 1699 | languageName: node 1700 | linkType: hard 1701 | 1702 | "isexe@npm:^3.1.1": 1703 | version: 3.1.1 1704 | resolution: "isexe@npm:3.1.1" 1705 | checksum: 10c0/9ec257654093443eb0a528a9c8cbba9c0ca7616ccb40abd6dde7202734d96bb86e4ac0d764f0f8cd965856aacbff2f4ce23e730dc19dfb41e3b0d865ca6fdcc7 1706 | languageName: node 1707 | linkType: hard 1708 | 1709 | "jackspeak@npm:^2.3.5": 1710 | version: 2.3.6 1711 | resolution: "jackspeak@npm:2.3.6" 1712 | dependencies: 1713 | "@isaacs/cliui": "npm:^8.0.2" 1714 | "@pkgjs/parseargs": "npm:^0.11.0" 1715 | dependenciesMeta: 1716 | "@pkgjs/parseargs": 1717 | optional: true 1718 | checksum: 10c0/f01d8f972d894cd7638bc338e9ef5ddb86f7b208ce177a36d718eac96ec86638a6efa17d0221b10073e64b45edc2ce15340db9380b1f5d5c5d000cbc517dc111 1719 | languageName: node 1720 | linkType: hard 1721 | 1722 | "jackspeak@npm:^3.1.2": 1723 | version: 3.4.3 1724 | resolution: "jackspeak@npm:3.4.3" 1725 | dependencies: 1726 | "@isaacs/cliui": "npm:^8.0.2" 1727 | "@pkgjs/parseargs": "npm:^0.11.0" 1728 | dependenciesMeta: 1729 | "@pkgjs/parseargs": 1730 | optional: true 1731 | checksum: 10c0/6acc10d139eaefdbe04d2f679e6191b3abf073f111edf10b1de5302c97ec93fffeb2fdd8681ed17f16268aa9dd4f8c588ed9d1d3bffbbfa6e8bf897cbb3149b9 1732 | languageName: node 1733 | linkType: hard 1734 | 1735 | "jju@npm:~1.4.0": 1736 | version: 1.4.0 1737 | resolution: "jju@npm:1.4.0" 1738 | checksum: 10c0/f3f444557e4364cfc06b1abf8331bf3778b26c0c8552ca54429bc0092652172fdea26cbffe33e1017b303d5aa506f7ede8571857400efe459cb7439180e2acad 1739 | languageName: node 1740 | linkType: hard 1741 | 1742 | "jsbn@npm:1.1.0": 1743 | version: 1.1.0 1744 | resolution: "jsbn@npm:1.1.0" 1745 | checksum: 10c0/4f907fb78d7b712e11dea8c165fe0921f81a657d3443dde75359ed52eb2b5d33ce6773d97985a089f09a65edd80b11cb75c767b57ba47391fee4c969f7215c96 1746 | languageName: node 1747 | linkType: hard 1748 | 1749 | "json-schema-traverse@npm:^1.0.0": 1750 | version: 1.0.0 1751 | resolution: "json-schema-traverse@npm:1.0.0" 1752 | checksum: 10c0/71e30015d7f3d6dc1c316d6298047c8ef98a06d31ad064919976583eb61e1018a60a0067338f0f79cabc00d84af3fcc489bd48ce8a46ea165d9541ba17fb30c6 1753 | languageName: node 1754 | linkType: hard 1755 | 1756 | "jsonfile@npm:^6.0.1": 1757 | version: 6.1.0 1758 | resolution: "jsonfile@npm:6.1.0" 1759 | dependencies: 1760 | graceful-fs: "npm:^4.1.6" 1761 | universalify: "npm:^2.0.0" 1762 | dependenciesMeta: 1763 | graceful-fs: 1764 | optional: true 1765 | checksum: 10c0/4f95b5e8a5622b1e9e8f33c96b7ef3158122f595998114d1e7f03985649ea99cb3cd99ce1ed1831ae94c8c8543ab45ebd044207612f31a56fd08462140e46865 1766 | languageName: node 1767 | linkType: hard 1768 | 1769 | "kolorist@npm:^1.8.0": 1770 | version: 1.8.0 1771 | resolution: "kolorist@npm:1.8.0" 1772 | checksum: 10c0/73075db44a692bf6c34a649f3b4b3aea4993b84f6b754cbf7a8577e7c7db44c0bad87752bd23b0ce533f49de2244ce2ce03b7b1b667a85ae170a94782cc50f9b 1773 | languageName: node 1774 | linkType: hard 1775 | 1776 | "linkify-it@npm:^5.0.0": 1777 | version: 5.0.0 1778 | resolution: "linkify-it@npm:5.0.0" 1779 | dependencies: 1780 | uc.micro: "npm:^2.0.0" 1781 | checksum: 10c0/ff4abbcdfa2003472fc3eb4b8e60905ec97718e11e33cca52059919a4c80cc0e0c2a14d23e23d8c00e5402bc5a885cdba8ca053a11483ab3cc8b3c7a52f88e2d 1782 | languageName: node 1783 | linkType: hard 1784 | 1785 | "local-pkg@npm:^1.0.0": 1786 | version: 1.1.0 1787 | resolution: "local-pkg@npm:1.1.0" 1788 | dependencies: 1789 | mlly: "npm:^1.7.4" 1790 | pkg-types: "npm:^1.3.1" 1791 | quansync: "npm:^0.2.1" 1792 | checksum: 10c0/0dae67e1400e2af8ee2e0c9ecb2cf4517a9f4fe67cafba2f9a706ed7a8dce9a864edc35fdfc0980a098f84954281df834b8dccaf8095ae33ac49e5c44afb72e2 1793 | languageName: node 1794 | linkType: hard 1795 | 1796 | "lodash@npm:~4.17.15": 1797 | version: 4.17.21 1798 | resolution: "lodash@npm:4.17.21" 1799 | checksum: 10c0/d8cbea072bb08655bb4c989da418994b073a608dffa608b09ac04b43a791b12aeae7cd7ad919aa4c925f33b48490b5cfe6c1f71d827956071dae2e7bb3a6b74c 1800 | languageName: node 1801 | linkType: hard 1802 | 1803 | "lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": 1804 | version: 10.4.3 1805 | resolution: "lru-cache@npm:10.4.3" 1806 | checksum: 10c0/ebd04fbca961e6c1d6c0af3799adcc966a1babe798f685bb84e6599266599cd95d94630b10262f5424539bc4640107e8a33aa28585374abf561d30d16f4b39fb 1807 | languageName: node 1808 | linkType: hard 1809 | 1810 | "lru-cache@npm:^6.0.0": 1811 | version: 6.0.0 1812 | resolution: "lru-cache@npm:6.0.0" 1813 | dependencies: 1814 | yallist: "npm:^4.0.0" 1815 | checksum: 10c0/cb53e582785c48187d7a188d3379c181b5ca2a9c78d2bce3e7dee36f32761d1c42983da3fe12b55cb74e1779fa94cdc2e5367c028a9b35317184ede0c07a30a9 1816 | languageName: node 1817 | linkType: hard 1818 | 1819 | "lru-cache@npm:^9.1.1 || ^10.0.0": 1820 | version: 10.1.0 1821 | resolution: "lru-cache@npm:10.1.0" 1822 | checksum: 10c0/778bc8b2626daccd75f24c4b4d10632496e21ba064b126f526c626fbdbc5b28c472013fccd45d7646b9e1ef052444824854aed617b59cd570d01a8b7d651fc1e 1823 | languageName: node 1824 | linkType: hard 1825 | 1826 | "lunr@npm:^2.3.9": 1827 | version: 2.3.9 1828 | resolution: "lunr@npm:2.3.9" 1829 | checksum: 10c0/77d7dbb4fbd602aac161e2b50887d8eda28c0fa3b799159cee380fbb311f1e614219126ecbbd2c3a9c685f1720a8109b3c1ca85cc893c39b6c9cc6a62a1d8a8b 1830 | languageName: node 1831 | linkType: hard 1832 | 1833 | "magic-string@npm:^0.30.17": 1834 | version: 0.30.17 1835 | resolution: "magic-string@npm:0.30.17" 1836 | dependencies: 1837 | "@jridgewell/sourcemap-codec": "npm:^1.5.0" 1838 | checksum: 10c0/16826e415d04b88378f200fe022b53e638e3838b9e496edda6c0e086d7753a44a6ed187adc72d19f3623810589bf139af1a315541cd6a26ae0771a0193eaf7b8 1839 | languageName: node 1840 | linkType: hard 1841 | 1842 | "make-fetch-happen@npm:^14.0.3": 1843 | version: 14.0.3 1844 | resolution: "make-fetch-happen@npm:14.0.3" 1845 | dependencies: 1846 | "@npmcli/agent": "npm:^3.0.0" 1847 | cacache: "npm:^19.0.1" 1848 | http-cache-semantics: "npm:^4.1.1" 1849 | minipass: "npm:^7.0.2" 1850 | minipass-fetch: "npm:^4.0.0" 1851 | minipass-flush: "npm:^1.0.5" 1852 | minipass-pipeline: "npm:^1.2.4" 1853 | negotiator: "npm:^1.0.0" 1854 | proc-log: "npm:^5.0.0" 1855 | promise-retry: "npm:^2.0.1" 1856 | ssri: "npm:^12.0.0" 1857 | checksum: 10c0/c40efb5e5296e7feb8e37155bde8eb70bc57d731b1f7d90e35a092fde403d7697c56fb49334d92d330d6f1ca29a98142036d6480a12681133a0a1453164cb2f0 1858 | languageName: node 1859 | linkType: hard 1860 | 1861 | "markdown-it@npm:^14.1.0": 1862 | version: 14.1.0 1863 | resolution: "markdown-it@npm:14.1.0" 1864 | dependencies: 1865 | argparse: "npm:^2.0.1" 1866 | entities: "npm:^4.4.0" 1867 | linkify-it: "npm:^5.0.0" 1868 | mdurl: "npm:^2.0.0" 1869 | punycode.js: "npm:^2.3.1" 1870 | uc.micro: "npm:^2.1.0" 1871 | bin: 1872 | markdown-it: bin/markdown-it.mjs 1873 | checksum: 10c0/9a6bb444181d2db7016a4173ae56a95a62c84d4cbfb6916a399b11d3e6581bf1cc2e4e1d07a2f022ae72c25f56db90fbe1e529fca16fbf9541659dc53480d4b4 1874 | languageName: node 1875 | linkType: hard 1876 | 1877 | "mdurl@npm:^2.0.0": 1878 | version: 2.0.0 1879 | resolution: "mdurl@npm:2.0.0" 1880 | checksum: 10c0/633db522272f75ce4788440669137c77540d74a83e9015666a9557a152c02e245b192edc20bc90ae953bbab727503994a53b236b4d9c99bdaee594d0e7dd2ce0 1881 | languageName: node 1882 | linkType: hard 1883 | 1884 | "merge2@npm:^1.3.0": 1885 | version: 1.4.1 1886 | resolution: "merge2@npm:1.4.1" 1887 | checksum: 10c0/254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb 1888 | languageName: node 1889 | linkType: hard 1890 | 1891 | "micromatch@npm:^4.0.8": 1892 | version: 4.0.8 1893 | resolution: "micromatch@npm:4.0.8" 1894 | dependencies: 1895 | braces: "npm:^3.0.3" 1896 | picomatch: "npm:^2.3.1" 1897 | checksum: 10c0/166fa6eb926b9553f32ef81f5f531d27b4ce7da60e5baf8c021d043b27a388fb95e46a8038d5045877881e673f8134122b59624d5cecbd16eb50a42e7a6b5ca8 1898 | languageName: node 1899 | linkType: hard 1900 | 1901 | "minimatch@npm:^9.0.1, minimatch@npm:^9.0.3": 1902 | version: 9.0.3 1903 | resolution: "minimatch@npm:9.0.3" 1904 | dependencies: 1905 | brace-expansion: "npm:^2.0.1" 1906 | checksum: 10c0/85f407dcd38ac3e180f425e86553911d101455ca3ad5544d6a7cec16286657e4f8a9aa6695803025c55e31e35a91a2252b5dc8e7d527211278b8b65b4dbd5eac 1907 | languageName: node 1908 | linkType: hard 1909 | 1910 | "minimatch@npm:^9.0.4, minimatch@npm:^9.0.5": 1911 | version: 9.0.5 1912 | resolution: "minimatch@npm:9.0.5" 1913 | dependencies: 1914 | brace-expansion: "npm:^2.0.1" 1915 | checksum: 10c0/de96cf5e35bdf0eab3e2c853522f98ffbe9a36c37797778d2665231ec1f20a9447a7e567cb640901f89e4daaa95ae5d70c65a9e8aa2bb0019b6facbc3c0575ed 1916 | languageName: node 1917 | linkType: hard 1918 | 1919 | "minimatch@npm:~3.0.3": 1920 | version: 3.0.8 1921 | resolution: "minimatch@npm:3.0.8" 1922 | dependencies: 1923 | brace-expansion: "npm:^1.1.7" 1924 | checksum: 10c0/72b226f452dcfb5075255f53534cb83fc25565b909e79b9be4fad463d735cb1084827f7013ff41d050e77ee6e474408c6073473edd2fb72c2fd630cfb0acc6ad 1925 | languageName: node 1926 | linkType: hard 1927 | 1928 | "minipass-collect@npm:^2.0.1": 1929 | version: 2.0.1 1930 | resolution: "minipass-collect@npm:2.0.1" 1931 | dependencies: 1932 | minipass: "npm:^7.0.3" 1933 | checksum: 10c0/5167e73f62bb74cc5019594709c77e6a742051a647fe9499abf03c71dca75515b7959d67a764bdc4f8b361cf897fbf25e2d9869ee039203ed45240f48b9aa06e 1934 | languageName: node 1935 | linkType: hard 1936 | 1937 | "minipass-fetch@npm:^4.0.0": 1938 | version: 4.0.1 1939 | resolution: "minipass-fetch@npm:4.0.1" 1940 | dependencies: 1941 | encoding: "npm:^0.1.13" 1942 | minipass: "npm:^7.0.3" 1943 | minipass-sized: "npm:^1.0.3" 1944 | minizlib: "npm:^3.0.1" 1945 | dependenciesMeta: 1946 | encoding: 1947 | optional: true 1948 | checksum: 10c0/a3147b2efe8e078c9bf9d024a0059339c5a09c5b1dded6900a219c218cc8b1b78510b62dae556b507304af226b18c3f1aeb1d48660283602d5b6586c399eed5c 1949 | languageName: node 1950 | linkType: hard 1951 | 1952 | "minipass-flush@npm:^1.0.5": 1953 | version: 1.0.5 1954 | resolution: "minipass-flush@npm:1.0.5" 1955 | dependencies: 1956 | minipass: "npm:^3.0.0" 1957 | checksum: 10c0/2a51b63feb799d2bb34669205eee7c0eaf9dce01883261a5b77410c9408aa447e478efd191b4de6fc1101e796ff5892f8443ef20d9544385819093dbb32d36bd 1958 | languageName: node 1959 | linkType: hard 1960 | 1961 | "minipass-pipeline@npm:^1.2.4": 1962 | version: 1.2.4 1963 | resolution: "minipass-pipeline@npm:1.2.4" 1964 | dependencies: 1965 | minipass: "npm:^3.0.0" 1966 | checksum: 10c0/cbda57cea20b140b797505dc2cac71581a70b3247b84480c1fed5ca5ba46c25ecc25f68bfc9e6dcb1a6e9017dab5c7ada5eab73ad4f0a49d84e35093e0c643f2 1967 | languageName: node 1968 | linkType: hard 1969 | 1970 | "minipass-sized@npm:^1.0.3": 1971 | version: 1.0.3 1972 | resolution: "minipass-sized@npm:1.0.3" 1973 | dependencies: 1974 | minipass: "npm:^3.0.0" 1975 | checksum: 10c0/298f124753efdc745cfe0f2bdfdd81ba25b9f4e753ca4a2066eb17c821f25d48acea607dfc997633ee5bf7b6dfffb4eee4f2051eb168663f0b99fad2fa4829cb 1976 | languageName: node 1977 | linkType: hard 1978 | 1979 | "minipass@npm:^3.0.0": 1980 | version: 3.3.6 1981 | resolution: "minipass@npm:3.3.6" 1982 | dependencies: 1983 | yallist: "npm:^4.0.0" 1984 | checksum: 10c0/a114746943afa1dbbca8249e706d1d38b85ed1298b530f5808ce51f8e9e941962e2a5ad2e00eae7dd21d8a4aae6586a66d4216d1a259385e9d0358f0c1eba16c 1985 | languageName: node 1986 | linkType: hard 1987 | 1988 | "minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0": 1989 | version: 7.0.4 1990 | resolution: "minipass@npm:7.0.4" 1991 | checksum: 10c0/6c7370a6dfd257bf18222da581ba89a5eaedca10e158781232a8b5542a90547540b4b9b7e7f490e4cda43acfbd12e086f0453728ecf8c19e0ef6921bc5958ac5 1992 | languageName: node 1993 | linkType: hard 1994 | 1995 | "minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.2": 1996 | version: 7.1.2 1997 | resolution: "minipass@npm:7.1.2" 1998 | checksum: 10c0/b0fd20bb9fb56e5fa9a8bfac539e8915ae07430a619e4b86ff71f5fc757ef3924b23b2c4230393af1eda647ed3d75739e4e0acb250a6b1eb277cf7f8fe449557 1999 | languageName: node 2000 | linkType: hard 2001 | 2002 | "minizlib@npm:^3.0.1": 2003 | version: 3.0.1 2004 | resolution: "minizlib@npm:3.0.1" 2005 | dependencies: 2006 | minipass: "npm:^7.0.4" 2007 | rimraf: "npm:^5.0.5" 2008 | checksum: 10c0/82f8bf70da8af656909a8ee299d7ed3b3372636749d29e105f97f20e88971be31f5ed7642f2e898f00283b68b701cc01307401cdc209b0efc5dd3818220e5093 2009 | languageName: node 2010 | linkType: hard 2011 | 2012 | "mkdirp@npm:^3.0.1": 2013 | version: 3.0.1 2014 | resolution: "mkdirp@npm:3.0.1" 2015 | bin: 2016 | mkdirp: dist/cjs/src/bin.js 2017 | checksum: 10c0/9f2b975e9246351f5e3a40dcfac99fcd0baa31fbfab615fe059fb11e51f10e4803c63de1f384c54d656e4db31d000e4767e9ef076a22e12a641357602e31d57d 2018 | languageName: node 2019 | linkType: hard 2020 | 2021 | "mlly@npm:^1.7.4": 2022 | version: 1.7.4 2023 | resolution: "mlly@npm:1.7.4" 2024 | dependencies: 2025 | acorn: "npm:^8.14.0" 2026 | pathe: "npm:^2.0.1" 2027 | pkg-types: "npm:^1.3.0" 2028 | ufo: "npm:^1.5.4" 2029 | checksum: 10c0/69e738218a13d6365caf930e0ab4e2b848b84eec261597df9788cefb9930f3e40667be9cb58a4718834ba5f97a6efeef31d3b5a95f4388143fd4e0d0deff72ff 2030 | languageName: node 2031 | linkType: hard 2032 | 2033 | "ms@npm:2.1.2": 2034 | version: 2.1.2 2035 | resolution: "ms@npm:2.1.2" 2036 | checksum: 10c0/a437714e2f90dbf881b5191d35a6db792efbca5badf112f87b9e1c712aace4b4b9b742dd6537f3edf90fd6f684de897cec230abde57e87883766712ddda297cc 2037 | languageName: node 2038 | linkType: hard 2039 | 2040 | "ms@npm:^2.1.3": 2041 | version: 2.1.3 2042 | resolution: "ms@npm:2.1.3" 2043 | checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 2044 | languageName: node 2045 | linkType: hard 2046 | 2047 | "muggle-string@npm:^0.4.1": 2048 | version: 0.4.1 2049 | resolution: "muggle-string@npm:0.4.1" 2050 | checksum: 10c0/e914b63e24cd23f97e18376ec47e4ba3aa24365e4776212b666add2e47bb158003212980d732c49abf3719568900af7861873844a6e2d3a7ca7e86952c0e99e9 2051 | languageName: node 2052 | linkType: hard 2053 | 2054 | "nanoid@npm:^3.3.7": 2055 | version: 3.3.7 2056 | resolution: "nanoid@npm:3.3.7" 2057 | bin: 2058 | nanoid: bin/nanoid.cjs 2059 | checksum: 10c0/e3fb661aa083454f40500473bb69eedb85dc160e763150b9a2c567c7e9ff560ce028a9f833123b618a6ea742e311138b591910e795614a629029e86e180660f3 2060 | languageName: node 2061 | linkType: hard 2062 | 2063 | "natural-compare@npm:^1.4.0": 2064 | version: 1.4.0 2065 | resolution: "natural-compare@npm:1.4.0" 2066 | checksum: 10c0/f5f9a7974bfb28a91afafa254b197f0f22c684d4a1731763dda960d2c8e375b36c7d690e0d9dc8fba774c537af14a7e979129bca23d88d052fbeb9466955e447 2067 | languageName: node 2068 | linkType: hard 2069 | 2070 | "negotiator@npm:^1.0.0": 2071 | version: 1.0.0 2072 | resolution: "negotiator@npm:1.0.0" 2073 | checksum: 10c0/4c559dd52669ea48e1914f9d634227c561221dd54734070791f999c52ed0ff36e437b2e07d5c1f6e32909fc625fe46491c16e4a8f0572567d4dd15c3a4fda04b 2074 | languageName: node 2075 | linkType: hard 2076 | 2077 | "node-gyp@npm:latest": 2078 | version: 11.1.0 2079 | resolution: "node-gyp@npm:11.1.0" 2080 | dependencies: 2081 | env-paths: "npm:^2.2.0" 2082 | exponential-backoff: "npm:^3.1.1" 2083 | glob: "npm:^10.3.10" 2084 | graceful-fs: "npm:^4.2.6" 2085 | make-fetch-happen: "npm:^14.0.3" 2086 | nopt: "npm:^8.0.0" 2087 | proc-log: "npm:^5.0.0" 2088 | semver: "npm:^7.3.5" 2089 | tar: "npm:^7.4.3" 2090 | which: "npm:^5.0.0" 2091 | bin: 2092 | node-gyp: bin/node-gyp.js 2093 | checksum: 10c0/c38977ce502f1ea41ba2b8721bd5b49bc3d5b3f813eabfac8414082faf0620ccb5211e15c4daecc23ed9f5e3e9cc4da00e575a0bcfc2a95a069294f2afa1e0cd 2094 | languageName: node 2095 | linkType: hard 2096 | 2097 | "nopt@npm:^8.0.0": 2098 | version: 8.1.0 2099 | resolution: "nopt@npm:8.1.0" 2100 | dependencies: 2101 | abbrev: "npm:^3.0.0" 2102 | bin: 2103 | nopt: bin/nopt.js 2104 | checksum: 10c0/62e9ea70c7a3eb91d162d2c706b6606c041e4e7b547cbbb48f8b3695af457dd6479904d7ace600856bf923dd8d1ed0696f06195c8c20f02ac87c1da0e1d315ef 2105 | languageName: node 2106 | linkType: hard 2107 | 2108 | "p-map@npm:^7.0.2": 2109 | version: 7.0.3 2110 | resolution: "p-map@npm:7.0.3" 2111 | checksum: 10c0/46091610da2b38ce47bcd1d8b4835a6fa4e832848a6682cf1652bc93915770f4617afc844c10a77d1b3e56d2472bb2d5622353fa3ead01a7f42b04fc8e744a5c 2112 | languageName: node 2113 | linkType: hard 2114 | 2115 | "package-json-from-dist@npm:^1.0.0": 2116 | version: 1.0.1 2117 | resolution: "package-json-from-dist@npm:1.0.1" 2118 | checksum: 10c0/62ba2785eb655fec084a257af34dbe24292ab74516d6aecef97ef72d4897310bc6898f6c85b5cd22770eaa1ce60d55a0230e150fb6a966e3ecd6c511e23d164b 2119 | languageName: node 2120 | linkType: hard 2121 | 2122 | "path-browserify@npm:^1.0.1": 2123 | version: 1.0.1 2124 | resolution: "path-browserify@npm:1.0.1" 2125 | checksum: 10c0/8b8c3fd5c66bd340272180590ae4ff139769e9ab79522e2eb82e3d571a89b8117c04147f65ad066dccfb42fcad902e5b7d794b3d35e0fd840491a8ddbedf8c66 2126 | languageName: node 2127 | linkType: hard 2128 | 2129 | "path-key@npm:^3.1.0": 2130 | version: 3.1.1 2131 | resolution: "path-key@npm:3.1.1" 2132 | checksum: 10c0/748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c 2133 | languageName: node 2134 | linkType: hard 2135 | 2136 | "path-parse@npm:^1.0.7": 2137 | version: 1.0.7 2138 | resolution: "path-parse@npm:1.0.7" 2139 | checksum: 10c0/11ce261f9d294cc7a58d6a574b7f1b935842355ec66fba3c3fd79e0f036462eaf07d0aa95bb74ff432f9afef97ce1926c720988c6a7451d8a584930ae7de86e1 2140 | languageName: node 2141 | linkType: hard 2142 | 2143 | "path-scurry@npm:^1.10.1": 2144 | version: 1.10.1 2145 | resolution: "path-scurry@npm:1.10.1" 2146 | dependencies: 2147 | lru-cache: "npm:^9.1.1 || ^10.0.0" 2148 | minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" 2149 | checksum: 10c0/e5dc78a7348d25eec61ab166317e9e9c7b46818aa2c2b9006c507a6ff48c672d011292d9662527213e558f5652ce0afcc788663a061d8b59ab495681840c0c1e 2150 | languageName: node 2151 | linkType: hard 2152 | 2153 | "path-scurry@npm:^1.11.1": 2154 | version: 1.11.1 2155 | resolution: "path-scurry@npm:1.11.1" 2156 | dependencies: 2157 | lru-cache: "npm:^10.2.0" 2158 | minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" 2159 | checksum: 10c0/32a13711a2a505616ae1cc1b5076801e453e7aae6ac40ab55b388bb91b9d0547a52f5aaceff710ea400205f18691120d4431e520afbe4266b836fadede15872d 2160 | languageName: node 2161 | linkType: hard 2162 | 2163 | "pathe@npm:^2.0.1": 2164 | version: 2.0.3 2165 | resolution: "pathe@npm:2.0.3" 2166 | checksum: 10c0/c118dc5a8b5c4166011b2b70608762e260085180bb9e33e80a50dcdb1e78c010b1624f4280c492c92b05fc276715a4c357d1f9edc570f8f1b3d90b6839ebaca1 2167 | languageName: node 2168 | linkType: hard 2169 | 2170 | "picocolors@npm:^1.1.1": 2171 | version: 1.1.1 2172 | resolution: "picocolors@npm:1.1.1" 2173 | checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58 2174 | languageName: node 2175 | linkType: hard 2176 | 2177 | "picomatch@npm:^2.3.1": 2178 | version: 2.3.1 2179 | resolution: "picomatch@npm:2.3.1" 2180 | checksum: 10c0/26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be 2181 | languageName: node 2182 | linkType: hard 2183 | 2184 | "picomatch@npm:^4.0.2": 2185 | version: 4.0.2 2186 | resolution: "picomatch@npm:4.0.2" 2187 | checksum: 10c0/7c51f3ad2bb42c776f49ebf964c644958158be30d0a510efd5a395e8d49cb5acfed5b82c0c5b365523ce18e6ab85013c9ebe574f60305892ec3fa8eee8304ccc 2188 | languageName: node 2189 | linkType: hard 2190 | 2191 | "pkg-types@npm:^1.3.0, pkg-types@npm:^1.3.1": 2192 | version: 1.3.1 2193 | resolution: "pkg-types@npm:1.3.1" 2194 | dependencies: 2195 | confbox: "npm:^0.1.8" 2196 | mlly: "npm:^1.7.4" 2197 | pathe: "npm:^2.0.1" 2198 | checksum: 10c0/19e6cb8b66dcc66c89f2344aecfa47f2431c988cfa3366bdfdcfb1dd6695f87dcce37fbd90fe9d1605e2f4440b77f391e83c23255347c35cf84e7fd774d7fcea 2199 | languageName: node 2200 | linkType: hard 2201 | 2202 | "postcss@npm:^8.4.43": 2203 | version: 8.4.49 2204 | resolution: "postcss@npm:8.4.49" 2205 | dependencies: 2206 | nanoid: "npm:^3.3.7" 2207 | picocolors: "npm:^1.1.1" 2208 | source-map-js: "npm:^1.2.1" 2209 | checksum: 10c0/f1b3f17aaf36d136f59ec373459f18129908235e65dbdc3aee5eef8eba0756106f52de5ec4682e29a2eab53eb25170e7e871b3e4b52a8f1de3d344a514306be3 2210 | languageName: node 2211 | linkType: hard 2212 | 2213 | "proc-log@npm:^5.0.0": 2214 | version: 5.0.0 2215 | resolution: "proc-log@npm:5.0.0" 2216 | checksum: 10c0/bbe5edb944b0ad63387a1d5b1911ae93e05ce8d0f60de1035b218cdcceedfe39dbd2c697853355b70f1a090f8f58fe90da487c85216bf9671f9499d1a897e9e3 2217 | languageName: node 2218 | linkType: hard 2219 | 2220 | "promise-retry@npm:^2.0.1": 2221 | version: 2.0.1 2222 | resolution: "promise-retry@npm:2.0.1" 2223 | dependencies: 2224 | err-code: "npm:^2.0.2" 2225 | retry: "npm:^0.12.0" 2226 | checksum: 10c0/9c7045a1a2928094b5b9b15336dcd2a7b1c052f674550df63cc3f36cd44028e5080448175b6f6ca32b642de81150f5e7b1a98b728f15cb069f2dd60ac2616b96 2227 | languageName: node 2228 | linkType: hard 2229 | 2230 | "punycode.js@npm:^2.3.1": 2231 | version: 2.3.1 2232 | resolution: "punycode.js@npm:2.3.1" 2233 | checksum: 10c0/1d12c1c0e06127fa5db56bd7fdf698daf9a78104456a6b67326877afc21feaa821257b171539caedd2f0524027fa38e67b13dd094159c8d70b6d26d2bea4dfdb 2234 | languageName: node 2235 | linkType: hard 2236 | 2237 | "punycode@npm:^2.1.0": 2238 | version: 2.3.0 2239 | resolution: "punycode@npm:2.3.0" 2240 | checksum: 10c0/8e6f7abdd3a6635820049e3731c623bbef3fedbf63bbc696b0d7237fdba4cefa069bc1fa62f2938b0fbae057550df7b5318f4a6bcece27f1907fc75c54160bee 2241 | languageName: node 2242 | linkType: hard 2243 | 2244 | "quansync@npm:^0.2.1": 2245 | version: 0.2.6 2246 | resolution: "quansync@npm:0.2.6" 2247 | checksum: 10c0/de27a8dfa89de92a9b9fc10c49167ada1ea8b04b0335d0921e84abec51699b36f0f06f8ee0479514d5d5f32cb14e975a54a41e5fe3c3a96e72e3ad333aa422ca 2248 | languageName: node 2249 | linkType: hard 2250 | 2251 | "queue-microtask@npm:^1.2.2": 2252 | version: 1.2.3 2253 | resolution: "queue-microtask@npm:1.2.3" 2254 | checksum: 10c0/900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102 2255 | languageName: node 2256 | linkType: hard 2257 | 2258 | "require-from-string@npm:^2.0.2": 2259 | version: 2.0.2 2260 | resolution: "require-from-string@npm:2.0.2" 2261 | checksum: 10c0/aaa267e0c5b022fc5fd4eef49d8285086b15f2a1c54b28240fdf03599cbd9c26049fee3eab894f2e1f6ca65e513b030a7c264201e3f005601e80c49fb2937ce2 2262 | languageName: node 2263 | linkType: hard 2264 | 2265 | "resolve@npm:~1.22.1": 2266 | version: 1.22.2 2267 | resolution: "resolve@npm:1.22.2" 2268 | dependencies: 2269 | is-core-module: "npm:^2.11.0" 2270 | path-parse: "npm:^1.0.7" 2271 | supports-preserve-symlinks-flag: "npm:^1.0.0" 2272 | bin: 2273 | resolve: bin/resolve 2274 | checksum: 10c0/f9f424a8117d1c68371b4fbc64e6ac045115a3beacc4bd3617b751f7624b69ad40c47dc995585c7f13d4a09723a8f167847defb7d39fad70b0d43bbba05ff851 2275 | languageName: node 2276 | linkType: hard 2277 | 2278 | "resolve@npm:~1.22.2": 2279 | version: 1.22.10 2280 | resolution: "resolve@npm:1.22.10" 2281 | dependencies: 2282 | is-core-module: "npm:^2.16.0" 2283 | path-parse: "npm:^1.0.7" 2284 | supports-preserve-symlinks-flag: "npm:^1.0.0" 2285 | bin: 2286 | resolve: bin/resolve 2287 | checksum: 10c0/8967e1f4e2cc40f79b7e080b4582b9a8c5ee36ffb46041dccb20e6461161adf69f843b43067b4a375de926a2cd669157e29a29578191def399dd5ef89a1b5203 2288 | languageName: node 2289 | linkType: hard 2290 | 2291 | "resolve@patch:resolve@npm%3A~1.22.1#optional!builtin": 2292 | version: 1.22.2 2293 | resolution: "resolve@patch:resolve@npm%3A1.22.2#optional!builtin::version=1.22.2&hash=c3c19d" 2294 | dependencies: 2295 | is-core-module: "npm:^2.11.0" 2296 | path-parse: "npm:^1.0.7" 2297 | supports-preserve-symlinks-flag: "npm:^1.0.0" 2298 | bin: 2299 | resolve: bin/resolve 2300 | checksum: 10c0/dcf068c4391941734efda06b6f778c013fd349cd4340f126de17c265a7b006c67de7e80e7aa06ecd29f3922e49f5561622b9faf98531f16aa9a896d22148c661 2301 | languageName: node 2302 | linkType: hard 2303 | 2304 | "resolve@patch:resolve@npm%3A~1.22.2#optional!builtin": 2305 | version: 1.22.10 2306 | resolution: "resolve@patch:resolve@npm%3A1.22.10#optional!builtin::version=1.22.10&hash=c3c19d" 2307 | dependencies: 2308 | is-core-module: "npm:^2.16.0" 2309 | path-parse: "npm:^1.0.7" 2310 | supports-preserve-symlinks-flag: "npm:^1.0.0" 2311 | bin: 2312 | resolve: bin/resolve 2313 | checksum: 10c0/52a4e505bbfc7925ac8f4cd91fd8c4e096b6a89728b9f46861d3b405ac9a1ccf4dcbf8befb4e89a2e11370dacd0160918163885cbc669369590f2f31f4c58939 2314 | languageName: node 2315 | linkType: hard 2316 | 2317 | "retry@npm:^0.12.0": 2318 | version: 0.12.0 2319 | resolution: "retry@npm:0.12.0" 2320 | checksum: 10c0/59933e8501727ba13ad73ef4a04d5280b3717fd650408460c987392efe9d7be2040778ed8ebe933c5cbd63da3dcc37919c141ef8af0a54a6e4fca5a2af177bfe 2321 | languageName: node 2322 | linkType: hard 2323 | 2324 | "reusify@npm:^1.0.4": 2325 | version: 1.0.4 2326 | resolution: "reusify@npm:1.0.4" 2327 | checksum: 10c0/c19ef26e4e188f408922c46f7ff480d38e8dfc55d448310dfb518736b23ed2c4f547fb64a6ed5bdba92cd7e7ddc889d36ff78f794816d5e71498d645ef476107 2328 | languageName: node 2329 | linkType: hard 2330 | 2331 | "rimraf@npm:^5.0.5": 2332 | version: 5.0.5 2333 | resolution: "rimraf@npm:5.0.5" 2334 | dependencies: 2335 | glob: "npm:^10.3.7" 2336 | bin: 2337 | rimraf: dist/esm/bin.mjs 2338 | checksum: 10c0/d50dbe724f33835decd88395b25ed35995077c60a50ae78ded06e0185418914e555817aad1b4243edbff2254548c2f6ad6f70cc850040bebb4da9e8cc016f586 2339 | languageName: node 2340 | linkType: hard 2341 | 2342 | "rollup@npm:^4.20.0": 2343 | version: 4.28.1 2344 | resolution: "rollup@npm:4.28.1" 2345 | dependencies: 2346 | "@rollup/rollup-android-arm-eabi": "npm:4.28.1" 2347 | "@rollup/rollup-android-arm64": "npm:4.28.1" 2348 | "@rollup/rollup-darwin-arm64": "npm:4.28.1" 2349 | "@rollup/rollup-darwin-x64": "npm:4.28.1" 2350 | "@rollup/rollup-freebsd-arm64": "npm:4.28.1" 2351 | "@rollup/rollup-freebsd-x64": "npm:4.28.1" 2352 | "@rollup/rollup-linux-arm-gnueabihf": "npm:4.28.1" 2353 | "@rollup/rollup-linux-arm-musleabihf": "npm:4.28.1" 2354 | "@rollup/rollup-linux-arm64-gnu": "npm:4.28.1" 2355 | "@rollup/rollup-linux-arm64-musl": "npm:4.28.1" 2356 | "@rollup/rollup-linux-loongarch64-gnu": "npm:4.28.1" 2357 | "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.28.1" 2358 | "@rollup/rollup-linux-riscv64-gnu": "npm:4.28.1" 2359 | "@rollup/rollup-linux-s390x-gnu": "npm:4.28.1" 2360 | "@rollup/rollup-linux-x64-gnu": "npm:4.28.1" 2361 | "@rollup/rollup-linux-x64-musl": "npm:4.28.1" 2362 | "@rollup/rollup-win32-arm64-msvc": "npm:4.28.1" 2363 | "@rollup/rollup-win32-ia32-msvc": "npm:4.28.1" 2364 | "@rollup/rollup-win32-x64-msvc": "npm:4.28.1" 2365 | "@types/estree": "npm:1.0.6" 2366 | fsevents: "npm:~2.3.2" 2367 | dependenciesMeta: 2368 | "@rollup/rollup-android-arm-eabi": 2369 | optional: true 2370 | "@rollup/rollup-android-arm64": 2371 | optional: true 2372 | "@rollup/rollup-darwin-arm64": 2373 | optional: true 2374 | "@rollup/rollup-darwin-x64": 2375 | optional: true 2376 | "@rollup/rollup-freebsd-arm64": 2377 | optional: true 2378 | "@rollup/rollup-freebsd-x64": 2379 | optional: true 2380 | "@rollup/rollup-linux-arm-gnueabihf": 2381 | optional: true 2382 | "@rollup/rollup-linux-arm-musleabihf": 2383 | optional: true 2384 | "@rollup/rollup-linux-arm64-gnu": 2385 | optional: true 2386 | "@rollup/rollup-linux-arm64-musl": 2387 | optional: true 2388 | "@rollup/rollup-linux-loongarch64-gnu": 2389 | optional: true 2390 | "@rollup/rollup-linux-powerpc64le-gnu": 2391 | optional: true 2392 | "@rollup/rollup-linux-riscv64-gnu": 2393 | optional: true 2394 | "@rollup/rollup-linux-s390x-gnu": 2395 | optional: true 2396 | "@rollup/rollup-linux-x64-gnu": 2397 | optional: true 2398 | "@rollup/rollup-linux-x64-musl": 2399 | optional: true 2400 | "@rollup/rollup-win32-arm64-msvc": 2401 | optional: true 2402 | "@rollup/rollup-win32-ia32-msvc": 2403 | optional: true 2404 | "@rollup/rollup-win32-x64-msvc": 2405 | optional: true 2406 | fsevents: 2407 | optional: true 2408 | bin: 2409 | rollup: dist/bin/rollup 2410 | checksum: 10c0/2d2d0433b7cb53153a04c7b406f342f31517608dc57510e49177941b9e68c30071674b83a0292ef1d87184e5f7c6d0f2945c8b3c74963074de10c75366fe2c14 2411 | languageName: node 2412 | linkType: hard 2413 | 2414 | "run-parallel@npm:^1.1.9": 2415 | version: 1.2.0 2416 | resolution: "run-parallel@npm:1.2.0" 2417 | dependencies: 2418 | queue-microtask: "npm:^1.2.2" 2419 | checksum: 10c0/200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39 2420 | languageName: node 2421 | linkType: hard 2422 | 2423 | "safer-buffer@npm:>= 2.1.2 < 3.0.0": 2424 | version: 2.1.2 2425 | resolution: "safer-buffer@npm:2.1.2" 2426 | checksum: 10c0/7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 2427 | languageName: node 2428 | linkType: hard 2429 | 2430 | "scroll-snap-slider@workspace:.": 2431 | version: 0.0.0-use.local 2432 | resolution: "scroll-snap-slider@workspace:." 2433 | dependencies: 2434 | "@types/node": "npm:^22.13.8" 2435 | "@typescript-eslint/eslint-plugin": "npm:^8.25.0" 2436 | "@typescript-eslint/parser": "npm:^8.25.0" 2437 | bash-echolorized: "npm:^1.0.1" 2438 | core-js: "npm:^3.40.0" 2439 | terser: "npm:^5.39.0" 2440 | typedoc: "npm:^0.27.9" 2441 | typescript: "npm:^5.8.2" 2442 | vite: "npm:5.4.6" 2443 | vite-plugin-dts: "npm:^4.5.1" 2444 | languageName: unknown 2445 | linkType: soft 2446 | 2447 | "semver@npm:^7.3.5, semver@npm:^7.6.0": 2448 | version: 7.7.1 2449 | resolution: "semver@npm:7.7.1" 2450 | bin: 2451 | semver: bin/semver.js 2452 | checksum: 10c0/fd603a6fb9c399c6054015433051bdbe7b99a940a8fb44b85c2b524c4004b023d7928d47cb22154f8d054ea7ee8597f586605e05b52047f048278e4ac56ae958 2453 | languageName: node 2454 | linkType: hard 2455 | 2456 | "semver@npm:~7.5.4": 2457 | version: 7.5.4 2458 | resolution: "semver@npm:7.5.4" 2459 | dependencies: 2460 | lru-cache: "npm:^6.0.0" 2461 | bin: 2462 | semver: bin/semver.js 2463 | checksum: 10c0/5160b06975a38b11c1ab55950cb5b8a23db78df88275d3d8a42ccf1f29e55112ac995b3a26a522c36e3b5f76b0445f1eef70d696b8c7862a2b4303d7b0e7609e 2464 | languageName: node 2465 | linkType: hard 2466 | 2467 | "shebang-command@npm:^2.0.0": 2468 | version: 2.0.0 2469 | resolution: "shebang-command@npm:2.0.0" 2470 | dependencies: 2471 | shebang-regex: "npm:^3.0.0" 2472 | checksum: 10c0/a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e 2473 | languageName: node 2474 | linkType: hard 2475 | 2476 | "shebang-regex@npm:^3.0.0": 2477 | version: 3.0.0 2478 | resolution: "shebang-regex@npm:3.0.0" 2479 | checksum: 10c0/1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690 2480 | languageName: node 2481 | linkType: hard 2482 | 2483 | "signal-exit@npm:^4.0.1": 2484 | version: 4.0.2 2485 | resolution: "signal-exit@npm:4.0.2" 2486 | checksum: 10c0/3c36ae214f4774b4a7cbbd2d090b2864f8da4dc3f9140ba5b76f38bea7605c7aa8042adf86e48ee8a0955108421873f9b0f20281c61b8a65da4d9c1c1de4929f 2487 | languageName: node 2488 | linkType: hard 2489 | 2490 | "smart-buffer@npm:^4.2.0": 2491 | version: 4.2.0 2492 | resolution: "smart-buffer@npm:4.2.0" 2493 | checksum: 10c0/a16775323e1404dd43fabafe7460be13a471e021637bc7889468eb45ce6a6b207261f454e4e530a19500cc962c4cc5348583520843b363f4193cee5c00e1e539 2494 | languageName: node 2495 | linkType: hard 2496 | 2497 | "socks-proxy-agent@npm:^8.0.3": 2498 | version: 8.0.5 2499 | resolution: "socks-proxy-agent@npm:8.0.5" 2500 | dependencies: 2501 | agent-base: "npm:^7.1.2" 2502 | debug: "npm:^4.3.4" 2503 | socks: "npm:^2.8.3" 2504 | checksum: 10c0/5d2c6cecba6821389aabf18728325730504bf9bb1d9e342e7987a5d13badd7a98838cc9a55b8ed3cb866ad37cc23e1086f09c4d72d93105ce9dfe76330e9d2a6 2505 | languageName: node 2506 | linkType: hard 2507 | 2508 | "socks@npm:^2.8.3": 2509 | version: 2.8.4 2510 | resolution: "socks@npm:2.8.4" 2511 | dependencies: 2512 | ip-address: "npm:^9.0.5" 2513 | smart-buffer: "npm:^4.2.0" 2514 | checksum: 10c0/00c3271e233ccf1fb83a3dd2060b94cc37817e0f797a93c560b9a7a86c4a0ec2961fb31263bdd24a3c28945e24868b5f063cd98744171d9e942c513454b50ae5 2515 | languageName: node 2516 | linkType: hard 2517 | 2518 | "source-map-js@npm:^1.2.0, source-map-js@npm:^1.2.1": 2519 | version: 1.2.1 2520 | resolution: "source-map-js@npm:1.2.1" 2521 | checksum: 10c0/7bda1fc4c197e3c6ff17de1b8b2c20e60af81b63a52cb32ec5a5d67a20a7d42651e2cb34ebe93833c5a2a084377e17455854fee3e21e7925c64a51b6a52b0faf 2522 | languageName: node 2523 | linkType: hard 2524 | 2525 | "source-map-support@npm:~0.5.20": 2526 | version: 0.5.21 2527 | resolution: "source-map-support@npm:0.5.21" 2528 | dependencies: 2529 | buffer-from: "npm:^1.0.0" 2530 | source-map: "npm:^0.6.0" 2531 | checksum: 10c0/9ee09942f415e0f721d6daad3917ec1516af746a8120bba7bb56278707a37f1eb8642bde456e98454b8a885023af81a16e646869975f06afc1a711fb90484e7d 2532 | languageName: node 2533 | linkType: hard 2534 | 2535 | "source-map@npm:^0.6.0, source-map@npm:~0.6.1": 2536 | version: 0.6.1 2537 | resolution: "source-map@npm:0.6.1" 2538 | checksum: 10c0/ab55398007c5e5532957cb0beee2368529618ac0ab372d789806f5718123cc4367d57de3904b4e6a4170eb5a0b0f41373066d02ca0735a0c4d75c7d328d3e011 2539 | languageName: node 2540 | linkType: hard 2541 | 2542 | "sprintf-js@npm:^1.1.3": 2543 | version: 1.1.3 2544 | resolution: "sprintf-js@npm:1.1.3" 2545 | checksum: 10c0/09270dc4f30d479e666aee820eacd9e464215cdff53848b443964202bf4051490538e5dd1b42e1a65cf7296916ca17640aebf63dae9812749c7542ee5f288dec 2546 | languageName: node 2547 | linkType: hard 2548 | 2549 | "sprintf-js@npm:~1.0.2": 2550 | version: 1.0.3 2551 | resolution: "sprintf-js@npm:1.0.3" 2552 | checksum: 10c0/ecadcfe4c771890140da5023d43e190b7566d9cf8b2d238600f31bec0fc653f328da4450eb04bd59a431771a8e9cc0e118f0aa3974b683a4981b4e07abc2a5bb 2553 | languageName: node 2554 | linkType: hard 2555 | 2556 | "ssri@npm:^12.0.0": 2557 | version: 12.0.0 2558 | resolution: "ssri@npm:12.0.0" 2559 | dependencies: 2560 | minipass: "npm:^7.0.3" 2561 | checksum: 10c0/caddd5f544b2006e88fa6b0124d8d7b28208b83c72d7672d5ade44d794525d23b540f3396108c4eb9280dcb7c01f0bef50682f5b4b2c34291f7c5e211fd1417d 2562 | languageName: node 2563 | linkType: hard 2564 | 2565 | "string-argv@npm:~0.3.1": 2566 | version: 0.3.1 2567 | resolution: "string-argv@npm:0.3.1" 2568 | checksum: 10c0/f59582070f0a4a2d362d8331031f313771ad2b939b223b0593d7765de2689c975e0069186cef65977a29af9deec248c7e480ea4015d153ead754aea5e4bcfe7c 2569 | languageName: node 2570 | linkType: hard 2571 | 2572 | "string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0": 2573 | version: 4.2.3 2574 | resolution: "string-width@npm:4.2.3" 2575 | dependencies: 2576 | emoji-regex: "npm:^8.0.0" 2577 | is-fullwidth-code-point: "npm:^3.0.0" 2578 | strip-ansi: "npm:^6.0.1" 2579 | checksum: 10c0/1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b 2580 | languageName: node 2581 | linkType: hard 2582 | 2583 | "string-width@npm:^5.0.1, string-width@npm:^5.1.2": 2584 | version: 5.1.2 2585 | resolution: "string-width@npm:5.1.2" 2586 | dependencies: 2587 | eastasianwidth: "npm:^0.2.0" 2588 | emoji-regex: "npm:^9.2.2" 2589 | strip-ansi: "npm:^7.0.1" 2590 | checksum: 10c0/ab9c4264443d35b8b923cbdd513a089a60de339216d3b0ed3be3ba57d6880e1a192b70ae17225f764d7adbf5994e9bb8df253a944736c15a0240eff553c678ca 2591 | languageName: node 2592 | linkType: hard 2593 | 2594 | "strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": 2595 | version: 6.0.1 2596 | resolution: "strip-ansi@npm:6.0.1" 2597 | dependencies: 2598 | ansi-regex: "npm:^5.0.1" 2599 | checksum: 10c0/1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 2600 | languageName: node 2601 | linkType: hard 2602 | 2603 | "strip-ansi@npm:^7.0.1": 2604 | version: 7.1.0 2605 | resolution: "strip-ansi@npm:7.1.0" 2606 | dependencies: 2607 | ansi-regex: "npm:^6.0.1" 2608 | checksum: 10c0/a198c3762e8832505328cbf9e8c8381de14a4fa50a4f9b2160138158ea88c0f5549fb50cb13c651c3088f47e63a108b34622ec18c0499b6c8c3a5ddf6b305ac4 2609 | languageName: node 2610 | linkType: hard 2611 | 2612 | "strip-json-comments@npm:~3.1.1": 2613 | version: 3.1.1 2614 | resolution: "strip-json-comments@npm:3.1.1" 2615 | checksum: 10c0/9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd 2616 | languageName: node 2617 | linkType: hard 2618 | 2619 | "supports-color@npm:~8.1.1": 2620 | version: 8.1.1 2621 | resolution: "supports-color@npm:8.1.1" 2622 | dependencies: 2623 | has-flag: "npm:^4.0.0" 2624 | checksum: 10c0/ea1d3c275dd604c974670f63943ed9bd83623edc102430c05adb8efc56ba492746b6e95386e7831b872ec3807fd89dd8eb43f735195f37b5ec343e4234cc7e89 2625 | languageName: node 2626 | linkType: hard 2627 | 2628 | "supports-preserve-symlinks-flag@npm:^1.0.0": 2629 | version: 1.0.0 2630 | resolution: "supports-preserve-symlinks-flag@npm:1.0.0" 2631 | checksum: 10c0/6c4032340701a9950865f7ae8ef38578d8d7053f5e10518076e6554a9381fa91bd9c6850193695c141f32b21f979c985db07265a758867bac95de05f7d8aeb39 2632 | languageName: node 2633 | linkType: hard 2634 | 2635 | "tar@npm:^7.4.3": 2636 | version: 7.4.3 2637 | resolution: "tar@npm:7.4.3" 2638 | dependencies: 2639 | "@isaacs/fs-minipass": "npm:^4.0.0" 2640 | chownr: "npm:^3.0.0" 2641 | minipass: "npm:^7.1.2" 2642 | minizlib: "npm:^3.0.1" 2643 | mkdirp: "npm:^3.0.1" 2644 | yallist: "npm:^5.0.0" 2645 | checksum: 10c0/d4679609bb2a9b48eeaf84632b6d844128d2412b95b6de07d53d8ee8baf4ca0857c9331dfa510390a0727b550fd543d4d1a10995ad86cdf078423fbb8d99831d 2646 | languageName: node 2647 | linkType: hard 2648 | 2649 | "terser@npm:^5.39.0": 2650 | version: 5.39.0 2651 | resolution: "terser@npm:5.39.0" 2652 | dependencies: 2653 | "@jridgewell/source-map": "npm:^0.3.3" 2654 | acorn: "npm:^8.8.2" 2655 | commander: "npm:^2.20.0" 2656 | source-map-support: "npm:~0.5.20" 2657 | bin: 2658 | terser: bin/terser 2659 | checksum: 10c0/83326545ea1aecd6261030568b6191ccfa4cb6aa61d9ea41746a52479f50017a78b77e4725fbbc207c5df841ffa66a773c5ac33636e95c7ab94fe7e0379ae5c7 2660 | languageName: node 2661 | linkType: hard 2662 | 2663 | "to-regex-range@npm:^5.0.1": 2664 | version: 5.0.1 2665 | resolution: "to-regex-range@npm:5.0.1" 2666 | dependencies: 2667 | is-number: "npm:^7.0.0" 2668 | checksum: 10c0/487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892 2669 | languageName: node 2670 | linkType: hard 2671 | 2672 | "ts-api-utils@npm:^2.0.1": 2673 | version: 2.0.1 2674 | resolution: "ts-api-utils@npm:2.0.1" 2675 | peerDependencies: 2676 | typescript: ">=4.8.4" 2677 | checksum: 10c0/23fd56a958b332cac00150a652e4c84730df30571bd2faa1ba6d7b511356d1a61656621492bb6c7f15dd6e18847a1408357a0e406671d358115369a17f5bfedd 2678 | languageName: node 2679 | linkType: hard 2680 | 2681 | "typedoc@npm:^0.27.9": 2682 | version: 0.27.9 2683 | resolution: "typedoc@npm:0.27.9" 2684 | dependencies: 2685 | "@gerrit0/mini-shiki": "npm:^1.24.0" 2686 | lunr: "npm:^2.3.9" 2687 | markdown-it: "npm:^14.1.0" 2688 | minimatch: "npm:^9.0.5" 2689 | yaml: "npm:^2.6.1" 2690 | peerDependencies: 2691 | typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x 2692 | bin: 2693 | typedoc: bin/typedoc 2694 | checksum: 10c0/999668d9d23e1824b762e2c411e2c0860d0ce4a2e61f23a2c31d36a1d6337a763553bc75205aee25ce34659e9315315c720694e9eccd7e7e4755873fdfec1192 2695 | languageName: node 2696 | linkType: hard 2697 | 2698 | "typescript@npm:5.7.3": 2699 | version: 5.7.3 2700 | resolution: "typescript@npm:5.7.3" 2701 | bin: 2702 | tsc: bin/tsc 2703 | tsserver: bin/tsserver 2704 | checksum: 10c0/b7580d716cf1824736cc6e628ab4cd8b51877408ba2be0869d2866da35ef8366dd6ae9eb9d0851470a39be17cbd61df1126f9e211d8799d764ea7431d5435afa 2705 | languageName: node 2706 | linkType: hard 2707 | 2708 | "typescript@npm:^5.8.2": 2709 | version: 5.8.2 2710 | resolution: "typescript@npm:5.8.2" 2711 | bin: 2712 | tsc: bin/tsc 2713 | tsserver: bin/tsserver 2714 | checksum: 10c0/5c4f6fbf1c6389b6928fe7b8fcd5dc73bb2d58cd4e3883f1d774ed5bd83b151cbac6b7ecf11723de56d4676daeba8713894b1e9af56174f2f9780ae7848ec3c6 2715 | languageName: node 2716 | linkType: hard 2717 | 2718 | "typescript@patch:typescript@npm%3A5.7.3#optional!builtin": 2719 | version: 5.7.3 2720 | resolution: "typescript@patch:typescript@npm%3A5.7.3#optional!builtin::version=5.7.3&hash=5786d5" 2721 | bin: 2722 | tsc: bin/tsc 2723 | tsserver: bin/tsserver 2724 | checksum: 10c0/6fd7e0ed3bf23a81246878c613423730c40e8bdbfec4c6e4d7bf1b847cbb39076e56ad5f50aa9d7ebd89877999abaee216002d3f2818885e41c907caaa192cc4 2725 | languageName: node 2726 | linkType: hard 2727 | 2728 | "typescript@patch:typescript@npm%3A^5.8.2#optional!builtin": 2729 | version: 5.8.2 2730 | resolution: "typescript@patch:typescript@npm%3A5.8.2#optional!builtin::version=5.8.2&hash=5786d5" 2731 | bin: 2732 | tsc: bin/tsc 2733 | tsserver: bin/tsserver 2734 | checksum: 10c0/5448a08e595cc558ab321e49d4cac64fb43d1fa106584f6ff9a8d8e592111b373a995a1d5c7f3046211c8a37201eb6d0f1566f15cdb7a62a5e3be01d087848e2 2735 | languageName: node 2736 | linkType: hard 2737 | 2738 | "uc.micro@npm:^2.0.0, uc.micro@npm:^2.1.0": 2739 | version: 2.1.0 2740 | resolution: "uc.micro@npm:2.1.0" 2741 | checksum: 10c0/8862eddb412dda76f15db8ad1c640ccc2f47cdf8252a4a30be908d535602c8d33f9855dfcccb8b8837855c1ce1eaa563f7fa7ebe3c98fd0794351aab9b9c55fa 2742 | languageName: node 2743 | linkType: hard 2744 | 2745 | "ufo@npm:^1.5.4": 2746 | version: 1.5.4 2747 | resolution: "ufo@npm:1.5.4" 2748 | checksum: 10c0/b5dc4dc435c49c9ef8890f1b280a19ee4d0954d1d6f9ab66ce62ce64dd04c7be476781531f952a07c678d51638d02ad4b98e16237be29149295b0f7c09cda765 2749 | languageName: node 2750 | linkType: hard 2751 | 2752 | "undici-types@npm:~6.20.0": 2753 | version: 6.20.0 2754 | resolution: "undici-types@npm:6.20.0" 2755 | checksum: 10c0/68e659a98898d6a836a9a59e6adf14a5d799707f5ea629433e025ac90d239f75e408e2e5ff086afc3cace26f8b26ee52155293564593fbb4a2f666af57fc59bf 2756 | languageName: node 2757 | linkType: hard 2758 | 2759 | "unique-filename@npm:^4.0.0": 2760 | version: 4.0.0 2761 | resolution: "unique-filename@npm:4.0.0" 2762 | dependencies: 2763 | unique-slug: "npm:^5.0.0" 2764 | checksum: 10c0/38ae681cceb1408ea0587b6b01e29b00eee3c84baee1e41fd5c16b9ed443b80fba90c40e0ba69627e30855570a34ba8b06702d4a35035d4b5e198bf5a64c9ddc 2765 | languageName: node 2766 | linkType: hard 2767 | 2768 | "unique-slug@npm:^5.0.0": 2769 | version: 5.0.0 2770 | resolution: "unique-slug@npm:5.0.0" 2771 | dependencies: 2772 | imurmurhash: "npm:^0.1.4" 2773 | checksum: 10c0/d324c5a44887bd7e105ce800fcf7533d43f29c48757ac410afd42975de82cc38ea2035c0483f4de82d186691bf3208ef35c644f73aa2b1b20b8e651be5afd293 2774 | languageName: node 2775 | linkType: hard 2776 | 2777 | "universalify@npm:^2.0.0": 2778 | version: 2.0.1 2779 | resolution: "universalify@npm:2.0.1" 2780 | checksum: 10c0/73e8ee3809041ca8b818efb141801a1004e3fc0002727f1531f4de613ea281b494a40909596dae4a042a4fb6cd385af5d4db2e137b1362e0e91384b828effd3a 2781 | languageName: node 2782 | linkType: hard 2783 | 2784 | "uri-js@npm:^4.2.2, uri-js@npm:^4.4.1": 2785 | version: 4.4.1 2786 | resolution: "uri-js@npm:4.4.1" 2787 | dependencies: 2788 | punycode: "npm:^2.1.0" 2789 | checksum: 10c0/4ef57b45aa820d7ac6496e9208559986c665e49447cb072744c13b66925a362d96dd5a46c4530a6b8e203e5db5fe849369444440cb22ecfc26c679359e5dfa3c 2790 | languageName: node 2791 | linkType: hard 2792 | 2793 | "vite-plugin-dts@npm:^4.5.1": 2794 | version: 4.5.1 2795 | resolution: "vite-plugin-dts@npm:4.5.1" 2796 | dependencies: 2797 | "@microsoft/api-extractor": "npm:^7.50.1" 2798 | "@rollup/pluginutils": "npm:^5.1.4" 2799 | "@volar/typescript": "npm:^2.4.11" 2800 | "@vue/language-core": "npm:2.2.4" 2801 | compare-versions: "npm:^6.1.1" 2802 | debug: "npm:^4.4.0" 2803 | kolorist: "npm:^1.8.0" 2804 | local-pkg: "npm:^1.0.0" 2805 | magic-string: "npm:^0.30.17" 2806 | peerDependencies: 2807 | typescript: "*" 2808 | vite: "*" 2809 | peerDependenciesMeta: 2810 | vite: 2811 | optional: true 2812 | checksum: 10c0/1b8f6017351d73f54c105d04018944c738a8579d92b868a8bdaab6c7a60d0d347cc0ec27dadbcb79921da5f32699c772aadc14e5348590e03fed06c1fd0cacba 2813 | languageName: node 2814 | linkType: hard 2815 | 2816 | "vite@npm:5.4.6": 2817 | version: 5.4.6 2818 | resolution: "vite@npm:5.4.6" 2819 | dependencies: 2820 | esbuild: "npm:^0.21.3" 2821 | fsevents: "npm:~2.3.3" 2822 | postcss: "npm:^8.4.43" 2823 | rollup: "npm:^4.20.0" 2824 | peerDependencies: 2825 | "@types/node": ^18.0.0 || >=20.0.0 2826 | less: "*" 2827 | lightningcss: ^1.21.0 2828 | sass: "*" 2829 | sass-embedded: "*" 2830 | stylus: "*" 2831 | sugarss: "*" 2832 | terser: ^5.4.0 2833 | dependenciesMeta: 2834 | fsevents: 2835 | optional: true 2836 | peerDependenciesMeta: 2837 | "@types/node": 2838 | optional: true 2839 | less: 2840 | optional: true 2841 | lightningcss: 2842 | optional: true 2843 | sass: 2844 | optional: true 2845 | sass-embedded: 2846 | optional: true 2847 | stylus: 2848 | optional: true 2849 | sugarss: 2850 | optional: true 2851 | terser: 2852 | optional: true 2853 | bin: 2854 | vite: bin/vite.js 2855 | checksum: 10c0/5f87be3a10e970eaf9ac52dfab39cf9fff583036685252fb64570b6d7bfa749f6d221fb78058f5ef4b5664c180d45a8e7a7ff68d7f3770e69e24c7c68b958bde 2856 | languageName: node 2857 | linkType: hard 2858 | 2859 | "vscode-uri@npm:^3.0.8": 2860 | version: 3.1.0 2861 | resolution: "vscode-uri@npm:3.1.0" 2862 | checksum: 10c0/5f6c9c10fd9b1664d71fab4e9fbbae6be93c7f75bb3a1d9d74399a88ab8649e99691223fd7cef4644376cac6e94fa2c086d802521b9a8e31c5af3e60f0f35624 2863 | languageName: node 2864 | linkType: hard 2865 | 2866 | "which@npm:^2.0.1": 2867 | version: 2.0.2 2868 | resolution: "which@npm:2.0.2" 2869 | dependencies: 2870 | isexe: "npm:^2.0.0" 2871 | bin: 2872 | node-which: ./bin/node-which 2873 | checksum: 10c0/66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f 2874 | languageName: node 2875 | linkType: hard 2876 | 2877 | "which@npm:^5.0.0": 2878 | version: 5.0.0 2879 | resolution: "which@npm:5.0.0" 2880 | dependencies: 2881 | isexe: "npm:^3.1.1" 2882 | bin: 2883 | node-which: bin/which.js 2884 | checksum: 10c0/e556e4cd8b7dbf5df52408c9a9dd5ac6518c8c5267c8953f5b0564073c66ed5bf9503b14d876d0e9c7844d4db9725fb0dcf45d6e911e17e26ab363dc3965ae7b 2885 | languageName: node 2886 | linkType: hard 2887 | 2888 | "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": 2889 | version: 7.0.0 2890 | resolution: "wrap-ansi@npm:7.0.0" 2891 | dependencies: 2892 | ansi-styles: "npm:^4.0.0" 2893 | string-width: "npm:^4.1.0" 2894 | strip-ansi: "npm:^6.0.0" 2895 | checksum: 10c0/d15fc12c11e4cbc4044a552129ebc75ee3f57aa9c1958373a4db0292d72282f54373b536103987a4a7594db1ef6a4f10acf92978f79b98c49306a4b58c77d4da 2896 | languageName: node 2897 | linkType: hard 2898 | 2899 | "wrap-ansi@npm:^8.1.0": 2900 | version: 8.1.0 2901 | resolution: "wrap-ansi@npm:8.1.0" 2902 | dependencies: 2903 | ansi-styles: "npm:^6.1.0" 2904 | string-width: "npm:^5.0.1" 2905 | strip-ansi: "npm:^7.0.1" 2906 | checksum: 10c0/138ff58a41d2f877eae87e3282c0630fc2789012fc1af4d6bd626eeb9a2f9a65ca92005e6e69a75c7b85a68479fe7443c7dbe1eb8fbaa681a4491364b7c55c60 2907 | languageName: node 2908 | linkType: hard 2909 | 2910 | "yallist@npm:^4.0.0": 2911 | version: 4.0.0 2912 | resolution: "yallist@npm:4.0.0" 2913 | checksum: 10c0/2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a 2914 | languageName: node 2915 | linkType: hard 2916 | 2917 | "yallist@npm:^5.0.0": 2918 | version: 5.0.0 2919 | resolution: "yallist@npm:5.0.0" 2920 | checksum: 10c0/a499c81ce6d4a1d260d4ea0f6d49ab4da09681e32c3f0472dee16667ed69d01dae63a3b81745a24bd78476ec4fcf856114cb4896ace738e01da34b2c42235416 2921 | languageName: node 2922 | linkType: hard 2923 | 2924 | "yaml@npm:^2.6.1": 2925 | version: 2.6.1 2926 | resolution: "yaml@npm:2.6.1" 2927 | bin: 2928 | yaml: bin.mjs 2929 | checksum: 10c0/aebf07f61c72b38c74d2b60c3a3ccf89ee4da45bcd94b2bfb7899ba07a5257625a7c9f717c65a6fc511563d48001e01deb1d9e55f0133f3e2edf86039c8c1be7 2930 | languageName: node 2931 | linkType: hard 2932 | --------------------------------------------------------------------------------