├── .circleci └── config.yml ├── .git2gus └── config.json ├── .gitignore ├── .husky └── pre-commit ├── .npmrc ├── CODEOWNERS ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── base-ts.js ├── base.js ├── eslint.config.js ├── extended-ts.js ├── extended.js ├── i18n-ts.js ├── i18n.js ├── index.js ├── lib ├── defaults.js └── typescript.js ├── package.json ├── recommended-ts.js ├── recommended.js ├── ssr-ts.js ├── ssr.js ├── test ├── base.js ├── extended.js ├── i18n.js ├── recommended.js ├── ssr.js └── utils.js └── yarn.lock /.circleci/config.yml: -------------------------------------------------------------------------------- 1 | version: 2.1 2 | 3 | supported-eslint-versions: &supported-eslint-versions ['local'] 4 | 5 | executors: 6 | node: 7 | working_directory: ~/eslint-config-lwc 8 | docker: 9 | - image: cimg/node:20.12.2 10 | 11 | commands: 12 | save_yarn_cache: 13 | description: Save Yarn cache for future build 14 | steps: 15 | - save_cache: 16 | key: v1-yarn-deps-{{ checksum "yarn.lock" }} 17 | paths: 18 | - ~/.cache/yarn 19 | 20 | restore_yarn_cache: 21 | description: Restore Yarn cache from previous build 22 | steps: 23 | - restore_cache: 24 | keys: 25 | - v1-yarn-deps-{{ checksum "yarn.lock" }} 26 | 27 | jobs: 28 | build: 29 | executor: node 30 | parameters: 31 | eslint-version: 32 | type: string 33 | description: > 34 | Overrides the installed version of ESLint. When set to "local" the version of ESLint set 35 | frozen in the yarn.lock is used. 36 | default: 'local' 37 | 38 | steps: 39 | - checkout 40 | - restore_yarn_cache 41 | - run: 42 | name: Install dependencies and build 43 | command: yarn install --frozen-lockfile 44 | 45 | - save_yarn_cache 46 | - when: 47 | condition: 48 | not: 49 | equal: [<>, 'local'] 50 | steps: 51 | - run: 52 | name: Override version of eslint@<> 53 | command: yarn add eslint@<> --dev 54 | - run: 55 | name: Check formatting 56 | command: yarn format:check 57 | - run: 58 | name: Run linter 59 | command: yarn lint 60 | - run: 61 | name: Run unit tests 62 | command: yarn test 63 | 64 | workflows: 65 | build_and_test: 66 | jobs: 67 | - build: 68 | matrix: 69 | parameters: 70 | eslint-version: *supported-eslint-versions 71 | -------------------------------------------------------------------------------- /.git2gus/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "productTag": "a1aB0000000g309IAA", 3 | "defaultBuild": "226", 4 | "hideWorkItemUrl": true 5 | } 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | *.log -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | yarn lint-staged 2 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | registry=https://registry.yarnpkg.com/ -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | # Comment line immediately above ownership line is reserved for related gus information. Please be careful while editing. 2 | #ECCN:Open Source 3 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Salesforce Open Source Community Code of Conduct 2 | 3 | ## About the Code of Conduct 4 | 5 | Equality is a core value at Salesforce. We believe a diverse and inclusive 6 | community fosters innovation and creativity, and are committed to building a 7 | culture where everyone feels included. 8 | 9 | Salesforce open-source projects are committed to providing a friendly, safe, and 10 | welcoming environment for all, regardless of gender identity and expression, 11 | sexual orientation, disability, physical appearance, body size, ethnicity, nationality, 12 | race, age, religion, level of experience, education, socioeconomic status, or 13 | other similar personal characteristics. 14 | 15 | The goal of this code of conduct is to specify a baseline standard of behavior so 16 | that people with different social values and communication styles can work 17 | together effectively, productively, and respectfully in our open source community. 18 | It also establishes a mechanism for reporting issues and resolving conflicts. 19 | 20 | All questions and reports of abusive, harassing, or otherwise unacceptable behavior 21 | in a Salesforce open-source project may be reported by contacting the Salesforce 22 | Open Source Conduct Committee at ossconduct@salesforce.com. 23 | 24 | ## Our Pledge 25 | 26 | In the interest of fostering an open and welcoming environment, we as 27 | contributors and maintainers pledge to making participation in our project and 28 | our community a harassment-free experience for everyone, regardless of gender 29 | identity and expression, sexual orientation, disability, physical appearance, 30 | body size, ethnicity, nationality, race, age, religion, level of experience, education, 31 | socioeconomic status, or other similar personal characteristics. 32 | 33 | ## Our Standards 34 | 35 | Examples of behavior that contributes to creating a positive environment 36 | include: 37 | 38 | - Using welcoming and inclusive language 39 | - Being respectful of differing viewpoints and experiences 40 | - Gracefully accepting constructive criticism 41 | - Focusing on what is best for the community 42 | - Showing empathy toward other community members 43 | 44 | Examples of unacceptable behavior by participants include: 45 | 46 | - The use of sexualized language or imagery and unwelcome sexual attention or 47 | advances 48 | - Personal attacks, insulting/derogatory comments, or trolling 49 | - Public or private harassment 50 | - Publishing, or threatening to publish, others' private information—such as 51 | a physical or electronic address—without explicit permission 52 | - Other conduct which could reasonably be considered inappropriate in a 53 | professional setting 54 | - Advocating for or encouraging any of the above behaviors 55 | 56 | ## Our Responsibilities 57 | 58 | Project maintainers are responsible for clarifying the standards of acceptable 59 | behavior and are expected to take appropriate and fair corrective action in 60 | response to any instances of unacceptable behavior. 61 | 62 | Project maintainers have the right and responsibility to remove, edit, or 63 | reject comments, commits, code, wiki edits, issues, and other contributions 64 | that are not aligned with this Code of Conduct, or to ban temporarily or 65 | permanently any contributor for other behaviors that they deem inappropriate, 66 | threatening, offensive, or harmful. 67 | 68 | ## Scope 69 | 70 | This Code of Conduct applies both within project spaces and in public spaces 71 | when an individual is representing the project or its community. Examples of 72 | representing a project or community include using an official project email 73 | address, posting via an official social media account, or acting as an appointed 74 | representative at an online or offline event. Representation of a project may be 75 | further defined and clarified by project maintainers. 76 | 77 | ## Enforcement 78 | 79 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 80 | reported by contacting the Salesforce Open Source Conduct Committee 81 | at ossconduct@salesforce.com. All complaints will be reviewed and investigated 82 | and will result in a response that is deemed necessary and appropriate to the 83 | circumstances. The committee is obligated to maintain confidentiality with 84 | regard to the reporter of an incident. Further details of specific enforcement 85 | policies may be posted separately. 86 | 87 | Project maintainers who do not follow or enforce the Code of Conduct in good 88 | faith may face temporary or permanent repercussions as determined by other 89 | members of the project's leadership and the Salesforce Open Source Conduct 90 | Committee. 91 | 92 | ## Attribution 93 | 94 | This Code of Conduct is adapted from the [Contributor Covenant][contributor-covenant-home], 95 | version 1.4, available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html. 96 | It includes adaptions and additions from [Go Community Code of Conduct][golang-coc], 97 | [CNCF Code of Conduct][cncf-coc], and [Microsoft Open Source Code of Conduct][microsoft-coc]. 98 | 99 | This Code of Conduct is licensed under the [Creative Commons Attribution 3.0 License][cc-by-3-us]. 100 | 101 | [contributor-covenant-home]: https://www.contributor-covenant.org 'https://www.contributor-covenant.org/' 102 | [golang-coc]: https://golang.org/conduct 103 | [cncf-coc]: https://github.com/cncf/foundation/blob/master/code-of-conduct.md 104 | [microsoft-coc]: https://opensource.microsoft.com/codeofconduct/ 105 | [cc-by-3-us]: https://creativecommons.org/licenses/by/3.0/us/ 106 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | Before contributing to this repository make sure to discuss first the intended changes either by creating a new issue and commenting an existing one. 4 | 5 | ## Useful commands 6 | 7 | Once the repository has been cloned you can run the following commands from the root directory. 8 | 9 | ```sh 10 | $ yarn install # install project dependencies 11 | $ yarn test # run test 12 | ``` 13 | 14 | ## Submitting code 15 | 16 | Any code change should be submitted as a pull request. The description should explain what the code does and give steps to execute it. The pull request should also contain tests. 17 | 18 | ## Review process 19 | 20 | The bigger the pull request, the longer it will take to review and merge. Try to break down large pull requests in smaller chunks that are easier to review and merge. Also make sure to reference the related issues in the pull request message if any. 21 | 22 | ## Eslint versions 23 | 24 | Salesforce currently supports both ESLint v8 and v9. All new rules must be written in both versions. The `master` branch is on ESLint v9, while ESLint v8 rules are maintained in the `eslint-v8` branch. 25 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT LICENSE 2 | 3 | Copyright (c) 2018, Salesforce.com, Inc. 4 | All rights reserved. 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 7 | 8 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 9 | 10 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # @salesforce/eslint-config-lwc 2 | 3 | > Opinionated ESLint configurations for Lightning Web Components (LWC) projects. 4 | 5 | ## Installation 6 | 7 | ```sh 8 | npm install --save-dev @salesforce/eslint-config-lwc @lwc/eslint-plugin-lwc @salesforce/eslint-plugin-lightning eslint-plugin-import eslint-plugin-jest 9 | ``` 10 | 11 | Note that `@lwc/eslint-plugin-lwc`, `@salesforce/eslint-plugin-lightning`, `eslint-plugin-import`, and `eslint-plugin-jest` are peer dependencies of `@salesforce/eslint-config-lwc`. 12 | 13 | ## Usage 14 | 15 | > [!IMPORTANT] 16 | > Starting with v4.0.0, @salesforce/eslint-config-lwc only supports `eslint@v9`. Use `@salesforce/eslint-config-lwc@v3.x` for older versions of eslint. 17 | 18 | This repo exports the configurations as an array of config objects. [Apply](https://eslint.org/docs/latest/use/configure/combine-configs#apply-a-config-array) the appropriate [configuration](#Configurations) into your configuration using the spread operator. 19 | 20 | Example of `eslint.config.js`: 21 | 22 | ```js 23 | const lwcConfig = require('@salesforce/eslint-config-lwc'); 24 | 25 | module.exports = [...lwcConfig.configs.recommended]; 26 | ``` 27 | 28 | For more details about configuration, please refer to the dedicated section in the ESLint documentation: https://eslint.org/docs/user-guide/configuring#using-a-shareable-configuration-package 29 | 30 | ### [Experimental] Usage with TypeScript 31 | 32 | To enable working with TypeScript projects, install `@babel/preset-typescript` as a dependency, and apply any of the TypeScript-enabled [configurations](#configurations) (any config ending in `Ts`). 33 | 34 | Note that these configs use [@babel/eslint-parser](https://www.npmjs.com/package/@babel/eslint-parser), and compatibility with [@typescript-eslint/parser](https://npmjs.com/package/@typescript-eslint/parser) is not guaranteed. 35 | 36 | > [!IMPORTANT] 37 | > While these configs are capable of parsing TypeScript files, not all rules support all TypeScript language features. For example, using type assertions (`variable as Type`) will break many rules. 38 | 39 | Example `eslint.config.js`: 40 | 41 | ```js 42 | const lwcConfig = require('@salesforce/eslint-config-lwc'); 43 | 44 | module.exports = [...lwcConfig.configs.recommendedTs]; 45 | ``` 46 | 47 | ## Configurations 48 | 49 | This package exposes multiple configurations for your usage. Each configuration listed below is available for both JavaScript projects and TypeScript projects (when using `Ts` suffix). 50 | 51 | ### Base 52 | 53 | **Goal:** 54 | Prevent common pitfalls with LWC, and enforce other Salesforce platform restrictions. 55 | 56 | **Rules:** 57 | [_LWC specific rules_](https://github.com/salesforce/eslint-plugin-lwc/blob/master/README.md#lwc) only. 58 | 59 | **Usage:** 60 | 61 | ```js 62 | // eslint.config.js 63 | const lwcConfig = require('@salesforce/eslint-config-lwc'); 64 | 65 | module.exports = [...lwcConfig.configs.base]; 66 | ``` 67 | 68 | **TypeScript:** Use `configs.baseTs` to use this config in TypeScript projects. 69 | 70 | ### Recommended`@salesforce/eslint-config-lwc/recommended` 71 | 72 | **Goal:** 73 | Prevent common Javascript pitfalls and enforce all best practices. 74 | 75 | **Rules:** 76 | Base rules + Most of the base [_Potential errors_](https://eslint.org/docs/rules/#possible-errors) rules + Some of the [_Best Practices_](https://eslint.org/docs/rules/#best-practices) rules + [_LWC Best Practices_](https://github.com/salesforce/eslint-plugin-lwc/blob/master/README.md#best-practices). 77 | 78 | **Usage:** 79 | 80 | ```js 81 | // eslint.config.js 82 | const lwcConfig = require('@salesforce/eslint-config-lwc'); 83 | 84 | module.exports = [...lwcConfig.configs.recommended]; 85 | ``` 86 | 87 | **TypeScript:** Use `configs.recommendedTs` to use this config in TypeScript projects. 88 | 89 | ### Extended 90 | 91 | **Goal:** 92 | Restrict usage of some Javascript language features known to be slow after the _COMPAT_ transformation. LWC runs in _COMPAT_ mode on older browsers (eg. IE11). To support new Javascript syntax and language features on older browser the LWC compiler transforms LWC modules. This linting configuration targets patterns known to be slow in _COMPAT_ mode. 93 | 94 | **Rules:** 95 | Recommended rules + restrict usage of some slow patterns in [_COMPAT_](https://github.com/salesforce/eslint-plugin-lwc/blob/master/README.md#compat-performance). 96 | 97 | **Usage:** 98 | 99 | ```js 100 | // eslint.config.js 101 | const lwcConfig = require('@salesforce/eslint-config-lwc'); 102 | 103 | module.exports = [...lwcConfig.configs.extended]; 104 | ``` 105 | 106 | **TypeScript:** Use `configs.extendedTs` to use this config in TypeScript projects. 107 | 108 | ### i18n `@salesforce/eslint-config-lwc/i18n` 109 | 110 | **Goal:** 111 | Promote usage of `@salesforce/i18n-service` over 3rd parties, promote internationalization (I18N) best practices. 112 | 113 | **Rules:** 114 | [_I18N specific rules_](https://github.com/salesforce/eslint-plugin-lightning#internationalization-rules) only. 115 | 116 | **Usage:** 117 | 118 | Add the `i18n` configuration to the `extends` field in your `eslint.config.js` configuration file, for example: 119 | 120 | ```js 121 | // eslint.config.js 122 | const lwcConfig = require('@salesforce/eslint-config-lwc'); 123 | 124 | module.exports = [...lwcConfig.configs.recommended, ...lwcConfig.configs.i18n]; 125 | ``` 126 | 127 | **TypeScript:** Use `configs.i18nTs` to use this config in TypeScript projects. 128 | 129 | ### Ssr 130 | 131 | **Goal:** 132 | Promote writing server-side-rendering friendly components. We only recommend using this configuration if your components are running in experiences supporting LWC server-side-rendering. 133 | 134 | **Rules:** 135 | [ SSR specific rules ](https://github.com/salesforce/eslint-plugin-lwc/blob/master/README.md#lwc) only. 136 | 137 | **Usage:** 138 | 139 | ```js 140 | // eslint.config.js 141 | const lwcConfig = require('@salesforce/eslint-config-lwc'); 142 | 143 | module.exports = [...lwcConfig.configs.ssr]; 144 | ``` 145 | 146 | **TypeScript:** Use `configs.ssrTs` to use this config in TypeScript projects. 147 | -------------------------------------------------------------------------------- /base-ts.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Salesforce, Inc. 3 | * All rights reserved. 4 | * SPDX-License-Identifier: MIT 5 | * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT 6 | */ 7 | 'use strict'; 8 | 9 | const base = require('./base'); 10 | const tsLanguageOptions = require('./lib/typescript'); 11 | 12 | module.exports = [ 13 | ...base, 14 | // The following config will take effect as explained in 15 | // https://eslint.org/docs/latest/use/configure/configuration-files#cascading-configuration-objects 16 | { 17 | languageOptions: { 18 | ...tsLanguageOptions, 19 | }, 20 | }, 21 | ]; 22 | -------------------------------------------------------------------------------- /base.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018, salesforce.com, inc. 3 | * All rights reserved. 4 | * SPDX-License-Identifier: MIT 5 | * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT 6 | */ 7 | 'use strict'; 8 | 9 | const eslintPluginLwc = require('@lwc/eslint-plugin-lwc'); 10 | const languageOptions = require('./lib/defaults'); 11 | 12 | const KNOWN_WIRE_ADAPTERS = [ 13 | { 14 | module: 'lightning/**', 15 | identifier: '*', 16 | }, 17 | // All apex, apexContinuation methods 18 | { 19 | module: '@salesforce/**', 20 | identifier: '*', 21 | }, 22 | // All commerce API adapters 23 | { 24 | module: 'commerce/*Api', 25 | identifier: '*Adapter', 26 | }, 27 | // All experience API adapters 28 | { 29 | module: 'experience/*Api', 30 | identifier: 'get*', 31 | }, 32 | ]; 33 | 34 | const WIRE_ADAPTERS_WITH_RESTRICTED_USE = [ 35 | // All commerce API adapters 36 | { 37 | module: 'commerce/*Api', 38 | identifier: '*Adapter', 39 | }, 40 | // All experience API adapters 41 | { 42 | module: 'experience/*Api', 43 | identifier: 'get*', 44 | }, 45 | { 46 | module: 'lightning/analyticsWaveApi', 47 | identifier: 'executeQuery', 48 | }, 49 | { 50 | module: 'lightning/analyticsWaveApi', 51 | identifier: 'getActions', 52 | }, 53 | { 54 | module: 'lightning/analyticsWaveApi', 55 | identifier: 'getAnalyticsLimits', 56 | }, 57 | { 58 | module: 'lightning/analyticsWaveApi', 59 | identifier: 'getDataConnector', 60 | }, 61 | { 62 | module: 'lightning/analyticsWaveApi', 63 | identifier: 'getDataConnectors', 64 | }, 65 | { 66 | module: 'lightning/analyticsWaveApi', 67 | identifier: 'getDataConnectorSourceFields', 68 | }, 69 | { 70 | module: 'lightning/analyticsWaveApi', 71 | identifier: 'getDataConnectorSourceObject', 72 | }, 73 | { 74 | module: 'lightning/analyticsWaveApi', 75 | identifier: 'getDataConnectorSourceObjectDataPreviewWithFields', 76 | }, 77 | { 78 | module: 'lightning/analyticsWaveApi', 79 | identifier: 'getDataConnectorStatus', 80 | }, 81 | { 82 | module: 'lightning/analyticsWaveApi', 83 | identifier: 'getDataConnectorTypes', 84 | }, 85 | { 86 | module: 'lightning/analyticsWaveApi', 87 | identifier: 'getDataflowJob', 88 | }, 89 | { 90 | module: 'lightning/analyticsWaveApi', 91 | identifier: 'getDataflowJobNode', 92 | }, 93 | { 94 | module: 'lightning/analyticsWaveApi', 95 | identifier: 'getDataflowJobNodes', 96 | }, 97 | { 98 | module: 'lightning/analyticsWaveApi', 99 | identifier: 'getDataflowJobs', 100 | }, 101 | { 102 | module: 'lightning/analyticsWaveApi', 103 | identifier: 'getDataflows', 104 | }, 105 | { 106 | module: 'lightning/analyticsWaveApi', 107 | identifier: 'getDataset', 108 | }, 109 | { 110 | module: 'lightning/analyticsWaveApi', 111 | identifier: 'getDatasets', 112 | }, 113 | { 114 | module: 'lightning/analyticsWaveApi', 115 | identifier: 'getDatasetVersion', 116 | }, 117 | { 118 | module: 'lightning/analyticsWaveApi', 119 | identifier: 'getDatasetVersions', 120 | }, 121 | { 122 | module: 'lightning/analyticsWaveApi', 123 | identifier: 'getDependencies', 124 | }, 125 | { 126 | module: 'lightning/analyticsWaveApi', 127 | identifier: 'getRecipe', 128 | }, 129 | { 130 | module: 'lightning/analyticsWaveApi', 131 | identifier: 'getRecipeNotification', 132 | }, 133 | { 134 | module: 'lightning/analyticsWaveApi', 135 | identifier: 'getRecipes', 136 | }, 137 | { 138 | module: 'lightning/analyticsWaveApi', 139 | identifier: 'getReplicatedDataset', 140 | }, 141 | { 142 | module: 'lightning/analyticsWaveApi', 143 | identifier: 'getReplicatedDatasets', 144 | }, 145 | { 146 | module: 'lightning/analyticsWaveApi', 147 | identifier: 'getReplicatedFields', 148 | }, 149 | { 150 | module: 'lightning/analyticsWaveApi', 151 | identifier: 'getSchedule', 152 | }, 153 | { 154 | module: 'lightning/analyticsWaveApi', 155 | identifier: 'getSecurityCoverageDatasetVersion', 156 | }, 157 | { 158 | module: 'lightning/analyticsWaveApi', 159 | identifier: 'getWaveFolders', 160 | }, 161 | { 162 | module: 'lightning/analyticsWaveApi', 163 | identifier: 'getWaveTemplate', 164 | }, 165 | { 166 | module: 'lightning/analyticsWaveApi', 167 | identifier: 'getWaveTemplateConfig', 168 | }, 169 | { 170 | module: 'lightning/analyticsWaveApi', 171 | identifier: 'getWaveTemplateReleaseNotes', 172 | }, 173 | { 174 | module: 'lightning/analyticsWaveApi', 175 | identifier: 'getWaveTemplates', 176 | }, 177 | { 178 | module: 'lightning/analyticsWaveApi', 179 | identifier: 'getXmd', 180 | }, 181 | { 182 | module: 'lightning/messageService', 183 | identifier: 'MessageContext', 184 | }, 185 | { 186 | module: 'lightning/navigation', 187 | identifier: 'CurrentPageReference', 188 | }, 189 | { 190 | module: 'lightning/uiAppsApi', 191 | identifier: 'getNavItems', 192 | }, 193 | { 194 | module: 'lightning/uiListApi', 195 | identifier: 'getListUi', 196 | }, 197 | { 198 | module: 'lightning/uiListsApi', 199 | identifier: 'getListInfoByName', 200 | }, 201 | { 202 | module: 'lightning/uiListsApi', 203 | identifier: 'getListInfosByName', 204 | }, 205 | { 206 | module: 'lightning/uiObjectInfoApi', 207 | identifier: 'getObjectInfo', 208 | }, 209 | { 210 | module: 'lightning/uiObjectInfoApi', 211 | identifier: 'getObjectInfos', 212 | }, 213 | { 214 | module: 'lightning/uiObjectInfoApi', 215 | identifier: 'getPicklistValues', 216 | }, 217 | { 218 | module: 'lightning/uiObjectInfoApi', 219 | identifier: 'getPicklistValuesByRecordType', 220 | }, 221 | { 222 | module: 'lightning/uiRecordApi', 223 | identifier: 'getRecord', 224 | }, 225 | { 226 | module: 'lightning/uiRecordApi', 227 | identifier: 'getRecords', 228 | }, 229 | { 230 | module: 'lightning/uiRecordApi', 231 | identifier: 'getRecordCreateDefaults', 232 | }, 233 | { 234 | module: 'lightning/uiRecordApi', 235 | identifier: 'getRecordUi', 236 | }, 237 | { 238 | module: 'lightning/uiRelatedListApi', 239 | identifier: 'getRelatedListCount', 240 | }, 241 | { 242 | module: 'lightning/uiRelatedListApi', 243 | identifier: 'getRelatedListInfo', 244 | }, 245 | { 246 | module: 'lightning/uiRelatedListApi', 247 | identifier: 'getRelatedListInfoBatch', 248 | }, 249 | { 250 | module: 'lightning/uiRelatedListApi', 251 | identifier: 'getRelatedListRecords', 252 | }, 253 | { 254 | module: 'lightning/uiRelatedListApi', 255 | identifier: 'getRelatedListRecordsBatch', 256 | }, 257 | { 258 | module: 'lightning/uiRelatedListApi', 259 | identifier: 'getRelatedListsInfo', 260 | }, 261 | ]; 262 | 263 | module.exports = [ 264 | { 265 | languageOptions, 266 | 267 | plugins: { 268 | '@lwc/lwc': eslintPluginLwc, // https://github.com/salesforce/eslint-plugin-lwc 269 | }, 270 | 271 | rules: { 272 | // LWC lifecycle hooks validation 273 | '@lwc/lwc/no-deprecated': 'error', 274 | 275 | // LWC decorator validation 276 | '@lwc/lwc/valid-api': 'error', 277 | '@lwc/lwc/valid-track': 'error', 278 | '@lwc/lwc/valid-wire': 'error', 279 | 280 | // LWC wire adapters validation 281 | '@lwc/lwc/no-unknown-wire-adapters': [ 282 | 'error', 283 | { 284 | adapters: KNOWN_WIRE_ADAPTERS, 285 | }, 286 | ], 287 | '@lwc/lwc/no-unexpected-wire-adapter-usages': [ 288 | 'error', 289 | { 290 | adapters: WIRE_ADAPTERS_WITH_RESTRICTED_USE, 291 | }, 292 | ], 293 | 294 | // LWC import validation 295 | '@lwc/lwc/no-disallowed-lwc-imports': 'error', 296 | 297 | // Disable any direct importing of LDS artifacts generated by the LWC compiler 298 | 'no-restricted-imports': [ 299 | 'error', 300 | { 301 | patterns: [ 302 | { 303 | group: ['@salesforce/lds', '@salesforce/lds/**'], 304 | message: 305 | 'Please do not import from @salesforce/lds, these modules are ephemeral and could change at any time.', 306 | }, 307 | ], 308 | }, 309 | ], 310 | }, 311 | }, 312 | ]; 313 | -------------------------------------------------------------------------------- /eslint.config.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | const globals = require('globals'); 3 | const js = require('@eslint/js'); 4 | module.exports = [ 5 | js.configs.recommended, 6 | { 7 | languageOptions: { 8 | globals: { 9 | ...globals.mocha, 10 | ...globals.node, 11 | }, 12 | sourceType: 'commonjs', 13 | }, 14 | rules: { 15 | strict: ['error', 'global'], 16 | }, 17 | }, 18 | ]; 19 | -------------------------------------------------------------------------------- /extended-ts.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Salesforce, Inc. 3 | * All rights reserved. 4 | * SPDX-License-Identifier: MIT 5 | * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT 6 | */ 7 | 'use strict'; 8 | 9 | const tsLanguageOptions = require('./lib/typescript'); 10 | const extended = require('./extended'); 11 | 12 | module.exports = [ 13 | ...extended, 14 | // The following config will take effect as explained in 15 | // https://eslint.org/docs/latest/use/configure/configuration-files#cascading-configuration-objects 16 | { 17 | languageOptions: { 18 | ...tsLanguageOptions, 19 | }, 20 | }, 21 | ]; 22 | -------------------------------------------------------------------------------- /extended.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018, salesforce.com, inc. 3 | * All rights reserved. 4 | * SPDX-License-Identifier: MIT 5 | * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT 6 | */ 7 | 'use strict'; 8 | 9 | const recommended = require('./recommended'); 10 | 11 | module.exports = [ 12 | ...recommended, 13 | { 14 | rules: { 15 | // LWC COMPAT performance restrictions 16 | '@lwc/lwc/no-async-await': 'error', 17 | '@lwc/lwc/no-for-of': 'error', 18 | '@lwc/lwc/no-rest-parameter': 'error', 19 | }, 20 | }, 21 | ]; 22 | -------------------------------------------------------------------------------- /i18n-ts.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Salesforce, Inc. 3 | * All rights reserved. 4 | * SPDX-License-Identifier: MIT 5 | * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT 6 | */ 7 | 'use strict'; 8 | 9 | const tsLanguageOptions = require('./lib/typescript'); 10 | const i18n = require('./i18n'); 11 | 12 | module.exports = [ 13 | ...i18n, 14 | // The following config will take effect as explained in 15 | // https://eslint.org/docs/latest/use/configure/configuration-files#cascading-configuration-objects 16 | { 17 | languageOptions: { 18 | ...tsLanguageOptions, 19 | }, 20 | }, 21 | ]; 22 | -------------------------------------------------------------------------------- /i18n.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2021, salesforce.com, inc. 3 | * All rights reserved. 4 | * SPDX-License-Identifier: MIT 5 | * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT 6 | */ 7 | 'use strict'; 8 | 9 | const pluginLighting = require('@salesforce/eslint-plugin-lightning'); 10 | 11 | module.exports = [ 12 | { 13 | plugins: { 14 | '@salesforce/lightning': pluginLighting, // https://github.com/salesforce/eslint-plugin-lightning 15 | }, 16 | 17 | rules: { 18 | // I18N Rules 19 | '@salesforce/lightning/no-aura-localization-service': 'warn', 20 | '@salesforce/lightning/no-moment': 'warn', 21 | '@salesforce/lightning/prefer-i18n-service': 'warn', 22 | }, 23 | }, 24 | ]; 25 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018, salesforce.com, inc. 3 | * All rights reserved. 4 | * SPDX-License-Identifier: MIT 5 | * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT 6 | */ 7 | 'use strict'; 8 | 9 | const base = require('./base'); 10 | const baseTs = require('./base-ts'); 11 | const extended = require('./extended'); 12 | const extendedTs = require('./extended-ts'); 13 | const i18n = require('./i18n'); 14 | const i18nTs = require('./i18n-ts'); 15 | const recommended = require('./recommended'); 16 | const recommendedTs = require('./recommended-ts'); 17 | const ssr = require('./ssr'); 18 | const ssrTs = require('./ssr-ts'); 19 | const { version } = require('./package.json'); 20 | 21 | module.exports = { 22 | // https://eslint.org/docs/latest/extend/plugins#meta-data-in-plugins 23 | meta: { 24 | name: '@salesforce/eslint-config-lwc', 25 | version, 26 | }, 27 | configs: { 28 | base, 29 | baseTs, 30 | extended, 31 | extendedTs, 32 | i18n, 33 | i18nTs, 34 | recommended, 35 | recommendedTs, 36 | ssr, 37 | ssrTs, 38 | }, 39 | }; 40 | -------------------------------------------------------------------------------- /lib/defaults.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018, salesforce.com, inc. 3 | * All rights reserved. 4 | * SPDX-License-Identifier: MIT 5 | * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT 6 | */ 7 | 'use strict'; 8 | 9 | const globals = require('globals'); 10 | const babelParser = require('@babel/eslint-parser'); 11 | 12 | /** 13 | * Internal base configuration for all the shared configuration. This file is intentionally not located at the root of 14 | * the package to avoid being exported and exposed. 15 | */ 16 | module.exports = { 17 | parser: babelParser, 18 | parserOptions: { 19 | requireConfigFile: false, 20 | babelOptions: { 21 | babelrc: false, 22 | parserOpts: { 23 | plugins: [['decorators', { decoratorsBeforeExport: false }]], 24 | }, 25 | }, 26 | }, 27 | globals: { 28 | ...globals.browser, 29 | ...globals.es2015, 30 | }, 31 | }; 32 | -------------------------------------------------------------------------------- /lib/typescript.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Salesforce, Inc. 3 | * All rights reserved. 4 | * SPDX-License-Identifier: MIT 5 | * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT 6 | */ 7 | 'use strict'; 8 | 9 | const defaults = require('./defaults'); 10 | const { parserOptions } = defaults; 11 | const { babelOptions } = parserOptions; 12 | const { parserOpts } = babelOptions; 13 | const { plugins } = parserOpts; 14 | 15 | /** 16 | * Internal base configuration for all the TypeScript configurations. Equivalent to the JS defaults, 17 | * with the addition of 'typescript' to the babel parser plugins array. 18 | * NOTE: This file is intentionally not located at the root of the package to avoid being exported and exposed. 19 | */ 20 | module.exports = { 21 | ...defaults, 22 | parserOptions: { 23 | ...parserOptions, 24 | babelOptions: { 25 | ...babelOptions, 26 | parserOpts: { 27 | ...parserOpts, 28 | plugins: [...plugins, 'typescript'], 29 | }, 30 | }, 31 | }, 32 | }; 33 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@salesforce/eslint-config-lwc", 3 | "version": "4.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "description": "Opinionated ESLint configurations for LWC projects", 7 | "keywords": [ 8 | "eslint", 9 | "eslint-config", 10 | "lwc", 11 | "salesforce" 12 | ], 13 | "scripts": { 14 | "prepare": "husky || true", 15 | "format": "prettier --write \"**/*.{js,md}\"", 16 | "format:check": "prettier --check \"**/*.{js,md}\"", 17 | "lint": "eslint", 18 | "test": "mocha", 19 | "release:version": "npm version", 20 | "release:publish": "npm publish --registry=https://registry.npmjs.org" 21 | }, 22 | "dependencies": { 23 | "@babel/core": "~7.26.0", 24 | "@babel/eslint-parser": "~7.25.9", 25 | "@eslint/js": "^9.17.0", 26 | "eslint-restricted-globals": "~0.2.0", 27 | "globals": "~15.14.0", 28 | "semver": "^7.6.2" 29 | }, 30 | "devDependencies": { 31 | "@lwc/eslint-plugin-lwc": "^3.0.0", 32 | "@salesforce/eslint-plugin-lightning": "^2.0.0", 33 | "eslint": "^9.17.0", 34 | "eslint-plugin-import": "^2.31.0", 35 | "eslint-plugin-jest": "~28.10.0", 36 | "husky": "^9.0.11", 37 | "lint-staged": "^15.2.7", 38 | "mocha": "^10.4.0", 39 | "prettier": "^3.3.2" 40 | }, 41 | "peerDependencies": { 42 | "@lwc/eslint-plugin-lwc": "^3.0.0 || ^3.0.0-0", 43 | "@salesforce/eslint-plugin-lightning": "^2.0.0 || ^2.0.0-0", 44 | "eslint": "^9", 45 | "eslint-plugin-import": "*", 46 | "eslint-plugin-jest": "*" 47 | }, 48 | "repository": { 49 | "type": "git", 50 | "url": "https://github.com/salesforce/eslint-config-lwc.git" 51 | }, 52 | "engines": { 53 | "node": ">=10.0.0" 54 | }, 55 | "volta": { 56 | "node": "20.12.2", 57 | "yarn": "1.22.22" 58 | }, 59 | "files": [ 60 | "lib", 61 | "base.js", 62 | "base-ts.js", 63 | "extended.js", 64 | "extended-ts.js", 65 | "i18n.js", 66 | "i18n-ts.js", 67 | "index.js", 68 | "recommended.js", 69 | "recommended-ts.js", 70 | "ssr.js", 71 | "ssr-ts.js" 72 | ], 73 | "lint-staged": { 74 | "*.js": [ 75 | "eslint" 76 | ], 77 | "*.{js,md}": [ 78 | "prettier --write" 79 | ] 80 | }, 81 | "mocha": { 82 | "slow": 500 83 | }, 84 | "prettier": { 85 | "printWidth": 100, 86 | "tabWidth": 4, 87 | "singleQuote": true, 88 | "trailingComma": "all" 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /recommended-ts.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Salesforce, Inc. 3 | * All rights reserved. 4 | * SPDX-License-Identifier: MIT 5 | * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT 6 | */ 7 | 'use strict'; 8 | 9 | const tsLanguageOptions = require('./lib/typescript'); 10 | const recommended = require('./recommended'); 11 | 12 | module.exports = [ 13 | ...recommended, 14 | // The following config will take effect as explained in 15 | // https://eslint.org/docs/latest/use/configure/configuration-files#cascading-configuration-objects 16 | { 17 | languageOptions: { 18 | ...tsLanguageOptions, 19 | }, 20 | }, 21 | ]; 22 | -------------------------------------------------------------------------------- /recommended.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018, salesforce.com, inc. 3 | * All rights reserved. 4 | * SPDX-License-Identifier: MIT 5 | * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT 6 | */ 7 | 'use strict'; 8 | 9 | const semver = require('semver'); 10 | const { ESLint } = require('eslint'); 11 | const globals = require('globals'); 12 | const restrictedGlobals = require('eslint-restricted-globals'); 13 | const pluginJest = require('eslint-plugin-jest'); 14 | const pluginImport = require('eslint-plugin-import'); 15 | const pluginLighting = require('@salesforce/eslint-plugin-lightning'); 16 | const eslintJs = require('@eslint/js'); 17 | 18 | const base = require('./base'); 19 | 20 | module.exports = [ 21 | ...base, 22 | eslintJs.configs.recommended, 23 | pluginImport.flatConfigs.errors, // https://github.com/benmosher/eslint-plugin-import 24 | pluginJest.configs['flat/recommended'], // https://github.com/jest-community/eslint-plugin-jest 25 | { 26 | plugins: { 27 | '@salesforce/lightning': pluginLighting, // https://github.com/salesforce/eslint-plugin-lightning 28 | }, 29 | 30 | languageOptions: { 31 | globals: { 32 | // used to mock calls to global variables in jest tests 33 | global: true, 34 | ...globals.jest, 35 | }, 36 | }, 37 | rules: { 38 | // Possible errors 39 | // https://eslint.org/docs/rules/#possible-errors 40 | 'no-await-in-loop': 'error', 41 | 42 | // Best practices 43 | // https://eslint.org/docs/rules/#best-practices 44 | 'array-callback-return': 'error', 45 | 'consistent-return': 'error', 46 | 'default-case': 'error', 47 | 'dot-notation': ['error', { allowKeywords: true }], 48 | eqeqeq: ['error', 'smart'], 49 | 'guard-for-in': 'error', 50 | 'no-alert': 'error', 51 | 'no-caller': 'error', 52 | 'no-else-return': 'error', 53 | 'no-empty-function': [ 54 | 'error', 55 | { 56 | allow: ['arrowFunctions', 'functions', 'methods'], 57 | }, 58 | ], 59 | 'no-eval': 'error', 60 | 'no-extend-native': 'error', 61 | 'no-extra-bind': 'error', 62 | 'no-floating-decimal': 'error', 63 | 'no-implied-eval': 'error', 64 | 'no-iterator': 'error', 65 | 'no-labels': 'error', 66 | 'no-loop-func': 'error', 67 | 'no-multi-str': 'error', 68 | 'no-new': 'error', 69 | 'no-new-func': 'error', 70 | 'no-new-object': 'error', 71 | 'no-new-wrappers': 'error', 72 | 'no-octal-escape': 'error', 73 | 'no-proto': 'error', 74 | 'no-return-assign': 'error', 75 | 'no-return-await': 'error', 76 | 'no-script-url': 'error', 77 | 'no-self-compare': 'error', 78 | 'no-sequences': 'error', 79 | 'no-throw-literal': 'error', 80 | 'no-useless-concat': 'error', 81 | 'no-useless-escape': 'error', 82 | 'no-useless-return': 'error', 83 | 'no-unused-expressions': 'error', 84 | 'no-void': 'error', 85 | 'no-with': 'error', 86 | radix: 'error', 87 | 'vars-on-top': 'error', 88 | 'wrap-iife': ['error', 'any'], 89 | 90 | // Variables 91 | // https://eslint.org/docs/rules/#variables 92 | 'no-label-var': 'error', 93 | 'no-restricted-globals': ['error'].concat(restrictedGlobals), 94 | 'no-shadow': 'error', 95 | 'no-shadow-restricted-names': 'error', 96 | 'no-undef-init': 'error', 97 | 'no-unused-vars': ['error', { vars: 'all', args: 'after-used' }], 98 | 'no-use-before-define': ['error', { functions: false }], 99 | 100 | // NodeJs style 101 | // https://eslint.org/docs/rules/#nodejs-and-commonjs 102 | 'handle-callback-err': 'error', 103 | 104 | // ES6 105 | // https://eslint.org/docs/rules/#ecmascript-6 106 | 'no-confusing-arrow': 'error', 107 | 'no-useless-computed-key': 'error', 108 | 'no-useless-constructor': 'error', 109 | 'no-useless-rename': 'error', 110 | 111 | // LWC specific rules 112 | '@lwc/lwc/no-api-reassignments': 'error', 113 | '@lwc/lwc/no-async-operation': 'error', 114 | '@lwc/lwc/no-attributes-during-construction': 'error', 115 | '@lwc/lwc/no-document-query': 'error', 116 | '@lwc/lwc/no-inner-html': 'error', 117 | '@lwc/lwc/no-leading-uppercase-api-name': 'error', 118 | '@lwc/lwc/no-template-children': 'error', 119 | '@lwc/lwc/prefer-custom-event': 'error', 120 | '@lwc/lwc/valid-api': [ 121 | 'error', 122 | { 123 | disallowUnderscoreUppercaseMix: true, 124 | }, 125 | ], 126 | '@lwc/lwc/valid-graphql-wire-adapter-callback-parameters': 'error', 127 | 128 | // Lightning 129 | '@salesforce/lightning/valid-apex-method-invocation': 'error', 130 | 131 | // Disable unresolved import rule since it doesn't work well with the way the LWC compiler 132 | // resolves the different modules 133 | 'import/no-unresolved': 'off', 134 | 135 | // Misc 136 | // In ESLint v8 the built-in `no-dupe-class-member` rules added support for duplicated 137 | // class fields. We should disable the `lwc/no-dupe-class-members` rule to avoid duplicated 138 | // linting errors. 139 | '@lwc/lwc/no-dupe-class-members': semver.lt(ESLint.version, '8.0.0') ? 'error' : 'off', 140 | }, 141 | }, 142 | ]; 143 | -------------------------------------------------------------------------------- /ssr-ts.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Salesforce, Inc. 3 | * All rights reserved. 4 | * SPDX-License-Identifier: MIT 5 | * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT 6 | */ 7 | 'use strict'; 8 | 9 | const tsLanguageOptions = require('./lib/typescript'); 10 | const ssr = require('./ssr'); 11 | 12 | module.exports = [ 13 | ...ssr, 14 | // The following config will take effect as explained in 15 | // https://eslint.org/docs/latest/use/configure/configuration-files#cascading-configuration-objects 16 | { 17 | languageOptions: { 18 | ...tsLanguageOptions, 19 | }, 20 | }, 21 | ]; 22 | -------------------------------------------------------------------------------- /ssr.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2018, salesforce.com, inc. 3 | * All rights reserved. 4 | * SPDX-License-Identifier: MIT 5 | * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT 6 | */ 7 | 'use strict'; 8 | 9 | const eslintPluginLwc = require('@lwc/eslint-plugin-lwc'); 10 | const languageOptions = require('./lib/defaults'); 11 | 12 | module.exports = [ 13 | { 14 | languageOptions, 15 | plugins: { 16 | '@lwc/lwc': eslintPluginLwc, // https://github.com/salesforce/eslint-plugin-lwc 17 | }, 18 | rules: { 19 | '@lwc/lwc/ssr-no-unsupported-properties': 'error', 20 | '@lwc/lwc/ssr-no-restricted-browser-globals': 'error', 21 | '@lwc/lwc/ssr-no-form-factor': 'error', 22 | '@lwc/lwc/ssr-no-host-mutation-in-connected-callback': 'error', 23 | '@lwc/lwc/ssr-no-node-env': 'error', 24 | '@lwc/lwc/ssr-no-unsupported-node-api': 'error', 25 | '@lwc/lwc/ssr-no-static-imports-of-user-specific-scoped-modules': 'error', 26 | }, 27 | }, 28 | ]; 29 | -------------------------------------------------------------------------------- /test/base.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Salesforce, Inc. 3 | * All rights reserved. 4 | * SPDX-License-Identifier: MIT 5 | * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT 6 | */ 7 | 'use strict'; 8 | 9 | const assert = require('assert'); 10 | const eslint = require('eslint'); 11 | 12 | const { linkConfig, unlinkConfig } = require('./utils'); 13 | 14 | describe('base config', () => { 15 | let cli; 16 | before(() => { 17 | linkConfig(); 18 | const lwcConfig = require('@salesforce/eslint-config-lwc'); 19 | const baseConfig = lwcConfig.configs.base; 20 | cli = new eslint.ESLint({ 21 | overrideConfigFile: true, 22 | baseConfig, 23 | }); 24 | }); 25 | 26 | after(() => { 27 | unlinkConfig(); 28 | }); 29 | 30 | it('should load properly base config', async () => { 31 | const results = await cli.lintText(` 32 | import { api } from 'lwc'; 33 | class Foo { 34 | @api({ param: true }) 35 | foo; 36 | } 37 | `); 38 | 39 | const { messages } = results[0]; 40 | assert.equal(messages.length, 1); 41 | assert.equal(messages[0].ruleId, '@lwc/lwc/valid-api'); 42 | }); 43 | 44 | it('should include @lwc/lwc/no-unknown-wire-adapters rule', async () => { 45 | const expectedFailures = [ 46 | 'c/cmp', 47 | 'commerce/cmp', 48 | 'commerce/cmpApiInternal', 49 | 'experience/cmp', 50 | ]; 51 | for (const bundleName of expectedFailures) { 52 | const results = await cli.lintText(` 53 | import { wire } from 'lwc'; 54 | import { getAdapter } from '${bundleName}'; 55 | class Foo { 56 | @wire(getAdapter) 57 | wiredProp; 58 | } 59 | `); 60 | 61 | const { messages } = results[0]; 62 | assert.equal(messages.length, 1); 63 | assert.equal(messages[0].ruleId, '@lwc/lwc/no-unknown-wire-adapters'); 64 | } 65 | 66 | const expectedSuccesses = ['commerce/cmpApi', 'experience/cmpApi']; 67 | for (const bundleName of expectedSuccesses) { 68 | const results = await cli.lintText(` 69 | import { wire } from 'lwc'; 70 | import { getAdapter } from '${bundleName}'; 71 | class Foo { 72 | @wire(getAdapter) 73 | wiredProp; 74 | } 75 | `); 76 | 77 | const { messages } = results[0]; 78 | assert.equal(messages.length, 0); 79 | } 80 | }); 81 | 82 | it('should include @lwc/lwc/no-unexpected-wire-adapter-usages', async () => { 83 | const expectedFailures = [ 84 | ['lightning/navigation', 'CurrentPageReference'], 85 | ['commerce/cmpApi', 'getAdapter'], 86 | ['experience/cmpApi', 'getAdapter'], 87 | ]; 88 | for (const [bundleName, cmpName] of expectedFailures) { 89 | const results = await cli.lintText(` 90 | import { wire } from 'lwc'; 91 | import { ${cmpName} } from '${bundleName}'; 92 | const reference = ${cmpName}; 93 | class Foo { 94 | @wire(${cmpName}) 95 | wiredProp; 96 | } 97 | `); 98 | 99 | const { messages } = results[0]; 100 | assert.equal(messages.length, 1); 101 | assert.equal(messages[0].ruleId, '@lwc/lwc/no-unexpected-wire-adapter-usages'); 102 | } 103 | }); 104 | 105 | it('should include @lwc/lwc/no-disallowed-lwc-imports', async () => { 106 | const results = await cli.lintText(` 107 | import { yolo } from 'lwc'; 108 | `); 109 | 110 | const { messages } = results[0]; 111 | assert.equal(messages.length, 1); 112 | assert.equal(messages[0].ruleId, '@lwc/lwc/no-disallowed-lwc-imports'); 113 | }); 114 | 115 | describe('should include no-restricted-imports', () => { 116 | describe('prevents imports from @salesforce/lds', () => { 117 | it('should prevent nested imports', async () => { 118 | setupBaseListConfigAndAssertMessages( 119 | ` 120 | import { abc } from '@salesforce/lds/test'; 121 | `, 122 | [ 123 | { 124 | ruleId: 'no-restricted-imports', 125 | message: 126 | "'@salesforce/lds/test' import is restricted from being used by a pattern. Please do not import from @salesforce/lds, these modules are ephemeral and could change at any time.", 127 | }, 128 | ], 129 | ); 130 | }); 131 | 132 | it('should prevent imports from restricted modules', async () => { 133 | setupBaseListConfigAndAssertMessages( 134 | ` 135 | import foo from '@salesforce/lds'; 136 | `, 137 | [ 138 | { 139 | ruleId: 'no-restricted-imports', 140 | message: 141 | "'@salesforce/lds' import is restricted from being used by a pattern. Please do not import from @salesforce/lds, these modules are ephemeral and could change at any time.", 142 | }, 143 | ], 144 | ); 145 | }); 146 | 147 | it('does not prevent imports from similarly named modules', async () => { 148 | setupBaseListConfigAndAssertMessages( 149 | ` 150 | import foo from '@salesforce/ldsnotlds'; 151 | `, 152 | ); 153 | }); 154 | }); 155 | }); 156 | }); 157 | 158 | describe('typescript base config', () => { 159 | let cli; 160 | before(() => { 161 | linkConfig(); 162 | const lwcConfig = require('@salesforce/eslint-config-lwc'); 163 | const baseTsConfig = lwcConfig.configs.baseTs; 164 | cli = new eslint.ESLint({ 165 | overrideConfigFile: true, 166 | baseConfig: baseTsConfig, 167 | }); 168 | }); 169 | 170 | after(() => { 171 | unlinkConfig(); 172 | }); 173 | 174 | it('should load properly base config', async () => { 175 | const results = await cli.lintText(` 176 | import { api } from 'lwc'; 177 | class Foo { 178 | @api({ param: true }) 179 | foo: string; 180 | } 181 | `); 182 | 183 | const { messages } = results[0]; 184 | assert.equal(messages.length, 1); 185 | assert.equal(messages[0].ruleId, '@lwc/lwc/valid-api'); 186 | }); 187 | 188 | it('should include @lwc/lwc/no-unknown-wire-adapters rule', async () => { 189 | const expectedFailures = [ 190 | 'c/cmp', 191 | 'commerce/cmp', 192 | 'commerce/cmpApiInternal', 193 | 'experience/cmp', 194 | ]; 195 | for (const bundleName of expectedFailures) { 196 | const results = await cli.lintText(` 197 | import { wire } from 'lwc'; 198 | import { getAdapter } from '${bundleName}'; 199 | class Foo { 200 | @wire(getAdapter) 201 | wiredProp: object; 202 | } 203 | `); 204 | 205 | const { messages } = results[0]; 206 | assert.equal(messages.length, 1); 207 | assert.equal(messages[0].ruleId, '@lwc/lwc/no-unknown-wire-adapters'); 208 | } 209 | 210 | const expectedSuccesses = ['commerce/cmpApi', 'experience/cmpApi']; 211 | for (const bundleName of expectedSuccesses) { 212 | const results = await cli.lintText(` 213 | import { wire } from 'lwc'; 214 | import { getAdapter } from '${bundleName}'; 215 | class Foo { 216 | @wire(getAdapter) 217 | wiredProp: unknown; 218 | } 219 | `); 220 | 221 | const { messages } = results[0]; 222 | assert.equal(messages.length, 0); 223 | } 224 | }); 225 | 226 | it('should include @lwc/lwc/no-unexpected-wire-adapter-usages', async () => { 227 | const expectedFailures = [ 228 | ['lightning/navigation', 'CurrentPageReference'], 229 | ['commerce/cmpApi', 'getAdapter'], 230 | ['experience/cmpApi', 'getAdapter'], 231 | ]; 232 | for (const [bundleName, cmpName] of expectedFailures) { 233 | const results = await cli.lintText(` 234 | import { wire } from 'lwc'; 235 | import { ${cmpName} } from '${bundleName}'; 236 | const reference: any = ${cmpName}; 237 | class Foo { 238 | @wire(${cmpName}) 239 | wiredProp: Record; 240 | } 241 | `); 242 | 243 | const { messages } = results[0]; 244 | assert.equal(messages.length, 1); 245 | assert.equal(messages[0].ruleId, '@lwc/lwc/no-unexpected-wire-adapter-usages'); 246 | } 247 | }); 248 | 249 | it('should include @lwc/lwc/no-disallowed-lwc-imports', async () => { 250 | const results = await cli.lintText(` 251 | import { yolo } from 'lwc'; 252 | `); 253 | 254 | const { messages } = results[0]; 255 | assert.equal(messages.length, 1); 256 | assert.equal(messages[0].ruleId, '@lwc/lwc/no-disallowed-lwc-imports'); 257 | }); 258 | }); 259 | 260 | /** 261 | * Sets up the linter and runs it against the given text. 262 | * @constructor 263 | * @param {string} text - The text to lint 264 | * @param {Object[]} expectedMessages - The employees who are responsible for the project. 265 | * @param {string} expectedMessages[].ruleId - The lint rule id that should fail. 266 | * @param {string} [expectedMessages[].message] - The message that the lint rule should throw. 267 | */ 268 | async function setupBaseListConfigAndAssertMessages(text, expectedMessages = []) { 269 | const lwcConfig = require('@salesforce/eslint-config-lwc'); 270 | const baseConfig = lwcConfig.configs.base; 271 | const cli = new eslint.ESLint({ 272 | overrideConfigFile: true, 273 | baseConfig, 274 | }); 275 | const results = await cli.lintText(text); 276 | const { messages } = results[0]; 277 | assert.equal(messages.length, expectedMessages.length); 278 | for (var i = 0; i < expectedMessages.length; i++) { 279 | assert.equal(messages[0].ruleId, expectedMessages[i].ruleId); 280 | if (expectedMessages[i].message !== undefined) { 281 | assert.equal(messages[0].message, expectedMessages[i].message); 282 | } 283 | } 284 | } 285 | -------------------------------------------------------------------------------- /test/extended.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Salesforce, Inc. 3 | * All rights reserved. 4 | * SPDX-License-Identifier: MIT 5 | * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT 6 | */ 7 | 'use strict'; 8 | 9 | const assert = require('assert'); 10 | const eslint = require('eslint'); 11 | 12 | const { linkConfig, unlinkConfig } = require('./utils'); 13 | 14 | describe('extended config', () => { 15 | before(() => { 16 | linkConfig(); 17 | }); 18 | 19 | after(() => { 20 | unlinkConfig(); 21 | }); 22 | it('should load properly extended config', async () => { 23 | const lwcConfig = require('@salesforce/eslint-config-lwc'); 24 | 25 | const cli = new eslint.ESLint({ 26 | overrideConfigFile: true, 27 | baseConfig: [ 28 | ...lwcConfig.configs.extended, 29 | { 30 | // Required for https://github.com/jest-community/eslint-plugin-jest 31 | settings: { 32 | jest: { 33 | version: '26', 34 | }, 35 | }, 36 | }, 37 | ], 38 | }); 39 | 40 | const results = await cli.lintText(` 41 | export function sum(...args) { 42 | return args.reduce((acc, val) => acc + val, 0); 43 | } 44 | `); 45 | 46 | const { messages } = results[0]; 47 | assert.equal(messages.length, 1); 48 | assert.equal(messages[0].ruleId, '@lwc/lwc/no-rest-parameter'); 49 | }); 50 | }); 51 | 52 | describe('extended config', () => { 53 | before(() => { 54 | linkConfig(); 55 | }); 56 | 57 | after(() => { 58 | unlinkConfig(); 59 | }); 60 | 61 | it('should load properly extended config', async () => { 62 | const lwcConfig = require('@salesforce/eslint-config-lwc'); 63 | const cli = new eslint.ESLint({ 64 | overrideConfigFile: true, 65 | baseConfig: [ 66 | ...lwcConfig.configs.extendedTs, 67 | { 68 | // Required for https://github.com/jest-community/eslint-plugin-jest 69 | settings: { 70 | jest: { 71 | version: '26', 72 | }, 73 | }, 74 | }, 75 | ], 76 | }); 77 | 78 | const results = await cli.lintText(` 79 | export function sum(...args: number[]) { 80 | return args.reduce((acc: number, val: number): number => acc + val, 0); 81 | } 82 | `); 83 | 84 | const { messages } = results[0]; 85 | assert.equal(messages.length, 1); 86 | assert.equal(messages[0].ruleId, '@lwc/lwc/no-rest-parameter'); 87 | }); 88 | }); 89 | -------------------------------------------------------------------------------- /test/i18n.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Salesforce, Inc. 3 | * All rights reserved. 4 | * SPDX-License-Identifier: MIT 5 | * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT 6 | */ 7 | 'use strict'; 8 | 9 | const assert = require('assert'); 10 | const eslint = require('eslint'); 11 | 12 | const { linkConfig, unlinkConfig } = require('./utils'); 13 | 14 | describe('i18n configs', () => { 15 | before(() => { 16 | linkConfig(); 17 | }); 18 | 19 | after(() => { 20 | unlinkConfig(); 21 | }); 22 | 23 | it('should load properly i18n config with other set', async () => { 24 | const lwcConfig = require('@salesforce/eslint-config-lwc'); 25 | const cli = new eslint.ESLint({ 26 | overrideConfigFile: true, 27 | baseConfig: [...lwcConfig.configs.i18n, ...lwcConfig.configs.base], 28 | }); 29 | 30 | const results = await cli.lintText(` 31 | var moment = require('moment'); 32 | var a = moment('2016-01-01'); 33 | a.format(); 34 | `); 35 | 36 | const { messages } = results[0]; 37 | assert.equal(messages.length, 1); 38 | assert.equal(messages[0].ruleId, '@salesforce/lightning/no-moment'); 39 | }); 40 | 41 | it('extended set should include @salesforce/lightning/no-moment rule', async () => { 42 | const lwcConfig = require('@salesforce/eslint-config-lwc'); 43 | const cli = new eslint.ESLint({ 44 | overrideConfigFile: true, 45 | baseConfig: [...lwcConfig.configs.i18n], 46 | }); 47 | 48 | const results = await cli.lintText(` 49 | var moment = require('moment'); 50 | var a = moment('2016-01-01'); 51 | a.format(); 52 | `); 53 | 54 | const { messages } = results[0]; 55 | assert.equal(messages.length, 1); 56 | assert.equal(messages[0].ruleId, '@salesforce/lightning/no-moment'); 57 | }); 58 | }); 59 | 60 | describe('typescript i18n configs', () => { 61 | before(() => { 62 | linkConfig(); 63 | }); 64 | 65 | after(() => { 66 | unlinkConfig(); 67 | }); 68 | 69 | it('should load properly i18n config with other set', async () => { 70 | const lwcConfig = require('@salesforce/eslint-config-lwc'); 71 | const cli = new eslint.ESLint({ 72 | overrideConfigFile: true, 73 | baseConfig: [...lwcConfig.configs.i18nTs, ...lwcConfig.configs.baseTs], 74 | }); 75 | 76 | const results = await cli.lintText(` 77 | const moment = require('moment'); 78 | const a: moment.Moment = moment('2016-01-01'); 79 | a.format(); 80 | `); 81 | 82 | const { messages } = results[0]; 83 | assert.equal(messages.length, 1); 84 | assert.equal(messages[0].ruleId, '@salesforce/lightning/no-moment'); 85 | }); 86 | 87 | it('extended set should include @salesforce/lightning/no-moment rule', async () => { 88 | const lwcConfig = require('@salesforce/eslint-config-lwc'); 89 | const cli = new eslint.ESLint({ 90 | overrideConfigFile: true, 91 | baseConfig: [...lwcConfig.configs.i18nTs], 92 | }); 93 | 94 | const results = await cli.lintText(` 95 | const moment = require('moment'); 96 | const a: moment.Moment = moment('2016-01-01'); 97 | a.format(); 98 | `); 99 | 100 | const { messages } = results[0]; 101 | assert.equal(messages.length, 1); 102 | assert.equal(messages[0].ruleId, '@salesforce/lightning/no-moment'); 103 | }); 104 | }); 105 | -------------------------------------------------------------------------------- /test/recommended.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Salesforce, Inc. 3 | * All rights reserved. 4 | * SPDX-License-Identifier: MIT 5 | * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT 6 | */ 7 | 'use strict'; 8 | 9 | const assert = require('assert'); 10 | const eslint = require('eslint'); 11 | const semver = require('semver'); 12 | 13 | const { linkConfig, unlinkConfig } = require('./utils'); 14 | 15 | function getCliEngineWithRecommendedRules(typescript = false) { 16 | const lwcConfig = require('@salesforce/eslint-config-lwc'); 17 | return new eslint.ESLint({ 18 | overrideConfigFile: true, 19 | baseConfig: [ 20 | ...(typescript ? lwcConfig.configs.recommendedTs : lwcConfig.configs.recommended), 21 | { 22 | // Required for https://github.com/jest-community/eslint-plugin-jest 23 | settings: { 24 | jest: { 25 | version: '26', 26 | }, 27 | }, 28 | }, 29 | ], 30 | }); 31 | } 32 | 33 | describe('recommended config', () => { 34 | before(() => { 35 | linkConfig(); 36 | }); 37 | 38 | after(() => { 39 | unlinkConfig(); 40 | }); 41 | 42 | it('should load properly recommended config', async () => { 43 | const cli = getCliEngineWithRecommendedRules(); 44 | 45 | const results = await cli.lintText('document.querySelectorAll("a")'); 46 | 47 | const { messages } = results[0]; 48 | assert.strictEqual(messages.length, 1); 49 | assert.strictEqual(messages[0].ruleId, '@lwc/lwc/no-document-query'); 50 | }); 51 | 52 | it('should forbid mixing uppercase and underscore characters in public properties', async () => { 53 | const cli = getCliEngineWithRecommendedRules(); 54 | 55 | const results = await cli.lintText(` 56 | import { LightningElement, api } from 'lwc'; 57 | export default class Foo extends LightningElement { 58 | @api bar_Foo() {} 59 | } 60 | `); 61 | 62 | const { messages } = results[0]; 63 | assert.strictEqual(messages.length, 1); 64 | assert.strictEqual(messages[0].ruleId, '@lwc/lwc/valid-api'); 65 | }); 66 | 67 | it('should suggest usage of CustomEvent over Event constructor', async () => { 68 | const cli = getCliEngineWithRecommendedRules(); 69 | 70 | const results = await cli.lintText(`dispatchEvent(new Event('test'));`); 71 | 72 | const { messages } = results[0]; 73 | assert.strictEqual(messages.length, 1); 74 | assert.strictEqual(messages[0].ruleId, '@lwc/lwc/prefer-custom-event'); 75 | }); 76 | 77 | it('should forbid duplicate class members', async () => { 78 | const cli = getCliEngineWithRecommendedRules(); 79 | 80 | const results = await cli.lintText(` 81 | import { LightningElement, api } from 'lwc'; 82 | 83 | export default class App extends LightningElement { 84 | @api foo = 1; 85 | 86 | set foo(value) { this._foo = value } 87 | get foo() { return this._foo; } 88 | } 89 | `); 90 | 91 | const { messages } = results[0]; 92 | 93 | const expected = semver.lt(eslint.ESLint.version, '8.0.0') 94 | ? ['@lwc/lwc/no-dupe-class-members', '@lwc/lwc/no-dupe-class-members'] 95 | : ['no-dupe-class-members', 'no-dupe-class-members']; 96 | assert.deepStrictEqual( 97 | messages.map((_) => _.ruleId), 98 | expected, 99 | ); 100 | }); 101 | 102 | it('should prevent attributes set during construction', async () => { 103 | const cli = getCliEngineWithRecommendedRules(); 104 | 105 | const results = await cli.lintText(` 106 | import { LightningElement } from 'lwc'; 107 | 108 | export default class App extends LightningElement { 109 | constructor() { 110 | super(); 111 | this.tabIndex = '-1'; 112 | } 113 | } 114 | `); 115 | 116 | const { messages } = results[0]; 117 | assert.strictEqual(messages.length, 1); 118 | assert.strictEqual(messages[0].ruleId, '@lwc/lwc/no-attributes-during-construction'); 119 | }); 120 | 121 | it('should prevent accessing the immediate children of this.template', async () => { 122 | const cli = getCliEngineWithRecommendedRules(); 123 | 124 | const results = await cli.lintText(` 125 | import { LightningElement } from 'lwc'; 126 | 127 | export default class App extends LightningElement { 128 | renderedCallback() { 129 | const element = this.template.firstChild; 130 | element.focus(); 131 | } 132 | } 133 | `); 134 | 135 | const { messages } = results[0]; 136 | assert.strictEqual(messages.length, 1); 137 | assert.strictEqual(messages[0].ruleId, '@lwc/lwc/no-template-children'); 138 | }); 139 | 140 | it('should prevent invalid usage of Apex method', async () => { 141 | const cli = getCliEngineWithRecommendedRules(); 142 | 143 | const results = await cli.lintText(` 144 | import findContacts from '@salesforce/apex/ContactController.findContacts'; 145 | findContacts('Ted'); 146 | `); 147 | 148 | const { messages } = results[0]; 149 | assert.strictEqual(messages.length, 1); 150 | assert.strictEqual( 151 | messages[0].ruleId, 152 | '@salesforce/lightning/valid-apex-method-invocation', 153 | ); 154 | }); 155 | 156 | it('should prevent invalid usage of graphql error callback parameter', async () => { 157 | const cli = getCliEngineWithRecommendedRules(); 158 | 159 | const results = await cli.lintText(` 160 | import { wire } from 'lwc'; 161 | import { gql, graphql } from 'lightning/uiGraphQLApi'; 162 | 163 | class Test { 164 | @wire(graphql, {}) 165 | wiredMethod({error, data}) {} 166 | }`); 167 | 168 | const { messages } = results[0]; 169 | assert.strictEqual(messages.length, 5); 170 | assert.strictEqual( 171 | messages[2].ruleId, 172 | '@lwc/lwc/valid-graphql-wire-adapter-callback-parameters', 173 | ); 174 | }); 175 | }); 176 | 177 | describe('typescript recommended config', () => { 178 | before(() => { 179 | linkConfig(); 180 | }); 181 | 182 | after(() => { 183 | unlinkConfig(); 184 | }); 185 | 186 | it('should load properly recommended config', async () => { 187 | const cli = getCliEngineWithRecommendedRules(true); 188 | 189 | const results = await cli.lintText(` 190 | const a: string = "a" 191 | document.querySelectorAll(a) 192 | `); 193 | 194 | const { messages } = results[0]; 195 | assert.strictEqual(messages.length, 1); 196 | assert.strictEqual(messages[0].ruleId, '@lwc/lwc/no-document-query'); 197 | }); 198 | 199 | it('should forbid mixing uppercase and underscore characters in public properties', async () => { 200 | const cli = getCliEngineWithRecommendedRules(true); 201 | 202 | const results = await cli.lintText(` 203 | import { LightningElement, api } from 'lwc'; 204 | export default class Foo extends LightningElement { 205 | @api bar_Foo(): void {} 206 | } 207 | `); 208 | 209 | const { messages } = results[0]; 210 | assert.strictEqual(messages.length, 1); 211 | assert.strictEqual(messages[0].ruleId, '@lwc/lwc/valid-api'); 212 | }); 213 | 214 | it('should suggest usage of CustomEvent over Event constructor', async () => { 215 | const cli = getCliEngineWithRecommendedRules(true); 216 | 217 | const results = await cli.lintText(` 218 | const eventName: string = 'test'; 219 | dispatchEvent(new Event(eventName)); 220 | `); 221 | 222 | const { messages } = results[0]; 223 | assert.strictEqual(messages.length, 1); 224 | assert.strictEqual(messages[0].ruleId, '@lwc/lwc/prefer-custom-event'); 225 | }); 226 | 227 | it('should forbid duplicate class members', async () => { 228 | const cli = getCliEngineWithRecommendedRules(true); 229 | 230 | const results = await cli.lintText(` 231 | import { LightningElement, api } from 'lwc'; 232 | 233 | export default class App extends LightningElement { 234 | @api foo = 1; 235 | 236 | set foo(value: number): void { this._foo = value } 237 | get foo(): number { return this._foo; } 238 | } 239 | `); 240 | 241 | const { messages } = results[0]; 242 | 243 | const expected = semver.lt(eslint.ESLint.version, '8.0.0') 244 | ? ['@lwc/lwc/no-dupe-class-members', '@lwc/lwc/no-dupe-class-members'] 245 | : ['no-dupe-class-members', 'no-dupe-class-members']; 246 | assert.deepStrictEqual( 247 | messages.map((_) => _.ruleId), 248 | expected, 249 | ); 250 | }); 251 | 252 | it('should prevent attributes set during construction', async () => { 253 | const cli = getCliEngineWithRecommendedRules(true); 254 | 255 | const results = await cli.lintText(` 256 | import { LightningElement } from 'lwc'; 257 | 258 | export default class App extends LightningElement { 259 | constructor() { 260 | super(); 261 | const tabIndex: string = '-1'; 262 | this.tabIndex = tabIndex; 263 | } 264 | } 265 | `); 266 | 267 | const { messages } = results[0]; 268 | assert.strictEqual(messages.length, 1); 269 | assert.strictEqual(messages[0].ruleId, '@lwc/lwc/no-attributes-during-construction'); 270 | }); 271 | 272 | it('should prevent accessing the immediate children of this.template', async () => { 273 | const cli = getCliEngineWithRecommendedRules(true); 274 | 275 | const results = await cli.lintText(` 276 | import { LightningElement } from 'lwc'; 277 | 278 | export default class App extends LightningElement { 279 | renderedCallback(): void { 280 | const element = this.template.firstChild; 281 | element!.focus(); 282 | } 283 | } 284 | `); 285 | 286 | const { messages } = results[0]; 287 | assert.strictEqual(messages.length, 1); 288 | assert.strictEqual(messages[0].ruleId, '@lwc/lwc/no-template-children'); 289 | }); 290 | 291 | it('should prevent invalid usage of Apex method', async () => { 292 | const cli = getCliEngineWithRecommendedRules(true); 293 | 294 | const results = await cli.lintText(` 295 | import findContacts from '@salesforce/apex/ContactController.findContacts'; 296 | const query: string = 'Ted' 297 | findContacts(query); 298 | `); 299 | 300 | const { messages } = results[0]; 301 | assert.strictEqual(messages.length, 1); 302 | assert.strictEqual( 303 | messages[0].ruleId, 304 | '@salesforce/lightning/valid-apex-method-invocation', 305 | ); 306 | }); 307 | 308 | it('should prevent invalid usage of graphql error callback parameter', async () => { 309 | const cli = getCliEngineWithRecommendedRules(true); 310 | 311 | const results = await cli.lintText(` 312 | import { wire } from 'lwc'; 313 | import { gql, graphql } from 'lightning/uiGraphQLApi'; 314 | 315 | class Test { 316 | @wire(graphql, {}) 317 | wiredMethod({error, data}: object): void {} 318 | }`); 319 | 320 | const { messages } = results[0]; 321 | assert.strictEqual(messages.length, 5); 322 | assert.strictEqual( 323 | messages[2].ruleId, 324 | '@lwc/lwc/valid-graphql-wire-adapter-callback-parameters', 325 | ); 326 | }); 327 | }); 328 | -------------------------------------------------------------------------------- /test/ssr.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Salesforce, Inc. 3 | * All rights reserved. 4 | * SPDX-License-Identifier: MIT 5 | * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT 6 | */ 7 | 'use strict'; 8 | 9 | const assert = require('assert'); 10 | const eslint = require('eslint'); 11 | 12 | const { linkConfig, unlinkConfig } = require('./utils'); 13 | 14 | describe('ssr configs', () => { 15 | before(() => { 16 | linkConfig(); 17 | }); 18 | 19 | after(() => { 20 | unlinkConfig(); 21 | }); 22 | 23 | it('should load properly', async () => { 24 | const lwcConfig = require('@salesforce/eslint-config-lwc'); 25 | const cli = new eslint.ESLint({ 26 | overrideConfigFile: true, 27 | baseConfig: [...lwcConfig.configs.ssr], 28 | }); 29 | 30 | const results = await cli.lintText(` 31 | import { LightningElement } from 'lwc'; 32 | import fs from 'node:fs'; 33 | import { formFactor } from '@salesforce/client/formFactor'; 34 | import userId from '@salesforce/user/Id'; 35 | export default class Foo extends LightningElement { 36 | connectedCallback() { 37 | document.write("Hello world"); 38 | this.dispatchEvent("Hello world"); 39 | console.log(formFactor); 40 | this.setAttribute('class', \`my-child-\${this.fromOutside}\`); 41 | if (process.env.NODE_ENV === 'development') { 42 | console.log('test'); 43 | } 44 | fs.writeFileSync('file.txt', 'data'); 45 | console.log(userId); 46 | } 47 | } 48 | `); 49 | 50 | const { messages } = results[0]; 51 | assert.equal(messages.length, 7); 52 | assert.equal(messages[0].ruleId, '@lwc/lwc/ssr-no-form-factor'); 53 | assert.equal( 54 | messages[1].ruleId, 55 | '@lwc/lwc/ssr-no-static-imports-of-user-specific-scoped-modules', 56 | ); 57 | assert.equal(messages[2].ruleId, '@lwc/lwc/ssr-no-restricted-browser-globals'); 58 | assert.equal(messages[3].ruleId, '@lwc/lwc/ssr-no-unsupported-properties'); 59 | assert.equal(messages[4].ruleId, '@lwc/lwc/ssr-no-host-mutation-in-connected-callback'); 60 | assert.equal(messages[5].ruleId, '@lwc/lwc/ssr-no-node-env'); 61 | assert.equal(messages[6].ruleId, '@lwc/lwc/ssr-no-unsupported-node-api'); 62 | }); 63 | }); 64 | 65 | describe('typescript ssr configs', () => { 66 | before(() => { 67 | linkConfig(); 68 | }); 69 | 70 | after(() => { 71 | unlinkConfig(); 72 | }); 73 | 74 | it('should load properly', async () => { 75 | const lwcConfig = require('@salesforce/eslint-config-lwc'); 76 | const cli = new eslint.ESLint({ 77 | overrideConfigFile: true, 78 | baseConfig: [...lwcConfig.configs.ssrTs], 79 | }); 80 | 81 | const results = await cli.lintText(` 82 | import { LightningElement } from 'lwc'; 83 | import fs from 'node:fs'; 84 | import { formFactor } from '@salesforce/client/formFactor'; 85 | import userId from '@salesforce/user/Id'; 86 | 87 | export default class Foo extends LightningElement { 88 | connectedCallback(): void { 89 | document.write("Hello world") 90 | this.dispatchEvent("Hello world") 91 | console.log(formFactor); 92 | this.setAttribute('class', \`my-child-\${this.fromOutside}\`); 93 | if (process.env.NODE_ENV === 'development') { 94 | console.log('test'); 95 | } 96 | fs.writeFileSync('file.txt', 'data'); 97 | console.log(userId); 98 | } 99 | } 100 | `); 101 | 102 | const { messages } = results[0]; 103 | assert.equal(messages.length, 7); 104 | assert.equal(messages[0].ruleId, '@lwc/lwc/ssr-no-form-factor'); 105 | assert.equal( 106 | messages[1].ruleId, 107 | '@lwc/lwc/ssr-no-static-imports-of-user-specific-scoped-modules', 108 | ); 109 | assert.equal(messages[2].ruleId, '@lwc/lwc/ssr-no-restricted-browser-globals'); 110 | assert.equal(messages[3].ruleId, '@lwc/lwc/ssr-no-unsupported-properties'); 111 | assert.equal(messages[4].ruleId, '@lwc/lwc/ssr-no-host-mutation-in-connected-callback'); 112 | assert.equal(messages[5].ruleId, '@lwc/lwc/ssr-no-node-env'); 113 | assert.equal(messages[6].ruleId, '@lwc/lwc/ssr-no-unsupported-node-api'); 114 | }); 115 | }); 116 | -------------------------------------------------------------------------------- /test/utils.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2024, Salesforce, Inc. 3 | * All rights reserved. 4 | * SPDX-License-Identifier: MIT 5 | * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/MIT 6 | */ 7 | 'use strict'; 8 | 9 | const fs = require('fs'); 10 | const path = require('path'); 11 | 12 | const PACKAGE_DIRECTORY = path.resolve(__dirname, '../node_modules/@salesforce/eslint-config-lwc'); 13 | 14 | function linkConfig() { 15 | if (!fs.existsSync(PACKAGE_DIRECTORY)) { 16 | fs.symlinkSync(path.resolve(__dirname, '..'), PACKAGE_DIRECTORY, 'dir'); 17 | } 18 | } 19 | 20 | function unlinkConfig() { 21 | if (fs.existsSync(PACKAGE_DIRECTORY)) { 22 | fs.unlinkSync(PACKAGE_DIRECTORY); 23 | } 24 | } 25 | 26 | module.exports = { 27 | linkConfig, 28 | unlinkConfig, 29 | }; 30 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@ampproject/remapping@^2.2.0": 6 | version "2.3.0" 7 | resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" 8 | integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== 9 | dependencies: 10 | "@jridgewell/gen-mapping" "^0.3.5" 11 | "@jridgewell/trace-mapping" "^0.3.24" 12 | 13 | "@babel/code-frame@^7.25.9", "@babel/code-frame@^7.26.0", "@babel/code-frame@^7.26.2": 14 | version "7.26.2" 15 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85" 16 | integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== 17 | dependencies: 18 | "@babel/helper-validator-identifier" "^7.25.9" 19 | js-tokens "^4.0.0" 20 | picocolors "^1.0.0" 21 | 22 | "@babel/compat-data@^7.25.9": 23 | version "7.26.3" 24 | resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.3.tgz#99488264a56b2aded63983abd6a417f03b92ed02" 25 | integrity sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g== 26 | 27 | "@babel/core@~7.26.0": 28 | version "7.26.0" 29 | resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.0.tgz#d78b6023cc8f3114ccf049eb219613f74a747b40" 30 | integrity sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg== 31 | dependencies: 32 | "@ampproject/remapping" "^2.2.0" 33 | "@babel/code-frame" "^7.26.0" 34 | "@babel/generator" "^7.26.0" 35 | "@babel/helper-compilation-targets" "^7.25.9" 36 | "@babel/helper-module-transforms" "^7.26.0" 37 | "@babel/helpers" "^7.26.0" 38 | "@babel/parser" "^7.26.0" 39 | "@babel/template" "^7.25.9" 40 | "@babel/traverse" "^7.25.9" 41 | "@babel/types" "^7.26.0" 42 | convert-source-map "^2.0.0" 43 | debug "^4.1.0" 44 | gensync "^1.0.0-beta.2" 45 | json5 "^2.2.3" 46 | semver "^6.3.1" 47 | 48 | "@babel/eslint-parser@~7.25.9": 49 | version "7.25.9" 50 | resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.25.9.tgz#603c68a63078796527bc9d0833f5e52dd5f9224c" 51 | integrity sha512-5UXfgpK0j0Xr/xIdgdLEhOFxaDZ0bRPWJJchRpqOSur/3rZoPbqqki5mm0p4NE2cs28krBEiSM2MB7//afRSQQ== 52 | dependencies: 53 | "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" 54 | eslint-visitor-keys "^2.1.0" 55 | semver "^6.3.1" 56 | 57 | "@babel/generator@^7.26.0", "@babel/generator@^7.26.3": 58 | version "7.26.3" 59 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.3.tgz#ab8d4360544a425c90c248df7059881f4b2ce019" 60 | integrity sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ== 61 | dependencies: 62 | "@babel/parser" "^7.26.3" 63 | "@babel/types" "^7.26.3" 64 | "@jridgewell/gen-mapping" "^0.3.5" 65 | "@jridgewell/trace-mapping" "^0.3.25" 66 | jsesc "^3.0.2" 67 | 68 | "@babel/helper-compilation-targets@^7.25.9": 69 | version "7.25.9" 70 | resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz#55af025ce365be3cdc0c1c1e56c6af617ce88875" 71 | integrity sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ== 72 | dependencies: 73 | "@babel/compat-data" "^7.25.9" 74 | "@babel/helper-validator-option" "^7.25.9" 75 | browserslist "^4.24.0" 76 | lru-cache "^5.1.1" 77 | semver "^6.3.1" 78 | 79 | "@babel/helper-module-imports@^7.25.9": 80 | version "7.25.9" 81 | resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz#e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715" 82 | integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw== 83 | dependencies: 84 | "@babel/traverse" "^7.25.9" 85 | "@babel/types" "^7.25.9" 86 | 87 | "@babel/helper-module-transforms@^7.26.0": 88 | version "7.26.0" 89 | resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz#8ce54ec9d592695e58d84cd884b7b5c6a2fdeeae" 90 | integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw== 91 | dependencies: 92 | "@babel/helper-module-imports" "^7.25.9" 93 | "@babel/helper-validator-identifier" "^7.25.9" 94 | "@babel/traverse" "^7.25.9" 95 | 96 | "@babel/helper-string-parser@^7.25.9": 97 | version "7.25.9" 98 | resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c" 99 | integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== 100 | 101 | "@babel/helper-validator-identifier@^7.25.9": 102 | version "7.25.9" 103 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" 104 | integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== 105 | 106 | "@babel/helper-validator-option@^7.25.9": 107 | version "7.25.9" 108 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72" 109 | integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw== 110 | 111 | "@babel/helpers@^7.26.0": 112 | version "7.27.0" 113 | resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.27.0.tgz#53d156098defa8243eab0f32fa17589075a1b808" 114 | integrity sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg== 115 | dependencies: 116 | "@babel/template" "^7.27.0" 117 | "@babel/types" "^7.27.0" 118 | 119 | "@babel/parser@^7.25.9", "@babel/parser@^7.26.0", "@babel/parser@^7.26.3": 120 | version "7.26.3" 121 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.3.tgz#8c51c5db6ddf08134af1ddbacf16aaab48bac234" 122 | integrity sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA== 123 | dependencies: 124 | "@babel/types" "^7.26.3" 125 | 126 | "@babel/parser@^7.27.0": 127 | version "7.27.0" 128 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.0.tgz#3d7d6ee268e41d2600091cbd4e145ffee85a44ec" 129 | integrity sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg== 130 | dependencies: 131 | "@babel/types" "^7.27.0" 132 | 133 | "@babel/template@^7.25.9": 134 | version "7.25.9" 135 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.9.tgz#ecb62d81a8a6f5dc5fe8abfc3901fc52ddf15016" 136 | integrity sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg== 137 | dependencies: 138 | "@babel/code-frame" "^7.25.9" 139 | "@babel/parser" "^7.25.9" 140 | "@babel/types" "^7.25.9" 141 | 142 | "@babel/template@^7.27.0": 143 | version "7.27.0" 144 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.0.tgz#b253e5406cc1df1c57dcd18f11760c2dbf40c0b4" 145 | integrity sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA== 146 | dependencies: 147 | "@babel/code-frame" "^7.26.2" 148 | "@babel/parser" "^7.27.0" 149 | "@babel/types" "^7.27.0" 150 | 151 | "@babel/traverse@^7.25.9": 152 | version "7.26.4" 153 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.26.4.tgz#ac3a2a84b908dde6d463c3bfa2c5fdc1653574bd" 154 | integrity sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w== 155 | dependencies: 156 | "@babel/code-frame" "^7.26.2" 157 | "@babel/generator" "^7.26.3" 158 | "@babel/parser" "^7.26.3" 159 | "@babel/template" "^7.25.9" 160 | "@babel/types" "^7.26.3" 161 | debug "^4.3.1" 162 | globals "^11.1.0" 163 | 164 | "@babel/types@^7.25.9", "@babel/types@^7.26.0", "@babel/types@^7.26.3": 165 | version "7.26.3" 166 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.3.tgz#37e79830f04c2b5687acc77db97fbc75fb81f3c0" 167 | integrity sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA== 168 | dependencies: 169 | "@babel/helper-string-parser" "^7.25.9" 170 | "@babel/helper-validator-identifier" "^7.25.9" 171 | 172 | "@babel/types@^7.27.0": 173 | version "7.27.0" 174 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.27.0.tgz#ef9acb6b06c3173f6632d993ecb6d4ae470b4559" 175 | integrity sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg== 176 | dependencies: 177 | "@babel/helper-string-parser" "^7.25.9" 178 | "@babel/helper-validator-identifier" "^7.25.9" 179 | 180 | "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": 181 | version "4.4.0" 182 | resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" 183 | integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== 184 | dependencies: 185 | eslint-visitor-keys "^3.3.0" 186 | 187 | "@eslint-community/regexpp@^4.12.1": 188 | version "4.12.1" 189 | resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" 190 | integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== 191 | 192 | "@eslint/config-array@^0.19.0": 193 | version "0.19.1" 194 | resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.19.1.tgz#734aaea2c40be22bbb1f2a9dac687c57a6a4c984" 195 | integrity sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA== 196 | dependencies: 197 | "@eslint/object-schema" "^2.1.5" 198 | debug "^4.3.1" 199 | minimatch "^3.1.2" 200 | 201 | "@eslint/core@^0.9.0": 202 | version "0.9.1" 203 | resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.9.1.tgz#31763847308ef6b7084a4505573ac9402c51f9d1" 204 | integrity sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q== 205 | dependencies: 206 | "@types/json-schema" "^7.0.15" 207 | 208 | "@eslint/eslintrc@^3.2.0": 209 | version "3.2.0" 210 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.2.0.tgz#57470ac4e2e283a6bf76044d63281196e370542c" 211 | integrity sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w== 212 | dependencies: 213 | ajv "^6.12.4" 214 | debug "^4.3.2" 215 | espree "^10.0.1" 216 | globals "^14.0.0" 217 | ignore "^5.2.0" 218 | import-fresh "^3.2.1" 219 | js-yaml "^4.1.0" 220 | minimatch "^3.1.2" 221 | strip-json-comments "^3.1.1" 222 | 223 | "@eslint/js@9.17.0", "@eslint/js@^9.17.0": 224 | version "9.17.0" 225 | resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.17.0.tgz#1523e586791f80376a6f8398a3964455ecc651ec" 226 | integrity sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w== 227 | 228 | "@eslint/object-schema@^2.1.5": 229 | version "2.1.5" 230 | resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.5.tgz#8670a8f6258a2be5b2c620ff314a1d984c23eb2e" 231 | integrity sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ== 232 | 233 | "@eslint/plugin-kit@^0.2.3": 234 | version "0.2.4" 235 | resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.4.tgz#2b78e7bb3755784bb13faa8932a1d994d6537792" 236 | integrity sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg== 237 | dependencies: 238 | levn "^0.4.1" 239 | 240 | "@humanfs/core@^0.19.1": 241 | version "0.19.1" 242 | resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77" 243 | integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== 244 | 245 | "@humanfs/node@^0.16.6": 246 | version "0.16.6" 247 | resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.6.tgz#ee2a10eaabd1131987bf0488fd9b820174cd765e" 248 | integrity sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw== 249 | dependencies: 250 | "@humanfs/core" "^0.19.1" 251 | "@humanwhocodes/retry" "^0.3.0" 252 | 253 | "@humanwhocodes/module-importer@^1.0.1": 254 | version "1.0.1" 255 | resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" 256 | integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== 257 | 258 | "@humanwhocodes/retry@^0.3.0": 259 | version "0.3.1" 260 | resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.1.tgz#c72a5c76a9fbaf3488e231b13dc52c0da7bab42a" 261 | integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA== 262 | 263 | "@humanwhocodes/retry@^0.4.1": 264 | version "0.4.1" 265 | resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.1.tgz#9a96ce501bc62df46c4031fbd970e3cc6b10f07b" 266 | integrity sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA== 267 | 268 | "@jridgewell/gen-mapping@^0.3.5": 269 | version "0.3.5" 270 | resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" 271 | integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== 272 | dependencies: 273 | "@jridgewell/set-array" "^1.2.1" 274 | "@jridgewell/sourcemap-codec" "^1.4.10" 275 | "@jridgewell/trace-mapping" "^0.3.24" 276 | 277 | "@jridgewell/resolve-uri@^3.1.0": 278 | version "3.1.2" 279 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" 280 | integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== 281 | 282 | "@jridgewell/set-array@^1.2.1": 283 | version "1.2.1" 284 | resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" 285 | integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== 286 | 287 | "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": 288 | version "1.4.15" 289 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" 290 | integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== 291 | 292 | "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": 293 | version "0.3.25" 294 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" 295 | integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== 296 | dependencies: 297 | "@jridgewell/resolve-uri" "^3.1.0" 298 | "@jridgewell/sourcemap-codec" "^1.4.14" 299 | 300 | "@lwc/eslint-plugin-lwc@^3.0.0": 301 | version "3.0.0" 302 | resolved "https://registry.yarnpkg.com/@lwc/eslint-plugin-lwc/-/eslint-plugin-lwc-3.0.0.tgz#df5168cb951540ad41750cccfec06a047a2062bd" 303 | integrity sha512-98Z9Jo/w/g5rvaCwW53MooEozle+Cz8ixSpdGS3ndcU3pxWPMuexzrkbEtWny3YKYR6tKw9QXlaDL8hexE4zMA== 304 | dependencies: 305 | fast-xml-parser "^4.5.1" 306 | globals "~15.14.0" 307 | minimatch "~9.0.4" 308 | 309 | "@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": 310 | version "5.1.1-v1" 311 | resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" 312 | integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== 313 | dependencies: 314 | eslint-scope "5.1.1" 315 | 316 | "@nodelib/fs.scandir@2.1.5": 317 | version "2.1.5" 318 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" 319 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== 320 | dependencies: 321 | "@nodelib/fs.stat" "2.0.5" 322 | run-parallel "^1.1.9" 323 | 324 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": 325 | version "2.0.5" 326 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" 327 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== 328 | 329 | "@nodelib/fs.walk@^1.2.3": 330 | version "1.2.8" 331 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" 332 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== 333 | dependencies: 334 | "@nodelib/fs.scandir" "2.1.5" 335 | fastq "^1.6.0" 336 | 337 | "@rtsao/scc@^1.1.0": 338 | version "1.1.0" 339 | resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8" 340 | integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g== 341 | 342 | "@salesforce/eslint-plugin-lightning@^2.0.0": 343 | version "2.0.0" 344 | resolved "https://registry.yarnpkg.com/@salesforce/eslint-plugin-lightning/-/eslint-plugin-lightning-2.0.0.tgz#234cffdd8357af9b13b65d044feab2477a19daea" 345 | integrity sha512-lC3GL2j6B2wAGeTFWT0h47BFg+0R7naqqlQW+ANvNSaIC/qEB+tNSRcdAZ8DRTojsI3GRdpgq3FTB1llbrFBng== 346 | 347 | "@types/estree@^1.0.6": 348 | version "1.0.6" 349 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" 350 | integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== 351 | 352 | "@types/json-schema@^7.0.15": 353 | version "7.0.15" 354 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" 355 | integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== 356 | 357 | "@types/json5@^0.0.29": 358 | version "0.0.29" 359 | resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" 360 | integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== 361 | 362 | "@typescript-eslint/scope-manager@8.19.0": 363 | version "8.19.0" 364 | resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.19.0.tgz#28fa413a334f70e8b506a968531e0a7c9c3076dc" 365 | integrity sha512-hkoJiKQS3GQ13TSMEiuNmSCvhz7ujyqD1x3ShbaETATHrck+9RaDdUbt+osXaUuns9OFwrDTTrjtwsU8gJyyRA== 366 | dependencies: 367 | "@typescript-eslint/types" "8.19.0" 368 | "@typescript-eslint/visitor-keys" "8.19.0" 369 | 370 | "@typescript-eslint/types@8.19.0": 371 | version "8.19.0" 372 | resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.19.0.tgz#a190a25c5484a42b81eaad06989579fdeb478cbb" 373 | integrity sha512-8XQ4Ss7G9WX8oaYvD4OOLCjIQYgRQxO+qCiR2V2s2GxI9AUpo7riNwo6jDhKtTcaJjT8PY54j2Yb33kWtSJsmA== 374 | 375 | "@typescript-eslint/typescript-estree@8.19.0": 376 | version "8.19.0" 377 | resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.19.0.tgz#6b4f48f98ffad6597379951b115710f4d68c9ccb" 378 | integrity sha512-WW9PpDaLIFW9LCbucMSdYUuGeFUz1OkWYS/5fwZwTA+l2RwlWFdJvReQqMUMBw4yJWJOfqd7An9uwut2Oj8sLw== 379 | dependencies: 380 | "@typescript-eslint/types" "8.19.0" 381 | "@typescript-eslint/visitor-keys" "8.19.0" 382 | debug "^4.3.4" 383 | fast-glob "^3.3.2" 384 | is-glob "^4.0.3" 385 | minimatch "^9.0.4" 386 | semver "^7.6.0" 387 | ts-api-utils "^1.3.0" 388 | 389 | "@typescript-eslint/utils@^6.0.0 || ^7.0.0 || ^8.0.0": 390 | version "8.19.0" 391 | resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.19.0.tgz#33824310e1fccc17f27fbd1030fd8bbd9a674684" 392 | integrity sha512-PTBG+0oEMPH9jCZlfg07LCB2nYI0I317yyvXGfxnvGvw4SHIOuRnQ3kadyyXY6tGdChusIHIbM5zfIbp4M6tCg== 393 | dependencies: 394 | "@eslint-community/eslint-utils" "^4.4.0" 395 | "@typescript-eslint/scope-manager" "8.19.0" 396 | "@typescript-eslint/types" "8.19.0" 397 | "@typescript-eslint/typescript-estree" "8.19.0" 398 | 399 | "@typescript-eslint/visitor-keys@8.19.0": 400 | version "8.19.0" 401 | resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.19.0.tgz#dc313f735e64c4979c9073f51ffcefb6d9be5c77" 402 | integrity sha512-mCFtBbFBJDCNCWUl5y6sZSCHXw1DEFEk3c/M3nRK2a4XUB8StGFtmcEMizdjKuBzB6e/smJAAWYug3VrdLMr1w== 403 | dependencies: 404 | "@typescript-eslint/types" "8.19.0" 405 | eslint-visitor-keys "^4.2.0" 406 | 407 | acorn-jsx@^5.3.2: 408 | version "5.3.2" 409 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" 410 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== 411 | 412 | acorn@^8.14.0: 413 | version "8.14.0" 414 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" 415 | integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== 416 | 417 | ajv@^6.12.4: 418 | version "6.12.6" 419 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 420 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 421 | dependencies: 422 | fast-deep-equal "^3.1.1" 423 | fast-json-stable-stringify "^2.0.0" 424 | json-schema-traverse "^0.4.1" 425 | uri-js "^4.2.2" 426 | 427 | ansi-colors@4.1.1: 428 | version "4.1.1" 429 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" 430 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== 431 | 432 | ansi-escapes@^6.2.0: 433 | version "6.2.1" 434 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-6.2.1.tgz#76c54ce9b081dad39acec4b5d53377913825fb0f" 435 | integrity sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig== 436 | 437 | ansi-regex@^5.0.1: 438 | version "5.0.1" 439 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 440 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 441 | 442 | ansi-regex@^6.0.1: 443 | version "6.0.1" 444 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" 445 | integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== 446 | 447 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 448 | version "4.3.0" 449 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 450 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 451 | dependencies: 452 | color-convert "^2.0.1" 453 | 454 | ansi-styles@^6.0.0, ansi-styles@^6.2.1: 455 | version "6.2.1" 456 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" 457 | integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== 458 | 459 | anymatch@~3.1.2: 460 | version "3.1.3" 461 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" 462 | integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== 463 | dependencies: 464 | normalize-path "^3.0.0" 465 | picomatch "^2.0.4" 466 | 467 | argparse@^2.0.1: 468 | version "2.0.1" 469 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 470 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 471 | 472 | array-buffer-byte-length@^1.0.1: 473 | version "1.0.1" 474 | resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" 475 | integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== 476 | dependencies: 477 | call-bind "^1.0.5" 478 | is-array-buffer "^3.0.4" 479 | 480 | array-includes@^3.1.8: 481 | version "3.1.8" 482 | resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d" 483 | integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ== 484 | dependencies: 485 | call-bind "^1.0.7" 486 | define-properties "^1.2.1" 487 | es-abstract "^1.23.2" 488 | es-object-atoms "^1.0.0" 489 | get-intrinsic "^1.2.4" 490 | is-string "^1.0.7" 491 | 492 | array.prototype.findlastindex@^1.2.5: 493 | version "1.2.5" 494 | resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz#8c35a755c72908719453f87145ca011e39334d0d" 495 | integrity sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ== 496 | dependencies: 497 | call-bind "^1.0.7" 498 | define-properties "^1.2.1" 499 | es-abstract "^1.23.2" 500 | es-errors "^1.3.0" 501 | es-object-atoms "^1.0.0" 502 | es-shim-unscopables "^1.0.2" 503 | 504 | array.prototype.flat@^1.3.2: 505 | version "1.3.2" 506 | resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" 507 | integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== 508 | dependencies: 509 | call-bind "^1.0.2" 510 | define-properties "^1.2.0" 511 | es-abstract "^1.22.1" 512 | es-shim-unscopables "^1.0.0" 513 | 514 | array.prototype.flatmap@^1.3.2: 515 | version "1.3.2" 516 | resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" 517 | integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== 518 | dependencies: 519 | call-bind "^1.0.2" 520 | define-properties "^1.2.0" 521 | es-abstract "^1.22.1" 522 | es-shim-unscopables "^1.0.0" 523 | 524 | arraybuffer.prototype.slice@^1.0.3: 525 | version "1.0.3" 526 | resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6" 527 | integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A== 528 | dependencies: 529 | array-buffer-byte-length "^1.0.1" 530 | call-bind "^1.0.5" 531 | define-properties "^1.2.1" 532 | es-abstract "^1.22.3" 533 | es-errors "^1.2.1" 534 | get-intrinsic "^1.2.3" 535 | is-array-buffer "^3.0.4" 536 | is-shared-array-buffer "^1.0.2" 537 | 538 | available-typed-arrays@^1.0.7: 539 | version "1.0.7" 540 | resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" 541 | integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== 542 | dependencies: 543 | possible-typed-array-names "^1.0.0" 544 | 545 | balanced-match@^1.0.0: 546 | version "1.0.2" 547 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 548 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 549 | 550 | binary-extensions@^2.0.0: 551 | version "2.3.0" 552 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" 553 | integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== 554 | 555 | brace-expansion@^1.1.7: 556 | version "1.1.11" 557 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 558 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 559 | dependencies: 560 | balanced-match "^1.0.0" 561 | concat-map "0.0.1" 562 | 563 | brace-expansion@^2.0.1: 564 | version "2.0.1" 565 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" 566 | integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== 567 | dependencies: 568 | balanced-match "^1.0.0" 569 | 570 | braces@^3.0.3, braces@~3.0.2: 571 | version "3.0.3" 572 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" 573 | integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== 574 | dependencies: 575 | fill-range "^7.1.1" 576 | 577 | browser-stdout@1.3.1: 578 | version "1.3.1" 579 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" 580 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== 581 | 582 | browserslist@^4.24.0: 583 | version "4.24.3" 584 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.3.tgz#5fc2725ca8fb3c1432e13dac278c7cc103e026d2" 585 | integrity sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA== 586 | dependencies: 587 | caniuse-lite "^1.0.30001688" 588 | electron-to-chromium "^1.5.73" 589 | node-releases "^2.0.19" 590 | update-browserslist-db "^1.1.1" 591 | 592 | call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1: 593 | version "1.0.1" 594 | resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz#32e5892e6361b29b0b545ba6f7763378daca2840" 595 | integrity sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g== 596 | dependencies: 597 | es-errors "^1.3.0" 598 | function-bind "^1.1.2" 599 | 600 | call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: 601 | version "1.0.7" 602 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" 603 | integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== 604 | dependencies: 605 | es-define-property "^1.0.0" 606 | es-errors "^1.3.0" 607 | function-bind "^1.1.2" 608 | get-intrinsic "^1.2.4" 609 | set-function-length "^1.2.1" 610 | 611 | call-bind@^1.0.8: 612 | version "1.0.8" 613 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c" 614 | integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== 615 | dependencies: 616 | call-bind-apply-helpers "^1.0.0" 617 | es-define-property "^1.0.0" 618 | get-intrinsic "^1.2.4" 619 | set-function-length "^1.2.2" 620 | 621 | call-bound@^1.0.3: 622 | version "1.0.3" 623 | resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.3.tgz#41cfd032b593e39176a71533ab4f384aa04fd681" 624 | integrity sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA== 625 | dependencies: 626 | call-bind-apply-helpers "^1.0.1" 627 | get-intrinsic "^1.2.6" 628 | 629 | callsites@^3.0.0: 630 | version "3.1.0" 631 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 632 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 633 | 634 | camelcase@^6.0.0: 635 | version "6.3.0" 636 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" 637 | integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== 638 | 639 | caniuse-lite@^1.0.30001688: 640 | version "1.0.30001690" 641 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001690.tgz#f2d15e3aaf8e18f76b2b8c1481abde063b8104c8" 642 | integrity sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w== 643 | 644 | chalk@^4.0.0, chalk@^4.1.0: 645 | version "4.1.2" 646 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 647 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 648 | dependencies: 649 | ansi-styles "^4.1.0" 650 | supports-color "^7.1.0" 651 | 652 | chalk@~5.3.0: 653 | version "5.3.0" 654 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" 655 | integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== 656 | 657 | chokidar@3.5.3: 658 | version "3.5.3" 659 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" 660 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== 661 | dependencies: 662 | anymatch "~3.1.2" 663 | braces "~3.0.2" 664 | glob-parent "~5.1.2" 665 | is-binary-path "~2.1.0" 666 | is-glob "~4.0.1" 667 | normalize-path "~3.0.0" 668 | readdirp "~3.6.0" 669 | optionalDependencies: 670 | fsevents "~2.3.2" 671 | 672 | cli-cursor@^4.0.0: 673 | version "4.0.0" 674 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-4.0.0.tgz#3cecfe3734bf4fe02a8361cbdc0f6fe28c6a57ea" 675 | integrity sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg== 676 | dependencies: 677 | restore-cursor "^4.0.0" 678 | 679 | cli-truncate@^4.0.0: 680 | version "4.0.0" 681 | resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-4.0.0.tgz#6cc28a2924fee9e25ce91e973db56c7066e6172a" 682 | integrity sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA== 683 | dependencies: 684 | slice-ansi "^5.0.0" 685 | string-width "^7.0.0" 686 | 687 | cliui@^7.0.2: 688 | version "7.0.4" 689 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" 690 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== 691 | dependencies: 692 | string-width "^4.2.0" 693 | strip-ansi "^6.0.0" 694 | wrap-ansi "^7.0.0" 695 | 696 | color-convert@^2.0.1: 697 | version "2.0.1" 698 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 699 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 700 | dependencies: 701 | color-name "~1.1.4" 702 | 703 | color-name@~1.1.4: 704 | version "1.1.4" 705 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 706 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 707 | 708 | colorette@^2.0.20: 709 | version "2.0.20" 710 | resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" 711 | integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== 712 | 713 | commander@~12.1.0: 714 | version "12.1.0" 715 | resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" 716 | integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== 717 | 718 | concat-map@0.0.1: 719 | version "0.0.1" 720 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 721 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 722 | 723 | convert-source-map@^2.0.0: 724 | version "2.0.0" 725 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" 726 | integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== 727 | 728 | cross-spawn@^7.0.3, cross-spawn@^7.0.6: 729 | version "7.0.6" 730 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" 731 | integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== 732 | dependencies: 733 | path-key "^3.1.0" 734 | shebang-command "^2.0.0" 735 | which "^2.0.1" 736 | 737 | data-view-buffer@^1.0.1: 738 | version "1.0.1" 739 | resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2" 740 | integrity sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA== 741 | dependencies: 742 | call-bind "^1.0.6" 743 | es-errors "^1.3.0" 744 | is-data-view "^1.0.1" 745 | 746 | data-view-byte-length@^1.0.1: 747 | version "1.0.1" 748 | resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#90721ca95ff280677eb793749fce1011347669e2" 749 | integrity sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ== 750 | dependencies: 751 | call-bind "^1.0.7" 752 | es-errors "^1.3.0" 753 | is-data-view "^1.0.1" 754 | 755 | data-view-byte-offset@^1.0.0: 756 | version "1.0.0" 757 | resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#5e0bbfb4828ed2d1b9b400cd8a7d119bca0ff18a" 758 | integrity sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA== 759 | dependencies: 760 | call-bind "^1.0.6" 761 | es-errors "^1.3.0" 762 | is-data-view "^1.0.1" 763 | 764 | debug@4.3.4: 765 | version "4.3.4" 766 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 767 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 768 | dependencies: 769 | ms "2.1.2" 770 | 771 | debug@^3.2.7: 772 | version "3.2.7" 773 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" 774 | integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== 775 | dependencies: 776 | ms "^2.1.1" 777 | 778 | debug@^4.1.0, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@~4.3.4: 779 | version "4.3.5" 780 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e" 781 | integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== 782 | dependencies: 783 | ms "2.1.2" 784 | 785 | decamelize@^4.0.0: 786 | version "4.0.0" 787 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" 788 | integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== 789 | 790 | deep-is@^0.1.3: 791 | version "0.1.4" 792 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" 793 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== 794 | 795 | define-data-property@^1.0.1, define-data-property@^1.1.4: 796 | version "1.1.4" 797 | resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" 798 | integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== 799 | dependencies: 800 | es-define-property "^1.0.0" 801 | es-errors "^1.3.0" 802 | gopd "^1.0.1" 803 | 804 | define-properties@^1.2.0, define-properties@^1.2.1: 805 | version "1.2.1" 806 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" 807 | integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== 808 | dependencies: 809 | define-data-property "^1.0.1" 810 | has-property-descriptors "^1.0.0" 811 | object-keys "^1.1.1" 812 | 813 | diff@5.0.0: 814 | version "5.0.0" 815 | resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" 816 | integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== 817 | 818 | doctrine@^2.1.0: 819 | version "2.1.0" 820 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" 821 | integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== 822 | dependencies: 823 | esutils "^2.0.2" 824 | 825 | dunder-proto@^1.0.1: 826 | version "1.0.1" 827 | resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" 828 | integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== 829 | dependencies: 830 | call-bind-apply-helpers "^1.0.1" 831 | es-errors "^1.3.0" 832 | gopd "^1.2.0" 833 | 834 | electron-to-chromium@^1.5.73: 835 | version "1.5.76" 836 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.76.tgz#db20295c5061b68f07c8ea4dfcbd701485d94a3d" 837 | integrity sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ== 838 | 839 | emoji-regex@^10.3.0: 840 | version "10.3.0" 841 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.3.0.tgz#76998b9268409eb3dae3de989254d456e70cfe23" 842 | integrity sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw== 843 | 844 | emoji-regex@^8.0.0: 845 | version "8.0.0" 846 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 847 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 848 | 849 | es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.2: 850 | version "1.23.3" 851 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0" 852 | integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A== 853 | dependencies: 854 | array-buffer-byte-length "^1.0.1" 855 | arraybuffer.prototype.slice "^1.0.3" 856 | available-typed-arrays "^1.0.7" 857 | call-bind "^1.0.7" 858 | data-view-buffer "^1.0.1" 859 | data-view-byte-length "^1.0.1" 860 | data-view-byte-offset "^1.0.0" 861 | es-define-property "^1.0.0" 862 | es-errors "^1.3.0" 863 | es-object-atoms "^1.0.0" 864 | es-set-tostringtag "^2.0.3" 865 | es-to-primitive "^1.2.1" 866 | function.prototype.name "^1.1.6" 867 | get-intrinsic "^1.2.4" 868 | get-symbol-description "^1.0.2" 869 | globalthis "^1.0.3" 870 | gopd "^1.0.1" 871 | has-property-descriptors "^1.0.2" 872 | has-proto "^1.0.3" 873 | has-symbols "^1.0.3" 874 | hasown "^2.0.2" 875 | internal-slot "^1.0.7" 876 | is-array-buffer "^3.0.4" 877 | is-callable "^1.2.7" 878 | is-data-view "^1.0.1" 879 | is-negative-zero "^2.0.3" 880 | is-regex "^1.1.4" 881 | is-shared-array-buffer "^1.0.3" 882 | is-string "^1.0.7" 883 | is-typed-array "^1.1.13" 884 | is-weakref "^1.0.2" 885 | object-inspect "^1.13.1" 886 | object-keys "^1.1.1" 887 | object.assign "^4.1.5" 888 | regexp.prototype.flags "^1.5.2" 889 | safe-array-concat "^1.1.2" 890 | safe-regex-test "^1.0.3" 891 | string.prototype.trim "^1.2.9" 892 | string.prototype.trimend "^1.0.8" 893 | string.prototype.trimstart "^1.0.8" 894 | typed-array-buffer "^1.0.2" 895 | typed-array-byte-length "^1.0.1" 896 | typed-array-byte-offset "^1.0.2" 897 | typed-array-length "^1.0.6" 898 | unbox-primitive "^1.0.2" 899 | which-typed-array "^1.1.15" 900 | 901 | es-define-property@^1.0.0: 902 | version "1.0.0" 903 | resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" 904 | integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== 905 | dependencies: 906 | get-intrinsic "^1.2.4" 907 | 908 | es-define-property@^1.0.1: 909 | version "1.0.1" 910 | resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" 911 | integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== 912 | 913 | es-errors@^1.2.1, es-errors@^1.3.0: 914 | version "1.3.0" 915 | resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" 916 | integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== 917 | 918 | es-object-atoms@^1.0.0: 919 | version "1.0.0" 920 | resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941" 921 | integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw== 922 | dependencies: 923 | es-errors "^1.3.0" 924 | 925 | es-set-tostringtag@^2.0.3: 926 | version "2.0.3" 927 | resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777" 928 | integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ== 929 | dependencies: 930 | get-intrinsic "^1.2.4" 931 | has-tostringtag "^1.0.2" 932 | hasown "^2.0.1" 933 | 934 | es-shim-unscopables@^1.0.0, es-shim-unscopables@^1.0.2: 935 | version "1.0.2" 936 | resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" 937 | integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== 938 | dependencies: 939 | hasown "^2.0.0" 940 | 941 | es-to-primitive@^1.2.1: 942 | version "1.2.1" 943 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" 944 | integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== 945 | dependencies: 946 | is-callable "^1.1.4" 947 | is-date-object "^1.0.1" 948 | is-symbol "^1.0.2" 949 | 950 | escalade@^3.1.1: 951 | version "3.1.2" 952 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" 953 | integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== 954 | 955 | escalade@^3.2.0: 956 | version "3.2.0" 957 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" 958 | integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== 959 | 960 | escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: 961 | version "4.0.0" 962 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 963 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 964 | 965 | eslint-import-resolver-node@^0.3.9: 966 | version "0.3.9" 967 | resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" 968 | integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== 969 | dependencies: 970 | debug "^3.2.7" 971 | is-core-module "^2.13.0" 972 | resolve "^1.22.4" 973 | 974 | eslint-module-utils@^2.12.0: 975 | version "2.12.0" 976 | resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz#fe4cfb948d61f49203d7b08871982b65b9af0b0b" 977 | integrity sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg== 978 | dependencies: 979 | debug "^3.2.7" 980 | 981 | eslint-plugin-import@^2.31.0: 982 | version "2.31.0" 983 | resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz#310ce7e720ca1d9c0bb3f69adfd1c6bdd7d9e0e7" 984 | integrity sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A== 985 | dependencies: 986 | "@rtsao/scc" "^1.1.0" 987 | array-includes "^3.1.8" 988 | array.prototype.findlastindex "^1.2.5" 989 | array.prototype.flat "^1.3.2" 990 | array.prototype.flatmap "^1.3.2" 991 | debug "^3.2.7" 992 | doctrine "^2.1.0" 993 | eslint-import-resolver-node "^0.3.9" 994 | eslint-module-utils "^2.12.0" 995 | hasown "^2.0.2" 996 | is-core-module "^2.15.1" 997 | is-glob "^4.0.3" 998 | minimatch "^3.1.2" 999 | object.fromentries "^2.0.8" 1000 | object.groupby "^1.0.3" 1001 | object.values "^1.2.0" 1002 | semver "^6.3.1" 1003 | string.prototype.trimend "^1.0.8" 1004 | tsconfig-paths "^3.15.0" 1005 | 1006 | eslint-plugin-jest@~28.10.0: 1007 | version "28.10.0" 1008 | resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-28.10.0.tgz#4b35b8abb0f7cfe699bff8d9060270a2ddd770ea" 1009 | integrity sha512-hyMWUxkBH99HpXT3p8hc7REbEZK3D+nk8vHXGgpB+XXsi0gO4PxMSP+pjfUzb67GnV9yawV9a53eUmcde1CCZA== 1010 | dependencies: 1011 | "@typescript-eslint/utils" "^6.0.0 || ^7.0.0 || ^8.0.0" 1012 | 1013 | eslint-restricted-globals@~0.2.0: 1014 | version "0.2.0" 1015 | resolved "https://registry.yarnpkg.com/eslint-restricted-globals/-/eslint-restricted-globals-0.2.0.tgz#7729f326af97bec7a7e56d9f7d9c064b79285c50" 1016 | integrity sha512-kwYJALm5KS2QW3Mc1PgObO4V+pTR6RQtRT65L1GQILlEnAhabUQqGAX7/qUjoQR4KZJKehWpBtyDEiDecwmY9A== 1017 | 1018 | eslint-scope@5.1.1: 1019 | version "5.1.1" 1020 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" 1021 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== 1022 | dependencies: 1023 | esrecurse "^4.3.0" 1024 | estraverse "^4.1.1" 1025 | 1026 | eslint-scope@^8.2.0: 1027 | version "8.2.0" 1028 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.2.0.tgz#377aa6f1cb5dc7592cfd0b7f892fd0cf352ce442" 1029 | integrity sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A== 1030 | dependencies: 1031 | esrecurse "^4.3.0" 1032 | estraverse "^5.2.0" 1033 | 1034 | eslint-visitor-keys@^2.1.0: 1035 | version "2.1.0" 1036 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" 1037 | integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== 1038 | 1039 | eslint-visitor-keys@^3.3.0: 1040 | version "3.4.3" 1041 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" 1042 | integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== 1043 | 1044 | eslint-visitor-keys@^4.2.0: 1045 | version "4.2.0" 1046 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45" 1047 | integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== 1048 | 1049 | eslint@^9.17.0: 1050 | version "9.17.0" 1051 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.17.0.tgz#faa1facb5dd042172fdc520106984b5c2421bb0c" 1052 | integrity sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA== 1053 | dependencies: 1054 | "@eslint-community/eslint-utils" "^4.2.0" 1055 | "@eslint-community/regexpp" "^4.12.1" 1056 | "@eslint/config-array" "^0.19.0" 1057 | "@eslint/core" "^0.9.0" 1058 | "@eslint/eslintrc" "^3.2.0" 1059 | "@eslint/js" "9.17.0" 1060 | "@eslint/plugin-kit" "^0.2.3" 1061 | "@humanfs/node" "^0.16.6" 1062 | "@humanwhocodes/module-importer" "^1.0.1" 1063 | "@humanwhocodes/retry" "^0.4.1" 1064 | "@types/estree" "^1.0.6" 1065 | "@types/json-schema" "^7.0.15" 1066 | ajv "^6.12.4" 1067 | chalk "^4.0.0" 1068 | cross-spawn "^7.0.6" 1069 | debug "^4.3.2" 1070 | escape-string-regexp "^4.0.0" 1071 | eslint-scope "^8.2.0" 1072 | eslint-visitor-keys "^4.2.0" 1073 | espree "^10.3.0" 1074 | esquery "^1.5.0" 1075 | esutils "^2.0.2" 1076 | fast-deep-equal "^3.1.3" 1077 | file-entry-cache "^8.0.0" 1078 | find-up "^5.0.0" 1079 | glob-parent "^6.0.2" 1080 | ignore "^5.2.0" 1081 | imurmurhash "^0.1.4" 1082 | is-glob "^4.0.0" 1083 | json-stable-stringify-without-jsonify "^1.0.1" 1084 | lodash.merge "^4.6.2" 1085 | minimatch "^3.1.2" 1086 | natural-compare "^1.4.0" 1087 | optionator "^0.9.3" 1088 | 1089 | espree@^10.0.1, espree@^10.3.0: 1090 | version "10.3.0" 1091 | resolved "https://registry.yarnpkg.com/espree/-/espree-10.3.0.tgz#29267cf5b0cb98735b65e64ba07e0ed49d1eed8a" 1092 | integrity sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg== 1093 | dependencies: 1094 | acorn "^8.14.0" 1095 | acorn-jsx "^5.3.2" 1096 | eslint-visitor-keys "^4.2.0" 1097 | 1098 | esquery@^1.5.0: 1099 | version "1.6.0" 1100 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" 1101 | integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== 1102 | dependencies: 1103 | estraverse "^5.1.0" 1104 | 1105 | esrecurse@^4.3.0: 1106 | version "4.3.0" 1107 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 1108 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 1109 | dependencies: 1110 | estraverse "^5.2.0" 1111 | 1112 | estraverse@^4.1.1: 1113 | version "4.3.0" 1114 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 1115 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 1116 | 1117 | estraverse@^5.1.0, estraverse@^5.2.0: 1118 | version "5.3.0" 1119 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" 1120 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== 1121 | 1122 | esutils@^2.0.2: 1123 | version "2.0.3" 1124 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 1125 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 1126 | 1127 | eventemitter3@^5.0.1: 1128 | version "5.0.1" 1129 | resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" 1130 | integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== 1131 | 1132 | execa@~8.0.1: 1133 | version "8.0.1" 1134 | resolved "https://registry.yarnpkg.com/execa/-/execa-8.0.1.tgz#51f6a5943b580f963c3ca9c6321796db8cc39b8c" 1135 | integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg== 1136 | dependencies: 1137 | cross-spawn "^7.0.3" 1138 | get-stream "^8.0.1" 1139 | human-signals "^5.0.0" 1140 | is-stream "^3.0.0" 1141 | merge-stream "^2.0.0" 1142 | npm-run-path "^5.1.0" 1143 | onetime "^6.0.0" 1144 | signal-exit "^4.1.0" 1145 | strip-final-newline "^3.0.0" 1146 | 1147 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: 1148 | version "3.1.3" 1149 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 1150 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 1151 | 1152 | fast-glob@^3.3.2: 1153 | version "3.3.2" 1154 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" 1155 | integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== 1156 | dependencies: 1157 | "@nodelib/fs.stat" "^2.0.2" 1158 | "@nodelib/fs.walk" "^1.2.3" 1159 | glob-parent "^5.1.2" 1160 | merge2 "^1.3.0" 1161 | micromatch "^4.0.4" 1162 | 1163 | fast-json-stable-stringify@^2.0.0: 1164 | version "2.1.0" 1165 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 1166 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 1167 | 1168 | fast-levenshtein@^2.0.6: 1169 | version "2.0.6" 1170 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 1171 | integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== 1172 | 1173 | fast-xml-parser@^4.5.1: 1174 | version "4.5.3" 1175 | resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz#c54d6b35aa0f23dc1ea60b6c884340c006dc6efb" 1176 | integrity sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig== 1177 | dependencies: 1178 | strnum "^1.1.1" 1179 | 1180 | fastq@^1.6.0: 1181 | version "1.17.1" 1182 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" 1183 | integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== 1184 | dependencies: 1185 | reusify "^1.0.4" 1186 | 1187 | file-entry-cache@^8.0.0: 1188 | version "8.0.0" 1189 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f" 1190 | integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== 1191 | dependencies: 1192 | flat-cache "^4.0.0" 1193 | 1194 | fill-range@^7.1.1: 1195 | version "7.1.1" 1196 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" 1197 | integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== 1198 | dependencies: 1199 | to-regex-range "^5.0.1" 1200 | 1201 | find-up@5.0.0, find-up@^5.0.0: 1202 | version "5.0.0" 1203 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" 1204 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 1205 | dependencies: 1206 | locate-path "^6.0.0" 1207 | path-exists "^4.0.0" 1208 | 1209 | flat-cache@^4.0.0: 1210 | version "4.0.1" 1211 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c" 1212 | integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== 1213 | dependencies: 1214 | flatted "^3.2.9" 1215 | keyv "^4.5.4" 1216 | 1217 | flat@^5.0.2: 1218 | version "5.0.2" 1219 | resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" 1220 | integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== 1221 | 1222 | flatted@^3.2.9: 1223 | version "3.3.1" 1224 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" 1225 | integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== 1226 | 1227 | for-each@^0.3.3: 1228 | version "0.3.3" 1229 | resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" 1230 | integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== 1231 | dependencies: 1232 | is-callable "^1.1.3" 1233 | 1234 | fs.realpath@^1.0.0: 1235 | version "1.0.0" 1236 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1237 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 1238 | 1239 | fsevents@~2.3.2: 1240 | version "2.3.3" 1241 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" 1242 | integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== 1243 | 1244 | function-bind@^1.1.2: 1245 | version "1.1.2" 1246 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" 1247 | integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== 1248 | 1249 | function.prototype.name@^1.1.6: 1250 | version "1.1.6" 1251 | resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" 1252 | integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== 1253 | dependencies: 1254 | call-bind "^1.0.2" 1255 | define-properties "^1.2.0" 1256 | es-abstract "^1.22.1" 1257 | functions-have-names "^1.2.3" 1258 | 1259 | functions-have-names@^1.2.3: 1260 | version "1.2.3" 1261 | resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" 1262 | integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== 1263 | 1264 | gensync@^1.0.0-beta.2: 1265 | version "1.0.0-beta.2" 1266 | resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" 1267 | integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== 1268 | 1269 | get-caller-file@^2.0.5: 1270 | version "2.0.5" 1271 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 1272 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 1273 | 1274 | get-east-asian-width@^1.0.0: 1275 | version "1.2.0" 1276 | resolved "https://registry.yarnpkg.com/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz#5e6ebd9baee6fb8b7b6bd505221065f0cd91f64e" 1277 | integrity sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA== 1278 | 1279 | get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: 1280 | version "1.2.4" 1281 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" 1282 | integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== 1283 | dependencies: 1284 | es-errors "^1.3.0" 1285 | function-bind "^1.1.2" 1286 | has-proto "^1.0.1" 1287 | has-symbols "^1.0.3" 1288 | hasown "^2.0.0" 1289 | 1290 | get-intrinsic@^1.2.6: 1291 | version "1.2.7" 1292 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.7.tgz#dcfcb33d3272e15f445d15124bc0a216189b9044" 1293 | integrity sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA== 1294 | dependencies: 1295 | call-bind-apply-helpers "^1.0.1" 1296 | es-define-property "^1.0.1" 1297 | es-errors "^1.3.0" 1298 | es-object-atoms "^1.0.0" 1299 | function-bind "^1.1.2" 1300 | get-proto "^1.0.0" 1301 | gopd "^1.2.0" 1302 | has-symbols "^1.1.0" 1303 | hasown "^2.0.2" 1304 | math-intrinsics "^1.1.0" 1305 | 1306 | get-proto@^1.0.0: 1307 | version "1.0.1" 1308 | resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" 1309 | integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== 1310 | dependencies: 1311 | dunder-proto "^1.0.1" 1312 | es-object-atoms "^1.0.0" 1313 | 1314 | get-stream@^8.0.1: 1315 | version "8.0.1" 1316 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2" 1317 | integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== 1318 | 1319 | get-symbol-description@^1.0.2: 1320 | version "1.0.2" 1321 | resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5" 1322 | integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg== 1323 | dependencies: 1324 | call-bind "^1.0.5" 1325 | es-errors "^1.3.0" 1326 | get-intrinsic "^1.2.4" 1327 | 1328 | glob-parent@^5.1.2, glob-parent@~5.1.2: 1329 | version "5.1.2" 1330 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 1331 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 1332 | dependencies: 1333 | is-glob "^4.0.1" 1334 | 1335 | glob-parent@^6.0.2: 1336 | version "6.0.2" 1337 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" 1338 | integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== 1339 | dependencies: 1340 | is-glob "^4.0.3" 1341 | 1342 | glob@8.1.0: 1343 | version "8.1.0" 1344 | resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" 1345 | integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== 1346 | dependencies: 1347 | fs.realpath "^1.0.0" 1348 | inflight "^1.0.4" 1349 | inherits "2" 1350 | minimatch "^5.0.1" 1351 | once "^1.3.0" 1352 | 1353 | globals@^11.1.0: 1354 | version "11.12.0" 1355 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" 1356 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== 1357 | 1358 | globals@^14.0.0: 1359 | version "14.0.0" 1360 | resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" 1361 | integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== 1362 | 1363 | globals@~15.14.0: 1364 | version "15.14.0" 1365 | resolved "https://registry.yarnpkg.com/globals/-/globals-15.14.0.tgz#b8fd3a8941ff3b4d38f3319d433b61bbb482e73f" 1366 | integrity sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig== 1367 | 1368 | globalthis@^1.0.3: 1369 | version "1.0.4" 1370 | resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" 1371 | integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== 1372 | dependencies: 1373 | define-properties "^1.2.1" 1374 | gopd "^1.0.1" 1375 | 1376 | gopd@^1.0.1: 1377 | version "1.0.1" 1378 | resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" 1379 | integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== 1380 | dependencies: 1381 | get-intrinsic "^1.1.3" 1382 | 1383 | gopd@^1.2.0: 1384 | version "1.2.0" 1385 | resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" 1386 | integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== 1387 | 1388 | has-bigints@^1.0.1, has-bigints@^1.0.2: 1389 | version "1.0.2" 1390 | resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" 1391 | integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== 1392 | 1393 | has-flag@^4.0.0: 1394 | version "4.0.0" 1395 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 1396 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 1397 | 1398 | has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: 1399 | version "1.0.2" 1400 | resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" 1401 | integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== 1402 | dependencies: 1403 | es-define-property "^1.0.0" 1404 | 1405 | has-proto@^1.0.1, has-proto@^1.0.3: 1406 | version "1.0.3" 1407 | resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" 1408 | integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== 1409 | 1410 | has-symbols@^1.0.2, has-symbols@^1.0.3: 1411 | version "1.0.3" 1412 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" 1413 | integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== 1414 | 1415 | has-symbols@^1.1.0: 1416 | version "1.1.0" 1417 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" 1418 | integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== 1419 | 1420 | has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: 1421 | version "1.0.2" 1422 | resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" 1423 | integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== 1424 | dependencies: 1425 | has-symbols "^1.0.3" 1426 | 1427 | hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: 1428 | version "2.0.2" 1429 | resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" 1430 | integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== 1431 | dependencies: 1432 | function-bind "^1.1.2" 1433 | 1434 | he@1.2.0: 1435 | version "1.2.0" 1436 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" 1437 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 1438 | 1439 | human-signals@^5.0.0: 1440 | version "5.0.0" 1441 | resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28" 1442 | integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== 1443 | 1444 | husky@^9.0.11: 1445 | version "9.0.11" 1446 | resolved "https://registry.yarnpkg.com/husky/-/husky-9.0.11.tgz#fc91df4c756050de41b3e478b2158b87c1e79af9" 1447 | integrity sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw== 1448 | 1449 | ignore@^5.2.0: 1450 | version "5.3.1" 1451 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" 1452 | integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== 1453 | 1454 | import-fresh@^3.2.1: 1455 | version "3.3.0" 1456 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 1457 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 1458 | dependencies: 1459 | parent-module "^1.0.0" 1460 | resolve-from "^4.0.0" 1461 | 1462 | imurmurhash@^0.1.4: 1463 | version "0.1.4" 1464 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1465 | integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== 1466 | 1467 | inflight@^1.0.4: 1468 | version "1.0.6" 1469 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1470 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 1471 | dependencies: 1472 | once "^1.3.0" 1473 | wrappy "1" 1474 | 1475 | inherits@2: 1476 | version "2.0.4" 1477 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1478 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1479 | 1480 | internal-slot@^1.0.7: 1481 | version "1.0.7" 1482 | resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" 1483 | integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== 1484 | dependencies: 1485 | es-errors "^1.3.0" 1486 | hasown "^2.0.0" 1487 | side-channel "^1.0.4" 1488 | 1489 | is-array-buffer@^3.0.4: 1490 | version "3.0.4" 1491 | resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" 1492 | integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== 1493 | dependencies: 1494 | call-bind "^1.0.2" 1495 | get-intrinsic "^1.2.1" 1496 | 1497 | is-bigint@^1.0.1: 1498 | version "1.0.4" 1499 | resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" 1500 | integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== 1501 | dependencies: 1502 | has-bigints "^1.0.1" 1503 | 1504 | is-binary-path@~2.1.0: 1505 | version "2.1.0" 1506 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 1507 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 1508 | dependencies: 1509 | binary-extensions "^2.0.0" 1510 | 1511 | is-boolean-object@^1.1.0: 1512 | version "1.1.2" 1513 | resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" 1514 | integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== 1515 | dependencies: 1516 | call-bind "^1.0.2" 1517 | has-tostringtag "^1.0.0" 1518 | 1519 | is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: 1520 | version "1.2.7" 1521 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" 1522 | integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== 1523 | 1524 | is-core-module@^2.13.0: 1525 | version "2.13.1" 1526 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" 1527 | integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== 1528 | dependencies: 1529 | hasown "^2.0.0" 1530 | 1531 | is-core-module@^2.15.1: 1532 | version "2.16.1" 1533 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" 1534 | integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== 1535 | dependencies: 1536 | hasown "^2.0.2" 1537 | 1538 | is-data-view@^1.0.1: 1539 | version "1.0.1" 1540 | resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.1.tgz#4b4d3a511b70f3dc26d42c03ca9ca515d847759f" 1541 | integrity sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w== 1542 | dependencies: 1543 | is-typed-array "^1.1.13" 1544 | 1545 | is-date-object@^1.0.1: 1546 | version "1.0.5" 1547 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" 1548 | integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== 1549 | dependencies: 1550 | has-tostringtag "^1.0.0" 1551 | 1552 | is-extglob@^2.1.1: 1553 | version "2.1.1" 1554 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1555 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 1556 | 1557 | is-fullwidth-code-point@^3.0.0: 1558 | version "3.0.0" 1559 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 1560 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 1561 | 1562 | is-fullwidth-code-point@^4.0.0: 1563 | version "4.0.0" 1564 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88" 1565 | integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== 1566 | 1567 | is-fullwidth-code-point@^5.0.0: 1568 | version "5.0.0" 1569 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz#9609efced7c2f97da7b60145ef481c787c7ba704" 1570 | integrity sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA== 1571 | dependencies: 1572 | get-east-asian-width "^1.0.0" 1573 | 1574 | is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: 1575 | version "4.0.3" 1576 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 1577 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 1578 | dependencies: 1579 | is-extglob "^2.1.1" 1580 | 1581 | is-negative-zero@^2.0.3: 1582 | version "2.0.3" 1583 | resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" 1584 | integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== 1585 | 1586 | is-number-object@^1.0.4: 1587 | version "1.0.7" 1588 | resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" 1589 | integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== 1590 | dependencies: 1591 | has-tostringtag "^1.0.0" 1592 | 1593 | is-number@^7.0.0: 1594 | version "7.0.0" 1595 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 1596 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 1597 | 1598 | is-plain-obj@^2.1.0: 1599 | version "2.1.0" 1600 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" 1601 | integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== 1602 | 1603 | is-regex@^1.1.4: 1604 | version "1.1.4" 1605 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" 1606 | integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== 1607 | dependencies: 1608 | call-bind "^1.0.2" 1609 | has-tostringtag "^1.0.0" 1610 | 1611 | is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3: 1612 | version "1.0.3" 1613 | resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688" 1614 | integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg== 1615 | dependencies: 1616 | call-bind "^1.0.7" 1617 | 1618 | is-stream@^3.0.0: 1619 | version "3.0.0" 1620 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" 1621 | integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== 1622 | 1623 | is-string@^1.0.5, is-string@^1.0.7: 1624 | version "1.0.7" 1625 | resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" 1626 | integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== 1627 | dependencies: 1628 | has-tostringtag "^1.0.0" 1629 | 1630 | is-symbol@^1.0.2, is-symbol@^1.0.3: 1631 | version "1.0.4" 1632 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" 1633 | integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== 1634 | dependencies: 1635 | has-symbols "^1.0.2" 1636 | 1637 | is-typed-array@^1.1.13: 1638 | version "1.1.13" 1639 | resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" 1640 | integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== 1641 | dependencies: 1642 | which-typed-array "^1.1.14" 1643 | 1644 | is-unicode-supported@^0.1.0: 1645 | version "0.1.0" 1646 | resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" 1647 | integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== 1648 | 1649 | is-weakref@^1.0.2: 1650 | version "1.0.2" 1651 | resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" 1652 | integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== 1653 | dependencies: 1654 | call-bind "^1.0.2" 1655 | 1656 | isarray@^2.0.5: 1657 | version "2.0.5" 1658 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" 1659 | integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== 1660 | 1661 | isexe@^2.0.0: 1662 | version "2.0.0" 1663 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1664 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== 1665 | 1666 | js-tokens@^4.0.0: 1667 | version "4.0.0" 1668 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1669 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1670 | 1671 | js-yaml@4.1.0, js-yaml@^4.1.0: 1672 | version "4.1.0" 1673 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" 1674 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 1675 | dependencies: 1676 | argparse "^2.0.1" 1677 | 1678 | jsesc@^3.0.2: 1679 | version "3.1.0" 1680 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" 1681 | integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== 1682 | 1683 | json-buffer@3.0.1: 1684 | version "3.0.1" 1685 | resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" 1686 | integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== 1687 | 1688 | json-schema-traverse@^0.4.1: 1689 | version "0.4.1" 1690 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 1691 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 1692 | 1693 | json-stable-stringify-without-jsonify@^1.0.1: 1694 | version "1.0.1" 1695 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 1696 | integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== 1697 | 1698 | json5@^1.0.2: 1699 | version "1.0.2" 1700 | resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" 1701 | integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== 1702 | dependencies: 1703 | minimist "^1.2.0" 1704 | 1705 | json5@^2.2.3: 1706 | version "2.2.3" 1707 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" 1708 | integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== 1709 | 1710 | keyv@^4.5.4: 1711 | version "4.5.4" 1712 | resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" 1713 | integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== 1714 | dependencies: 1715 | json-buffer "3.0.1" 1716 | 1717 | levn@^0.4.1: 1718 | version "0.4.1" 1719 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 1720 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 1721 | dependencies: 1722 | prelude-ls "^1.2.1" 1723 | type-check "~0.4.0" 1724 | 1725 | lilconfig@~3.1.1: 1726 | version "3.1.2" 1727 | resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.2.tgz#e4a7c3cb549e3a606c8dcc32e5ae1005e62c05cb" 1728 | integrity sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow== 1729 | 1730 | lint-staged@^15.2.7: 1731 | version "15.2.7" 1732 | resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-15.2.7.tgz#97867e29ed632820c0fb90be06cd9ed384025649" 1733 | integrity sha512-+FdVbbCZ+yoh7E/RosSdqKJyUM2OEjTciH0TFNkawKgvFp1zbGlEC39RADg+xKBG1R4mhoH2j85myBQZ5wR+lw== 1734 | dependencies: 1735 | chalk "~5.3.0" 1736 | commander "~12.1.0" 1737 | debug "~4.3.4" 1738 | execa "~8.0.1" 1739 | lilconfig "~3.1.1" 1740 | listr2 "~8.2.1" 1741 | micromatch "~4.0.7" 1742 | pidtree "~0.6.0" 1743 | string-argv "~0.3.2" 1744 | yaml "~2.4.2" 1745 | 1746 | listr2@~8.2.1: 1747 | version "8.2.1" 1748 | resolved "https://registry.yarnpkg.com/listr2/-/listr2-8.2.1.tgz#06a1a6efe85f23c5324180d7c1ddbd96b5eefd6d" 1749 | integrity sha512-irTfvpib/rNiD637xeevjO2l3Z5loZmuaRi0L0YE5LfijwVY96oyVn0DFD3o/teAok7nfobMG1THvvcHh/BP6g== 1750 | dependencies: 1751 | cli-truncate "^4.0.0" 1752 | colorette "^2.0.20" 1753 | eventemitter3 "^5.0.1" 1754 | log-update "^6.0.0" 1755 | rfdc "^1.3.1" 1756 | wrap-ansi "^9.0.0" 1757 | 1758 | locate-path@^6.0.0: 1759 | version "6.0.0" 1760 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" 1761 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 1762 | dependencies: 1763 | p-locate "^5.0.0" 1764 | 1765 | lodash.merge@^4.6.2: 1766 | version "4.6.2" 1767 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" 1768 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== 1769 | 1770 | log-symbols@4.1.0: 1771 | version "4.1.0" 1772 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" 1773 | integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== 1774 | dependencies: 1775 | chalk "^4.1.0" 1776 | is-unicode-supported "^0.1.0" 1777 | 1778 | log-update@^6.0.0: 1779 | version "6.0.0" 1780 | resolved "https://registry.yarnpkg.com/log-update/-/log-update-6.0.0.tgz#0ddeb7ac6ad658c944c1de902993fce7c33f5e59" 1781 | integrity sha512-niTvB4gqvtof056rRIrTZvjNYE4rCUzO6X/X+kYjd7WFxXeJ0NwEFnRxX6ehkvv3jTwrXnNdtAak5XYZuIyPFw== 1782 | dependencies: 1783 | ansi-escapes "^6.2.0" 1784 | cli-cursor "^4.0.0" 1785 | slice-ansi "^7.0.0" 1786 | strip-ansi "^7.1.0" 1787 | wrap-ansi "^9.0.0" 1788 | 1789 | lru-cache@^5.1.1: 1790 | version "5.1.1" 1791 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" 1792 | integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== 1793 | dependencies: 1794 | yallist "^3.0.2" 1795 | 1796 | math-intrinsics@^1.1.0: 1797 | version "1.1.0" 1798 | resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" 1799 | integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== 1800 | 1801 | merge-stream@^2.0.0: 1802 | version "2.0.0" 1803 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 1804 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 1805 | 1806 | merge2@^1.3.0: 1807 | version "1.4.1" 1808 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" 1809 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 1810 | 1811 | micromatch@^4.0.4, micromatch@~4.0.7: 1812 | version "4.0.8" 1813 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" 1814 | integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== 1815 | dependencies: 1816 | braces "^3.0.3" 1817 | picomatch "^2.3.1" 1818 | 1819 | mimic-fn@^2.1.0: 1820 | version "2.1.0" 1821 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 1822 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 1823 | 1824 | mimic-fn@^4.0.0: 1825 | version "4.0.0" 1826 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" 1827 | integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== 1828 | 1829 | minimatch@5.0.1: 1830 | version "5.0.1" 1831 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" 1832 | integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== 1833 | dependencies: 1834 | brace-expansion "^2.0.1" 1835 | 1836 | minimatch@^3.1.2: 1837 | version "3.1.2" 1838 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 1839 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 1840 | dependencies: 1841 | brace-expansion "^1.1.7" 1842 | 1843 | minimatch@^5.0.1: 1844 | version "5.1.6" 1845 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" 1846 | integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== 1847 | dependencies: 1848 | brace-expansion "^2.0.1" 1849 | 1850 | minimatch@^9.0.4: 1851 | version "9.0.4" 1852 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.4.tgz#8e49c731d1749cbec05050ee5145147b32496a51" 1853 | integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw== 1854 | dependencies: 1855 | brace-expansion "^2.0.1" 1856 | 1857 | minimatch@~9.0.4: 1858 | version "9.0.5" 1859 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" 1860 | integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== 1861 | dependencies: 1862 | brace-expansion "^2.0.1" 1863 | 1864 | minimist@^1.2.0, minimist@^1.2.6: 1865 | version "1.2.8" 1866 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" 1867 | integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== 1868 | 1869 | mocha@^10.4.0: 1870 | version "10.4.0" 1871 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.4.0.tgz#ed03db96ee9cfc6d20c56f8e2af07b961dbae261" 1872 | integrity sha512-eqhGB8JKapEYcC4ytX/xrzKforgEc3j1pGlAXVy3eRwrtAy5/nIfT1SvgGzfN0XZZxeLq0aQWkOUAmqIJiv+bA== 1873 | dependencies: 1874 | ansi-colors "4.1.1" 1875 | browser-stdout "1.3.1" 1876 | chokidar "3.5.3" 1877 | debug "4.3.4" 1878 | diff "5.0.0" 1879 | escape-string-regexp "4.0.0" 1880 | find-up "5.0.0" 1881 | glob "8.1.0" 1882 | he "1.2.0" 1883 | js-yaml "4.1.0" 1884 | log-symbols "4.1.0" 1885 | minimatch "5.0.1" 1886 | ms "2.1.3" 1887 | serialize-javascript "6.0.0" 1888 | strip-json-comments "3.1.1" 1889 | supports-color "8.1.1" 1890 | workerpool "6.2.1" 1891 | yargs "16.2.0" 1892 | yargs-parser "20.2.4" 1893 | yargs-unparser "2.0.0" 1894 | 1895 | ms@2.1.2: 1896 | version "2.1.2" 1897 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1898 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1899 | 1900 | ms@2.1.3, ms@^2.1.1: 1901 | version "2.1.3" 1902 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 1903 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 1904 | 1905 | natural-compare@^1.4.0: 1906 | version "1.4.0" 1907 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 1908 | integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== 1909 | 1910 | node-releases@^2.0.19: 1911 | version "2.0.19" 1912 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" 1913 | integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== 1914 | 1915 | normalize-path@^3.0.0, normalize-path@~3.0.0: 1916 | version "3.0.0" 1917 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 1918 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 1919 | 1920 | npm-run-path@^5.1.0: 1921 | version "5.3.0" 1922 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.3.0.tgz#e23353d0ebb9317f174e93417e4a4d82d0249e9f" 1923 | integrity sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ== 1924 | dependencies: 1925 | path-key "^4.0.0" 1926 | 1927 | object-inspect@^1.13.1: 1928 | version "1.13.1" 1929 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" 1930 | integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== 1931 | 1932 | object-keys@^1.1.1: 1933 | version "1.1.1" 1934 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 1935 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 1936 | 1937 | object.assign@^4.1.5: 1938 | version "4.1.5" 1939 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" 1940 | integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== 1941 | dependencies: 1942 | call-bind "^1.0.5" 1943 | define-properties "^1.2.1" 1944 | has-symbols "^1.0.3" 1945 | object-keys "^1.1.1" 1946 | 1947 | object.fromentries@^2.0.8: 1948 | version "2.0.8" 1949 | resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65" 1950 | integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== 1951 | dependencies: 1952 | call-bind "^1.0.7" 1953 | define-properties "^1.2.1" 1954 | es-abstract "^1.23.2" 1955 | es-object-atoms "^1.0.0" 1956 | 1957 | object.groupby@^1.0.3: 1958 | version "1.0.3" 1959 | resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.3.tgz#9b125c36238129f6f7b61954a1e7176148d5002e" 1960 | integrity sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ== 1961 | dependencies: 1962 | call-bind "^1.0.7" 1963 | define-properties "^1.2.1" 1964 | es-abstract "^1.23.2" 1965 | 1966 | object.values@^1.2.0: 1967 | version "1.2.1" 1968 | resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.1.tgz#deed520a50809ff7f75a7cfd4bc64c7a038c6216" 1969 | integrity sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA== 1970 | dependencies: 1971 | call-bind "^1.0.8" 1972 | call-bound "^1.0.3" 1973 | define-properties "^1.2.1" 1974 | es-object-atoms "^1.0.0" 1975 | 1976 | once@^1.3.0: 1977 | version "1.4.0" 1978 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1979 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 1980 | dependencies: 1981 | wrappy "1" 1982 | 1983 | onetime@^5.1.0: 1984 | version "5.1.2" 1985 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" 1986 | integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== 1987 | dependencies: 1988 | mimic-fn "^2.1.0" 1989 | 1990 | onetime@^6.0.0: 1991 | version "6.0.0" 1992 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" 1993 | integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== 1994 | dependencies: 1995 | mimic-fn "^4.0.0" 1996 | 1997 | optionator@^0.9.3: 1998 | version "0.9.4" 1999 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" 2000 | integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== 2001 | dependencies: 2002 | deep-is "^0.1.3" 2003 | fast-levenshtein "^2.0.6" 2004 | levn "^0.4.1" 2005 | prelude-ls "^1.2.1" 2006 | type-check "^0.4.0" 2007 | word-wrap "^1.2.5" 2008 | 2009 | p-limit@^3.0.2: 2010 | version "3.1.0" 2011 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 2012 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 2013 | dependencies: 2014 | yocto-queue "^0.1.0" 2015 | 2016 | p-locate@^5.0.0: 2017 | version "5.0.0" 2018 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" 2019 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 2020 | dependencies: 2021 | p-limit "^3.0.2" 2022 | 2023 | parent-module@^1.0.0: 2024 | version "1.0.1" 2025 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 2026 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 2027 | dependencies: 2028 | callsites "^3.0.0" 2029 | 2030 | path-exists@^4.0.0: 2031 | version "4.0.0" 2032 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 2033 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 2034 | 2035 | path-key@^3.1.0: 2036 | version "3.1.1" 2037 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 2038 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 2039 | 2040 | path-key@^4.0.0: 2041 | version "4.0.0" 2042 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" 2043 | integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== 2044 | 2045 | path-parse@^1.0.7: 2046 | version "1.0.7" 2047 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 2048 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 2049 | 2050 | picocolors@^1.0.0: 2051 | version "1.0.1" 2052 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" 2053 | integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== 2054 | 2055 | picocolors@^1.1.0: 2056 | version "1.1.1" 2057 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" 2058 | integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== 2059 | 2060 | picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: 2061 | version "2.3.1" 2062 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 2063 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 2064 | 2065 | pidtree@~0.6.0: 2066 | version "0.6.0" 2067 | resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.6.0.tgz#90ad7b6d42d5841e69e0a2419ef38f8883aa057c" 2068 | integrity sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g== 2069 | 2070 | possible-typed-array-names@^1.0.0: 2071 | version "1.0.0" 2072 | resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" 2073 | integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== 2074 | 2075 | prelude-ls@^1.2.1: 2076 | version "1.2.1" 2077 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 2078 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 2079 | 2080 | prettier@^3.3.2: 2081 | version "3.3.2" 2082 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.2.tgz#03ff86dc7c835f2d2559ee76876a3914cec4a90a" 2083 | integrity sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA== 2084 | 2085 | punycode@^2.1.0: 2086 | version "2.3.1" 2087 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" 2088 | integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== 2089 | 2090 | queue-microtask@^1.2.2: 2091 | version "1.2.3" 2092 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" 2093 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== 2094 | 2095 | randombytes@^2.1.0: 2096 | version "2.1.0" 2097 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" 2098 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 2099 | dependencies: 2100 | safe-buffer "^5.1.0" 2101 | 2102 | readdirp@~3.6.0: 2103 | version "3.6.0" 2104 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 2105 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 2106 | dependencies: 2107 | picomatch "^2.2.1" 2108 | 2109 | regexp.prototype.flags@^1.5.2: 2110 | version "1.5.2" 2111 | resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" 2112 | integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== 2113 | dependencies: 2114 | call-bind "^1.0.6" 2115 | define-properties "^1.2.1" 2116 | es-errors "^1.3.0" 2117 | set-function-name "^2.0.1" 2118 | 2119 | require-directory@^2.1.1: 2120 | version "2.1.1" 2121 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 2122 | integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== 2123 | 2124 | resolve-from@^4.0.0: 2125 | version "4.0.0" 2126 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 2127 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 2128 | 2129 | resolve@^1.22.4: 2130 | version "1.22.8" 2131 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" 2132 | integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== 2133 | dependencies: 2134 | is-core-module "^2.13.0" 2135 | path-parse "^1.0.7" 2136 | supports-preserve-symlinks-flag "^1.0.0" 2137 | 2138 | restore-cursor@^4.0.0: 2139 | version "4.0.0" 2140 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-4.0.0.tgz#519560a4318975096def6e609d44100edaa4ccb9" 2141 | integrity sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg== 2142 | dependencies: 2143 | onetime "^5.1.0" 2144 | signal-exit "^3.0.2" 2145 | 2146 | reusify@^1.0.4: 2147 | version "1.0.4" 2148 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" 2149 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 2150 | 2151 | rfdc@^1.3.1: 2152 | version "1.4.1" 2153 | resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.4.1.tgz#778f76c4fb731d93414e8f925fbecf64cce7f6ca" 2154 | integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA== 2155 | 2156 | run-parallel@^1.1.9: 2157 | version "1.2.0" 2158 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" 2159 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 2160 | dependencies: 2161 | queue-microtask "^1.2.2" 2162 | 2163 | safe-array-concat@^1.1.2: 2164 | version "1.1.2" 2165 | resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb" 2166 | integrity sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q== 2167 | dependencies: 2168 | call-bind "^1.0.7" 2169 | get-intrinsic "^1.2.4" 2170 | has-symbols "^1.0.3" 2171 | isarray "^2.0.5" 2172 | 2173 | safe-buffer@^5.1.0: 2174 | version "5.2.1" 2175 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 2176 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 2177 | 2178 | safe-regex-test@^1.0.3: 2179 | version "1.0.3" 2180 | resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" 2181 | integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw== 2182 | dependencies: 2183 | call-bind "^1.0.6" 2184 | es-errors "^1.3.0" 2185 | is-regex "^1.1.4" 2186 | 2187 | semver@^6.3.1: 2188 | version "6.3.1" 2189 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" 2190 | integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== 2191 | 2192 | semver@^7.6.0: 2193 | version "7.6.3" 2194 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" 2195 | integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== 2196 | 2197 | semver@^7.6.2: 2198 | version "7.6.2" 2199 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" 2200 | integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== 2201 | 2202 | serialize-javascript@6.0.0: 2203 | version "6.0.0" 2204 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" 2205 | integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== 2206 | dependencies: 2207 | randombytes "^2.1.0" 2208 | 2209 | set-function-length@^1.2.1, set-function-length@^1.2.2: 2210 | version "1.2.2" 2211 | resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" 2212 | integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== 2213 | dependencies: 2214 | define-data-property "^1.1.4" 2215 | es-errors "^1.3.0" 2216 | function-bind "^1.1.2" 2217 | get-intrinsic "^1.2.4" 2218 | gopd "^1.0.1" 2219 | has-property-descriptors "^1.0.2" 2220 | 2221 | set-function-name@^2.0.1: 2222 | version "2.0.2" 2223 | resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" 2224 | integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== 2225 | dependencies: 2226 | define-data-property "^1.1.4" 2227 | es-errors "^1.3.0" 2228 | functions-have-names "^1.2.3" 2229 | has-property-descriptors "^1.0.2" 2230 | 2231 | shebang-command@^2.0.0: 2232 | version "2.0.0" 2233 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 2234 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 2235 | dependencies: 2236 | shebang-regex "^3.0.0" 2237 | 2238 | shebang-regex@^3.0.0: 2239 | version "3.0.0" 2240 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 2241 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 2242 | 2243 | side-channel@^1.0.4: 2244 | version "1.0.6" 2245 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" 2246 | integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== 2247 | dependencies: 2248 | call-bind "^1.0.7" 2249 | es-errors "^1.3.0" 2250 | get-intrinsic "^1.2.4" 2251 | object-inspect "^1.13.1" 2252 | 2253 | signal-exit@^3.0.2: 2254 | version "3.0.7" 2255 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" 2256 | integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== 2257 | 2258 | signal-exit@^4.1.0: 2259 | version "4.1.0" 2260 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" 2261 | integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== 2262 | 2263 | slice-ansi@^5.0.0: 2264 | version "5.0.0" 2265 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-5.0.0.tgz#b73063c57aa96f9cd881654b15294d95d285c42a" 2266 | integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ== 2267 | dependencies: 2268 | ansi-styles "^6.0.0" 2269 | is-fullwidth-code-point "^4.0.0" 2270 | 2271 | slice-ansi@^7.0.0: 2272 | version "7.1.0" 2273 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-7.1.0.tgz#cd6b4655e298a8d1bdeb04250a433094b347b9a9" 2274 | integrity sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg== 2275 | dependencies: 2276 | ansi-styles "^6.2.1" 2277 | is-fullwidth-code-point "^5.0.0" 2278 | 2279 | string-argv@~0.3.2: 2280 | version "0.3.2" 2281 | resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6" 2282 | integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== 2283 | 2284 | string-width@^4.1.0, string-width@^4.2.0: 2285 | version "4.2.3" 2286 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 2287 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 2288 | dependencies: 2289 | emoji-regex "^8.0.0" 2290 | is-fullwidth-code-point "^3.0.0" 2291 | strip-ansi "^6.0.1" 2292 | 2293 | string-width@^7.0.0: 2294 | version "7.1.0" 2295 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-7.1.0.tgz#d994252935224729ea3719c49f7206dc9c46550a" 2296 | integrity sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw== 2297 | dependencies: 2298 | emoji-regex "^10.3.0" 2299 | get-east-asian-width "^1.0.0" 2300 | strip-ansi "^7.1.0" 2301 | 2302 | string.prototype.trim@^1.2.9: 2303 | version "1.2.9" 2304 | resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4" 2305 | integrity sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw== 2306 | dependencies: 2307 | call-bind "^1.0.7" 2308 | define-properties "^1.2.1" 2309 | es-abstract "^1.23.0" 2310 | es-object-atoms "^1.0.0" 2311 | 2312 | string.prototype.trimend@^1.0.8: 2313 | version "1.0.8" 2314 | resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#3651b8513719e8a9f48de7f2f77640b26652b229" 2315 | integrity sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ== 2316 | dependencies: 2317 | call-bind "^1.0.7" 2318 | define-properties "^1.2.1" 2319 | es-object-atoms "^1.0.0" 2320 | 2321 | string.prototype.trimstart@^1.0.8: 2322 | version "1.0.8" 2323 | resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde" 2324 | integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg== 2325 | dependencies: 2326 | call-bind "^1.0.7" 2327 | define-properties "^1.2.1" 2328 | es-object-atoms "^1.0.0" 2329 | 2330 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 2331 | version "6.0.1" 2332 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 2333 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 2334 | dependencies: 2335 | ansi-regex "^5.0.1" 2336 | 2337 | strip-ansi@^7.1.0: 2338 | version "7.1.0" 2339 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" 2340 | integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== 2341 | dependencies: 2342 | ansi-regex "^6.0.1" 2343 | 2344 | strip-bom@^3.0.0: 2345 | version "3.0.0" 2346 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 2347 | integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== 2348 | 2349 | strip-final-newline@^3.0.0: 2350 | version "3.0.0" 2351 | resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" 2352 | integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== 2353 | 2354 | strip-json-comments@3.1.1, strip-json-comments@^3.1.1: 2355 | version "3.1.1" 2356 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 2357 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 2358 | 2359 | strnum@^1.1.1: 2360 | version "1.1.2" 2361 | resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.1.2.tgz#57bca4fbaa6f271081715dbc9ed7cee5493e28e4" 2362 | integrity sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA== 2363 | 2364 | supports-color@8.1.1: 2365 | version "8.1.1" 2366 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" 2367 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== 2368 | dependencies: 2369 | has-flag "^4.0.0" 2370 | 2371 | supports-color@^7.1.0: 2372 | version "7.2.0" 2373 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 2374 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 2375 | dependencies: 2376 | has-flag "^4.0.0" 2377 | 2378 | supports-preserve-symlinks-flag@^1.0.0: 2379 | version "1.0.0" 2380 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 2381 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 2382 | 2383 | to-regex-range@^5.0.1: 2384 | version "5.0.1" 2385 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 2386 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 2387 | dependencies: 2388 | is-number "^7.0.0" 2389 | 2390 | ts-api-utils@^1.3.0: 2391 | version "1.4.3" 2392 | resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.4.3.tgz#bfc2215fe6528fecab2b0fba570a2e8a4263b064" 2393 | integrity sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw== 2394 | 2395 | tsconfig-paths@^3.15.0: 2396 | version "3.15.0" 2397 | resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" 2398 | integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== 2399 | dependencies: 2400 | "@types/json5" "^0.0.29" 2401 | json5 "^1.0.2" 2402 | minimist "^1.2.6" 2403 | strip-bom "^3.0.0" 2404 | 2405 | type-check@^0.4.0, type-check@~0.4.0: 2406 | version "0.4.0" 2407 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 2408 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 2409 | dependencies: 2410 | prelude-ls "^1.2.1" 2411 | 2412 | typed-array-buffer@^1.0.2: 2413 | version "1.0.2" 2414 | resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3" 2415 | integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ== 2416 | dependencies: 2417 | call-bind "^1.0.7" 2418 | es-errors "^1.3.0" 2419 | is-typed-array "^1.1.13" 2420 | 2421 | typed-array-byte-length@^1.0.1: 2422 | version "1.0.1" 2423 | resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67" 2424 | integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw== 2425 | dependencies: 2426 | call-bind "^1.0.7" 2427 | for-each "^0.3.3" 2428 | gopd "^1.0.1" 2429 | has-proto "^1.0.3" 2430 | is-typed-array "^1.1.13" 2431 | 2432 | typed-array-byte-offset@^1.0.2: 2433 | version "1.0.2" 2434 | resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063" 2435 | integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA== 2436 | dependencies: 2437 | available-typed-arrays "^1.0.7" 2438 | call-bind "^1.0.7" 2439 | for-each "^0.3.3" 2440 | gopd "^1.0.1" 2441 | has-proto "^1.0.3" 2442 | is-typed-array "^1.1.13" 2443 | 2444 | typed-array-length@^1.0.6: 2445 | version "1.0.6" 2446 | resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.6.tgz#57155207c76e64a3457482dfdc1c9d1d3c4c73a3" 2447 | integrity sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g== 2448 | dependencies: 2449 | call-bind "^1.0.7" 2450 | for-each "^0.3.3" 2451 | gopd "^1.0.1" 2452 | has-proto "^1.0.3" 2453 | is-typed-array "^1.1.13" 2454 | possible-typed-array-names "^1.0.0" 2455 | 2456 | unbox-primitive@^1.0.2: 2457 | version "1.0.2" 2458 | resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" 2459 | integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== 2460 | dependencies: 2461 | call-bind "^1.0.2" 2462 | has-bigints "^1.0.2" 2463 | has-symbols "^1.0.3" 2464 | which-boxed-primitive "^1.0.2" 2465 | 2466 | update-browserslist-db@^1.1.1: 2467 | version "1.1.1" 2468 | resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5" 2469 | integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A== 2470 | dependencies: 2471 | escalade "^3.2.0" 2472 | picocolors "^1.1.0" 2473 | 2474 | uri-js@^4.2.2: 2475 | version "4.4.1" 2476 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 2477 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 2478 | dependencies: 2479 | punycode "^2.1.0" 2480 | 2481 | which-boxed-primitive@^1.0.2: 2482 | version "1.0.2" 2483 | resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" 2484 | integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== 2485 | dependencies: 2486 | is-bigint "^1.0.1" 2487 | is-boolean-object "^1.1.0" 2488 | is-number-object "^1.0.4" 2489 | is-string "^1.0.5" 2490 | is-symbol "^1.0.3" 2491 | 2492 | which-typed-array@^1.1.14, which-typed-array@^1.1.15: 2493 | version "1.1.15" 2494 | resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" 2495 | integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== 2496 | dependencies: 2497 | available-typed-arrays "^1.0.7" 2498 | call-bind "^1.0.7" 2499 | for-each "^0.3.3" 2500 | gopd "^1.0.1" 2501 | has-tostringtag "^1.0.2" 2502 | 2503 | which@^2.0.1: 2504 | version "2.0.2" 2505 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 2506 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 2507 | dependencies: 2508 | isexe "^2.0.0" 2509 | 2510 | word-wrap@^1.2.5: 2511 | version "1.2.5" 2512 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" 2513 | integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== 2514 | 2515 | workerpool@6.2.1: 2516 | version "6.2.1" 2517 | resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" 2518 | integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== 2519 | 2520 | wrap-ansi@^7.0.0: 2521 | version "7.0.0" 2522 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 2523 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 2524 | dependencies: 2525 | ansi-styles "^4.0.0" 2526 | string-width "^4.1.0" 2527 | strip-ansi "^6.0.0" 2528 | 2529 | wrap-ansi@^9.0.0: 2530 | version "9.0.0" 2531 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-9.0.0.tgz#1a3dc8b70d85eeb8398ddfb1e4a02cd186e58b3e" 2532 | integrity sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q== 2533 | dependencies: 2534 | ansi-styles "^6.2.1" 2535 | string-width "^7.0.0" 2536 | strip-ansi "^7.1.0" 2537 | 2538 | wrappy@1: 2539 | version "1.0.2" 2540 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2541 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 2542 | 2543 | y18n@^5.0.5: 2544 | version "5.0.8" 2545 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 2546 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 2547 | 2548 | yallist@^3.0.2: 2549 | version "3.1.1" 2550 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" 2551 | integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== 2552 | 2553 | yaml@~2.4.2: 2554 | version "2.4.5" 2555 | resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.4.5.tgz#60630b206dd6d84df97003d33fc1ddf6296cca5e" 2556 | integrity sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg== 2557 | 2558 | yargs-parser@20.2.4: 2559 | version "20.2.4" 2560 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" 2561 | integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== 2562 | 2563 | yargs-parser@^20.2.2: 2564 | version "20.2.9" 2565 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" 2566 | integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== 2567 | 2568 | yargs-unparser@2.0.0: 2569 | version "2.0.0" 2570 | resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" 2571 | integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== 2572 | dependencies: 2573 | camelcase "^6.0.0" 2574 | decamelize "^4.0.0" 2575 | flat "^5.0.2" 2576 | is-plain-obj "^2.1.0" 2577 | 2578 | yargs@16.2.0: 2579 | version "16.2.0" 2580 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" 2581 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== 2582 | dependencies: 2583 | cliui "^7.0.2" 2584 | escalade "^3.1.1" 2585 | get-caller-file "^2.0.5" 2586 | require-directory "^2.1.1" 2587 | string-width "^4.2.0" 2588 | y18n "^5.0.5" 2589 | yargs-parser "^20.2.2" 2590 | 2591 | yocto-queue@^0.1.0: 2592 | version "0.1.0" 2593 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 2594 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 2595 | --------------------------------------------------------------------------------