├── .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 | [](https://standardjs.com)
4 | [](https://codeclimate.com/github/barthy-koeln/scroll-snap-slider/maintainability)
5 | [](https://bundlephobia.com/result?p=scroll-snap-slider)
6 |
7 | [](https://www.npmjs.com/package/scroll-snap-slider)
8 | [](https://bundlephobia.com/result?p=scroll-snap-slider)
9 | [](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 |
21 | Dark Theme:
22 |
27 |
28 |
29 |
30 |
54 |
55 |
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 |
118 |
119 |
184 |
185 |
186 |
190 |
197 | Previous item
198 |
199 |
200 |
201 |
202 |
207 | Simple slide 1
208 | (current slide)
209 |
210 |
211 |
216 | Simple slide 2
217 |
218 |
219 |
224 | Simple slide 3
225 |
226 |
227 |
232 | Simple slide 4
233 |
234 |
235 |
240 | Simple slide 5
241 |
242 |
243 |
247 |
254 | Next item
255 |
256 |
257 |
258 |
259 |
260 |
261 |
262 |
263 |
267 | Multiple Slides Visible
268 | The arrows tell you if you can go the next/prev slide.
269 |
357 |
358 |
362 |
369 | Previous slide
370 |
371 |
372 |
373 |
374 |
378 |
385 | Next slide
386 |
387 |
388 |
389 |
390 |
391 |
392 |
396 | Responsiveness Example
397 | These arrows disappear if there's nothing to scroll.
398 |
431 |
432 |
436 |
443 | Previous slide
444 |
445 |
446 |
447 |
448 |
452 |
459 | Next slide
460 |
461 |
462 |
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 |
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 |
--------------------------------------------------------------------------------