├── .editorconfig ├── .github └── workflows │ └── pipeline.yml ├── .gitignore ├── .node-version ├── .prettierignore ├── .prettierrc.json ├── .stylelintrc.json ├── CHANGELOG.md ├── LICENSE.md ├── README.md ├── eslint.config.js ├── package-lock.json ├── package.json ├── playwright.config.ts ├── public └── index.html ├── scripts ├── build.sh ├── clean.sh ├── dev.sh ├── minify.sh ├── test-coverage.sh └── vendor.sh ├── src ├── css │ └── main.scss └── js │ └── main.ts ├── test ├── coverage.ts ├── e2e │ └── e2e.test.ts └── js │ └── main.test.ts ├── tsconfig.build.json ├── tsconfig.dev.json └── tsconfig.json /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | charset = utf-8 7 | trim_trailing_whitespace = true 8 | insert_final_newline = true 9 | end_of_line = lf 10 | max_line_length = null 11 | -------------------------------------------------------------------------------- /.github/workflows/pipeline.yml: -------------------------------------------------------------------------------- 1 | name: Pipeline 2 | 3 | on: push 4 | 5 | jobs: 6 | check: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - uses: actions/checkout@v4 10 | - uses: actions/setup-node@v4 11 | with: 12 | node-version: 22 13 | - run: npm ci 14 | - run: npm run format-check 15 | - run: npm run lint 16 | - run: npm run lint-css 17 | - run: npm run build 18 | - run: npm run dev & 19 | - run: npx playwright install --with-deps 20 | - run: npm run test-coverage 21 | env: 22 | CI: true 23 | - run: npm run test-e2e 24 | env: 25 | CI: true 26 | deploy: 27 | if: github.ref == 'refs/heads/main' 28 | needs: check 29 | permissions: 30 | pages: write 31 | id-token: write 32 | concurrency: 33 | group: pages 34 | cancel-in-progress: false 35 | environment: 36 | name: github-pages 37 | url: ${{ steps.deployment.outputs.page_url }} 38 | runs-on: ubuntu-latest 39 | steps: 40 | - uses: actions/checkout@v4 41 | - uses: actions/setup-node@v4 42 | with: 43 | node-version: 22 44 | - run: npm ci 45 | - run: npm run build 46 | - uses: actions/configure-pages@v3 47 | - uses: actions/upload-pages-artifact@v3 48 | with: 49 | path: dist 50 | - id: deployment 51 | uses: actions/deploy-pages@v4 52 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | /coverage 3 | /dist 4 | /node_modules 5 | /public/js 6 | /public/css 7 | /src/js/vendor 8 | /test-results 9 | -------------------------------------------------------------------------------- /.node-version: -------------------------------------------------------------------------------- 1 | 22 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | /build 2 | /coverage 3 | /dist 4 | /node_modules 5 | /public/js 6 | /public/css 7 | /src/js/vendor 8 | /test-results 9 | -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true 3 | } 4 | -------------------------------------------------------------------------------- /.stylelintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "stylelint-config-standard-scss", 3 | "rules": { 4 | "selector-class-pattern": "^[\\-_]?([a-z][a-z0-9]*)(-[a-z0-9]+)*$" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ## 02/2025 4 | 5 | - Add section on tests 6 | - Update pipeline 7 | - Remove unnecessary settings in `tsconfig.json` 8 | - Remove unnecessary files 9 | - Update depdencies 10 | 11 | ## 08/2024 12 | 13 | - First version 14 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Copyright 2024-2025 Morris Brodersen 2 | 3 | Permission to use, copy, modify, and/or distribute this software for any purpose 4 | with or without fee is hereby granted, provided that the above copyright notice 5 | and this permission notice appear in all copies. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 8 | REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND 9 | FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 10 | INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS 11 | OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 12 | TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF 13 | THIS SOFTWARE. 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Vanilla Prime 2 | 3 | A simpler, more sustainable way of web development. A spiritual successor to [VANILLA TODO](https://github.com/morris/vanilla-todo), further into real-world practice. 4 | 5 | No frameworks, no bundlers, no required dependencies. 6 | Just web standards, patterns, a unix-style toolset, and some elbow grease. 7 | 8 | Vanilla Prime is not meant to be _easy_. 9 | From a developer's perspective, 10 | it is certainly less ergonomic than your fully integrated framework du jour. 11 | 12 | But it can be learned, 13 | and you will acquire deep knowledge of the web platform, 14 | and your websites will be performant 15 | and lightweight 16 | and timeless 17 | and independent 18 | and hackable (in a good way), 19 | and respect your user's and the world's resources. 20 | 21 | > Vanilla Prime is the Dark Souls of web development stacks:
22 | > Difficult to get into, hard to master, but incredibly rewarding. 23 | 24 | This repository serves as a guide to Vanilla Prime, 25 | as well as boilerplate for adopting it in new projects, 26 | lest we eternally suffer from framework churn, 27 | and never shake the ghastly, over-engineered coil 28 | of contemporary web development. 29 | 30 | ## Quick Start 31 | 32 | - Install [Node.js](https://nodejs.org/) >= 20. 33 | - Open a terminal. 34 | - Run `git clone --depth=1 https://github.com/morris/vanilla-prime.git my-website`. 35 | - Run `cd my-website`. 36 | - Run `npm install`. 37 | - Run `npm run dev`. 38 | - Visit http://localhost:8080. 39 | - Work on `./src`, `./public`, and anything else really. 40 | - Run `npm run build`. 41 | - Deploy `./dist` somewhere. 42 | 43 | --- 44 | 45 | Only differentiating or novel concepts are explained in this guide. 46 | Intermediate understanding of the web platform, and a curious mind, is wanted. 47 | Inspect and experiment with the given boilerplate along the way. 48 | **Happy hacking!** 49 | 50 | ## Toolset 51 | 52 | - [Node.js](https://nodejs.org/) to run most other tools listed here. 53 | - [TypeScript](https://www.typescriptlang.org/) for JavaScript type safety and correctness. 54 | - [SCSS](https://sass-lang.com/) for CSS preprocessing. 55 | - [s4d](https://github.com/morris/s4d) as a local development server with live reload and SPA support. 56 | - [exdom](https://github.com/morris/exdom) as a supporting runtime library. 57 | - [Playwright](https://playwright.dev/) for end-to-end and unit testing. 58 | - [c8](https://github.com/bcoe/c8) for test coverage. 59 | - [terser](https://terser.org/) for JavaScript minification. 60 | - [cbst](https://github.com/morris/cbst) for cache busting. 61 | - [Prettier](https://prettier.io/) for code formatting. 62 | - [ESLint](https://eslint.org/) for JavaScript/TypeScript linting. 63 | - [Stylelint](https://stylelint.io/) for CSS linting. 64 | 65 | All of these are optional. 66 | In particular, TypeScript and SCSS are not strictly vanilla, 67 | and may be dropped for even more purity. 68 | 69 | You will need to get familiar with the terminal and shell scripting, 70 | which serves as the tooling's glue. 71 | 72 | ## Public Directory 73 | 74 | The `./public` directory is the root directory for standard static files and assets, 75 | e.g. HTML, CSS, JavaScript, images, and so on. 76 | 77 | The public directory is served during local development, 78 | and should be deployable to a static web server as-is. 79 | 80 | Some files in the public directory may be generated from source files. 81 | Further production optimizations may use the public directory as input. 82 | 83 | ## Source Directory 84 | 85 | The `./src` directory is for non-standard source files that need to be compiled (if any), 86 | e.g. TypeScript and SCSS files. 87 | 88 | The source directory has the same structure as the public directory. 89 | 90 | ## Scripts Directory 91 | 92 | The `./scripts` directory contains shell scripts for development, testing and 93 | building the project. 94 | 95 | It is recommended reading through the shell scripts 96 | (and the various config files in the project root) 97 | to understand their purpose, and to be able to adapt them as you see fit. 98 | 99 | ## Reasonable System for CSS Stylesheet Structure (rscss) 100 | 101 | Follow [rscss](https://rstacruz.github.io/rscss/) when authoring HTML and CSS. 102 | It strikes a balance between structure and flexibility and aligns 103 | well with the rest of Vanilla Prime's architecture. 104 | 105 | ## Large Module Files 106 | 107 | Write rather _large module files_, e.g. capturing a complete feature or domain. 108 | This reduces network calls and simplifies 109 | [speculative loading](https://developer.mozilla.org/en-US/docs/Web/Performance/Speculative_loading). 110 | 111 | Do not create one file per function or class or other code unit. 112 | Do not use barrel indexes. 113 | Use code folding to navigate large files. 114 | 115 | ## Mount Functions 116 | 117 | Use _mount functions_ to organize UI code, 118 | e.g. interactive components and dynamic behaviors. 119 | 120 | Mount functions accept a DOM element as their first argument. 121 | Their responsibility is to set up initial state, event listeners, and provide behavior 122 | and rendering for the target element (all of which are optional). 123 | 124 | Mount functions do not create or own their target elements. 125 | Target elements must be created before mounting. 126 | 127 | A mount function for a component will often set some rigid initial HTML 128 | and define an idempotent update function 129 | that updates the dynamic parts of the component's DOM. 130 | The update function is usually called in response to certain DOM events. 131 | 132 | Avoid manipulating the DOM directly from event handlers. 133 | 134 | Consider toggling visibility 135 | instead of constructing different DOM trees based on some state. 136 | 137 | ## Communicate via DOM Events 138 | 139 | Use [DOM events](https://developer.mozilla.org/en-US/docs/Web/Events/Creating_and_triggering_events) 140 | to communicate across the user interface. 141 | Use `CustomEvent` with `detail` to transmit data. 142 | 143 | _Data events_ flow from parent components to child components 144 | and do not bubble up. 145 | Data events are in noun-form. 146 | 147 | _Action events_ bubble up the DOM, 148 | usually resulting in some parent component state change, 149 | which is in turn propagated downwards through data events. 150 | Action events are in verb-form. 151 | 152 | ## Reconciliation 153 | 154 | _Reconciliation_ is the rendering and re-rendering of a variable number of 155 | dynamic elements in a given container. 156 | 157 | Alas, for reconciliation we have not yet discovered an efficient vanilla form. 158 | For now, use `reconcile` from [exdom](https://github.com/morris/exdom). 159 | 160 | ## Vendoring 161 | 162 | Use _vendoring_ when importing third-party libraries, 163 | i.e. copy library files into a project's source or public directory 164 | so that there's no need for bundling. 165 | 166 | To get pinned versions and type safety, install packages with `npm` first, 167 | and copy the necessary files from `./node_modules/` to `./src/js/vendor`. 168 | 169 | Then, create a `./src/js/vendor/.d.ts` file containing `export * from '';`. 170 | Automate this in `./scripts/vendor.sh`. 171 | 172 | ## Tests 173 | 174 | Use [Playwright](https://playwright.dev/) for unit and end-to-end tests. 175 | The provided test setup supports test coverage for both. 176 | 177 | - Run `npx playwright install` to install Playwright browsers (once). 178 | - Run `npm run test` for unit and E2E tests on Chromium. 179 | - Run `npm run test-coverage` for test coverage. 180 | - Run `npm run test-e2e` for E2E tests on mainstream browsers. 181 | - Run `npm run test-ui` for interactive tests via the Playwright UI. 182 | 183 | Hack on scripts and config files as needed. 184 | 185 | ## For Library Authors 186 | 187 | ### JavaScript 188 | 189 | Consider writing your entire library in one large ES module file. 190 | Otherwise, provide individual ES modules, as well as a bundled ES module. 191 | 192 | Provide TypeScript typings (`*.d.ts`) or use [JSDoc](https://jsdoc.app/) 193 | to provide typings. 194 | 195 | Avoid dependencies. If necessary, accept dependencies as function or constructor arguments. 196 | 197 | ### CSS 198 | 199 | - Find a unique prefix fitting to the library. 200 | - Prefix component and helper class names. 201 | - Do not prefix element and variant class names. 202 | - Prefix CSS variables. 203 | - Provide individual CSS files. 204 | - Provide a bundled CSS file. 205 | 206 | ## Resources 207 | 208 | - [MDN Web Docs](https://developer.mozilla.org/) for all things web platform. 209 | - [Can I use...](https://caniuse.com) for checking feature compatibility. 210 | - [rscss](https://rstacruz.github.io/rscss/) for organizing CSS (and HTML). 211 | - [VANILLA TODO](https://github.com/morris/vanilla-todo) (supporting research). 212 | 213 | ## Beyond 214 | 215 | Vanilla Prime still has some gaps and rough edges. 216 | Notable open questions include: 217 | 218 | - Can routing be done reasonably well with vanilla means? 219 | - Can vendoring be reasonably automated? 220 | - What is our stance on server-side generation? 221 | - How could environment variables be passed? 222 | 223 | The work continues... 224 | -------------------------------------------------------------------------------- /eslint.config.js: -------------------------------------------------------------------------------- 1 | // @ts-check 2 | 3 | import eslint from '@eslint/js'; 4 | import tseslint from 'typescript-eslint'; 5 | 6 | export default tseslint.config( 7 | eslint.configs.recommended, 8 | ...tseslint.configs.recommended, 9 | { 10 | ignores: [ 11 | 'build', 12 | 'coverage', 13 | 'dist', 14 | 'node_modules', 15 | 'public/js', 16 | 'src/js/vendor', 17 | ], 18 | }, 19 | ); 20 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vanilla-prime", 3 | "version": "1.0.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "vanilla-prime", 9 | "version": "1.0.0", 10 | "license": "ISC", 11 | "devDependencies": { 12 | "@eslint/js": "^9.9.0", 13 | "@playwright/test": "^1.30.0", 14 | "@types/eslint__js": "^8.42.3", 15 | "@types/node": "^22.13.4", 16 | "c8": "^10.1.2", 17 | "cbst": "^2.0.0", 18 | "eslint": "^9.9.0", 19 | "exdom": "^2.0.0", 20 | "prettier": "^3.0.2", 21 | "s4d": "^0.2.0", 22 | "sass": "^1.58.3", 23 | "stylelint": "^16.7.0", 24 | "stylelint-config-standard-scss": "^14.0.0", 25 | "terser": "^5.31.1", 26 | "typescript": "^5.0.4", 27 | "typescript-eslint": "^8.2.0" 28 | }, 29 | "engines": { 30 | "node": ">=20" 31 | } 32 | }, 33 | "node_modules/@babel/code-frame": { 34 | "version": "7.26.2", 35 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", 36 | "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", 37 | "dev": true, 38 | "license": "MIT", 39 | "dependencies": { 40 | "@babel/helper-validator-identifier": "^7.25.9", 41 | "js-tokens": "^4.0.0", 42 | "picocolors": "^1.0.0" 43 | }, 44 | "engines": { 45 | "node": ">=6.9.0" 46 | } 47 | }, 48 | "node_modules/@babel/helper-validator-identifier": { 49 | "version": "7.25.9", 50 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", 51 | "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", 52 | "dev": true, 53 | "license": "MIT", 54 | "engines": { 55 | "node": ">=6.9.0" 56 | } 57 | }, 58 | "node_modules/@bcoe/v8-coverage": { 59 | "version": "1.0.2", 60 | "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", 61 | "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", 62 | "dev": true, 63 | "license": "MIT", 64 | "engines": { 65 | "node": ">=18" 66 | } 67 | }, 68 | "node_modules/@csstools/css-parser-algorithms": { 69 | "version": "3.0.4", 70 | "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz", 71 | "integrity": "sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==", 72 | "dev": true, 73 | "funding": [ 74 | { 75 | "type": "github", 76 | "url": "https://github.com/sponsors/csstools" 77 | }, 78 | { 79 | "type": "opencollective", 80 | "url": "https://opencollective.com/csstools" 81 | } 82 | ], 83 | "license": "MIT", 84 | "engines": { 85 | "node": ">=18" 86 | }, 87 | "peerDependencies": { 88 | "@csstools/css-tokenizer": "^3.0.3" 89 | } 90 | }, 91 | "node_modules/@csstools/css-tokenizer": { 92 | "version": "3.0.3", 93 | "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz", 94 | "integrity": "sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==", 95 | "dev": true, 96 | "funding": [ 97 | { 98 | "type": "github", 99 | "url": "https://github.com/sponsors/csstools" 100 | }, 101 | { 102 | "type": "opencollective", 103 | "url": "https://opencollective.com/csstools" 104 | } 105 | ], 106 | "license": "MIT", 107 | "engines": { 108 | "node": ">=18" 109 | } 110 | }, 111 | "node_modules/@csstools/media-query-list-parser": { 112 | "version": "4.0.2", 113 | "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.2.tgz", 114 | "integrity": "sha512-EUos465uvVvMJehckATTlNqGj4UJWkTmdWuDMjqvSUkjGpmOyFZBVwb4knxCm/k2GMTXY+c/5RkdndzFYWeX5A==", 115 | "dev": true, 116 | "funding": [ 117 | { 118 | "type": "github", 119 | "url": "https://github.com/sponsors/csstools" 120 | }, 121 | { 122 | "type": "opencollective", 123 | "url": "https://opencollective.com/csstools" 124 | } 125 | ], 126 | "license": "MIT", 127 | "engines": { 128 | "node": ">=18" 129 | }, 130 | "peerDependencies": { 131 | "@csstools/css-parser-algorithms": "^3.0.4", 132 | "@csstools/css-tokenizer": "^3.0.3" 133 | } 134 | }, 135 | "node_modules/@csstools/selector-specificity": { 136 | "version": "5.0.0", 137 | "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", 138 | "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", 139 | "dev": true, 140 | "funding": [ 141 | { 142 | "type": "github", 143 | "url": "https://github.com/sponsors/csstools" 144 | }, 145 | { 146 | "type": "opencollective", 147 | "url": "https://opencollective.com/csstools" 148 | } 149 | ], 150 | "license": "MIT-0", 151 | "engines": { 152 | "node": ">=18" 153 | }, 154 | "peerDependencies": { 155 | "postcss-selector-parser": "^7.0.0" 156 | } 157 | }, 158 | "node_modules/@dual-bundle/import-meta-resolve": { 159 | "version": "4.1.0", 160 | "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", 161 | "integrity": "sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==", 162 | "dev": true, 163 | "license": "MIT", 164 | "funding": { 165 | "type": "github", 166 | "url": "https://github.com/sponsors/wooorm" 167 | } 168 | }, 169 | "node_modules/@eslint-community/eslint-utils": { 170 | "version": "4.4.1", 171 | "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", 172 | "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", 173 | "dev": true, 174 | "license": "MIT", 175 | "dependencies": { 176 | "eslint-visitor-keys": "^3.4.3" 177 | }, 178 | "engines": { 179 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 180 | }, 181 | "funding": { 182 | "url": "https://opencollective.com/eslint" 183 | }, 184 | "peerDependencies": { 185 | "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" 186 | } 187 | }, 188 | "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { 189 | "version": "3.4.3", 190 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", 191 | "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", 192 | "dev": true, 193 | "license": "Apache-2.0", 194 | "engines": { 195 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 196 | }, 197 | "funding": { 198 | "url": "https://opencollective.com/eslint" 199 | } 200 | }, 201 | "node_modules/@eslint-community/regexpp": { 202 | "version": "4.12.1", 203 | "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", 204 | "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", 205 | "dev": true, 206 | "license": "MIT", 207 | "engines": { 208 | "node": "^12.0.0 || ^14.0.0 || >=16.0.0" 209 | } 210 | }, 211 | "node_modules/@eslint/config-array": { 212 | "version": "0.19.2", 213 | "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz", 214 | "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==", 215 | "dev": true, 216 | "license": "Apache-2.0", 217 | "dependencies": { 218 | "@eslint/object-schema": "^2.1.6", 219 | "debug": "^4.3.1", 220 | "minimatch": "^3.1.2" 221 | }, 222 | "engines": { 223 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 224 | } 225 | }, 226 | "node_modules/@eslint/core": { 227 | "version": "0.11.0", 228 | "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.11.0.tgz", 229 | "integrity": "sha512-DWUB2pksgNEb6Bz2fggIy1wh6fGgZP4Xyy/Mt0QZPiloKKXerbqq9D3SBQTlCRYOrcRPu4vuz+CGjwdfqxnoWA==", 230 | "dev": true, 231 | "license": "Apache-2.0", 232 | "dependencies": { 233 | "@types/json-schema": "^7.0.15" 234 | }, 235 | "engines": { 236 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 237 | } 238 | }, 239 | "node_modules/@eslint/eslintrc": { 240 | "version": "3.2.0", 241 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", 242 | "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", 243 | "dev": true, 244 | "license": "MIT", 245 | "dependencies": { 246 | "ajv": "^6.12.4", 247 | "debug": "^4.3.2", 248 | "espree": "^10.0.1", 249 | "globals": "^14.0.0", 250 | "ignore": "^5.2.0", 251 | "import-fresh": "^3.2.1", 252 | "js-yaml": "^4.1.0", 253 | "minimatch": "^3.1.2", 254 | "strip-json-comments": "^3.1.1" 255 | }, 256 | "engines": { 257 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 258 | }, 259 | "funding": { 260 | "url": "https://opencollective.com/eslint" 261 | } 262 | }, 263 | "node_modules/@eslint/js": { 264 | "version": "9.20.0", 265 | "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.20.0.tgz", 266 | "integrity": "sha512-iZA07H9io9Wn836aVTytRaNqh00Sad+EamwOVJT12GTLw1VGMFV/4JaME+JjLtr9fiGaoWgYnS54wrfWsSs4oQ==", 267 | "dev": true, 268 | "license": "MIT", 269 | "engines": { 270 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 271 | } 272 | }, 273 | "node_modules/@eslint/object-schema": { 274 | "version": "2.1.6", 275 | "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", 276 | "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", 277 | "dev": true, 278 | "license": "Apache-2.0", 279 | "engines": { 280 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 281 | } 282 | }, 283 | "node_modules/@eslint/plugin-kit": { 284 | "version": "0.2.5", 285 | "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz", 286 | "integrity": "sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==", 287 | "dev": true, 288 | "license": "Apache-2.0", 289 | "dependencies": { 290 | "@eslint/core": "^0.10.0", 291 | "levn": "^0.4.1" 292 | }, 293 | "engines": { 294 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 295 | } 296 | }, 297 | "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { 298 | "version": "0.10.0", 299 | "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.10.0.tgz", 300 | "integrity": "sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==", 301 | "dev": true, 302 | "license": "Apache-2.0", 303 | "dependencies": { 304 | "@types/json-schema": "^7.0.15" 305 | }, 306 | "engines": { 307 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 308 | } 309 | }, 310 | "node_modules/@humanfs/core": { 311 | "version": "0.19.1", 312 | "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", 313 | "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", 314 | "dev": true, 315 | "license": "Apache-2.0", 316 | "engines": { 317 | "node": ">=18.18.0" 318 | } 319 | }, 320 | "node_modules/@humanfs/node": { 321 | "version": "0.16.6", 322 | "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", 323 | "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", 324 | "dev": true, 325 | "license": "Apache-2.0", 326 | "dependencies": { 327 | "@humanfs/core": "^0.19.1", 328 | "@humanwhocodes/retry": "^0.3.0" 329 | }, 330 | "engines": { 331 | "node": ">=18.18.0" 332 | } 333 | }, 334 | "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { 335 | "version": "0.3.1", 336 | "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", 337 | "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", 338 | "dev": true, 339 | "license": "Apache-2.0", 340 | "engines": { 341 | "node": ">=18.18" 342 | }, 343 | "funding": { 344 | "type": "github", 345 | "url": "https://github.com/sponsors/nzakas" 346 | } 347 | }, 348 | "node_modules/@humanwhocodes/module-importer": { 349 | "version": "1.0.1", 350 | "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", 351 | "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", 352 | "dev": true, 353 | "license": "Apache-2.0", 354 | "engines": { 355 | "node": ">=12.22" 356 | }, 357 | "funding": { 358 | "type": "github", 359 | "url": "https://github.com/sponsors/nzakas" 360 | } 361 | }, 362 | "node_modules/@humanwhocodes/retry": { 363 | "version": "0.4.1", 364 | "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", 365 | "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", 366 | "dev": true, 367 | "license": "Apache-2.0", 368 | "engines": { 369 | "node": ">=18.18" 370 | }, 371 | "funding": { 372 | "type": "github", 373 | "url": "https://github.com/sponsors/nzakas" 374 | } 375 | }, 376 | "node_modules/@isaacs/cliui": { 377 | "version": "8.0.2", 378 | "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", 379 | "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", 380 | "dev": true, 381 | "license": "ISC", 382 | "dependencies": { 383 | "string-width": "^5.1.2", 384 | "string-width-cjs": "npm:string-width@^4.2.0", 385 | "strip-ansi": "^7.0.1", 386 | "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", 387 | "wrap-ansi": "^8.1.0", 388 | "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" 389 | }, 390 | "engines": { 391 | "node": ">=12" 392 | } 393 | }, 394 | "node_modules/@isaacs/cliui/node_modules/ansi-regex": { 395 | "version": "6.1.0", 396 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", 397 | "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", 398 | "dev": true, 399 | "license": "MIT", 400 | "engines": { 401 | "node": ">=12" 402 | }, 403 | "funding": { 404 | "url": "https://github.com/chalk/ansi-regex?sponsor=1" 405 | } 406 | }, 407 | "node_modules/@isaacs/cliui/node_modules/emoji-regex": { 408 | "version": "9.2.2", 409 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", 410 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", 411 | "dev": true, 412 | "license": "MIT" 413 | }, 414 | "node_modules/@isaacs/cliui/node_modules/string-width": { 415 | "version": "5.1.2", 416 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", 417 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", 418 | "dev": true, 419 | "license": "MIT", 420 | "dependencies": { 421 | "eastasianwidth": "^0.2.0", 422 | "emoji-regex": "^9.2.2", 423 | "strip-ansi": "^7.0.1" 424 | }, 425 | "engines": { 426 | "node": ">=12" 427 | }, 428 | "funding": { 429 | "url": "https://github.com/sponsors/sindresorhus" 430 | } 431 | }, 432 | "node_modules/@isaacs/cliui/node_modules/strip-ansi": { 433 | "version": "7.1.0", 434 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", 435 | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", 436 | "dev": true, 437 | "license": "MIT", 438 | "dependencies": { 439 | "ansi-regex": "^6.0.1" 440 | }, 441 | "engines": { 442 | "node": ">=12" 443 | }, 444 | "funding": { 445 | "url": "https://github.com/chalk/strip-ansi?sponsor=1" 446 | } 447 | }, 448 | "node_modules/@istanbuljs/schema": { 449 | "version": "0.1.3", 450 | "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", 451 | "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", 452 | "dev": true, 453 | "license": "MIT", 454 | "engines": { 455 | "node": ">=8" 456 | } 457 | }, 458 | "node_modules/@jridgewell/gen-mapping": { 459 | "version": "0.3.8", 460 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", 461 | "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", 462 | "dev": true, 463 | "license": "MIT", 464 | "dependencies": { 465 | "@jridgewell/set-array": "^1.2.1", 466 | "@jridgewell/sourcemap-codec": "^1.4.10", 467 | "@jridgewell/trace-mapping": "^0.3.24" 468 | }, 469 | "engines": { 470 | "node": ">=6.0.0" 471 | } 472 | }, 473 | "node_modules/@jridgewell/resolve-uri": { 474 | "version": "3.1.2", 475 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", 476 | "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", 477 | "dev": true, 478 | "license": "MIT", 479 | "engines": { 480 | "node": ">=6.0.0" 481 | } 482 | }, 483 | "node_modules/@jridgewell/set-array": { 484 | "version": "1.2.1", 485 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", 486 | "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", 487 | "dev": true, 488 | "license": "MIT", 489 | "engines": { 490 | "node": ">=6.0.0" 491 | } 492 | }, 493 | "node_modules/@jridgewell/source-map": { 494 | "version": "0.3.6", 495 | "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", 496 | "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", 497 | "dev": true, 498 | "license": "MIT", 499 | "dependencies": { 500 | "@jridgewell/gen-mapping": "^0.3.5", 501 | "@jridgewell/trace-mapping": "^0.3.25" 502 | } 503 | }, 504 | "node_modules/@jridgewell/sourcemap-codec": { 505 | "version": "1.5.0", 506 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", 507 | "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", 508 | "dev": true, 509 | "license": "MIT" 510 | }, 511 | "node_modules/@jridgewell/trace-mapping": { 512 | "version": "0.3.25", 513 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", 514 | "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", 515 | "dev": true, 516 | "license": "MIT", 517 | "dependencies": { 518 | "@jridgewell/resolve-uri": "^3.1.0", 519 | "@jridgewell/sourcemap-codec": "^1.4.14" 520 | } 521 | }, 522 | "node_modules/@keyv/serialize": { 523 | "version": "1.0.2", 524 | "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.0.2.tgz", 525 | "integrity": "sha512-+E/LyaAeuABniD/RvUezWVXKpeuvwLEA9//nE9952zBaOdBd2mQ3pPoM8cUe2X6IcMByfuSLzmYqnYshG60+HQ==", 526 | "dev": true, 527 | "license": "MIT", 528 | "dependencies": { 529 | "buffer": "^6.0.3" 530 | } 531 | }, 532 | "node_modules/@nodelib/fs.scandir": { 533 | "version": "2.1.5", 534 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 535 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 536 | "dev": true, 537 | "license": "MIT", 538 | "dependencies": { 539 | "@nodelib/fs.stat": "2.0.5", 540 | "run-parallel": "^1.1.9" 541 | }, 542 | "engines": { 543 | "node": ">= 8" 544 | } 545 | }, 546 | "node_modules/@nodelib/fs.stat": { 547 | "version": "2.0.5", 548 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 549 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 550 | "dev": true, 551 | "license": "MIT", 552 | "engines": { 553 | "node": ">= 8" 554 | } 555 | }, 556 | "node_modules/@nodelib/fs.walk": { 557 | "version": "1.2.8", 558 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 559 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 560 | "dev": true, 561 | "license": "MIT", 562 | "dependencies": { 563 | "@nodelib/fs.scandir": "2.1.5", 564 | "fastq": "^1.6.0" 565 | }, 566 | "engines": { 567 | "node": ">= 8" 568 | } 569 | }, 570 | "node_modules/@parcel/watcher": { 571 | "version": "2.5.1", 572 | "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", 573 | "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", 574 | "dev": true, 575 | "hasInstallScript": true, 576 | "license": "MIT", 577 | "optional": true, 578 | "dependencies": { 579 | "detect-libc": "^1.0.3", 580 | "is-glob": "^4.0.3", 581 | "micromatch": "^4.0.5", 582 | "node-addon-api": "^7.0.0" 583 | }, 584 | "engines": { 585 | "node": ">= 10.0.0" 586 | }, 587 | "funding": { 588 | "type": "opencollective", 589 | "url": "https://opencollective.com/parcel" 590 | }, 591 | "optionalDependencies": { 592 | "@parcel/watcher-android-arm64": "2.5.1", 593 | "@parcel/watcher-darwin-arm64": "2.5.1", 594 | "@parcel/watcher-darwin-x64": "2.5.1", 595 | "@parcel/watcher-freebsd-x64": "2.5.1", 596 | "@parcel/watcher-linux-arm-glibc": "2.5.1", 597 | "@parcel/watcher-linux-arm-musl": "2.5.1", 598 | "@parcel/watcher-linux-arm64-glibc": "2.5.1", 599 | "@parcel/watcher-linux-arm64-musl": "2.5.1", 600 | "@parcel/watcher-linux-x64-glibc": "2.5.1", 601 | "@parcel/watcher-linux-x64-musl": "2.5.1", 602 | "@parcel/watcher-win32-arm64": "2.5.1", 603 | "@parcel/watcher-win32-ia32": "2.5.1", 604 | "@parcel/watcher-win32-x64": "2.5.1" 605 | } 606 | }, 607 | "node_modules/@parcel/watcher-android-arm64": { 608 | "version": "2.5.1", 609 | "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", 610 | "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", 611 | "cpu": [ 612 | "arm64" 613 | ], 614 | "dev": true, 615 | "license": "MIT", 616 | "optional": true, 617 | "os": [ 618 | "android" 619 | ], 620 | "engines": { 621 | "node": ">= 10.0.0" 622 | }, 623 | "funding": { 624 | "type": "opencollective", 625 | "url": "https://opencollective.com/parcel" 626 | } 627 | }, 628 | "node_modules/@parcel/watcher-darwin-arm64": { 629 | "version": "2.5.1", 630 | "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", 631 | "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", 632 | "cpu": [ 633 | "arm64" 634 | ], 635 | "dev": true, 636 | "license": "MIT", 637 | "optional": true, 638 | "os": [ 639 | "darwin" 640 | ], 641 | "engines": { 642 | "node": ">= 10.0.0" 643 | }, 644 | "funding": { 645 | "type": "opencollective", 646 | "url": "https://opencollective.com/parcel" 647 | } 648 | }, 649 | "node_modules/@parcel/watcher-darwin-x64": { 650 | "version": "2.5.1", 651 | "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", 652 | "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", 653 | "cpu": [ 654 | "x64" 655 | ], 656 | "dev": true, 657 | "license": "MIT", 658 | "optional": true, 659 | "os": [ 660 | "darwin" 661 | ], 662 | "engines": { 663 | "node": ">= 10.0.0" 664 | }, 665 | "funding": { 666 | "type": "opencollective", 667 | "url": "https://opencollective.com/parcel" 668 | } 669 | }, 670 | "node_modules/@parcel/watcher-freebsd-x64": { 671 | "version": "2.5.1", 672 | "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", 673 | "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", 674 | "cpu": [ 675 | "x64" 676 | ], 677 | "dev": true, 678 | "license": "MIT", 679 | "optional": true, 680 | "os": [ 681 | "freebsd" 682 | ], 683 | "engines": { 684 | "node": ">= 10.0.0" 685 | }, 686 | "funding": { 687 | "type": "opencollective", 688 | "url": "https://opencollective.com/parcel" 689 | } 690 | }, 691 | "node_modules/@parcel/watcher-linux-arm-glibc": { 692 | "version": "2.5.1", 693 | "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", 694 | "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", 695 | "cpu": [ 696 | "arm" 697 | ], 698 | "dev": true, 699 | "license": "MIT", 700 | "optional": true, 701 | "os": [ 702 | "linux" 703 | ], 704 | "engines": { 705 | "node": ">= 10.0.0" 706 | }, 707 | "funding": { 708 | "type": "opencollective", 709 | "url": "https://opencollective.com/parcel" 710 | } 711 | }, 712 | "node_modules/@parcel/watcher-linux-arm-musl": { 713 | "version": "2.5.1", 714 | "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", 715 | "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", 716 | "cpu": [ 717 | "arm" 718 | ], 719 | "dev": true, 720 | "license": "MIT", 721 | "optional": true, 722 | "os": [ 723 | "linux" 724 | ], 725 | "engines": { 726 | "node": ">= 10.0.0" 727 | }, 728 | "funding": { 729 | "type": "opencollective", 730 | "url": "https://opencollective.com/parcel" 731 | } 732 | }, 733 | "node_modules/@parcel/watcher-linux-arm64-glibc": { 734 | "version": "2.5.1", 735 | "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", 736 | "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", 737 | "cpu": [ 738 | "arm64" 739 | ], 740 | "dev": true, 741 | "license": "MIT", 742 | "optional": true, 743 | "os": [ 744 | "linux" 745 | ], 746 | "engines": { 747 | "node": ">= 10.0.0" 748 | }, 749 | "funding": { 750 | "type": "opencollective", 751 | "url": "https://opencollective.com/parcel" 752 | } 753 | }, 754 | "node_modules/@parcel/watcher-linux-arm64-musl": { 755 | "version": "2.5.1", 756 | "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", 757 | "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", 758 | "cpu": [ 759 | "arm64" 760 | ], 761 | "dev": true, 762 | "license": "MIT", 763 | "optional": true, 764 | "os": [ 765 | "linux" 766 | ], 767 | "engines": { 768 | "node": ">= 10.0.0" 769 | }, 770 | "funding": { 771 | "type": "opencollective", 772 | "url": "https://opencollective.com/parcel" 773 | } 774 | }, 775 | "node_modules/@parcel/watcher-linux-x64-glibc": { 776 | "version": "2.5.1", 777 | "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", 778 | "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", 779 | "cpu": [ 780 | "x64" 781 | ], 782 | "dev": true, 783 | "license": "MIT", 784 | "optional": true, 785 | "os": [ 786 | "linux" 787 | ], 788 | "engines": { 789 | "node": ">= 10.0.0" 790 | }, 791 | "funding": { 792 | "type": "opencollective", 793 | "url": "https://opencollective.com/parcel" 794 | } 795 | }, 796 | "node_modules/@parcel/watcher-linux-x64-musl": { 797 | "version": "2.5.1", 798 | "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", 799 | "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", 800 | "cpu": [ 801 | "x64" 802 | ], 803 | "dev": true, 804 | "license": "MIT", 805 | "optional": true, 806 | "os": [ 807 | "linux" 808 | ], 809 | "engines": { 810 | "node": ">= 10.0.0" 811 | }, 812 | "funding": { 813 | "type": "opencollective", 814 | "url": "https://opencollective.com/parcel" 815 | } 816 | }, 817 | "node_modules/@parcel/watcher-win32-arm64": { 818 | "version": "2.5.1", 819 | "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", 820 | "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", 821 | "cpu": [ 822 | "arm64" 823 | ], 824 | "dev": true, 825 | "license": "MIT", 826 | "optional": true, 827 | "os": [ 828 | "win32" 829 | ], 830 | "engines": { 831 | "node": ">= 10.0.0" 832 | }, 833 | "funding": { 834 | "type": "opencollective", 835 | "url": "https://opencollective.com/parcel" 836 | } 837 | }, 838 | "node_modules/@parcel/watcher-win32-ia32": { 839 | "version": "2.5.1", 840 | "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", 841 | "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", 842 | "cpu": [ 843 | "ia32" 844 | ], 845 | "dev": true, 846 | "license": "MIT", 847 | "optional": true, 848 | "os": [ 849 | "win32" 850 | ], 851 | "engines": { 852 | "node": ">= 10.0.0" 853 | }, 854 | "funding": { 855 | "type": "opencollective", 856 | "url": "https://opencollective.com/parcel" 857 | } 858 | }, 859 | "node_modules/@parcel/watcher-win32-x64": { 860 | "version": "2.5.1", 861 | "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", 862 | "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", 863 | "cpu": [ 864 | "x64" 865 | ], 866 | "dev": true, 867 | "license": "MIT", 868 | "optional": true, 869 | "os": [ 870 | "win32" 871 | ], 872 | "engines": { 873 | "node": ">= 10.0.0" 874 | }, 875 | "funding": { 876 | "type": "opencollective", 877 | "url": "https://opencollective.com/parcel" 878 | } 879 | }, 880 | "node_modules/@pkgjs/parseargs": { 881 | "version": "0.11.0", 882 | "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", 883 | "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", 884 | "dev": true, 885 | "license": "MIT", 886 | "optional": true, 887 | "engines": { 888 | "node": ">=14" 889 | } 890 | }, 891 | "node_modules/@playwright/test": { 892 | "version": "1.50.1", 893 | "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.50.1.tgz", 894 | "integrity": "sha512-Jii3aBg+CEDpgnuDxEp/h7BimHcUTDlpEtce89xEumlJ5ef2hqepZ+PWp1DDpYC/VO9fmWVI1IlEaoI5fK9FXQ==", 895 | "dev": true, 896 | "license": "Apache-2.0", 897 | "dependencies": { 898 | "playwright": "1.50.1" 899 | }, 900 | "bin": { 901 | "playwright": "cli.js" 902 | }, 903 | "engines": { 904 | "node": ">=18" 905 | } 906 | }, 907 | "node_modules/@types/eslint": { 908 | "version": "9.6.1", 909 | "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", 910 | "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", 911 | "dev": true, 912 | "license": "MIT", 913 | "dependencies": { 914 | "@types/estree": "*", 915 | "@types/json-schema": "*" 916 | } 917 | }, 918 | "node_modules/@types/eslint__js": { 919 | "version": "8.42.3", 920 | "resolved": "https://registry.npmjs.org/@types/eslint__js/-/eslint__js-8.42.3.tgz", 921 | "integrity": "sha512-alfG737uhmPdnvkrLdZLcEKJ/B8s9Y4hrZ+YAdzUeoArBlSUERA2E87ROfOaS4jd/C45fzOoZzidLc1IPwLqOw==", 922 | "dev": true, 923 | "license": "MIT", 924 | "dependencies": { 925 | "@types/eslint": "*" 926 | } 927 | }, 928 | "node_modules/@types/estree": { 929 | "version": "1.0.6", 930 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", 931 | "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", 932 | "dev": true, 933 | "license": "MIT" 934 | }, 935 | "node_modules/@types/istanbul-lib-coverage": { 936 | "version": "2.0.6", 937 | "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", 938 | "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", 939 | "dev": true, 940 | "license": "MIT" 941 | }, 942 | "node_modules/@types/json-schema": { 943 | "version": "7.0.15", 944 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", 945 | "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", 946 | "dev": true, 947 | "license": "MIT" 948 | }, 949 | "node_modules/@types/node": { 950 | "version": "22.13.4", 951 | "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.4.tgz", 952 | "integrity": "sha512-ywP2X0DYtX3y08eFVx5fNIw7/uIv8hYUKgXoK8oayJlLnKcRfEYCxWMVE1XagUdVtCJlZT1AU4LXEABW+L1Peg==", 953 | "dev": true, 954 | "license": "MIT", 955 | "dependencies": { 956 | "undici-types": "~6.20.0" 957 | } 958 | }, 959 | "node_modules/@typescript-eslint/eslint-plugin": { 960 | "version": "8.24.0", 961 | "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.24.0.tgz", 962 | "integrity": "sha512-aFcXEJJCI4gUdXgoo/j9udUYIHgF23MFkg09LFz2dzEmU0+1Plk4rQWv/IYKvPHAtlkkGoB3m5e6oUp+JPsNaQ==", 963 | "dev": true, 964 | "license": "MIT", 965 | "dependencies": { 966 | "@eslint-community/regexpp": "^4.10.0", 967 | "@typescript-eslint/scope-manager": "8.24.0", 968 | "@typescript-eslint/type-utils": "8.24.0", 969 | "@typescript-eslint/utils": "8.24.0", 970 | "@typescript-eslint/visitor-keys": "8.24.0", 971 | "graphemer": "^1.4.0", 972 | "ignore": "^5.3.1", 973 | "natural-compare": "^1.4.0", 974 | "ts-api-utils": "^2.0.1" 975 | }, 976 | "engines": { 977 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 978 | }, 979 | "funding": { 980 | "type": "opencollective", 981 | "url": "https://opencollective.com/typescript-eslint" 982 | }, 983 | "peerDependencies": { 984 | "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", 985 | "eslint": "^8.57.0 || ^9.0.0", 986 | "typescript": ">=4.8.4 <5.8.0" 987 | } 988 | }, 989 | "node_modules/@typescript-eslint/parser": { 990 | "version": "8.24.0", 991 | "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.24.0.tgz", 992 | "integrity": "sha512-MFDaO9CYiard9j9VepMNa9MTcqVvSny2N4hkY6roquzj8pdCBRENhErrteaQuu7Yjn1ppk0v1/ZF9CG3KIlrTA==", 993 | "dev": true, 994 | "license": "MIT", 995 | "dependencies": { 996 | "@typescript-eslint/scope-manager": "8.24.0", 997 | "@typescript-eslint/types": "8.24.0", 998 | "@typescript-eslint/typescript-estree": "8.24.0", 999 | "@typescript-eslint/visitor-keys": "8.24.0", 1000 | "debug": "^4.3.4" 1001 | }, 1002 | "engines": { 1003 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1004 | }, 1005 | "funding": { 1006 | "type": "opencollective", 1007 | "url": "https://opencollective.com/typescript-eslint" 1008 | }, 1009 | "peerDependencies": { 1010 | "eslint": "^8.57.0 || ^9.0.0", 1011 | "typescript": ">=4.8.4 <5.8.0" 1012 | } 1013 | }, 1014 | "node_modules/@typescript-eslint/scope-manager": { 1015 | "version": "8.24.0", 1016 | "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.24.0.tgz", 1017 | "integrity": "sha512-HZIX0UByphEtdVBKaQBgTDdn9z16l4aTUz8e8zPQnyxwHBtf5vtl1L+OhH+m1FGV9DrRmoDuYKqzVrvWDcDozw==", 1018 | "dev": true, 1019 | "license": "MIT", 1020 | "dependencies": { 1021 | "@typescript-eslint/types": "8.24.0", 1022 | "@typescript-eslint/visitor-keys": "8.24.0" 1023 | }, 1024 | "engines": { 1025 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1026 | }, 1027 | "funding": { 1028 | "type": "opencollective", 1029 | "url": "https://opencollective.com/typescript-eslint" 1030 | } 1031 | }, 1032 | "node_modules/@typescript-eslint/type-utils": { 1033 | "version": "8.24.0", 1034 | "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.24.0.tgz", 1035 | "integrity": "sha512-8fitJudrnY8aq0F1wMiPM1UUgiXQRJ5i8tFjq9kGfRajU+dbPyOuHbl0qRopLEidy0MwqgTHDt6CnSeXanNIwA==", 1036 | "dev": true, 1037 | "license": "MIT", 1038 | "dependencies": { 1039 | "@typescript-eslint/typescript-estree": "8.24.0", 1040 | "@typescript-eslint/utils": "8.24.0", 1041 | "debug": "^4.3.4", 1042 | "ts-api-utils": "^2.0.1" 1043 | }, 1044 | "engines": { 1045 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1046 | }, 1047 | "funding": { 1048 | "type": "opencollective", 1049 | "url": "https://opencollective.com/typescript-eslint" 1050 | }, 1051 | "peerDependencies": { 1052 | "eslint": "^8.57.0 || ^9.0.0", 1053 | "typescript": ">=4.8.4 <5.8.0" 1054 | } 1055 | }, 1056 | "node_modules/@typescript-eslint/types": { 1057 | "version": "8.24.0", 1058 | "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.24.0.tgz", 1059 | "integrity": "sha512-VacJCBTyje7HGAw7xp11q439A+zeGG0p0/p2zsZwpnMzjPB5WteaWqt4g2iysgGFafrqvyLWqq6ZPZAOCoefCw==", 1060 | "dev": true, 1061 | "license": "MIT", 1062 | "engines": { 1063 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1064 | }, 1065 | "funding": { 1066 | "type": "opencollective", 1067 | "url": "https://opencollective.com/typescript-eslint" 1068 | } 1069 | }, 1070 | "node_modules/@typescript-eslint/typescript-estree": { 1071 | "version": "8.24.0", 1072 | "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.24.0.tgz", 1073 | "integrity": "sha512-ITjYcP0+8kbsvT9bysygfIfb+hBj6koDsu37JZG7xrCiy3fPJyNmfVtaGsgTUSEuTzcvME5YI5uyL5LD1EV5ZQ==", 1074 | "dev": true, 1075 | "license": "MIT", 1076 | "dependencies": { 1077 | "@typescript-eslint/types": "8.24.0", 1078 | "@typescript-eslint/visitor-keys": "8.24.0", 1079 | "debug": "^4.3.4", 1080 | "fast-glob": "^3.3.2", 1081 | "is-glob": "^4.0.3", 1082 | "minimatch": "^9.0.4", 1083 | "semver": "^7.6.0", 1084 | "ts-api-utils": "^2.0.1" 1085 | }, 1086 | "engines": { 1087 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1088 | }, 1089 | "funding": { 1090 | "type": "opencollective", 1091 | "url": "https://opencollective.com/typescript-eslint" 1092 | }, 1093 | "peerDependencies": { 1094 | "typescript": ">=4.8.4 <5.8.0" 1095 | } 1096 | }, 1097 | "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { 1098 | "version": "2.0.1", 1099 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 1100 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 1101 | "dev": true, 1102 | "license": "MIT", 1103 | "dependencies": { 1104 | "balanced-match": "^1.0.0" 1105 | } 1106 | }, 1107 | "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { 1108 | "version": "9.0.5", 1109 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", 1110 | "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", 1111 | "dev": true, 1112 | "license": "ISC", 1113 | "dependencies": { 1114 | "brace-expansion": "^2.0.1" 1115 | }, 1116 | "engines": { 1117 | "node": ">=16 || 14 >=14.17" 1118 | }, 1119 | "funding": { 1120 | "url": "https://github.com/sponsors/isaacs" 1121 | } 1122 | }, 1123 | "node_modules/@typescript-eslint/utils": { 1124 | "version": "8.24.0", 1125 | "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.24.0.tgz", 1126 | "integrity": "sha512-07rLuUBElvvEb1ICnafYWr4hk8/U7X9RDCOqd9JcAMtjh/9oRmcfN4yGzbPVirgMR0+HLVHehmu19CWeh7fsmQ==", 1127 | "dev": true, 1128 | "license": "MIT", 1129 | "dependencies": { 1130 | "@eslint-community/eslint-utils": "^4.4.0", 1131 | "@typescript-eslint/scope-manager": "8.24.0", 1132 | "@typescript-eslint/types": "8.24.0", 1133 | "@typescript-eslint/typescript-estree": "8.24.0" 1134 | }, 1135 | "engines": { 1136 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1137 | }, 1138 | "funding": { 1139 | "type": "opencollective", 1140 | "url": "https://opencollective.com/typescript-eslint" 1141 | }, 1142 | "peerDependencies": { 1143 | "eslint": "^8.57.0 || ^9.0.0", 1144 | "typescript": ">=4.8.4 <5.8.0" 1145 | } 1146 | }, 1147 | "node_modules/@typescript-eslint/visitor-keys": { 1148 | "version": "8.24.0", 1149 | "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.24.0.tgz", 1150 | "integrity": "sha512-kArLq83QxGLbuHrTMoOEWO+l2MwsNS2TGISEdx8xgqpkbytB07XmlQyQdNDrCc1ecSqx0cnmhGvpX+VBwqqSkg==", 1151 | "dev": true, 1152 | "license": "MIT", 1153 | "dependencies": { 1154 | "@typescript-eslint/types": "8.24.0", 1155 | "eslint-visitor-keys": "^4.2.0" 1156 | }, 1157 | "engines": { 1158 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1159 | }, 1160 | "funding": { 1161 | "type": "opencollective", 1162 | "url": "https://opencollective.com/typescript-eslint" 1163 | } 1164 | }, 1165 | "node_modules/acorn": { 1166 | "version": "8.14.0", 1167 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", 1168 | "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", 1169 | "dev": true, 1170 | "license": "MIT", 1171 | "bin": { 1172 | "acorn": "bin/acorn" 1173 | }, 1174 | "engines": { 1175 | "node": ">=0.4.0" 1176 | } 1177 | }, 1178 | "node_modules/acorn-jsx": { 1179 | "version": "5.3.2", 1180 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 1181 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 1182 | "dev": true, 1183 | "license": "MIT", 1184 | "peerDependencies": { 1185 | "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" 1186 | } 1187 | }, 1188 | "node_modules/ajv": { 1189 | "version": "6.12.6", 1190 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 1191 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 1192 | "dev": true, 1193 | "license": "MIT", 1194 | "dependencies": { 1195 | "fast-deep-equal": "^3.1.1", 1196 | "fast-json-stable-stringify": "^2.0.0", 1197 | "json-schema-traverse": "^0.4.1", 1198 | "uri-js": "^4.2.2" 1199 | }, 1200 | "funding": { 1201 | "type": "github", 1202 | "url": "https://github.com/sponsors/epoberezkin" 1203 | } 1204 | }, 1205 | "node_modules/ansi-regex": { 1206 | "version": "5.0.1", 1207 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 1208 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 1209 | "dev": true, 1210 | "license": "MIT", 1211 | "engines": { 1212 | "node": ">=8" 1213 | } 1214 | }, 1215 | "node_modules/ansi-styles": { 1216 | "version": "4.3.0", 1217 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1218 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1219 | "dev": true, 1220 | "license": "MIT", 1221 | "dependencies": { 1222 | "color-convert": "^2.0.1" 1223 | }, 1224 | "engines": { 1225 | "node": ">=8" 1226 | }, 1227 | "funding": { 1228 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 1229 | } 1230 | }, 1231 | "node_modules/argparse": { 1232 | "version": "2.0.1", 1233 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 1234 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 1235 | "dev": true, 1236 | "license": "Python-2.0" 1237 | }, 1238 | "node_modules/array-union": { 1239 | "version": "2.1.0", 1240 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", 1241 | "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", 1242 | "dev": true, 1243 | "license": "MIT", 1244 | "engines": { 1245 | "node": ">=8" 1246 | } 1247 | }, 1248 | "node_modules/astral-regex": { 1249 | "version": "2.0.0", 1250 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", 1251 | "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", 1252 | "dev": true, 1253 | "license": "MIT", 1254 | "engines": { 1255 | "node": ">=8" 1256 | } 1257 | }, 1258 | "node_modules/balanced-match": { 1259 | "version": "1.0.2", 1260 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 1261 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 1262 | "dev": true, 1263 | "license": "MIT" 1264 | }, 1265 | "node_modules/base64-js": { 1266 | "version": "1.5.1", 1267 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 1268 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 1269 | "dev": true, 1270 | "funding": [ 1271 | { 1272 | "type": "github", 1273 | "url": "https://github.com/sponsors/feross" 1274 | }, 1275 | { 1276 | "type": "patreon", 1277 | "url": "https://www.patreon.com/feross" 1278 | }, 1279 | { 1280 | "type": "consulting", 1281 | "url": "https://feross.org/support" 1282 | } 1283 | ], 1284 | "license": "MIT" 1285 | }, 1286 | "node_modules/brace-expansion": { 1287 | "version": "1.1.11", 1288 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1289 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1290 | "dev": true, 1291 | "license": "MIT", 1292 | "dependencies": { 1293 | "balanced-match": "^1.0.0", 1294 | "concat-map": "0.0.1" 1295 | } 1296 | }, 1297 | "node_modules/braces": { 1298 | "version": "3.0.3", 1299 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 1300 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 1301 | "dev": true, 1302 | "license": "MIT", 1303 | "dependencies": { 1304 | "fill-range": "^7.1.1" 1305 | }, 1306 | "engines": { 1307 | "node": ">=8" 1308 | } 1309 | }, 1310 | "node_modules/buffer": { 1311 | "version": "6.0.3", 1312 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", 1313 | "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", 1314 | "dev": true, 1315 | "funding": [ 1316 | { 1317 | "type": "github", 1318 | "url": "https://github.com/sponsors/feross" 1319 | }, 1320 | { 1321 | "type": "patreon", 1322 | "url": "https://www.patreon.com/feross" 1323 | }, 1324 | { 1325 | "type": "consulting", 1326 | "url": "https://feross.org/support" 1327 | } 1328 | ], 1329 | "license": "MIT", 1330 | "dependencies": { 1331 | "base64-js": "^1.3.1", 1332 | "ieee754": "^1.2.1" 1333 | } 1334 | }, 1335 | "node_modules/buffer-from": { 1336 | "version": "1.1.2", 1337 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", 1338 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", 1339 | "dev": true, 1340 | "license": "MIT" 1341 | }, 1342 | "node_modules/c8": { 1343 | "version": "10.1.3", 1344 | "resolved": "https://registry.npmjs.org/c8/-/c8-10.1.3.tgz", 1345 | "integrity": "sha512-LvcyrOAaOnrrlMpW22n690PUvxiq4Uf9WMhQwNJ9vgagkL/ph1+D4uvjvDA5XCbykrc0sx+ay6pVi9YZ1GnhyA==", 1346 | "dev": true, 1347 | "license": "ISC", 1348 | "dependencies": { 1349 | "@bcoe/v8-coverage": "^1.0.1", 1350 | "@istanbuljs/schema": "^0.1.3", 1351 | "find-up": "^5.0.0", 1352 | "foreground-child": "^3.1.1", 1353 | "istanbul-lib-coverage": "^3.2.0", 1354 | "istanbul-lib-report": "^3.0.1", 1355 | "istanbul-reports": "^3.1.6", 1356 | "test-exclude": "^7.0.1", 1357 | "v8-to-istanbul": "^9.0.0", 1358 | "yargs": "^17.7.2", 1359 | "yargs-parser": "^21.1.1" 1360 | }, 1361 | "bin": { 1362 | "c8": "bin/c8.js" 1363 | }, 1364 | "engines": { 1365 | "node": ">=18" 1366 | }, 1367 | "peerDependencies": { 1368 | "monocart-coverage-reports": "^2" 1369 | }, 1370 | "peerDependenciesMeta": { 1371 | "monocart-coverage-reports": { 1372 | "optional": true 1373 | } 1374 | } 1375 | }, 1376 | "node_modules/cacheable": { 1377 | "version": "1.8.8", 1378 | "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-1.8.8.tgz", 1379 | "integrity": "sha512-OE1/jlarWxROUIpd0qGBSKFLkNsotY8pt4GeiVErUYh/NUeTNrT+SBksUgllQv4m6a0W/VZsLuiHb88maavqEw==", 1380 | "dev": true, 1381 | "license": "MIT", 1382 | "dependencies": { 1383 | "hookified": "^1.7.0", 1384 | "keyv": "^5.2.3" 1385 | } 1386 | }, 1387 | "node_modules/cacheable/node_modules/keyv": { 1388 | "version": "5.2.3", 1389 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.2.3.tgz", 1390 | "integrity": "sha512-AGKecUfzrowabUv0bH1RIR5Vf7w+l4S3xtQAypKaUpTdIR1EbrAcTxHCrpo9Q+IWeUlFE2palRtgIQcgm+PQJw==", 1391 | "dev": true, 1392 | "license": "MIT", 1393 | "dependencies": { 1394 | "@keyv/serialize": "^1.0.2" 1395 | } 1396 | }, 1397 | "node_modules/callsites": { 1398 | "version": "3.1.0", 1399 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 1400 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 1401 | "dev": true, 1402 | "license": "MIT", 1403 | "engines": { 1404 | "node": ">=6" 1405 | } 1406 | }, 1407 | "node_modules/cbst": { 1408 | "version": "2.0.0", 1409 | "resolved": "https://registry.npmjs.org/cbst/-/cbst-2.0.0.tgz", 1410 | "integrity": "sha512-Aja81wgLjZG1nigrv4OBoBPOWJ0cP0/kSHM9VEe4b37uxPkg0a7QwVHGCSMnfduaxYApy+feQOw9BAV6rqvHcw==", 1411 | "dev": true, 1412 | "license": "ISC", 1413 | "bin": { 1414 | "cbst": "dist/bin.js" 1415 | }, 1416 | "engines": { 1417 | "node": ">=20" 1418 | } 1419 | }, 1420 | "node_modules/chalk": { 1421 | "version": "4.1.2", 1422 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 1423 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 1424 | "dev": true, 1425 | "license": "MIT", 1426 | "dependencies": { 1427 | "ansi-styles": "^4.1.0", 1428 | "supports-color": "^7.1.0" 1429 | }, 1430 | "engines": { 1431 | "node": ">=10" 1432 | }, 1433 | "funding": { 1434 | "url": "https://github.com/chalk/chalk?sponsor=1" 1435 | } 1436 | }, 1437 | "node_modules/chokidar": { 1438 | "version": "4.0.3", 1439 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", 1440 | "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", 1441 | "dev": true, 1442 | "license": "MIT", 1443 | "dependencies": { 1444 | "readdirp": "^4.0.1" 1445 | }, 1446 | "engines": { 1447 | "node": ">= 14.16.0" 1448 | }, 1449 | "funding": { 1450 | "url": "https://paulmillr.com/funding/" 1451 | } 1452 | }, 1453 | "node_modules/cliui": { 1454 | "version": "8.0.1", 1455 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", 1456 | "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", 1457 | "dev": true, 1458 | "license": "ISC", 1459 | "dependencies": { 1460 | "string-width": "^4.2.0", 1461 | "strip-ansi": "^6.0.1", 1462 | "wrap-ansi": "^7.0.0" 1463 | }, 1464 | "engines": { 1465 | "node": ">=12" 1466 | } 1467 | }, 1468 | "node_modules/cliui/node_modules/wrap-ansi": { 1469 | "version": "7.0.0", 1470 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 1471 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 1472 | "dev": true, 1473 | "license": "MIT", 1474 | "dependencies": { 1475 | "ansi-styles": "^4.0.0", 1476 | "string-width": "^4.1.0", 1477 | "strip-ansi": "^6.0.0" 1478 | }, 1479 | "engines": { 1480 | "node": ">=10" 1481 | }, 1482 | "funding": { 1483 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 1484 | } 1485 | }, 1486 | "node_modules/color-convert": { 1487 | "version": "2.0.1", 1488 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1489 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1490 | "dev": true, 1491 | "license": "MIT", 1492 | "dependencies": { 1493 | "color-name": "~1.1.4" 1494 | }, 1495 | "engines": { 1496 | "node": ">=7.0.0" 1497 | } 1498 | }, 1499 | "node_modules/color-name": { 1500 | "version": "1.1.4", 1501 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1502 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1503 | "dev": true, 1504 | "license": "MIT" 1505 | }, 1506 | "node_modules/colord": { 1507 | "version": "2.9.3", 1508 | "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", 1509 | "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", 1510 | "dev": true, 1511 | "license": "MIT" 1512 | }, 1513 | "node_modules/commander": { 1514 | "version": "2.20.3", 1515 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 1516 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 1517 | "dev": true, 1518 | "license": "MIT" 1519 | }, 1520 | "node_modules/concat-map": { 1521 | "version": "0.0.1", 1522 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1523 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 1524 | "dev": true, 1525 | "license": "MIT" 1526 | }, 1527 | "node_modules/convert-source-map": { 1528 | "version": "2.0.0", 1529 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", 1530 | "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", 1531 | "dev": true, 1532 | "license": "MIT" 1533 | }, 1534 | "node_modules/cosmiconfig": { 1535 | "version": "9.0.0", 1536 | "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", 1537 | "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", 1538 | "dev": true, 1539 | "license": "MIT", 1540 | "dependencies": { 1541 | "env-paths": "^2.2.1", 1542 | "import-fresh": "^3.3.0", 1543 | "js-yaml": "^4.1.0", 1544 | "parse-json": "^5.2.0" 1545 | }, 1546 | "engines": { 1547 | "node": ">=14" 1548 | }, 1549 | "funding": { 1550 | "url": "https://github.com/sponsors/d-fischer" 1551 | }, 1552 | "peerDependencies": { 1553 | "typescript": ">=4.9.5" 1554 | }, 1555 | "peerDependenciesMeta": { 1556 | "typescript": { 1557 | "optional": true 1558 | } 1559 | } 1560 | }, 1561 | "node_modules/cross-spawn": { 1562 | "version": "7.0.6", 1563 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", 1564 | "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", 1565 | "dev": true, 1566 | "license": "MIT", 1567 | "dependencies": { 1568 | "path-key": "^3.1.0", 1569 | "shebang-command": "^2.0.0", 1570 | "which": "^2.0.1" 1571 | }, 1572 | "engines": { 1573 | "node": ">= 8" 1574 | } 1575 | }, 1576 | "node_modules/css-functions-list": { 1577 | "version": "3.2.3", 1578 | "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.3.tgz", 1579 | "integrity": "sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==", 1580 | "dev": true, 1581 | "license": "MIT", 1582 | "engines": { 1583 | "node": ">=12 || >=16" 1584 | } 1585 | }, 1586 | "node_modules/css-tree": { 1587 | "version": "3.1.0", 1588 | "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", 1589 | "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", 1590 | "dev": true, 1591 | "license": "MIT", 1592 | "dependencies": { 1593 | "mdn-data": "2.12.2", 1594 | "source-map-js": "^1.0.1" 1595 | }, 1596 | "engines": { 1597 | "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" 1598 | } 1599 | }, 1600 | "node_modules/cssesc": { 1601 | "version": "3.0.0", 1602 | "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", 1603 | "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", 1604 | "dev": true, 1605 | "license": "MIT", 1606 | "bin": { 1607 | "cssesc": "bin/cssesc" 1608 | }, 1609 | "engines": { 1610 | "node": ">=4" 1611 | } 1612 | }, 1613 | "node_modules/debug": { 1614 | "version": "4.4.0", 1615 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", 1616 | "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", 1617 | "dev": true, 1618 | "license": "MIT", 1619 | "dependencies": { 1620 | "ms": "^2.1.3" 1621 | }, 1622 | "engines": { 1623 | "node": ">=6.0" 1624 | }, 1625 | "peerDependenciesMeta": { 1626 | "supports-color": { 1627 | "optional": true 1628 | } 1629 | } 1630 | }, 1631 | "node_modules/deep-is": { 1632 | "version": "0.1.4", 1633 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 1634 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 1635 | "dev": true, 1636 | "license": "MIT" 1637 | }, 1638 | "node_modules/detect-libc": { 1639 | "version": "1.0.3", 1640 | "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", 1641 | "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", 1642 | "dev": true, 1643 | "license": "Apache-2.0", 1644 | "optional": true, 1645 | "bin": { 1646 | "detect-libc": "bin/detect-libc.js" 1647 | }, 1648 | "engines": { 1649 | "node": ">=0.10" 1650 | } 1651 | }, 1652 | "node_modules/dir-glob": { 1653 | "version": "3.0.1", 1654 | "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", 1655 | "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", 1656 | "dev": true, 1657 | "license": "MIT", 1658 | "dependencies": { 1659 | "path-type": "^4.0.0" 1660 | }, 1661 | "engines": { 1662 | "node": ">=8" 1663 | } 1664 | }, 1665 | "node_modules/eastasianwidth": { 1666 | "version": "0.2.0", 1667 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", 1668 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", 1669 | "dev": true, 1670 | "license": "MIT" 1671 | }, 1672 | "node_modules/emoji-regex": { 1673 | "version": "8.0.0", 1674 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1675 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 1676 | "dev": true, 1677 | "license": "MIT" 1678 | }, 1679 | "node_modules/env-paths": { 1680 | "version": "2.2.1", 1681 | "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", 1682 | "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", 1683 | "dev": true, 1684 | "license": "MIT", 1685 | "engines": { 1686 | "node": ">=6" 1687 | } 1688 | }, 1689 | "node_modules/error-ex": { 1690 | "version": "1.3.2", 1691 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 1692 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 1693 | "dev": true, 1694 | "license": "MIT", 1695 | "dependencies": { 1696 | "is-arrayish": "^0.2.1" 1697 | } 1698 | }, 1699 | "node_modules/escalade": { 1700 | "version": "3.2.0", 1701 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", 1702 | "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", 1703 | "dev": true, 1704 | "license": "MIT", 1705 | "engines": { 1706 | "node": ">=6" 1707 | } 1708 | }, 1709 | "node_modules/escape-string-regexp": { 1710 | "version": "4.0.0", 1711 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 1712 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 1713 | "dev": true, 1714 | "license": "MIT", 1715 | "engines": { 1716 | "node": ">=10" 1717 | }, 1718 | "funding": { 1719 | "url": "https://github.com/sponsors/sindresorhus" 1720 | } 1721 | }, 1722 | "node_modules/eslint": { 1723 | "version": "9.20.1", 1724 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.20.1.tgz", 1725 | "integrity": "sha512-m1mM33o6dBUjxl2qb6wv6nGNwCAsns1eKtaQ4l/NPHeTvhiUPbtdfMyktxN4B3fgHIgsYh1VT3V9txblpQHq+g==", 1726 | "dev": true, 1727 | "license": "MIT", 1728 | "dependencies": { 1729 | "@eslint-community/eslint-utils": "^4.2.0", 1730 | "@eslint-community/regexpp": "^4.12.1", 1731 | "@eslint/config-array": "^0.19.0", 1732 | "@eslint/core": "^0.11.0", 1733 | "@eslint/eslintrc": "^3.2.0", 1734 | "@eslint/js": "9.20.0", 1735 | "@eslint/plugin-kit": "^0.2.5", 1736 | "@humanfs/node": "^0.16.6", 1737 | "@humanwhocodes/module-importer": "^1.0.1", 1738 | "@humanwhocodes/retry": "^0.4.1", 1739 | "@types/estree": "^1.0.6", 1740 | "@types/json-schema": "^7.0.15", 1741 | "ajv": "^6.12.4", 1742 | "chalk": "^4.0.0", 1743 | "cross-spawn": "^7.0.6", 1744 | "debug": "^4.3.2", 1745 | "escape-string-regexp": "^4.0.0", 1746 | "eslint-scope": "^8.2.0", 1747 | "eslint-visitor-keys": "^4.2.0", 1748 | "espree": "^10.3.0", 1749 | "esquery": "^1.5.0", 1750 | "esutils": "^2.0.2", 1751 | "fast-deep-equal": "^3.1.3", 1752 | "file-entry-cache": "^8.0.0", 1753 | "find-up": "^5.0.0", 1754 | "glob-parent": "^6.0.2", 1755 | "ignore": "^5.2.0", 1756 | "imurmurhash": "^0.1.4", 1757 | "is-glob": "^4.0.0", 1758 | "json-stable-stringify-without-jsonify": "^1.0.1", 1759 | "lodash.merge": "^4.6.2", 1760 | "minimatch": "^3.1.2", 1761 | "natural-compare": "^1.4.0", 1762 | "optionator": "^0.9.3" 1763 | }, 1764 | "bin": { 1765 | "eslint": "bin/eslint.js" 1766 | }, 1767 | "engines": { 1768 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1769 | }, 1770 | "funding": { 1771 | "url": "https://eslint.org/donate" 1772 | }, 1773 | "peerDependencies": { 1774 | "jiti": "*" 1775 | }, 1776 | "peerDependenciesMeta": { 1777 | "jiti": { 1778 | "optional": true 1779 | } 1780 | } 1781 | }, 1782 | "node_modules/eslint-scope": { 1783 | "version": "8.2.0", 1784 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", 1785 | "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", 1786 | "dev": true, 1787 | "license": "BSD-2-Clause", 1788 | "dependencies": { 1789 | "esrecurse": "^4.3.0", 1790 | "estraverse": "^5.2.0" 1791 | }, 1792 | "engines": { 1793 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1794 | }, 1795 | "funding": { 1796 | "url": "https://opencollective.com/eslint" 1797 | } 1798 | }, 1799 | "node_modules/eslint-visitor-keys": { 1800 | "version": "4.2.0", 1801 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", 1802 | "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", 1803 | "dev": true, 1804 | "license": "Apache-2.0", 1805 | "engines": { 1806 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1807 | }, 1808 | "funding": { 1809 | "url": "https://opencollective.com/eslint" 1810 | } 1811 | }, 1812 | "node_modules/espree": { 1813 | "version": "10.3.0", 1814 | "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", 1815 | "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", 1816 | "dev": true, 1817 | "license": "BSD-2-Clause", 1818 | "dependencies": { 1819 | "acorn": "^8.14.0", 1820 | "acorn-jsx": "^5.3.2", 1821 | "eslint-visitor-keys": "^4.2.0" 1822 | }, 1823 | "engines": { 1824 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 1825 | }, 1826 | "funding": { 1827 | "url": "https://opencollective.com/eslint" 1828 | } 1829 | }, 1830 | "node_modules/esquery": { 1831 | "version": "1.6.0", 1832 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", 1833 | "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", 1834 | "dev": true, 1835 | "license": "BSD-3-Clause", 1836 | "dependencies": { 1837 | "estraverse": "^5.1.0" 1838 | }, 1839 | "engines": { 1840 | "node": ">=0.10" 1841 | } 1842 | }, 1843 | "node_modules/esrecurse": { 1844 | "version": "4.3.0", 1845 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 1846 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 1847 | "dev": true, 1848 | "license": "BSD-2-Clause", 1849 | "dependencies": { 1850 | "estraverse": "^5.2.0" 1851 | }, 1852 | "engines": { 1853 | "node": ">=4.0" 1854 | } 1855 | }, 1856 | "node_modules/estraverse": { 1857 | "version": "5.3.0", 1858 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 1859 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 1860 | "dev": true, 1861 | "license": "BSD-2-Clause", 1862 | "engines": { 1863 | "node": ">=4.0" 1864 | } 1865 | }, 1866 | "node_modules/esutils": { 1867 | "version": "2.0.3", 1868 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 1869 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 1870 | "dev": true, 1871 | "license": "BSD-2-Clause", 1872 | "engines": { 1873 | "node": ">=0.10.0" 1874 | } 1875 | }, 1876 | "node_modules/exdom": { 1877 | "version": "2.0.1", 1878 | "resolved": "https://registry.npmjs.org/exdom/-/exdom-2.0.1.tgz", 1879 | "integrity": "sha512-+bfkXpIcBivx/DHOYHvjNtQn5agzHdn6RoPNRjgi3XT/5INgTag0/RiBMxwFCwEgWZ/gsBJT34SQXeClXYD49g==", 1880 | "dev": true, 1881 | "license": "ISC", 1882 | "engines": { 1883 | "node": ">=20" 1884 | } 1885 | }, 1886 | "node_modules/fast-deep-equal": { 1887 | "version": "3.1.3", 1888 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 1889 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 1890 | "dev": true, 1891 | "license": "MIT" 1892 | }, 1893 | "node_modules/fast-glob": { 1894 | "version": "3.3.3", 1895 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", 1896 | "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", 1897 | "dev": true, 1898 | "license": "MIT", 1899 | "dependencies": { 1900 | "@nodelib/fs.stat": "^2.0.2", 1901 | "@nodelib/fs.walk": "^1.2.3", 1902 | "glob-parent": "^5.1.2", 1903 | "merge2": "^1.3.0", 1904 | "micromatch": "^4.0.8" 1905 | }, 1906 | "engines": { 1907 | "node": ">=8.6.0" 1908 | } 1909 | }, 1910 | "node_modules/fast-glob/node_modules/glob-parent": { 1911 | "version": "5.1.2", 1912 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1913 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1914 | "dev": true, 1915 | "license": "ISC", 1916 | "dependencies": { 1917 | "is-glob": "^4.0.1" 1918 | }, 1919 | "engines": { 1920 | "node": ">= 6" 1921 | } 1922 | }, 1923 | "node_modules/fast-json-stable-stringify": { 1924 | "version": "2.1.0", 1925 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 1926 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 1927 | "dev": true, 1928 | "license": "MIT" 1929 | }, 1930 | "node_modules/fast-levenshtein": { 1931 | "version": "2.0.6", 1932 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 1933 | "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 1934 | "dev": true, 1935 | "license": "MIT" 1936 | }, 1937 | "node_modules/fast-uri": { 1938 | "version": "3.0.6", 1939 | "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", 1940 | "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", 1941 | "dev": true, 1942 | "funding": [ 1943 | { 1944 | "type": "github", 1945 | "url": "https://github.com/sponsors/fastify" 1946 | }, 1947 | { 1948 | "type": "opencollective", 1949 | "url": "https://opencollective.com/fastify" 1950 | } 1951 | ], 1952 | "license": "BSD-3-Clause" 1953 | }, 1954 | "node_modules/fastest-levenshtein": { 1955 | "version": "1.0.16", 1956 | "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", 1957 | "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", 1958 | "dev": true, 1959 | "license": "MIT", 1960 | "engines": { 1961 | "node": ">= 4.9.1" 1962 | } 1963 | }, 1964 | "node_modules/fastq": { 1965 | "version": "1.19.0", 1966 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.0.tgz", 1967 | "integrity": "sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==", 1968 | "dev": true, 1969 | "license": "ISC", 1970 | "dependencies": { 1971 | "reusify": "^1.0.4" 1972 | } 1973 | }, 1974 | "node_modules/file-entry-cache": { 1975 | "version": "8.0.0", 1976 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", 1977 | "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", 1978 | "dev": true, 1979 | "license": "MIT", 1980 | "dependencies": { 1981 | "flat-cache": "^4.0.0" 1982 | }, 1983 | "engines": { 1984 | "node": ">=16.0.0" 1985 | } 1986 | }, 1987 | "node_modules/fill-range": { 1988 | "version": "7.1.1", 1989 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 1990 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 1991 | "dev": true, 1992 | "license": "MIT", 1993 | "dependencies": { 1994 | "to-regex-range": "^5.0.1" 1995 | }, 1996 | "engines": { 1997 | "node": ">=8" 1998 | } 1999 | }, 2000 | "node_modules/find-up": { 2001 | "version": "5.0.0", 2002 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 2003 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 2004 | "dev": true, 2005 | "license": "MIT", 2006 | "dependencies": { 2007 | "locate-path": "^6.0.0", 2008 | "path-exists": "^4.0.0" 2009 | }, 2010 | "engines": { 2011 | "node": ">=10" 2012 | }, 2013 | "funding": { 2014 | "url": "https://github.com/sponsors/sindresorhus" 2015 | } 2016 | }, 2017 | "node_modules/flat-cache": { 2018 | "version": "4.0.1", 2019 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", 2020 | "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", 2021 | "dev": true, 2022 | "license": "MIT", 2023 | "dependencies": { 2024 | "flatted": "^3.2.9", 2025 | "keyv": "^4.5.4" 2026 | }, 2027 | "engines": { 2028 | "node": ">=16" 2029 | } 2030 | }, 2031 | "node_modules/flatted": { 2032 | "version": "3.3.2", 2033 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", 2034 | "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", 2035 | "dev": true, 2036 | "license": "ISC" 2037 | }, 2038 | "node_modules/foreground-child": { 2039 | "version": "3.3.0", 2040 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", 2041 | "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", 2042 | "dev": true, 2043 | "license": "ISC", 2044 | "dependencies": { 2045 | "cross-spawn": "^7.0.0", 2046 | "signal-exit": "^4.0.1" 2047 | }, 2048 | "engines": { 2049 | "node": ">=14" 2050 | }, 2051 | "funding": { 2052 | "url": "https://github.com/sponsors/isaacs" 2053 | } 2054 | }, 2055 | "node_modules/fsevents": { 2056 | "version": "2.3.2", 2057 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 2058 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 2059 | "dev": true, 2060 | "hasInstallScript": true, 2061 | "license": "MIT", 2062 | "optional": true, 2063 | "os": [ 2064 | "darwin" 2065 | ], 2066 | "engines": { 2067 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 2068 | } 2069 | }, 2070 | "node_modules/get-caller-file": { 2071 | "version": "2.0.5", 2072 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 2073 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 2074 | "dev": true, 2075 | "license": "ISC", 2076 | "engines": { 2077 | "node": "6.* || 8.* || >= 10.*" 2078 | } 2079 | }, 2080 | "node_modules/glob": { 2081 | "version": "10.4.5", 2082 | "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", 2083 | "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", 2084 | "dev": true, 2085 | "license": "ISC", 2086 | "dependencies": { 2087 | "foreground-child": "^3.1.0", 2088 | "jackspeak": "^3.1.2", 2089 | "minimatch": "^9.0.4", 2090 | "minipass": "^7.1.2", 2091 | "package-json-from-dist": "^1.0.0", 2092 | "path-scurry": "^1.11.1" 2093 | }, 2094 | "bin": { 2095 | "glob": "dist/esm/bin.mjs" 2096 | }, 2097 | "funding": { 2098 | "url": "https://github.com/sponsors/isaacs" 2099 | } 2100 | }, 2101 | "node_modules/glob-parent": { 2102 | "version": "6.0.2", 2103 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 2104 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 2105 | "dev": true, 2106 | "license": "ISC", 2107 | "dependencies": { 2108 | "is-glob": "^4.0.3" 2109 | }, 2110 | "engines": { 2111 | "node": ">=10.13.0" 2112 | } 2113 | }, 2114 | "node_modules/glob/node_modules/brace-expansion": { 2115 | "version": "2.0.1", 2116 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 2117 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 2118 | "dev": true, 2119 | "license": "MIT", 2120 | "dependencies": { 2121 | "balanced-match": "^1.0.0" 2122 | } 2123 | }, 2124 | "node_modules/glob/node_modules/minimatch": { 2125 | "version": "9.0.5", 2126 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", 2127 | "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", 2128 | "dev": true, 2129 | "license": "ISC", 2130 | "dependencies": { 2131 | "brace-expansion": "^2.0.1" 2132 | }, 2133 | "engines": { 2134 | "node": ">=16 || 14 >=14.17" 2135 | }, 2136 | "funding": { 2137 | "url": "https://github.com/sponsors/isaacs" 2138 | } 2139 | }, 2140 | "node_modules/global-modules": { 2141 | "version": "2.0.0", 2142 | "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", 2143 | "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", 2144 | "dev": true, 2145 | "license": "MIT", 2146 | "dependencies": { 2147 | "global-prefix": "^3.0.0" 2148 | }, 2149 | "engines": { 2150 | "node": ">=6" 2151 | } 2152 | }, 2153 | "node_modules/global-prefix": { 2154 | "version": "3.0.0", 2155 | "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", 2156 | "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", 2157 | "dev": true, 2158 | "license": "MIT", 2159 | "dependencies": { 2160 | "ini": "^1.3.5", 2161 | "kind-of": "^6.0.2", 2162 | "which": "^1.3.1" 2163 | }, 2164 | "engines": { 2165 | "node": ">=6" 2166 | } 2167 | }, 2168 | "node_modules/global-prefix/node_modules/which": { 2169 | "version": "1.3.1", 2170 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 2171 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 2172 | "dev": true, 2173 | "license": "ISC", 2174 | "dependencies": { 2175 | "isexe": "^2.0.0" 2176 | }, 2177 | "bin": { 2178 | "which": "bin/which" 2179 | } 2180 | }, 2181 | "node_modules/globals": { 2182 | "version": "14.0.0", 2183 | "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", 2184 | "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", 2185 | "dev": true, 2186 | "license": "MIT", 2187 | "engines": { 2188 | "node": ">=18" 2189 | }, 2190 | "funding": { 2191 | "url": "https://github.com/sponsors/sindresorhus" 2192 | } 2193 | }, 2194 | "node_modules/globby": { 2195 | "version": "11.1.0", 2196 | "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", 2197 | "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", 2198 | "dev": true, 2199 | "license": "MIT", 2200 | "dependencies": { 2201 | "array-union": "^2.1.0", 2202 | "dir-glob": "^3.0.1", 2203 | "fast-glob": "^3.2.9", 2204 | "ignore": "^5.2.0", 2205 | "merge2": "^1.4.1", 2206 | "slash": "^3.0.0" 2207 | }, 2208 | "engines": { 2209 | "node": ">=10" 2210 | }, 2211 | "funding": { 2212 | "url": "https://github.com/sponsors/sindresorhus" 2213 | } 2214 | }, 2215 | "node_modules/globjoin": { 2216 | "version": "0.1.4", 2217 | "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", 2218 | "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", 2219 | "dev": true, 2220 | "license": "MIT" 2221 | }, 2222 | "node_modules/graphemer": { 2223 | "version": "1.4.0", 2224 | "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", 2225 | "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", 2226 | "dev": true, 2227 | "license": "MIT" 2228 | }, 2229 | "node_modules/has-flag": { 2230 | "version": "4.0.0", 2231 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 2232 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 2233 | "dev": true, 2234 | "license": "MIT", 2235 | "engines": { 2236 | "node": ">=8" 2237 | } 2238 | }, 2239 | "node_modules/hookified": { 2240 | "version": "1.7.1", 2241 | "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.7.1.tgz", 2242 | "integrity": "sha512-OXcdHsXeOiD7OJ5zvWj8Oy/6RCdLwntAX+wUrfemNcMGn6sux4xbEHi2QXwqePYhjQ/yvxxq2MvCRirdlHscBw==", 2243 | "dev": true, 2244 | "license": "MIT" 2245 | }, 2246 | "node_modules/html-escaper": { 2247 | "version": "2.0.2", 2248 | "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", 2249 | "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", 2250 | "dev": true, 2251 | "license": "MIT" 2252 | }, 2253 | "node_modules/html-tags": { 2254 | "version": "3.3.1", 2255 | "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", 2256 | "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", 2257 | "dev": true, 2258 | "license": "MIT", 2259 | "engines": { 2260 | "node": ">=8" 2261 | }, 2262 | "funding": { 2263 | "url": "https://github.com/sponsors/sindresorhus" 2264 | } 2265 | }, 2266 | "node_modules/ieee754": { 2267 | "version": "1.2.1", 2268 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 2269 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 2270 | "dev": true, 2271 | "funding": [ 2272 | { 2273 | "type": "github", 2274 | "url": "https://github.com/sponsors/feross" 2275 | }, 2276 | { 2277 | "type": "patreon", 2278 | "url": "https://www.patreon.com/feross" 2279 | }, 2280 | { 2281 | "type": "consulting", 2282 | "url": "https://feross.org/support" 2283 | } 2284 | ], 2285 | "license": "BSD-3-Clause" 2286 | }, 2287 | "node_modules/ignore": { 2288 | "version": "5.3.2", 2289 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", 2290 | "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", 2291 | "dev": true, 2292 | "license": "MIT", 2293 | "engines": { 2294 | "node": ">= 4" 2295 | } 2296 | }, 2297 | "node_modules/immutable": { 2298 | "version": "5.0.3", 2299 | "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.0.3.tgz", 2300 | "integrity": "sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==", 2301 | "dev": true, 2302 | "license": "MIT" 2303 | }, 2304 | "node_modules/import-fresh": { 2305 | "version": "3.3.1", 2306 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", 2307 | "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", 2308 | "dev": true, 2309 | "license": "MIT", 2310 | "dependencies": { 2311 | "parent-module": "^1.0.0", 2312 | "resolve-from": "^4.0.0" 2313 | }, 2314 | "engines": { 2315 | "node": ">=6" 2316 | }, 2317 | "funding": { 2318 | "url": "https://github.com/sponsors/sindresorhus" 2319 | } 2320 | }, 2321 | "node_modules/imurmurhash": { 2322 | "version": "0.1.4", 2323 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 2324 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 2325 | "dev": true, 2326 | "license": "MIT", 2327 | "engines": { 2328 | "node": ">=0.8.19" 2329 | } 2330 | }, 2331 | "node_modules/ini": { 2332 | "version": "1.3.8", 2333 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", 2334 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", 2335 | "dev": true, 2336 | "license": "ISC" 2337 | }, 2338 | "node_modules/is-arrayish": { 2339 | "version": "0.2.1", 2340 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 2341 | "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", 2342 | "dev": true, 2343 | "license": "MIT" 2344 | }, 2345 | "node_modules/is-extglob": { 2346 | "version": "2.1.1", 2347 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 2348 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 2349 | "dev": true, 2350 | "license": "MIT", 2351 | "engines": { 2352 | "node": ">=0.10.0" 2353 | } 2354 | }, 2355 | "node_modules/is-fullwidth-code-point": { 2356 | "version": "3.0.0", 2357 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 2358 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 2359 | "dev": true, 2360 | "license": "MIT", 2361 | "engines": { 2362 | "node": ">=8" 2363 | } 2364 | }, 2365 | "node_modules/is-glob": { 2366 | "version": "4.0.3", 2367 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 2368 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 2369 | "dev": true, 2370 | "license": "MIT", 2371 | "dependencies": { 2372 | "is-extglob": "^2.1.1" 2373 | }, 2374 | "engines": { 2375 | "node": ">=0.10.0" 2376 | } 2377 | }, 2378 | "node_modules/is-number": { 2379 | "version": "7.0.0", 2380 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 2381 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 2382 | "dev": true, 2383 | "license": "MIT", 2384 | "engines": { 2385 | "node": ">=0.12.0" 2386 | } 2387 | }, 2388 | "node_modules/is-plain-object": { 2389 | "version": "5.0.0", 2390 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", 2391 | "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", 2392 | "dev": true, 2393 | "license": "MIT", 2394 | "engines": { 2395 | "node": ">=0.10.0" 2396 | } 2397 | }, 2398 | "node_modules/isexe": { 2399 | "version": "2.0.0", 2400 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 2401 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 2402 | "dev": true, 2403 | "license": "ISC" 2404 | }, 2405 | "node_modules/istanbul-lib-coverage": { 2406 | "version": "3.2.2", 2407 | "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", 2408 | "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", 2409 | "dev": true, 2410 | "license": "BSD-3-Clause", 2411 | "engines": { 2412 | "node": ">=8" 2413 | } 2414 | }, 2415 | "node_modules/istanbul-lib-report": { 2416 | "version": "3.0.1", 2417 | "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", 2418 | "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", 2419 | "dev": true, 2420 | "license": "BSD-3-Clause", 2421 | "dependencies": { 2422 | "istanbul-lib-coverage": "^3.0.0", 2423 | "make-dir": "^4.0.0", 2424 | "supports-color": "^7.1.0" 2425 | }, 2426 | "engines": { 2427 | "node": ">=10" 2428 | } 2429 | }, 2430 | "node_modules/istanbul-reports": { 2431 | "version": "3.1.7", 2432 | "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", 2433 | "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", 2434 | "dev": true, 2435 | "license": "BSD-3-Clause", 2436 | "dependencies": { 2437 | "html-escaper": "^2.0.0", 2438 | "istanbul-lib-report": "^3.0.0" 2439 | }, 2440 | "engines": { 2441 | "node": ">=8" 2442 | } 2443 | }, 2444 | "node_modules/jackspeak": { 2445 | "version": "3.4.3", 2446 | "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", 2447 | "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", 2448 | "dev": true, 2449 | "license": "BlueOak-1.0.0", 2450 | "dependencies": { 2451 | "@isaacs/cliui": "^8.0.2" 2452 | }, 2453 | "funding": { 2454 | "url": "https://github.com/sponsors/isaacs" 2455 | }, 2456 | "optionalDependencies": { 2457 | "@pkgjs/parseargs": "^0.11.0" 2458 | } 2459 | }, 2460 | "node_modules/js-tokens": { 2461 | "version": "4.0.0", 2462 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 2463 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 2464 | "dev": true, 2465 | "license": "MIT" 2466 | }, 2467 | "node_modules/js-yaml": { 2468 | "version": "4.1.0", 2469 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 2470 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 2471 | "dev": true, 2472 | "license": "MIT", 2473 | "dependencies": { 2474 | "argparse": "^2.0.1" 2475 | }, 2476 | "bin": { 2477 | "js-yaml": "bin/js-yaml.js" 2478 | } 2479 | }, 2480 | "node_modules/json-buffer": { 2481 | "version": "3.0.1", 2482 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", 2483 | "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", 2484 | "dev": true, 2485 | "license": "MIT" 2486 | }, 2487 | "node_modules/json-parse-even-better-errors": { 2488 | "version": "2.3.1", 2489 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", 2490 | "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", 2491 | "dev": true, 2492 | "license": "MIT" 2493 | }, 2494 | "node_modules/json-schema-traverse": { 2495 | "version": "0.4.1", 2496 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 2497 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 2498 | "dev": true, 2499 | "license": "MIT" 2500 | }, 2501 | "node_modules/json-stable-stringify-without-jsonify": { 2502 | "version": "1.0.1", 2503 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 2504 | "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", 2505 | "dev": true, 2506 | "license": "MIT" 2507 | }, 2508 | "node_modules/keyv": { 2509 | "version": "4.5.4", 2510 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", 2511 | "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", 2512 | "dev": true, 2513 | "license": "MIT", 2514 | "dependencies": { 2515 | "json-buffer": "3.0.1" 2516 | } 2517 | }, 2518 | "node_modules/kind-of": { 2519 | "version": "6.0.3", 2520 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", 2521 | "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", 2522 | "dev": true, 2523 | "license": "MIT", 2524 | "engines": { 2525 | "node": ">=0.10.0" 2526 | } 2527 | }, 2528 | "node_modules/known-css-properties": { 2529 | "version": "0.35.0", 2530 | "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.35.0.tgz", 2531 | "integrity": "sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A==", 2532 | "dev": true, 2533 | "license": "MIT" 2534 | }, 2535 | "node_modules/levn": { 2536 | "version": "0.4.1", 2537 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 2538 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 2539 | "dev": true, 2540 | "license": "MIT", 2541 | "dependencies": { 2542 | "prelude-ls": "^1.2.1", 2543 | "type-check": "~0.4.0" 2544 | }, 2545 | "engines": { 2546 | "node": ">= 0.8.0" 2547 | } 2548 | }, 2549 | "node_modules/lines-and-columns": { 2550 | "version": "1.2.4", 2551 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", 2552 | "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", 2553 | "dev": true, 2554 | "license": "MIT" 2555 | }, 2556 | "node_modules/locate-path": { 2557 | "version": "6.0.0", 2558 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 2559 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 2560 | "dev": true, 2561 | "license": "MIT", 2562 | "dependencies": { 2563 | "p-locate": "^5.0.0" 2564 | }, 2565 | "engines": { 2566 | "node": ">=10" 2567 | }, 2568 | "funding": { 2569 | "url": "https://github.com/sponsors/sindresorhus" 2570 | } 2571 | }, 2572 | "node_modules/lodash.merge": { 2573 | "version": "4.6.2", 2574 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 2575 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 2576 | "dev": true, 2577 | "license": "MIT" 2578 | }, 2579 | "node_modules/lodash.truncate": { 2580 | "version": "4.4.2", 2581 | "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", 2582 | "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", 2583 | "dev": true, 2584 | "license": "MIT" 2585 | }, 2586 | "node_modules/lru-cache": { 2587 | "version": "10.4.3", 2588 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", 2589 | "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", 2590 | "dev": true, 2591 | "license": "ISC" 2592 | }, 2593 | "node_modules/make-dir": { 2594 | "version": "4.0.0", 2595 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", 2596 | "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", 2597 | "dev": true, 2598 | "license": "MIT", 2599 | "dependencies": { 2600 | "semver": "^7.5.3" 2601 | }, 2602 | "engines": { 2603 | "node": ">=10" 2604 | }, 2605 | "funding": { 2606 | "url": "https://github.com/sponsors/sindresorhus" 2607 | } 2608 | }, 2609 | "node_modules/mathml-tag-names": { 2610 | "version": "2.1.3", 2611 | "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", 2612 | "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", 2613 | "dev": true, 2614 | "license": "MIT", 2615 | "funding": { 2616 | "type": "github", 2617 | "url": "https://github.com/sponsors/wooorm" 2618 | } 2619 | }, 2620 | "node_modules/mdn-data": { 2621 | "version": "2.12.2", 2622 | "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", 2623 | "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", 2624 | "dev": true, 2625 | "license": "CC0-1.0" 2626 | }, 2627 | "node_modules/meow": { 2628 | "version": "13.2.0", 2629 | "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", 2630 | "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", 2631 | "dev": true, 2632 | "license": "MIT", 2633 | "engines": { 2634 | "node": ">=18" 2635 | }, 2636 | "funding": { 2637 | "url": "https://github.com/sponsors/sindresorhus" 2638 | } 2639 | }, 2640 | "node_modules/merge2": { 2641 | "version": "1.4.1", 2642 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 2643 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 2644 | "dev": true, 2645 | "license": "MIT", 2646 | "engines": { 2647 | "node": ">= 8" 2648 | } 2649 | }, 2650 | "node_modules/micromatch": { 2651 | "version": "4.0.8", 2652 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", 2653 | "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", 2654 | "dev": true, 2655 | "license": "MIT", 2656 | "dependencies": { 2657 | "braces": "^3.0.3", 2658 | "picomatch": "^2.3.1" 2659 | }, 2660 | "engines": { 2661 | "node": ">=8.6" 2662 | } 2663 | }, 2664 | "node_modules/mime": { 2665 | "version": "4.0.6", 2666 | "resolved": "https://registry.npmjs.org/mime/-/mime-4.0.6.tgz", 2667 | "integrity": "sha512-4rGt7rvQHBbaSOF9POGkk1ocRP16Md1x36Xma8sz8h8/vfCUI2OtEIeCqe4Ofes853x4xDoPiFLIT47J5fI/7A==", 2668 | "dev": true, 2669 | "funding": [ 2670 | "https://github.com/sponsors/broofa" 2671 | ], 2672 | "license": "MIT", 2673 | "bin": { 2674 | "mime": "bin/cli.js" 2675 | }, 2676 | "engines": { 2677 | "node": ">=16" 2678 | } 2679 | }, 2680 | "node_modules/minimatch": { 2681 | "version": "3.1.2", 2682 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 2683 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 2684 | "dev": true, 2685 | "license": "ISC", 2686 | "dependencies": { 2687 | "brace-expansion": "^1.1.7" 2688 | }, 2689 | "engines": { 2690 | "node": "*" 2691 | } 2692 | }, 2693 | "node_modules/minipass": { 2694 | "version": "7.1.2", 2695 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", 2696 | "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", 2697 | "dev": true, 2698 | "license": "ISC", 2699 | "engines": { 2700 | "node": ">=16 || 14 >=14.17" 2701 | } 2702 | }, 2703 | "node_modules/ms": { 2704 | "version": "2.1.3", 2705 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 2706 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 2707 | "dev": true, 2708 | "license": "MIT" 2709 | }, 2710 | "node_modules/nanoid": { 2711 | "version": "3.3.8", 2712 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", 2713 | "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", 2714 | "dev": true, 2715 | "funding": [ 2716 | { 2717 | "type": "github", 2718 | "url": "https://github.com/sponsors/ai" 2719 | } 2720 | ], 2721 | "license": "MIT", 2722 | "bin": { 2723 | "nanoid": "bin/nanoid.cjs" 2724 | }, 2725 | "engines": { 2726 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 2727 | } 2728 | }, 2729 | "node_modules/natural-compare": { 2730 | "version": "1.4.0", 2731 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 2732 | "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", 2733 | "dev": true, 2734 | "license": "MIT" 2735 | }, 2736 | "node_modules/node-addon-api": { 2737 | "version": "7.1.1", 2738 | "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", 2739 | "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", 2740 | "dev": true, 2741 | "license": "MIT", 2742 | "optional": true 2743 | }, 2744 | "node_modules/normalize-path": { 2745 | "version": "3.0.0", 2746 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 2747 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 2748 | "dev": true, 2749 | "license": "MIT", 2750 | "engines": { 2751 | "node": ">=0.10.0" 2752 | } 2753 | }, 2754 | "node_modules/optionator": { 2755 | "version": "0.9.4", 2756 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", 2757 | "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", 2758 | "dev": true, 2759 | "license": "MIT", 2760 | "dependencies": { 2761 | "deep-is": "^0.1.3", 2762 | "fast-levenshtein": "^2.0.6", 2763 | "levn": "^0.4.1", 2764 | "prelude-ls": "^1.2.1", 2765 | "type-check": "^0.4.0", 2766 | "word-wrap": "^1.2.5" 2767 | }, 2768 | "engines": { 2769 | "node": ">= 0.8.0" 2770 | } 2771 | }, 2772 | "node_modules/p-limit": { 2773 | "version": "3.1.0", 2774 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 2775 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 2776 | "dev": true, 2777 | "license": "MIT", 2778 | "dependencies": { 2779 | "yocto-queue": "^0.1.0" 2780 | }, 2781 | "engines": { 2782 | "node": ">=10" 2783 | }, 2784 | "funding": { 2785 | "url": "https://github.com/sponsors/sindresorhus" 2786 | } 2787 | }, 2788 | "node_modules/p-locate": { 2789 | "version": "5.0.0", 2790 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 2791 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 2792 | "dev": true, 2793 | "license": "MIT", 2794 | "dependencies": { 2795 | "p-limit": "^3.0.2" 2796 | }, 2797 | "engines": { 2798 | "node": ">=10" 2799 | }, 2800 | "funding": { 2801 | "url": "https://github.com/sponsors/sindresorhus" 2802 | } 2803 | }, 2804 | "node_modules/package-json-from-dist": { 2805 | "version": "1.0.1", 2806 | "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", 2807 | "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", 2808 | "dev": true, 2809 | "license": "BlueOak-1.0.0" 2810 | }, 2811 | "node_modules/parent-module": { 2812 | "version": "1.0.1", 2813 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 2814 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 2815 | "dev": true, 2816 | "license": "MIT", 2817 | "dependencies": { 2818 | "callsites": "^3.0.0" 2819 | }, 2820 | "engines": { 2821 | "node": ">=6" 2822 | } 2823 | }, 2824 | "node_modules/parse-json": { 2825 | "version": "5.2.0", 2826 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", 2827 | "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", 2828 | "dev": true, 2829 | "license": "MIT", 2830 | "dependencies": { 2831 | "@babel/code-frame": "^7.0.0", 2832 | "error-ex": "^1.3.1", 2833 | "json-parse-even-better-errors": "^2.3.0", 2834 | "lines-and-columns": "^1.1.6" 2835 | }, 2836 | "engines": { 2837 | "node": ">=8" 2838 | }, 2839 | "funding": { 2840 | "url": "https://github.com/sponsors/sindresorhus" 2841 | } 2842 | }, 2843 | "node_modules/path-exists": { 2844 | "version": "4.0.0", 2845 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 2846 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 2847 | "dev": true, 2848 | "license": "MIT", 2849 | "engines": { 2850 | "node": ">=8" 2851 | } 2852 | }, 2853 | "node_modules/path-key": { 2854 | "version": "3.1.1", 2855 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 2856 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 2857 | "dev": true, 2858 | "license": "MIT", 2859 | "engines": { 2860 | "node": ">=8" 2861 | } 2862 | }, 2863 | "node_modules/path-scurry": { 2864 | "version": "1.11.1", 2865 | "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", 2866 | "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", 2867 | "dev": true, 2868 | "license": "BlueOak-1.0.0", 2869 | "dependencies": { 2870 | "lru-cache": "^10.2.0", 2871 | "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" 2872 | }, 2873 | "engines": { 2874 | "node": ">=16 || 14 >=14.18" 2875 | }, 2876 | "funding": { 2877 | "url": "https://github.com/sponsors/isaacs" 2878 | } 2879 | }, 2880 | "node_modules/path-type": { 2881 | "version": "4.0.0", 2882 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 2883 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 2884 | "dev": true, 2885 | "license": "MIT", 2886 | "engines": { 2887 | "node": ">=8" 2888 | } 2889 | }, 2890 | "node_modules/picocolors": { 2891 | "version": "1.1.1", 2892 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", 2893 | "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", 2894 | "dev": true, 2895 | "license": "ISC" 2896 | }, 2897 | "node_modules/picomatch": { 2898 | "version": "2.3.1", 2899 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 2900 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 2901 | "dev": true, 2902 | "license": "MIT", 2903 | "engines": { 2904 | "node": ">=8.6" 2905 | }, 2906 | "funding": { 2907 | "url": "https://github.com/sponsors/jonschlinkert" 2908 | } 2909 | }, 2910 | "node_modules/playwright": { 2911 | "version": "1.50.1", 2912 | "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.50.1.tgz", 2913 | "integrity": "sha512-G8rwsOQJ63XG6BbKj2w5rHeavFjy5zynBA9zsJMMtBoe/Uf757oG12NXz6e6OirF7RCrTVAKFXbLmn1RbL7Qaw==", 2914 | "dev": true, 2915 | "license": "Apache-2.0", 2916 | "dependencies": { 2917 | "playwright-core": "1.50.1" 2918 | }, 2919 | "bin": { 2920 | "playwright": "cli.js" 2921 | }, 2922 | "engines": { 2923 | "node": ">=18" 2924 | }, 2925 | "optionalDependencies": { 2926 | "fsevents": "2.3.2" 2927 | } 2928 | }, 2929 | "node_modules/playwright-core": { 2930 | "version": "1.50.1", 2931 | "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.50.1.tgz", 2932 | "integrity": "sha512-ra9fsNWayuYumt+NiM069M6OkcRb1FZSK8bgi66AtpFoWkg2+y0bJSNmkFrWhMbEBbVKC/EruAHH3g0zmtwGmQ==", 2933 | "dev": true, 2934 | "license": "Apache-2.0", 2935 | "bin": { 2936 | "playwright-core": "cli.js" 2937 | }, 2938 | "engines": { 2939 | "node": ">=18" 2940 | } 2941 | }, 2942 | "node_modules/postcss": { 2943 | "version": "8.5.2", 2944 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.2.tgz", 2945 | "integrity": "sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==", 2946 | "dev": true, 2947 | "funding": [ 2948 | { 2949 | "type": "opencollective", 2950 | "url": "https://opencollective.com/postcss/" 2951 | }, 2952 | { 2953 | "type": "tidelift", 2954 | "url": "https://tidelift.com/funding/github/npm/postcss" 2955 | }, 2956 | { 2957 | "type": "github", 2958 | "url": "https://github.com/sponsors/ai" 2959 | } 2960 | ], 2961 | "license": "MIT", 2962 | "dependencies": { 2963 | "nanoid": "^3.3.8", 2964 | "picocolors": "^1.1.1", 2965 | "source-map-js": "^1.2.1" 2966 | }, 2967 | "engines": { 2968 | "node": "^10 || ^12 || >=14" 2969 | } 2970 | }, 2971 | "node_modules/postcss-media-query-parser": { 2972 | "version": "0.2.3", 2973 | "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", 2974 | "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", 2975 | "dev": true, 2976 | "license": "MIT" 2977 | }, 2978 | "node_modules/postcss-resolve-nested-selector": { 2979 | "version": "0.1.6", 2980 | "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz", 2981 | "integrity": "sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==", 2982 | "dev": true, 2983 | "license": "MIT" 2984 | }, 2985 | "node_modules/postcss-safe-parser": { 2986 | "version": "7.0.1", 2987 | "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz", 2988 | "integrity": "sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==", 2989 | "dev": true, 2990 | "funding": [ 2991 | { 2992 | "type": "opencollective", 2993 | "url": "https://opencollective.com/postcss/" 2994 | }, 2995 | { 2996 | "type": "tidelift", 2997 | "url": "https://tidelift.com/funding/github/npm/postcss-safe-parser" 2998 | }, 2999 | { 3000 | "type": "github", 3001 | "url": "https://github.com/sponsors/ai" 3002 | } 3003 | ], 3004 | "license": "MIT", 3005 | "engines": { 3006 | "node": ">=18.0" 3007 | }, 3008 | "peerDependencies": { 3009 | "postcss": "^8.4.31" 3010 | } 3011 | }, 3012 | "node_modules/postcss-scss": { 3013 | "version": "4.0.9", 3014 | "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz", 3015 | "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==", 3016 | "dev": true, 3017 | "funding": [ 3018 | { 3019 | "type": "opencollective", 3020 | "url": "https://opencollective.com/postcss/" 3021 | }, 3022 | { 3023 | "type": "tidelift", 3024 | "url": "https://tidelift.com/funding/github/npm/postcss-scss" 3025 | }, 3026 | { 3027 | "type": "github", 3028 | "url": "https://github.com/sponsors/ai" 3029 | } 3030 | ], 3031 | "license": "MIT", 3032 | "engines": { 3033 | "node": ">=12.0" 3034 | }, 3035 | "peerDependencies": { 3036 | "postcss": "^8.4.29" 3037 | } 3038 | }, 3039 | "node_modules/postcss-selector-parser": { 3040 | "version": "7.1.0", 3041 | "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", 3042 | "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", 3043 | "dev": true, 3044 | "license": "MIT", 3045 | "dependencies": { 3046 | "cssesc": "^3.0.0", 3047 | "util-deprecate": "^1.0.2" 3048 | }, 3049 | "engines": { 3050 | "node": ">=4" 3051 | } 3052 | }, 3053 | "node_modules/postcss-value-parser": { 3054 | "version": "4.2.0", 3055 | "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", 3056 | "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", 3057 | "dev": true, 3058 | "license": "MIT" 3059 | }, 3060 | "node_modules/prelude-ls": { 3061 | "version": "1.2.1", 3062 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 3063 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 3064 | "dev": true, 3065 | "license": "MIT", 3066 | "engines": { 3067 | "node": ">= 0.8.0" 3068 | } 3069 | }, 3070 | "node_modules/prettier": { 3071 | "version": "3.5.1", 3072 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.1.tgz", 3073 | "integrity": "sha512-hPpFQvHwL3Qv5AdRvBFMhnKo4tYxp0ReXiPn2bxkiohEX6mBeBwEpBSQTkD458RaaDKQMYSp4hX4UtfUTA5wDw==", 3074 | "dev": true, 3075 | "license": "MIT", 3076 | "bin": { 3077 | "prettier": "bin/prettier.cjs" 3078 | }, 3079 | "engines": { 3080 | "node": ">=14" 3081 | }, 3082 | "funding": { 3083 | "url": "https://github.com/prettier/prettier?sponsor=1" 3084 | } 3085 | }, 3086 | "node_modules/punycode": { 3087 | "version": "2.3.1", 3088 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", 3089 | "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", 3090 | "dev": true, 3091 | "license": "MIT", 3092 | "engines": { 3093 | "node": ">=6" 3094 | } 3095 | }, 3096 | "node_modules/queue-microtask": { 3097 | "version": "1.2.3", 3098 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 3099 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 3100 | "dev": true, 3101 | "funding": [ 3102 | { 3103 | "type": "github", 3104 | "url": "https://github.com/sponsors/feross" 3105 | }, 3106 | { 3107 | "type": "patreon", 3108 | "url": "https://www.patreon.com/feross" 3109 | }, 3110 | { 3111 | "type": "consulting", 3112 | "url": "https://feross.org/support" 3113 | } 3114 | ], 3115 | "license": "MIT" 3116 | }, 3117 | "node_modules/readdirp": { 3118 | "version": "4.1.2", 3119 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", 3120 | "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", 3121 | "dev": true, 3122 | "license": "MIT", 3123 | "engines": { 3124 | "node": ">= 14.18.0" 3125 | }, 3126 | "funding": { 3127 | "type": "individual", 3128 | "url": "https://paulmillr.com/funding/" 3129 | } 3130 | }, 3131 | "node_modules/require-directory": { 3132 | "version": "2.1.1", 3133 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 3134 | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", 3135 | "dev": true, 3136 | "license": "MIT", 3137 | "engines": { 3138 | "node": ">=0.10.0" 3139 | } 3140 | }, 3141 | "node_modules/require-from-string": { 3142 | "version": "2.0.2", 3143 | "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", 3144 | "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", 3145 | "dev": true, 3146 | "license": "MIT", 3147 | "engines": { 3148 | "node": ">=0.10.0" 3149 | } 3150 | }, 3151 | "node_modules/resolve-from": { 3152 | "version": "4.0.0", 3153 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 3154 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 3155 | "dev": true, 3156 | "license": "MIT", 3157 | "engines": { 3158 | "node": ">=4" 3159 | } 3160 | }, 3161 | "node_modules/reusify": { 3162 | "version": "1.0.4", 3163 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 3164 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 3165 | "dev": true, 3166 | "license": "MIT", 3167 | "engines": { 3168 | "iojs": ">=1.0.0", 3169 | "node": ">=0.10.0" 3170 | } 3171 | }, 3172 | "node_modules/run-parallel": { 3173 | "version": "1.2.0", 3174 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 3175 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 3176 | "dev": true, 3177 | "funding": [ 3178 | { 3179 | "type": "github", 3180 | "url": "https://github.com/sponsors/feross" 3181 | }, 3182 | { 3183 | "type": "patreon", 3184 | "url": "https://www.patreon.com/feross" 3185 | }, 3186 | { 3187 | "type": "consulting", 3188 | "url": "https://feross.org/support" 3189 | } 3190 | ], 3191 | "license": "MIT", 3192 | "dependencies": { 3193 | "queue-microtask": "^1.2.2" 3194 | } 3195 | }, 3196 | "node_modules/s4d": { 3197 | "version": "0.2.1", 3198 | "resolved": "https://registry.npmjs.org/s4d/-/s4d-0.2.1.tgz", 3199 | "integrity": "sha512-QtA5K7JAn4iGeKG/+JT/dYpM0VDKdjgByaVoO5duNXwsdOu3BvzOZA/WHMUftB15gOr4Ub6lRiBVK2iDg20o3w==", 3200 | "dev": true, 3201 | "license": "ISC", 3202 | "dependencies": { 3203 | "mime": "^4.0.1", 3204 | "ws": "^8.16.0" 3205 | }, 3206 | "bin": { 3207 | "s4d": "dist/bin.js" 3208 | }, 3209 | "engines": { 3210 | "node": ">=20" 3211 | } 3212 | }, 3213 | "node_modules/sass": { 3214 | "version": "1.85.0", 3215 | "resolved": "https://registry.npmjs.org/sass/-/sass-1.85.0.tgz", 3216 | "integrity": "sha512-3ToiC1xZ1Y8aU7+CkgCI/tqyuPXEmYGJXO7H4uqp0xkLXUqp88rQQ4j1HmP37xSJLbCJPaIiv+cT1y+grssrww==", 3217 | "dev": true, 3218 | "license": "MIT", 3219 | "dependencies": { 3220 | "chokidar": "^4.0.0", 3221 | "immutable": "^5.0.2", 3222 | "source-map-js": ">=0.6.2 <2.0.0" 3223 | }, 3224 | "bin": { 3225 | "sass": "sass.js" 3226 | }, 3227 | "engines": { 3228 | "node": ">=14.0.0" 3229 | }, 3230 | "optionalDependencies": { 3231 | "@parcel/watcher": "^2.4.1" 3232 | } 3233 | }, 3234 | "node_modules/semver": { 3235 | "version": "7.7.1", 3236 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", 3237 | "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", 3238 | "dev": true, 3239 | "license": "ISC", 3240 | "bin": { 3241 | "semver": "bin/semver.js" 3242 | }, 3243 | "engines": { 3244 | "node": ">=10" 3245 | } 3246 | }, 3247 | "node_modules/shebang-command": { 3248 | "version": "2.0.0", 3249 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 3250 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 3251 | "dev": true, 3252 | "license": "MIT", 3253 | "dependencies": { 3254 | "shebang-regex": "^3.0.0" 3255 | }, 3256 | "engines": { 3257 | "node": ">=8" 3258 | } 3259 | }, 3260 | "node_modules/shebang-regex": { 3261 | "version": "3.0.0", 3262 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 3263 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 3264 | "dev": true, 3265 | "license": "MIT", 3266 | "engines": { 3267 | "node": ">=8" 3268 | } 3269 | }, 3270 | "node_modules/signal-exit": { 3271 | "version": "4.1.0", 3272 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", 3273 | "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", 3274 | "dev": true, 3275 | "license": "ISC", 3276 | "engines": { 3277 | "node": ">=14" 3278 | }, 3279 | "funding": { 3280 | "url": "https://github.com/sponsors/isaacs" 3281 | } 3282 | }, 3283 | "node_modules/slash": { 3284 | "version": "3.0.0", 3285 | "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", 3286 | "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", 3287 | "dev": true, 3288 | "license": "MIT", 3289 | "engines": { 3290 | "node": ">=8" 3291 | } 3292 | }, 3293 | "node_modules/slice-ansi": { 3294 | "version": "4.0.0", 3295 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", 3296 | "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", 3297 | "dev": true, 3298 | "license": "MIT", 3299 | "dependencies": { 3300 | "ansi-styles": "^4.0.0", 3301 | "astral-regex": "^2.0.0", 3302 | "is-fullwidth-code-point": "^3.0.0" 3303 | }, 3304 | "engines": { 3305 | "node": ">=10" 3306 | }, 3307 | "funding": { 3308 | "url": "https://github.com/chalk/slice-ansi?sponsor=1" 3309 | } 3310 | }, 3311 | "node_modules/source-map": { 3312 | "version": "0.6.1", 3313 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 3314 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 3315 | "dev": true, 3316 | "license": "BSD-3-Clause", 3317 | "engines": { 3318 | "node": ">=0.10.0" 3319 | } 3320 | }, 3321 | "node_modules/source-map-js": { 3322 | "version": "1.2.1", 3323 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", 3324 | "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", 3325 | "dev": true, 3326 | "license": "BSD-3-Clause", 3327 | "engines": { 3328 | "node": ">=0.10.0" 3329 | } 3330 | }, 3331 | "node_modules/source-map-support": { 3332 | "version": "0.5.21", 3333 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", 3334 | "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", 3335 | "dev": true, 3336 | "license": "MIT", 3337 | "dependencies": { 3338 | "buffer-from": "^1.0.0", 3339 | "source-map": "^0.6.0" 3340 | } 3341 | }, 3342 | "node_modules/string-width": { 3343 | "version": "4.2.3", 3344 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 3345 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 3346 | "dev": true, 3347 | "license": "MIT", 3348 | "dependencies": { 3349 | "emoji-regex": "^8.0.0", 3350 | "is-fullwidth-code-point": "^3.0.0", 3351 | "strip-ansi": "^6.0.1" 3352 | }, 3353 | "engines": { 3354 | "node": ">=8" 3355 | } 3356 | }, 3357 | "node_modules/string-width-cjs": { 3358 | "name": "string-width", 3359 | "version": "4.2.3", 3360 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 3361 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 3362 | "dev": true, 3363 | "license": "MIT", 3364 | "dependencies": { 3365 | "emoji-regex": "^8.0.0", 3366 | "is-fullwidth-code-point": "^3.0.0", 3367 | "strip-ansi": "^6.0.1" 3368 | }, 3369 | "engines": { 3370 | "node": ">=8" 3371 | } 3372 | }, 3373 | "node_modules/strip-ansi": { 3374 | "version": "6.0.1", 3375 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 3376 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 3377 | "dev": true, 3378 | "license": "MIT", 3379 | "dependencies": { 3380 | "ansi-regex": "^5.0.1" 3381 | }, 3382 | "engines": { 3383 | "node": ">=8" 3384 | } 3385 | }, 3386 | "node_modules/strip-ansi-cjs": { 3387 | "name": "strip-ansi", 3388 | "version": "6.0.1", 3389 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 3390 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 3391 | "dev": true, 3392 | "license": "MIT", 3393 | "dependencies": { 3394 | "ansi-regex": "^5.0.1" 3395 | }, 3396 | "engines": { 3397 | "node": ">=8" 3398 | } 3399 | }, 3400 | "node_modules/strip-json-comments": { 3401 | "version": "3.1.1", 3402 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 3403 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 3404 | "dev": true, 3405 | "license": "MIT", 3406 | "engines": { 3407 | "node": ">=8" 3408 | }, 3409 | "funding": { 3410 | "url": "https://github.com/sponsors/sindresorhus" 3411 | } 3412 | }, 3413 | "node_modules/stylelint": { 3414 | "version": "16.14.1", 3415 | "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.14.1.tgz", 3416 | "integrity": "sha512-oqCL7AC3786oTax35T/nuLL8p2C3k/8rHKAooezrPGRvUX0wX+qqs5kMWh5YYT4PHQgVDobHT4tw55WgpYG6Sw==", 3417 | "dev": true, 3418 | "funding": [ 3419 | { 3420 | "type": "opencollective", 3421 | "url": "https://opencollective.com/stylelint" 3422 | }, 3423 | { 3424 | "type": "github", 3425 | "url": "https://github.com/sponsors/stylelint" 3426 | } 3427 | ], 3428 | "license": "MIT", 3429 | "dependencies": { 3430 | "@csstools/css-parser-algorithms": "^3.0.4", 3431 | "@csstools/css-tokenizer": "^3.0.3", 3432 | "@csstools/media-query-list-parser": "^4.0.2", 3433 | "@csstools/selector-specificity": "^5.0.0", 3434 | "@dual-bundle/import-meta-resolve": "^4.1.0", 3435 | "balanced-match": "^2.0.0", 3436 | "colord": "^2.9.3", 3437 | "cosmiconfig": "^9.0.0", 3438 | "css-functions-list": "^3.2.3", 3439 | "css-tree": "^3.1.0", 3440 | "debug": "^4.3.7", 3441 | "fast-glob": "^3.3.3", 3442 | "fastest-levenshtein": "^1.0.16", 3443 | "file-entry-cache": "^10.0.5", 3444 | "global-modules": "^2.0.0", 3445 | "globby": "^11.1.0", 3446 | "globjoin": "^0.1.4", 3447 | "html-tags": "^3.3.1", 3448 | "ignore": "^7.0.3", 3449 | "imurmurhash": "^0.1.4", 3450 | "is-plain-object": "^5.0.0", 3451 | "known-css-properties": "^0.35.0", 3452 | "mathml-tag-names": "^2.1.3", 3453 | "meow": "^13.2.0", 3454 | "micromatch": "^4.0.8", 3455 | "normalize-path": "^3.0.0", 3456 | "picocolors": "^1.1.1", 3457 | "postcss": "^8.5.1", 3458 | "postcss-resolve-nested-selector": "^0.1.6", 3459 | "postcss-safe-parser": "^7.0.1", 3460 | "postcss-selector-parser": "^7.0.0", 3461 | "postcss-value-parser": "^4.2.0", 3462 | "resolve-from": "^5.0.0", 3463 | "string-width": "^4.2.3", 3464 | "supports-hyperlinks": "^3.1.0", 3465 | "svg-tags": "^1.0.0", 3466 | "table": "^6.9.0", 3467 | "write-file-atomic": "^5.0.1" 3468 | }, 3469 | "bin": { 3470 | "stylelint": "bin/stylelint.mjs" 3471 | }, 3472 | "engines": { 3473 | "node": ">=18.12.0" 3474 | } 3475 | }, 3476 | "node_modules/stylelint-config-recommended": { 3477 | "version": "14.0.1", 3478 | "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-14.0.1.tgz", 3479 | "integrity": "sha512-bLvc1WOz/14aPImu/cufKAZYfXs/A/owZfSMZ4N+16WGXLoX5lOir53M6odBxvhgmgdxCVnNySJmZKx73T93cg==", 3480 | "dev": true, 3481 | "funding": [ 3482 | { 3483 | "type": "opencollective", 3484 | "url": "https://opencollective.com/stylelint" 3485 | }, 3486 | { 3487 | "type": "github", 3488 | "url": "https://github.com/sponsors/stylelint" 3489 | } 3490 | ], 3491 | "license": "MIT", 3492 | "engines": { 3493 | "node": ">=18.12.0" 3494 | }, 3495 | "peerDependencies": { 3496 | "stylelint": "^16.1.0" 3497 | } 3498 | }, 3499 | "node_modules/stylelint-config-recommended-scss": { 3500 | "version": "14.1.0", 3501 | "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-14.1.0.tgz", 3502 | "integrity": "sha512-bhaMhh1u5dQqSsf6ri2GVWWQW5iUjBYgcHkh7SgDDn92ijoItC/cfO/W+fpXshgTQWhwFkP1rVcewcv4jaftRg==", 3503 | "dev": true, 3504 | "license": "MIT", 3505 | "dependencies": { 3506 | "postcss-scss": "^4.0.9", 3507 | "stylelint-config-recommended": "^14.0.1", 3508 | "stylelint-scss": "^6.4.0" 3509 | }, 3510 | "engines": { 3511 | "node": ">=18.12.0" 3512 | }, 3513 | "peerDependencies": { 3514 | "postcss": "^8.3.3", 3515 | "stylelint": "^16.6.1" 3516 | }, 3517 | "peerDependenciesMeta": { 3518 | "postcss": { 3519 | "optional": true 3520 | } 3521 | } 3522 | }, 3523 | "node_modules/stylelint-config-standard": { 3524 | "version": "36.0.1", 3525 | "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-36.0.1.tgz", 3526 | "integrity": "sha512-8aX8mTzJ6cuO8mmD5yon61CWuIM4UD8Q5aBcWKGSf6kg+EC3uhB+iOywpTK4ca6ZL7B49en8yanOFtUW0qNzyw==", 3527 | "dev": true, 3528 | "funding": [ 3529 | { 3530 | "type": "opencollective", 3531 | "url": "https://opencollective.com/stylelint" 3532 | }, 3533 | { 3534 | "type": "github", 3535 | "url": "https://github.com/sponsors/stylelint" 3536 | } 3537 | ], 3538 | "license": "MIT", 3539 | "dependencies": { 3540 | "stylelint-config-recommended": "^14.0.1" 3541 | }, 3542 | "engines": { 3543 | "node": ">=18.12.0" 3544 | }, 3545 | "peerDependencies": { 3546 | "stylelint": "^16.1.0" 3547 | } 3548 | }, 3549 | "node_modules/stylelint-config-standard-scss": { 3550 | "version": "14.0.0", 3551 | "resolved": "https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-14.0.0.tgz", 3552 | "integrity": "sha512-6Pa26D9mHyi4LauJ83ls3ELqCglU6VfCXchovbEqQUiEkezvKdv6VgsIoMy58i00c854wVmOw0k8W5FTpuaVqg==", 3553 | "dev": true, 3554 | "license": "MIT", 3555 | "dependencies": { 3556 | "stylelint-config-recommended-scss": "^14.1.0", 3557 | "stylelint-config-standard": "^36.0.1" 3558 | }, 3559 | "engines": { 3560 | "node": ">=18.12.0" 3561 | }, 3562 | "peerDependencies": { 3563 | "postcss": "^8.3.3", 3564 | "stylelint": "^16.11.0" 3565 | }, 3566 | "peerDependenciesMeta": { 3567 | "postcss": { 3568 | "optional": true 3569 | } 3570 | } 3571 | }, 3572 | "node_modules/stylelint-scss": { 3573 | "version": "6.11.0", 3574 | "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.11.0.tgz", 3575 | "integrity": "sha512-AvJ6LVzz2iXHxPlPTR9WVy73FC/vmohH54VySNlCKX1NIXNAeuzy/VbIkMJLMyw/xKYqkgY4kAgB+qy5BfCaCg==", 3576 | "dev": true, 3577 | "license": "MIT", 3578 | "dependencies": { 3579 | "css-tree": "^3.0.1", 3580 | "is-plain-object": "^5.0.0", 3581 | "known-css-properties": "^0.35.0", 3582 | "mdn-data": "^2.15.0", 3583 | "postcss-media-query-parser": "^0.2.3", 3584 | "postcss-resolve-nested-selector": "^0.1.6", 3585 | "postcss-selector-parser": "^7.0.0", 3586 | "postcss-value-parser": "^4.2.0" 3587 | }, 3588 | "engines": { 3589 | "node": ">=18.12.0" 3590 | }, 3591 | "peerDependencies": { 3592 | "stylelint": "^16.0.2" 3593 | } 3594 | }, 3595 | "node_modules/stylelint-scss/node_modules/mdn-data": { 3596 | "version": "2.15.0", 3597 | "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.15.0.tgz", 3598 | "integrity": "sha512-KIrS0lFPOqA4DgeO16vI5fkAsy8p++WBlbXtB5P1EQs8ubBgguAInNd1DnrCeTRfGchY0kgThgDOOIPyOLH2dQ==", 3599 | "dev": true, 3600 | "license": "CC0-1.0" 3601 | }, 3602 | "node_modules/stylelint/node_modules/balanced-match": { 3603 | "version": "2.0.0", 3604 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", 3605 | "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", 3606 | "dev": true, 3607 | "license": "MIT" 3608 | }, 3609 | "node_modules/stylelint/node_modules/file-entry-cache": { 3610 | "version": "10.0.6", 3611 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-10.0.6.tgz", 3612 | "integrity": "sha512-0wvv16mVo9nN0Md3k7DMjgAPKG/TY4F/gYMBVb/wMThFRJvzrpaqBFqF6km9wf8QfYTN+mNg5aeaBLfy8k35uA==", 3613 | "dev": true, 3614 | "license": "MIT", 3615 | "dependencies": { 3616 | "flat-cache": "^6.1.6" 3617 | } 3618 | }, 3619 | "node_modules/stylelint/node_modules/flat-cache": { 3620 | "version": "6.1.6", 3621 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.6.tgz", 3622 | "integrity": "sha512-F+CKgSwp0pzLx67u+Zy1aCueVWFAHWbXepvXlZ+bWVTaASbm5SyCnSJ80Fp1ePEmS57wU+Bf6cx6525qtMZ4lQ==", 3623 | "dev": true, 3624 | "license": "MIT", 3625 | "dependencies": { 3626 | "cacheable": "^1.8.8", 3627 | "flatted": "^3.3.2", 3628 | "hookified": "^1.7.0" 3629 | } 3630 | }, 3631 | "node_modules/stylelint/node_modules/ignore": { 3632 | "version": "7.0.3", 3633 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.3.tgz", 3634 | "integrity": "sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA==", 3635 | "dev": true, 3636 | "license": "MIT", 3637 | "engines": { 3638 | "node": ">= 4" 3639 | } 3640 | }, 3641 | "node_modules/stylelint/node_modules/resolve-from": { 3642 | "version": "5.0.0", 3643 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", 3644 | "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", 3645 | "dev": true, 3646 | "license": "MIT", 3647 | "engines": { 3648 | "node": ">=8" 3649 | } 3650 | }, 3651 | "node_modules/supports-color": { 3652 | "version": "7.2.0", 3653 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 3654 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 3655 | "dev": true, 3656 | "license": "MIT", 3657 | "dependencies": { 3658 | "has-flag": "^4.0.0" 3659 | }, 3660 | "engines": { 3661 | "node": ">=8" 3662 | } 3663 | }, 3664 | "node_modules/supports-hyperlinks": { 3665 | "version": "3.2.0", 3666 | "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.2.0.tgz", 3667 | "integrity": "sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==", 3668 | "dev": true, 3669 | "license": "MIT", 3670 | "dependencies": { 3671 | "has-flag": "^4.0.0", 3672 | "supports-color": "^7.0.0" 3673 | }, 3674 | "engines": { 3675 | "node": ">=14.18" 3676 | }, 3677 | "funding": { 3678 | "url": "https://github.com/chalk/supports-hyperlinks?sponsor=1" 3679 | } 3680 | }, 3681 | "node_modules/svg-tags": { 3682 | "version": "1.0.0", 3683 | "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", 3684 | "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", 3685 | "dev": true 3686 | }, 3687 | "node_modules/table": { 3688 | "version": "6.9.0", 3689 | "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", 3690 | "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", 3691 | "dev": true, 3692 | "license": "BSD-3-Clause", 3693 | "dependencies": { 3694 | "ajv": "^8.0.1", 3695 | "lodash.truncate": "^4.4.2", 3696 | "slice-ansi": "^4.0.0", 3697 | "string-width": "^4.2.3", 3698 | "strip-ansi": "^6.0.1" 3699 | }, 3700 | "engines": { 3701 | "node": ">=10.0.0" 3702 | } 3703 | }, 3704 | "node_modules/table/node_modules/ajv": { 3705 | "version": "8.17.1", 3706 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", 3707 | "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", 3708 | "dev": true, 3709 | "license": "MIT", 3710 | "dependencies": { 3711 | "fast-deep-equal": "^3.1.3", 3712 | "fast-uri": "^3.0.1", 3713 | "json-schema-traverse": "^1.0.0", 3714 | "require-from-string": "^2.0.2" 3715 | }, 3716 | "funding": { 3717 | "type": "github", 3718 | "url": "https://github.com/sponsors/epoberezkin" 3719 | } 3720 | }, 3721 | "node_modules/table/node_modules/json-schema-traverse": { 3722 | "version": "1.0.0", 3723 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", 3724 | "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", 3725 | "dev": true, 3726 | "license": "MIT" 3727 | }, 3728 | "node_modules/terser": { 3729 | "version": "5.39.0", 3730 | "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz", 3731 | "integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==", 3732 | "dev": true, 3733 | "license": "BSD-2-Clause", 3734 | "dependencies": { 3735 | "@jridgewell/source-map": "^0.3.3", 3736 | "acorn": "^8.8.2", 3737 | "commander": "^2.20.0", 3738 | "source-map-support": "~0.5.20" 3739 | }, 3740 | "bin": { 3741 | "terser": "bin/terser" 3742 | }, 3743 | "engines": { 3744 | "node": ">=10" 3745 | } 3746 | }, 3747 | "node_modules/test-exclude": { 3748 | "version": "7.0.1", 3749 | "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz", 3750 | "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==", 3751 | "dev": true, 3752 | "license": "ISC", 3753 | "dependencies": { 3754 | "@istanbuljs/schema": "^0.1.2", 3755 | "glob": "^10.4.1", 3756 | "minimatch": "^9.0.4" 3757 | }, 3758 | "engines": { 3759 | "node": ">=18" 3760 | } 3761 | }, 3762 | "node_modules/test-exclude/node_modules/brace-expansion": { 3763 | "version": "2.0.1", 3764 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 3765 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 3766 | "dev": true, 3767 | "license": "MIT", 3768 | "dependencies": { 3769 | "balanced-match": "^1.0.0" 3770 | } 3771 | }, 3772 | "node_modules/test-exclude/node_modules/minimatch": { 3773 | "version": "9.0.5", 3774 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", 3775 | "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", 3776 | "dev": true, 3777 | "license": "ISC", 3778 | "dependencies": { 3779 | "brace-expansion": "^2.0.1" 3780 | }, 3781 | "engines": { 3782 | "node": ">=16 || 14 >=14.17" 3783 | }, 3784 | "funding": { 3785 | "url": "https://github.com/sponsors/isaacs" 3786 | } 3787 | }, 3788 | "node_modules/to-regex-range": { 3789 | "version": "5.0.1", 3790 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 3791 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 3792 | "dev": true, 3793 | "license": "MIT", 3794 | "dependencies": { 3795 | "is-number": "^7.0.0" 3796 | }, 3797 | "engines": { 3798 | "node": ">=8.0" 3799 | } 3800 | }, 3801 | "node_modules/ts-api-utils": { 3802 | "version": "2.0.1", 3803 | "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.1.tgz", 3804 | "integrity": "sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==", 3805 | "dev": true, 3806 | "license": "MIT", 3807 | "engines": { 3808 | "node": ">=18.12" 3809 | }, 3810 | "peerDependencies": { 3811 | "typescript": ">=4.8.4" 3812 | } 3813 | }, 3814 | "node_modules/type-check": { 3815 | "version": "0.4.0", 3816 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 3817 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 3818 | "dev": true, 3819 | "license": "MIT", 3820 | "dependencies": { 3821 | "prelude-ls": "^1.2.1" 3822 | }, 3823 | "engines": { 3824 | "node": ">= 0.8.0" 3825 | } 3826 | }, 3827 | "node_modules/typescript": { 3828 | "version": "5.7.3", 3829 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", 3830 | "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", 3831 | "dev": true, 3832 | "license": "Apache-2.0", 3833 | "bin": { 3834 | "tsc": "bin/tsc", 3835 | "tsserver": "bin/tsserver" 3836 | }, 3837 | "engines": { 3838 | "node": ">=14.17" 3839 | } 3840 | }, 3841 | "node_modules/typescript-eslint": { 3842 | "version": "8.24.0", 3843 | "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.24.0.tgz", 3844 | "integrity": "sha512-/lmv4366en/qbB32Vz5+kCNZEMf6xYHwh1z48suBwZvAtnXKbP+YhGe8OLE2BqC67LMqKkCNLtjejdwsdW6uOQ==", 3845 | "dev": true, 3846 | "license": "MIT", 3847 | "dependencies": { 3848 | "@typescript-eslint/eslint-plugin": "8.24.0", 3849 | "@typescript-eslint/parser": "8.24.0", 3850 | "@typescript-eslint/utils": "8.24.0" 3851 | }, 3852 | "engines": { 3853 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 3854 | }, 3855 | "funding": { 3856 | "type": "opencollective", 3857 | "url": "https://opencollective.com/typescript-eslint" 3858 | }, 3859 | "peerDependencies": { 3860 | "eslint": "^8.57.0 || ^9.0.0", 3861 | "typescript": ">=4.8.4 <5.8.0" 3862 | } 3863 | }, 3864 | "node_modules/undici-types": { 3865 | "version": "6.20.0", 3866 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", 3867 | "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", 3868 | "dev": true, 3869 | "license": "MIT" 3870 | }, 3871 | "node_modules/uri-js": { 3872 | "version": "4.4.1", 3873 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 3874 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 3875 | "dev": true, 3876 | "license": "BSD-2-Clause", 3877 | "dependencies": { 3878 | "punycode": "^2.1.0" 3879 | } 3880 | }, 3881 | "node_modules/util-deprecate": { 3882 | "version": "1.0.2", 3883 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 3884 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", 3885 | "dev": true, 3886 | "license": "MIT" 3887 | }, 3888 | "node_modules/v8-to-istanbul": { 3889 | "version": "9.3.0", 3890 | "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", 3891 | "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", 3892 | "dev": true, 3893 | "license": "ISC", 3894 | "dependencies": { 3895 | "@jridgewell/trace-mapping": "^0.3.12", 3896 | "@types/istanbul-lib-coverage": "^2.0.1", 3897 | "convert-source-map": "^2.0.0" 3898 | }, 3899 | "engines": { 3900 | "node": ">=10.12.0" 3901 | } 3902 | }, 3903 | "node_modules/which": { 3904 | "version": "2.0.2", 3905 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 3906 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 3907 | "dev": true, 3908 | "license": "ISC", 3909 | "dependencies": { 3910 | "isexe": "^2.0.0" 3911 | }, 3912 | "bin": { 3913 | "node-which": "bin/node-which" 3914 | }, 3915 | "engines": { 3916 | "node": ">= 8" 3917 | } 3918 | }, 3919 | "node_modules/word-wrap": { 3920 | "version": "1.2.5", 3921 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", 3922 | "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", 3923 | "dev": true, 3924 | "license": "MIT", 3925 | "engines": { 3926 | "node": ">=0.10.0" 3927 | } 3928 | }, 3929 | "node_modules/wrap-ansi": { 3930 | "version": "8.1.0", 3931 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", 3932 | "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", 3933 | "dev": true, 3934 | "license": "MIT", 3935 | "dependencies": { 3936 | "ansi-styles": "^6.1.0", 3937 | "string-width": "^5.0.1", 3938 | "strip-ansi": "^7.0.1" 3939 | }, 3940 | "engines": { 3941 | "node": ">=12" 3942 | }, 3943 | "funding": { 3944 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 3945 | } 3946 | }, 3947 | "node_modules/wrap-ansi-cjs": { 3948 | "name": "wrap-ansi", 3949 | "version": "7.0.0", 3950 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 3951 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 3952 | "dev": true, 3953 | "license": "MIT", 3954 | "dependencies": { 3955 | "ansi-styles": "^4.0.0", 3956 | "string-width": "^4.1.0", 3957 | "strip-ansi": "^6.0.0" 3958 | }, 3959 | "engines": { 3960 | "node": ">=10" 3961 | }, 3962 | "funding": { 3963 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 3964 | } 3965 | }, 3966 | "node_modules/wrap-ansi/node_modules/ansi-regex": { 3967 | "version": "6.1.0", 3968 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", 3969 | "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", 3970 | "dev": true, 3971 | "license": "MIT", 3972 | "engines": { 3973 | "node": ">=12" 3974 | }, 3975 | "funding": { 3976 | "url": "https://github.com/chalk/ansi-regex?sponsor=1" 3977 | } 3978 | }, 3979 | "node_modules/wrap-ansi/node_modules/ansi-styles": { 3980 | "version": "6.2.1", 3981 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", 3982 | "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", 3983 | "dev": true, 3984 | "license": "MIT", 3985 | "engines": { 3986 | "node": ">=12" 3987 | }, 3988 | "funding": { 3989 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 3990 | } 3991 | }, 3992 | "node_modules/wrap-ansi/node_modules/emoji-regex": { 3993 | "version": "9.2.2", 3994 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", 3995 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", 3996 | "dev": true, 3997 | "license": "MIT" 3998 | }, 3999 | "node_modules/wrap-ansi/node_modules/string-width": { 4000 | "version": "5.1.2", 4001 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", 4002 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", 4003 | "dev": true, 4004 | "license": "MIT", 4005 | "dependencies": { 4006 | "eastasianwidth": "^0.2.0", 4007 | "emoji-regex": "^9.2.2", 4008 | "strip-ansi": "^7.0.1" 4009 | }, 4010 | "engines": { 4011 | "node": ">=12" 4012 | }, 4013 | "funding": { 4014 | "url": "https://github.com/sponsors/sindresorhus" 4015 | } 4016 | }, 4017 | "node_modules/wrap-ansi/node_modules/strip-ansi": { 4018 | "version": "7.1.0", 4019 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", 4020 | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", 4021 | "dev": true, 4022 | "license": "MIT", 4023 | "dependencies": { 4024 | "ansi-regex": "^6.0.1" 4025 | }, 4026 | "engines": { 4027 | "node": ">=12" 4028 | }, 4029 | "funding": { 4030 | "url": "https://github.com/chalk/strip-ansi?sponsor=1" 4031 | } 4032 | }, 4033 | "node_modules/write-file-atomic": { 4034 | "version": "5.0.1", 4035 | "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", 4036 | "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", 4037 | "dev": true, 4038 | "license": "ISC", 4039 | "dependencies": { 4040 | "imurmurhash": "^0.1.4", 4041 | "signal-exit": "^4.0.1" 4042 | }, 4043 | "engines": { 4044 | "node": "^14.17.0 || ^16.13.0 || >=18.0.0" 4045 | } 4046 | }, 4047 | "node_modules/ws": { 4048 | "version": "8.18.0", 4049 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", 4050 | "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", 4051 | "dev": true, 4052 | "license": "MIT", 4053 | "engines": { 4054 | "node": ">=10.0.0" 4055 | }, 4056 | "peerDependencies": { 4057 | "bufferutil": "^4.0.1", 4058 | "utf-8-validate": ">=5.0.2" 4059 | }, 4060 | "peerDependenciesMeta": { 4061 | "bufferutil": { 4062 | "optional": true 4063 | }, 4064 | "utf-8-validate": { 4065 | "optional": true 4066 | } 4067 | } 4068 | }, 4069 | "node_modules/y18n": { 4070 | "version": "5.0.8", 4071 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 4072 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 4073 | "dev": true, 4074 | "license": "ISC", 4075 | "engines": { 4076 | "node": ">=10" 4077 | } 4078 | }, 4079 | "node_modules/yargs": { 4080 | "version": "17.7.2", 4081 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", 4082 | "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", 4083 | "dev": true, 4084 | "license": "MIT", 4085 | "dependencies": { 4086 | "cliui": "^8.0.1", 4087 | "escalade": "^3.1.1", 4088 | "get-caller-file": "^2.0.5", 4089 | "require-directory": "^2.1.1", 4090 | "string-width": "^4.2.3", 4091 | "y18n": "^5.0.5", 4092 | "yargs-parser": "^21.1.1" 4093 | }, 4094 | "engines": { 4095 | "node": ">=12" 4096 | } 4097 | }, 4098 | "node_modules/yargs-parser": { 4099 | "version": "21.1.1", 4100 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", 4101 | "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", 4102 | "dev": true, 4103 | "license": "ISC", 4104 | "engines": { 4105 | "node": ">=12" 4106 | } 4107 | }, 4108 | "node_modules/yocto-queue": { 4109 | "version": "0.1.0", 4110 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 4111 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 4112 | "dev": true, 4113 | "license": "MIT", 4114 | "engines": { 4115 | "node": ">=10" 4116 | }, 4117 | "funding": { 4118 | "url": "https://github.com/sponsors/sindresorhus" 4119 | } 4120 | } 4121 | } 4122 | } 4123 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vanilla-prime", 3 | "version": "1.0.0", 4 | "description": "A simpler, more sustainable way of web development", 5 | "keywords": [ 6 | "css", 7 | "dom", 8 | "html", 9 | "vanilla", 10 | "web" 11 | ], 12 | "author": "Morris Brodersen ", 13 | "license": "ISC", 14 | "type": "module", 15 | "engines": { 16 | "node": ">=20" 17 | }, 18 | "scripts": { 19 | "build": "bash scripts/build.sh", 20 | "clean": "bash scripts/clean.sh", 21 | "dev": "bash scripts/dev.sh", 22 | "format": "prettier . --write", 23 | "format-check": "prettier . --check", 24 | "lint": "eslint .", 25 | "lint-css": "stylelint src/css/*.scss", 26 | "test": "playwright test --project Chromium", 27 | "test-coverage": "bash scripts/test-coverage.sh", 28 | "test-e2e": "playwright test", 29 | "test-ui": "playwright test --ui", 30 | "vendor": "bash scripts/vendor.sh" 31 | }, 32 | "devDependencies": { 33 | "@eslint/js": "^9.9.0", 34 | "@playwright/test": "^1.30.0", 35 | "@types/eslint__js": "^8.42.3", 36 | "@types/node": "^22.13.4", 37 | "c8": "^10.1.2", 38 | "cbst": "^2.0.0", 39 | "eslint": "^9.9.0", 40 | "exdom": "^2.0.0", 41 | "prettier": "^3.0.2", 42 | "s4d": "^0.2.0", 43 | "sass": "^1.58.3", 44 | "stylelint": "^16.7.0", 45 | "stylelint-config-standard-scss": "^14.0.0", 46 | "terser": "^5.31.1", 47 | "typescript": "^5.0.4", 48 | "typescript-eslint": "^8.2.0" 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /playwright.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig, devices } from '@playwright/test'; 2 | 3 | export default defineConfig({ 4 | workers: process.env.CI ? 1 : undefined, 5 | ignoreSnapshots: !!process.env.CI, 6 | projects: [ 7 | { 8 | name: 'Chromium', 9 | use: { ...devices['Desktop Chrome'] }, 10 | // Includes unit tests 11 | }, 12 | { 13 | name: 'Firefox', 14 | use: { ...devices['Desktop Firefox'] }, 15 | testMatch: /e2e/, 16 | }, 17 | { 18 | name: 'Safari', 19 | use: { ...devices['Desktop Safari'] }, 20 | testMatch: /e2e/, 21 | }, 22 | { 23 | name: 'Mobile Chrome', 24 | use: { ...devices['Pixel 5'] }, 25 | testMatch: /e2e/, 26 | }, 27 | { 28 | name: 'Mobile Safari', 29 | use: { ...devices['iPhone 12'] }, 30 | testMatch: /e2e/, 31 | }, 32 | { 33 | name: 'Google Chrome', 34 | use: { ...devices['Desktop Chrome'], channel: 'chrome' }, 35 | testMatch: /e2e/, 36 | }, 37 | { 38 | name: 'Microsoft Edge', 39 | use: { ...devices['Desktop Edge'], channel: 'msedge' }, 40 | testMatch: /e2e/, 41 | }, 42 | ], 43 | }); 44 | -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Vanilla Prime 8 | 9 | 13 | 14 | 15 | 16 | 17 |
18 |

Vanilla Prime

19 |

A simpler way of web development

20 | 23 |
24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /scripts/build.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -o errexit 3 | set -o nounset 4 | set -o pipefail 5 | set -x 6 | 7 | rm -rf build dist 8 | mkdir -p build 9 | 10 | bash scripts/vendor.sh 11 | 12 | cp -R public/index.html build 13 | tsc --project tsconfig.build.json 14 | sass --no-source-map --style=compressed src/css/main.scss build/css/main.css 15 | 16 | bash scripts/minify.sh 17 | cbst build dist 18 | -------------------------------------------------------------------------------- /scripts/clean.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -o errexit 3 | set -o nounset 4 | set -o pipefail 5 | set -x 6 | 7 | rm -rf build coverage dist public/js public/css src/js/vendor 8 | -------------------------------------------------------------------------------- /scripts/dev.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -o errexit 3 | set -o nounset 4 | set -o pipefail 5 | set -x 6 | 7 | bash scripts/vendor.sh 8 | 9 | (trap 'kill 0' SIGINT; \ 10 | tsc --project tsconfig.dev.json --watch --preserveWatchOutput & \ 11 | sass --no-source-map --watch src/css/main.scss public/css/main.css & \ 12 | s4d --spa public & \ 13 | wait) 14 | -------------------------------------------------------------------------------- /scripts/minify.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -o errexit 3 | set -o nounset 4 | set -o pipefail 5 | 6 | for file in $(find build -name '*.js') 7 | do 8 | terser $file --compress --mangle --output $file 9 | done 10 | -------------------------------------------------------------------------------- /scripts/test-coverage.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -o errexit 3 | set -o nounset 4 | set -o pipefail 5 | set -x 6 | 7 | rm -rf coverage 8 | c8 --include src --include public --exclude '**/vendor/**' \ 9 | --reporter text --reporter lcov \ 10 | playwright test --project Chromium 11 | -------------------------------------------------------------------------------- /scripts/vendor.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -o errexit 3 | set -o nounset 4 | set -o pipefail 5 | set -x 6 | 7 | rm -rf src/js/vendor 8 | mkdir -p src/js/vendor 9 | 10 | cp node_modules/exdom/dist/exdom.js src/js/vendor/exdom.js 11 | echo "export * from 'exdom';" > src/js/vendor/exdom.d.ts 12 | -------------------------------------------------------------------------------- /src/css/main.scss: -------------------------------------------------------------------------------- 1 | html { 2 | box-sizing: border-box; 3 | } 4 | 5 | *, 6 | *::before, 7 | *::after { 8 | box-sizing: inherit; 9 | } 10 | 11 | body { 12 | margin: 0; 13 | padding: 0; 14 | } 15 | 16 | html, 17 | body { 18 | background: #000; 19 | color: #fff; 20 | } 21 | 22 | .splash-screen { 23 | font-size: 12px; 24 | font-family: 'Times New Roman', Times, serif; 25 | background: #000; 26 | color: #fff; 27 | transition: 28 | color ease-out 0.2s, 29 | background-color ease-out 0.2s; 30 | user-select: none; 31 | display: flex; 32 | flex-direction: column; 33 | justify-content: center; 34 | padding: 4em; 35 | text-align: center; 36 | position: absolute; 37 | inset: 0; 38 | 39 | a { 40 | color: inherit; 41 | text-decoration: none; 42 | animation: pulse 1.5s infinite; 43 | 44 | @keyframes pulse { 45 | 0% { 46 | opacity: 1; 47 | } 48 | 49 | 50% { 50 | opacity: 0.25; 51 | } 52 | 53 | 100% { 54 | opacity: 1; 55 | } 56 | } 57 | } 58 | 59 | > .title { 60 | margin: 0; 61 | font-size: 4em; 62 | font-weight: bold; 63 | line-height: 1.25em; 64 | letter-spacing: 0.15em; 65 | word-spacing: 0.35em; 66 | text-transform: uppercase; 67 | transform: scale(1, 0.9); 68 | } 69 | 70 | > .claim { 71 | margin: 1em 0; 72 | font-size: 1.15em; 73 | line-height: 1.5em; 74 | letter-spacing: 0.15em; 75 | word-spacing: 0.35em; 76 | text-transform: uppercase; 77 | transform: scale(1, 1.5); 78 | 79 | &::before { 80 | content: '— '; 81 | } 82 | 83 | &::after { 84 | content: ' —'; 85 | } 86 | } 87 | 88 | > .link { 89 | margin: 1em 0; 90 | line-height: 1.5em; 91 | letter-spacing: 0.45em; 92 | word-spacing: 0.35em; 93 | transform: scale(1, 1.2); 94 | text-transform: uppercase; 95 | } 96 | 97 | @media screen and (width >= 400px) { 98 | font-size: 14px; 99 | } 100 | 101 | @media screen and (width >= 700px) { 102 | font-size: 16px; 103 | } 104 | 105 | @media screen and (width >= 1000px) { 106 | font-size: 20px; 107 | } 108 | } 109 | -------------------------------------------------------------------------------- /src/js/main.ts: -------------------------------------------------------------------------------- 1 | import { qsa } from './vendor/exdom.js'; 2 | 3 | const COLORS = ['#FFF', '#FFDC00', '#39CCCC', '#F012BE', '#01FF70', '#7FDBFF']; 4 | const BACKGROUNDS = ['#000', '#FF4136', '#0074D9', '#85144B', '#001F3F']; 5 | 6 | export function getDesign(index: number) { 7 | const color = COLORS[index % COLORS.length]; 8 | const background = BACKGROUNDS[index % BACKGROUNDS.length]; 9 | 10 | return { color, background }; 11 | } 12 | 13 | export function SplashScreen(el: HTMLElement) { 14 | let index = 0; 15 | let timeout = setTimeout(setNextDesign, 2500); 16 | 17 | function setNextDesign() { 18 | index = index + 1; 19 | update(); 20 | 21 | clearTimeout(timeout); 22 | timeout = setTimeout(setNextDesign, 5000); 23 | } 24 | 25 | function update() { 26 | const { color, background } = getDesign(index); 27 | 28 | el.style.color = color; 29 | el.style.background = background; 30 | } 31 | 32 | el.addEventListener('click', setNextDesign); 33 | 34 | update(); 35 | } 36 | 37 | if (typeof document !== 'undefined') { 38 | qsa(document, '.splash-screen').forEach(SplashScreen); 39 | } 40 | -------------------------------------------------------------------------------- /test/coverage.ts: -------------------------------------------------------------------------------- 1 | import { test } from '@playwright/test'; 2 | import crypto from 'node:crypto'; 3 | import fs from 'node:fs'; 4 | import path from 'node:path'; 5 | 6 | // TODO Could this be a package? 7 | 8 | // See also https://playwright.dev/docs/api/class-coverage 9 | 10 | const publicDir = 'public'; 11 | const coverageDir = process.env.NODE_V8_COVERAGE; 12 | 13 | if (coverageDir) { 14 | test.beforeEach(async ({ page }) => { 15 | try { 16 | await page.coverage.startJSCoverage(); 17 | } catch { 18 | // ignore 19 | } 20 | }); 21 | 22 | test.afterEach(async ({ page }) => { 23 | try { 24 | const coverage = await page.coverage.stopJSCoverage(); 25 | 26 | const output = { 27 | result: coverage.map((entry) => ({ 28 | ...entry, 29 | url: entry.url.replace( 30 | /https?:\/\/localhost:\d+/, 31 | `file://${path.resolve(publicDir)}`, 32 | ), 33 | })), 34 | }; 35 | 36 | await fs.promises.mkdir(coverageDir, { recursive: true }); 37 | await fs.promises.writeFile( 38 | path.join(coverageDir, `coverage-${crypto.randomUUID()}.json`), 39 | JSON.stringify(output), 40 | ); 41 | } catch { 42 | // ignore 43 | } 44 | }); 45 | } 46 | -------------------------------------------------------------------------------- /test/e2e/e2e.test.ts: -------------------------------------------------------------------------------- 1 | import { expect, test } from '@playwright/test'; 2 | import '../coverage.js'; 3 | 4 | test('Splash screen changes color on click', async ({ page }) => { 5 | await page.goto('http://localhost:8080'); 6 | 7 | await expect(page.locator('.splash-screen')).toHaveCSS( 8 | 'color', 9 | 'rgb(255, 255, 255)', 10 | ); 11 | 12 | await page.click('.splash-screen h1'); 13 | 14 | await expect(page.locator('.splash-screen')).toHaveCSS( 15 | 'color', 16 | 'rgb(255, 220, 0)', 17 | ); 18 | }); 19 | -------------------------------------------------------------------------------- /test/js/main.test.ts: -------------------------------------------------------------------------------- 1 | import { expect, test } from '@playwright/test'; 2 | import { getDesign } from '../../src/js/main.js'; 3 | 4 | test('getDesign works', () => { 5 | expect(getDesign(0)).toEqual({ color: '#FFF', background: '#000' }); 6 | expect(getDesign(1)).toEqual({ color: '#FFDC00', background: '#FF4136' }); 7 | }); 8 | -------------------------------------------------------------------------------- /tsconfig.build.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "include": ["src"], 4 | "compilerOptions": { 5 | "rootDir": "src", 6 | 7 | "target": "ES6", 8 | "declaration": false, 9 | "sourceMap": false, 10 | 11 | "outDir": "build", 12 | "noEmit": false 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /tsconfig.dev.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "include": ["src"], 4 | "compilerOptions": { 5 | "rootDir": "src", 6 | 7 | "target": "ES6", 8 | "declaration": false, 9 | "sourceMap": null, 10 | "inlineSourceMap": true, 11 | "inlineSources": true, 12 | 13 | "outDir": "public", 14 | "noEmit": false 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "include": ["src", "test"], 3 | "compilerOptions": { 4 | "moduleResolution": "nodenext", 5 | "esModuleInterop": true, 6 | "allowJs": true, 7 | 8 | "strict": true, 9 | "noUnusedLocals": true, 10 | 11 | "target": "ES2020", 12 | "module": "NodeNext", 13 | "sourceMap": true, 14 | "declaration": true, 15 | 16 | "noEmit": true 17 | } 18 | } 19 | --------------------------------------------------------------------------------