├── .gitignore ├── LICENSE ├── README.md ├── package-lock.json ├── package.json ├── rollup.config.mjs ├── src └── translators │ ├── ChatGPT.ts │ ├── DeepL.ts │ └── GoogleTokenFree.ts ├── translators ├── LibreTranslator.js ├── LingvaTranslator.js ├── TartuNLP.js └── generated │ ├── ChatGPT.js │ ├── DeepL.js │ └── GoogleTokenFree.js └── tsconfig.json /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright 2022 Robert Vitonsky 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Translators for a [Linguist browser extension](https://github.com/translate-tools/linguist). 2 | 3 | Directory `translators` contains files with [custom translators](https://github.com/translate-tools/linguist/blob/master/docs/CustomTranslator.md) implementations. 4 | 5 | This modules is not embedded to a Linguist because not ready to production use, may works not stable or need configuration, like API keys. 6 | 7 | The purpose of this list is to provide for users an alternative translators. 8 | 9 | If you have project about text translation, you can add translator with bindings for your API to a current directory and create pull request. Read [custom translators API docs](https://github.com/translate-tools/linguist/blob/master/docs/CustomTranslator.md) to create bindings for your translation service 10 | 11 | # How to use 12 | 13 | See [custom translators guide](https://github.com/translate-tools/linguist/blob/master/docs/CustomTranslator.md) in Linguist repository. 14 | 15 | # Translators list 16 | 17 | - [LibreTranslator](./translators/LibreTranslator.js) [[github](https://github.com/LibreTranslate/LibreTranslate)] - machine translation project that may be deployed locally (read more in [Offline translation manual](../docs//manuals/OfflineTranslation.md)) 18 | - [TartuNLP](./translators/TartuNLP.js) [[github](https://github.com/TartuNLP/translation-api)] - machine translation engine developed by the NLP lab at the [University of Tartu](https://www.ut.ee/) 19 | - [LingvaTranslator](./translators/LingvaTranslator.js) [[github](https://github.com/thedaviddelta/lingva-translate)] - google translator API proxy with [list of public instances](https://github.com/thedaviddelta/lingva-translate#instances) 20 | 21 | ## Generated translators 22 | 23 | A directory [translators/generated](./translators/generated/) contains code of translators from stable libraries, that ready to use in Linguist and in browser at all. 24 | 25 | Generated code may looks bloated, but this code have support. 26 | 27 | - Alternative [Google translator](./translators/generated/GoogleTokenFree.js) implementation. Try it if you are not satisfied with embedded google translator 28 | - [DeepL](./translators/generated/DeepL.js) - translator for service [deepl.com](https://www.deepl.com). You have to insert your personal [API key](https://www.deepl.com/account/summary) on bottom of translator code 29 | - **WARNING:** with DeepL you pay for each character of translated text. **If you will use DeepL translator with Linguist to translate pages**, it can cost a fortune, because [random wikipedia page](https://en.wikipedia.org/wiki/2022_World_Snooker_Championship) contains *88267* characters, so **you will pay 1.8 EUR (`0.00002 * 88267`) per ONE wikipedia page** 30 | 31 | # Contribution 32 | 33 | To build translators: 34 | - install packages `npm install` 35 | - build with `npm run build` 36 | 37 | If you found bugs, please [create issue](https://github.com/translate-tools/linguist-translators/issues/new) with detailed description problem you have 38 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@translate-tools/linguist-translators", 3 | "version": "0.0.1", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "@translate-tools/linguist-translators", 9 | "version": "0.0.1", 10 | "license": "Apache-2.0", 11 | "dependencies": { 12 | "anylang": "^3.3.0" 13 | }, 14 | "devDependencies": { 15 | "@rollup/plugin-commonjs": "^24.1.0", 16 | "@rollup/plugin-node-resolve": "^15.0.2", 17 | "@rollup/plugin-typescript": "^11.1.0", 18 | "glob": "^10.2.2", 19 | "rollup": "^3.21.2", 20 | "tslib": "^2.5.0", 21 | "typescript": "^4.3.2" 22 | } 23 | }, 24 | "node_modules/@jridgewell/sourcemap-codec": { 25 | "version": "1.4.15", 26 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", 27 | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", 28 | "dev": true 29 | }, 30 | "node_modules/@pkgjs/parseargs": { 31 | "version": "0.11.0", 32 | "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", 33 | "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", 34 | "dev": true, 35 | "optional": true, 36 | "engines": { 37 | "node": ">=14" 38 | } 39 | }, 40 | "node_modules/@rollup/plugin-commonjs": { 41 | "version": "24.1.0", 42 | "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-24.1.0.tgz", 43 | "integrity": "sha512-eSL45hjhCWI0jCCXcNtLVqM5N1JlBGvlFfY0m6oOYnLCJ6N0qEXoZql4sY2MOUArzhH4SA/qBpTxvvZp2Sc+DQ==", 44 | "dev": true, 45 | "dependencies": { 46 | "@rollup/pluginutils": "^5.0.1", 47 | "commondir": "^1.0.1", 48 | "estree-walker": "^2.0.2", 49 | "glob": "^8.0.3", 50 | "is-reference": "1.2.1", 51 | "magic-string": "^0.27.0" 52 | }, 53 | "engines": { 54 | "node": ">=14.0.0" 55 | }, 56 | "peerDependencies": { 57 | "rollup": "^2.68.0||^3.0.0" 58 | }, 59 | "peerDependenciesMeta": { 60 | "rollup": { 61 | "optional": true 62 | } 63 | } 64 | }, 65 | "node_modules/@rollup/plugin-commonjs/node_modules/glob": { 66 | "version": "8.1.0", 67 | "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", 68 | "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", 69 | "dev": true, 70 | "dependencies": { 71 | "fs.realpath": "^1.0.0", 72 | "inflight": "^1.0.4", 73 | "inherits": "2", 74 | "minimatch": "^5.0.1", 75 | "once": "^1.3.0" 76 | }, 77 | "engines": { 78 | "node": ">=12" 79 | }, 80 | "funding": { 81 | "url": "https://github.com/sponsors/isaacs" 82 | } 83 | }, 84 | "node_modules/@rollup/plugin-commonjs/node_modules/minimatch": { 85 | "version": "5.1.6", 86 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", 87 | "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", 88 | "dev": true, 89 | "dependencies": { 90 | "brace-expansion": "^2.0.1" 91 | }, 92 | "engines": { 93 | "node": ">=10" 94 | } 95 | }, 96 | "node_modules/@rollup/plugin-node-resolve": { 97 | "version": "15.0.2", 98 | "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.0.2.tgz", 99 | "integrity": "sha512-Y35fRGUjC3FaurG722uhUuG8YHOJRJQbI6/CkbRkdPotSpDj9NtIN85z1zrcyDcCQIW4qp5mgG72U+gJ0TAFEg==", 100 | "dev": true, 101 | "dependencies": { 102 | "@rollup/pluginutils": "^5.0.1", 103 | "@types/resolve": "1.20.2", 104 | "deepmerge": "^4.2.2", 105 | "is-builtin-module": "^3.2.1", 106 | "is-module": "^1.0.0", 107 | "resolve": "^1.22.1" 108 | }, 109 | "engines": { 110 | "node": ">=14.0.0" 111 | }, 112 | "peerDependencies": { 113 | "rollup": "^2.78.0||^3.0.0" 114 | }, 115 | "peerDependenciesMeta": { 116 | "rollup": { 117 | "optional": true 118 | } 119 | } 120 | }, 121 | "node_modules/@rollup/plugin-typescript": { 122 | "version": "11.1.0", 123 | "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-11.1.0.tgz", 124 | "integrity": "sha512-86flrfE+bSHB69znnTV6kVjkncs2LBMhcTCyxWgRxLyfXfQrxg4UwlAqENnjrrxnSNS/XKCDJCl8EkdFJVHOxw==", 125 | "dev": true, 126 | "dependencies": { 127 | "@rollup/pluginutils": "^5.0.1", 128 | "resolve": "^1.22.1" 129 | }, 130 | "engines": { 131 | "node": ">=14.0.0" 132 | }, 133 | "peerDependencies": { 134 | "rollup": "^2.14.0||^3.0.0", 135 | "tslib": "*", 136 | "typescript": ">=3.7.0" 137 | }, 138 | "peerDependenciesMeta": { 139 | "rollup": { 140 | "optional": true 141 | }, 142 | "tslib": { 143 | "optional": true 144 | } 145 | } 146 | }, 147 | "node_modules/@rollup/pluginutils": { 148 | "version": "5.0.2", 149 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", 150 | "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", 151 | "dev": true, 152 | "dependencies": { 153 | "@types/estree": "^1.0.0", 154 | "estree-walker": "^2.0.2", 155 | "picomatch": "^2.3.1" 156 | }, 157 | "engines": { 158 | "node": ">=14.0.0" 159 | }, 160 | "peerDependencies": { 161 | "rollup": "^1.20.0||^2.0.0||^3.0.0" 162 | }, 163 | "peerDependenciesMeta": { 164 | "rollup": { 165 | "optional": true 166 | } 167 | } 168 | }, 169 | "node_modules/@types/estree": { 170 | "version": "1.0.1", 171 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", 172 | "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", 173 | "dev": true 174 | }, 175 | "node_modules/@types/resolve": { 176 | "version": "1.20.2", 177 | "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", 178 | "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", 179 | "dev": true 180 | }, 181 | "node_modules/@xmldom/xmldom": { 182 | "version": "0.9.8", 183 | "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.8.tgz", 184 | "integrity": "sha512-p96FSY54r+WJ50FIOsCOjyj/wavs8921hG5+kVMmZgKcvIKxMXHTrjNJvRgWa/zuX3B6t2lijLNFaOyuxUH+2A==", 185 | "license": "MIT", 186 | "engines": { 187 | "node": ">=14.6" 188 | } 189 | }, 190 | "node_modules/ansi-regex": { 191 | "version": "5.0.1", 192 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 193 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 194 | "dev": true, 195 | "engines": { 196 | "node": ">=8" 197 | } 198 | }, 199 | "node_modules/ansi-styles": { 200 | "version": "4.3.0", 201 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 202 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 203 | "dev": true, 204 | "dependencies": { 205 | "color-convert": "^2.0.1" 206 | }, 207 | "engines": { 208 | "node": ">=8" 209 | }, 210 | "funding": { 211 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 212 | } 213 | }, 214 | "node_modules/anylang": { 215 | "version": "3.3.0", 216 | "resolved": "https://registry.npmjs.org/anylang/-/anylang-3.3.0.tgz", 217 | "integrity": "sha512-5YfgG025aGyBsN5/GF6XRqDJC47VY3rZG0SVVLmIbwzqv9lY63055XnsK+skDL+DiMhlbpFJM9oTv6cNP6hCTw==", 218 | "license": "Apache-2.0", 219 | "dependencies": { 220 | "@xmldom/xmldom": "^0.9.8", 221 | "isomorphic-fetch": "^3.0.0", 222 | "lodash": "^4.17.21", 223 | "query-string": "^9.2.2", 224 | "xpath": "^0.0.34", 225 | "zod": "^4.0.5" 226 | }, 227 | "engines": { 228 | "node": ">=18" 229 | } 230 | }, 231 | "node_modules/balanced-match": { 232 | "version": "1.0.2", 233 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 234 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 235 | "dev": true 236 | }, 237 | "node_modules/brace-expansion": { 238 | "version": "2.0.1", 239 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 240 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 241 | "dev": true, 242 | "dependencies": { 243 | "balanced-match": "^1.0.0" 244 | } 245 | }, 246 | "node_modules/builtin-modules": { 247 | "version": "3.3.0", 248 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", 249 | "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", 250 | "dev": true, 251 | "engines": { 252 | "node": ">=6" 253 | }, 254 | "funding": { 255 | "url": "https://github.com/sponsors/sindresorhus" 256 | } 257 | }, 258 | "node_modules/cliui": { 259 | "version": "8.0.1", 260 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", 261 | "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", 262 | "dev": true, 263 | "dependencies": { 264 | "string-width": "^4.2.0", 265 | "strip-ansi": "^6.0.1", 266 | "wrap-ansi": "^7.0.0" 267 | }, 268 | "engines": { 269 | "node": ">=12" 270 | } 271 | }, 272 | "node_modules/color-convert": { 273 | "version": "2.0.1", 274 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 275 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 276 | "dev": true, 277 | "dependencies": { 278 | "color-name": "~1.1.4" 279 | }, 280 | "engines": { 281 | "node": ">=7.0.0" 282 | } 283 | }, 284 | "node_modules/color-name": { 285 | "version": "1.1.4", 286 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 287 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 288 | "dev": true 289 | }, 290 | "node_modules/commondir": { 291 | "version": "1.0.1", 292 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", 293 | "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", 294 | "dev": true 295 | }, 296 | "node_modules/cross-spawn": { 297 | "version": "7.0.3", 298 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 299 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 300 | "dev": true, 301 | "dependencies": { 302 | "path-key": "^3.1.0", 303 | "shebang-command": "^2.0.0", 304 | "which": "^2.0.1" 305 | }, 306 | "engines": { 307 | "node": ">= 8" 308 | } 309 | }, 310 | "node_modules/decode-uri-component": { 311 | "version": "0.4.1", 312 | "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.4.1.tgz", 313 | "integrity": "sha512-+8VxcR21HhTy8nOt6jf20w0c9CADrw1O8d+VZ/YzzCt4bJ3uBjw+D1q2osAB8RnpwwaeYBxy0HyKQxD5JBMuuQ==", 314 | "license": "MIT", 315 | "engines": { 316 | "node": ">=14.16" 317 | } 318 | }, 319 | "node_modules/deepmerge": { 320 | "version": "4.3.1", 321 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", 322 | "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", 323 | "dev": true, 324 | "engines": { 325 | "node": ">=0.10.0" 326 | } 327 | }, 328 | "node_modules/emoji-regex": { 329 | "version": "8.0.0", 330 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 331 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 332 | "dev": true 333 | }, 334 | "node_modules/estree-walker": { 335 | "version": "2.0.2", 336 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 337 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", 338 | "dev": true 339 | }, 340 | "node_modules/filter-obj": { 341 | "version": "5.1.0", 342 | "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-5.1.0.tgz", 343 | "integrity": "sha512-qWeTREPoT7I0bifpPUXtxkZJ1XJzxWtfoWWkdVGqa+eCr3SHW/Ocp89o8vLvbUuQnadybJpjOKu4V+RwO6sGng==", 344 | "license": "MIT", 345 | "engines": { 346 | "node": ">=14.16" 347 | }, 348 | "funding": { 349 | "url": "https://github.com/sponsors/sindresorhus" 350 | } 351 | }, 352 | "node_modules/foreground-child": { 353 | "version": "3.1.1", 354 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", 355 | "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", 356 | "dev": true, 357 | "dependencies": { 358 | "cross-spawn": "^7.0.0", 359 | "signal-exit": "^4.0.1" 360 | }, 361 | "engines": { 362 | "node": ">=14" 363 | }, 364 | "funding": { 365 | "url": "https://github.com/sponsors/isaacs" 366 | } 367 | }, 368 | "node_modules/fs.realpath": { 369 | "version": "1.0.0", 370 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 371 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 372 | "dev": true 373 | }, 374 | "node_modules/fsevents": { 375 | "version": "2.3.2", 376 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 377 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 378 | "dev": true, 379 | "hasInstallScript": true, 380 | "optional": true, 381 | "os": [ 382 | "darwin" 383 | ], 384 | "engines": { 385 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 386 | } 387 | }, 388 | "node_modules/function-bind": { 389 | "version": "1.1.1", 390 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 391 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 392 | "dev": true 393 | }, 394 | "node_modules/glob": { 395 | "version": "10.2.2", 396 | "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.2.tgz", 397 | "integrity": "sha512-Xsa0BcxIC6th9UwNjZkhrMtNo/MnyRL8jGCP+uEwhA5oFOCY1f2s1/oNKY47xQ0Bg5nkjsfAEIej1VeH62bDDQ==", 398 | "dev": true, 399 | "dependencies": { 400 | "foreground-child": "^3.1.0", 401 | "jackspeak": "^2.0.3", 402 | "minimatch": "^9.0.0", 403 | "minipass": "^5.0.0", 404 | "path-scurry": "^1.7.0" 405 | }, 406 | "bin": { 407 | "glob": "dist/cjs/src/bin.js" 408 | }, 409 | "engines": { 410 | "node": ">=16 || 14 >=14.17" 411 | }, 412 | "funding": { 413 | "url": "https://github.com/sponsors/isaacs" 414 | } 415 | }, 416 | "node_modules/has": { 417 | "version": "1.0.3", 418 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 419 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 420 | "dev": true, 421 | "dependencies": { 422 | "function-bind": "^1.1.1" 423 | }, 424 | "engines": { 425 | "node": ">= 0.4.0" 426 | } 427 | }, 428 | "node_modules/inflight": { 429 | "version": "1.0.6", 430 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 431 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 432 | "dev": true, 433 | "dependencies": { 434 | "once": "^1.3.0", 435 | "wrappy": "1" 436 | } 437 | }, 438 | "node_modules/inherits": { 439 | "version": "2.0.4", 440 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 441 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 442 | "dev": true 443 | }, 444 | "node_modules/is-builtin-module": { 445 | "version": "3.2.1", 446 | "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", 447 | "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", 448 | "dev": true, 449 | "dependencies": { 450 | "builtin-modules": "^3.3.0" 451 | }, 452 | "engines": { 453 | "node": ">=6" 454 | }, 455 | "funding": { 456 | "url": "https://github.com/sponsors/sindresorhus" 457 | } 458 | }, 459 | "node_modules/is-core-module": { 460 | "version": "2.12.0", 461 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", 462 | "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", 463 | "dev": true, 464 | "dependencies": { 465 | "has": "^1.0.3" 466 | }, 467 | "funding": { 468 | "url": "https://github.com/sponsors/ljharb" 469 | } 470 | }, 471 | "node_modules/is-fullwidth-code-point": { 472 | "version": "3.0.0", 473 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 474 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 475 | "dev": true, 476 | "engines": { 477 | "node": ">=8" 478 | } 479 | }, 480 | "node_modules/is-module": { 481 | "version": "1.0.0", 482 | "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", 483 | "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", 484 | "dev": true 485 | }, 486 | "node_modules/is-reference": { 487 | "version": "1.2.1", 488 | "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", 489 | "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", 490 | "dev": true, 491 | "dependencies": { 492 | "@types/estree": "*" 493 | } 494 | }, 495 | "node_modules/isexe": { 496 | "version": "2.0.0", 497 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 498 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 499 | "dev": true 500 | }, 501 | "node_modules/isomorphic-fetch": { 502 | "version": "3.0.0", 503 | "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", 504 | "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", 505 | "license": "MIT", 506 | "dependencies": { 507 | "node-fetch": "^2.6.1", 508 | "whatwg-fetch": "^3.4.1" 509 | } 510 | }, 511 | "node_modules/jackspeak": { 512 | "version": "2.1.1", 513 | "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.1.1.tgz", 514 | "integrity": "sha512-juf9stUEwUaILepraGOWIJTLwg48bUnBmRqd2ln2Os1sW987zeoj/hzhbvRB95oMuS2ZTpjULmdwHNX4rzZIZw==", 515 | "dev": true, 516 | "dependencies": { 517 | "cliui": "^8.0.1" 518 | }, 519 | "engines": { 520 | "node": ">=14" 521 | }, 522 | "funding": { 523 | "url": "https://github.com/sponsors/isaacs" 524 | }, 525 | "optionalDependencies": { 526 | "@pkgjs/parseargs": "^0.11.0" 527 | } 528 | }, 529 | "node_modules/lodash": { 530 | "version": "4.17.21", 531 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 532 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 533 | "license": "MIT" 534 | }, 535 | "node_modules/lru-cache": { 536 | "version": "9.1.1", 537 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.1.tgz", 538 | "integrity": "sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==", 539 | "dev": true, 540 | "engines": { 541 | "node": "14 || >=16.14" 542 | } 543 | }, 544 | "node_modules/magic-string": { 545 | "version": "0.27.0", 546 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", 547 | "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", 548 | "dev": true, 549 | "dependencies": { 550 | "@jridgewell/sourcemap-codec": "^1.4.13" 551 | }, 552 | "engines": { 553 | "node": ">=12" 554 | } 555 | }, 556 | "node_modules/minimatch": { 557 | "version": "9.0.0", 558 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", 559 | "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", 560 | "dev": true, 561 | "dependencies": { 562 | "brace-expansion": "^2.0.1" 563 | }, 564 | "engines": { 565 | "node": ">=16 || 14 >=14.17" 566 | }, 567 | "funding": { 568 | "url": "https://github.com/sponsors/isaacs" 569 | } 570 | }, 571 | "node_modules/minipass": { 572 | "version": "5.0.0", 573 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", 574 | "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", 575 | "dev": true, 576 | "engines": { 577 | "node": ">=8" 578 | } 579 | }, 580 | "node_modules/node-fetch": { 581 | "version": "2.7.0", 582 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", 583 | "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", 584 | "license": "MIT", 585 | "dependencies": { 586 | "whatwg-url": "^5.0.0" 587 | }, 588 | "engines": { 589 | "node": "4.x || >=6.0.0" 590 | }, 591 | "peerDependencies": { 592 | "encoding": "^0.1.0" 593 | }, 594 | "peerDependenciesMeta": { 595 | "encoding": { 596 | "optional": true 597 | } 598 | } 599 | }, 600 | "node_modules/once": { 601 | "version": "1.4.0", 602 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 603 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 604 | "dev": true, 605 | "dependencies": { 606 | "wrappy": "1" 607 | } 608 | }, 609 | "node_modules/path-key": { 610 | "version": "3.1.1", 611 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 612 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 613 | "dev": true, 614 | "engines": { 615 | "node": ">=8" 616 | } 617 | }, 618 | "node_modules/path-parse": { 619 | "version": "1.0.7", 620 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 621 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 622 | "dev": true 623 | }, 624 | "node_modules/path-scurry": { 625 | "version": "1.7.0", 626 | "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.7.0.tgz", 627 | "integrity": "sha512-UkZUeDjczjYRE495+9thsgcVgsaCPkaw80slmfVFgllxY+IO8ubTsOpFVjDPROBqJdHfVPUFRHPBV/WciOVfWg==", 628 | "dev": true, 629 | "dependencies": { 630 | "lru-cache": "^9.0.0", 631 | "minipass": "^5.0.0" 632 | }, 633 | "engines": { 634 | "node": ">=16 || 14 >=14.17" 635 | }, 636 | "funding": { 637 | "url": "https://github.com/sponsors/isaacs" 638 | } 639 | }, 640 | "node_modules/picomatch": { 641 | "version": "2.3.1", 642 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 643 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 644 | "dev": true, 645 | "engines": { 646 | "node": ">=8.6" 647 | }, 648 | "funding": { 649 | "url": "https://github.com/sponsors/jonschlinkert" 650 | } 651 | }, 652 | "node_modules/query-string": { 653 | "version": "9.2.2", 654 | "resolved": "https://registry.npmjs.org/query-string/-/query-string-9.2.2.tgz", 655 | "integrity": "sha512-pDSIZJ9sFuOp6VnD+5IkakSVf+rICAuuU88Hcsr6AKL0QtxSIfVuKiVP2oahFI7tk3CRSexwV+Ya6MOoTxzg9g==", 656 | "license": "MIT", 657 | "dependencies": { 658 | "decode-uri-component": "^0.4.1", 659 | "filter-obj": "^5.1.0", 660 | "split-on-first": "^3.0.0" 661 | }, 662 | "engines": { 663 | "node": ">=18" 664 | }, 665 | "funding": { 666 | "url": "https://github.com/sponsors/sindresorhus" 667 | } 668 | }, 669 | "node_modules/resolve": { 670 | "version": "1.22.2", 671 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", 672 | "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", 673 | "dev": true, 674 | "dependencies": { 675 | "is-core-module": "^2.11.0", 676 | "path-parse": "^1.0.7", 677 | "supports-preserve-symlinks-flag": "^1.0.0" 678 | }, 679 | "bin": { 680 | "resolve": "bin/resolve" 681 | }, 682 | "funding": { 683 | "url": "https://github.com/sponsors/ljharb" 684 | } 685 | }, 686 | "node_modules/rollup": { 687 | "version": "3.21.2", 688 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.21.2.tgz", 689 | "integrity": "sha512-c4vC+JZ3bbF4Kqq2TtM7zSKtSyMybFOjqmomFax3xpfYaPZDZ4iz8NMIuBRMjnXOcKYozw7bC6vhJjiWD6JpzQ==", 690 | "dev": true, 691 | "bin": { 692 | "rollup": "dist/bin/rollup" 693 | }, 694 | "engines": { 695 | "node": ">=14.18.0", 696 | "npm": ">=8.0.0" 697 | }, 698 | "optionalDependencies": { 699 | "fsevents": "~2.3.2" 700 | } 701 | }, 702 | "node_modules/shebang-command": { 703 | "version": "2.0.0", 704 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 705 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 706 | "dev": true, 707 | "dependencies": { 708 | "shebang-regex": "^3.0.0" 709 | }, 710 | "engines": { 711 | "node": ">=8" 712 | } 713 | }, 714 | "node_modules/shebang-regex": { 715 | "version": "3.0.0", 716 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 717 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 718 | "dev": true, 719 | "engines": { 720 | "node": ">=8" 721 | } 722 | }, 723 | "node_modules/signal-exit": { 724 | "version": "4.0.1", 725 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.1.tgz", 726 | "integrity": "sha512-uUWsN4aOxJAS8KOuf3QMyFtgm1pkb6I+KRZbRF/ghdf5T7sM+B1lLLzPDxswUjkmHyxQAVzEgG35E3NzDM9GVw==", 727 | "dev": true, 728 | "engines": { 729 | "node": ">=14" 730 | }, 731 | "funding": { 732 | "url": "https://github.com/sponsors/isaacs" 733 | } 734 | }, 735 | "node_modules/split-on-first": { 736 | "version": "3.0.0", 737 | "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-3.0.0.tgz", 738 | "integrity": "sha512-qxQJTx2ryR0Dw0ITYyekNQWpz6f8dGd7vffGNflQQ3Iqj9NJ6qiZ7ELpZsJ/QBhIVAiDfXdag3+Gp8RvWa62AA==", 739 | "license": "MIT", 740 | "engines": { 741 | "node": ">=12" 742 | }, 743 | "funding": { 744 | "url": "https://github.com/sponsors/sindresorhus" 745 | } 746 | }, 747 | "node_modules/string-width": { 748 | "version": "4.2.3", 749 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 750 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 751 | "dev": true, 752 | "dependencies": { 753 | "emoji-regex": "^8.0.0", 754 | "is-fullwidth-code-point": "^3.0.0", 755 | "strip-ansi": "^6.0.1" 756 | }, 757 | "engines": { 758 | "node": ">=8" 759 | } 760 | }, 761 | "node_modules/strip-ansi": { 762 | "version": "6.0.1", 763 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 764 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 765 | "dev": true, 766 | "dependencies": { 767 | "ansi-regex": "^5.0.1" 768 | }, 769 | "engines": { 770 | "node": ">=8" 771 | } 772 | }, 773 | "node_modules/supports-preserve-symlinks-flag": { 774 | "version": "1.0.0", 775 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 776 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 777 | "dev": true, 778 | "engines": { 779 | "node": ">= 0.4" 780 | }, 781 | "funding": { 782 | "url": "https://github.com/sponsors/ljharb" 783 | } 784 | }, 785 | "node_modules/tr46": { 786 | "version": "0.0.3", 787 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 788 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", 789 | "license": "MIT" 790 | }, 791 | "node_modules/tslib": { 792 | "version": "2.5.0", 793 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", 794 | "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", 795 | "dev": true 796 | }, 797 | "node_modules/typescript": { 798 | "version": "4.9.5", 799 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", 800 | "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", 801 | "dev": true, 802 | "bin": { 803 | "tsc": "bin/tsc", 804 | "tsserver": "bin/tsserver" 805 | }, 806 | "engines": { 807 | "node": ">=4.2.0" 808 | } 809 | }, 810 | "node_modules/webidl-conversions": { 811 | "version": "3.0.1", 812 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 813 | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", 814 | "license": "BSD-2-Clause" 815 | }, 816 | "node_modules/whatwg-fetch": { 817 | "version": "3.6.20", 818 | "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", 819 | "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", 820 | "license": "MIT" 821 | }, 822 | "node_modules/whatwg-url": { 823 | "version": "5.0.0", 824 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 825 | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", 826 | "license": "MIT", 827 | "dependencies": { 828 | "tr46": "~0.0.3", 829 | "webidl-conversions": "^3.0.0" 830 | } 831 | }, 832 | "node_modules/which": { 833 | "version": "2.0.2", 834 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 835 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 836 | "dev": true, 837 | "dependencies": { 838 | "isexe": "^2.0.0" 839 | }, 840 | "bin": { 841 | "node-which": "bin/node-which" 842 | }, 843 | "engines": { 844 | "node": ">= 8" 845 | } 846 | }, 847 | "node_modules/wrap-ansi": { 848 | "version": "7.0.0", 849 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 850 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 851 | "dev": true, 852 | "dependencies": { 853 | "ansi-styles": "^4.0.0", 854 | "string-width": "^4.1.0", 855 | "strip-ansi": "^6.0.0" 856 | }, 857 | "engines": { 858 | "node": ">=10" 859 | }, 860 | "funding": { 861 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 862 | } 863 | }, 864 | "node_modules/wrappy": { 865 | "version": "1.0.2", 866 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 867 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 868 | "dev": true 869 | }, 870 | "node_modules/xpath": { 871 | "version": "0.0.34", 872 | "resolved": "https://registry.npmjs.org/xpath/-/xpath-0.0.34.tgz", 873 | "integrity": "sha512-FxF6+rkr1rNSQrhUNYrAFJpRXNzlDoMxeXN5qI84939ylEv3qqPFKa85Oxr6tDaJKqwW6KKyo2v26TSv3k6LeA==", 874 | "license": "MIT", 875 | "engines": { 876 | "node": ">=0.6.0" 877 | } 878 | }, 879 | "node_modules/zod": { 880 | "version": "4.1.5", 881 | "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.5.tgz", 882 | "integrity": "sha512-rcUUZqlLJgBC33IT3PNMgsCq6TzLQEG/Ei/KTCU0PedSWRMAXoOUN+4t/0H+Q8bdnLPdqUYnvboJT0bn/229qg==", 883 | "license": "MIT", 884 | "funding": { 885 | "url": "https://github.com/sponsors/colinhacks" 886 | } 887 | } 888 | }, 889 | "dependencies": { 890 | "@jridgewell/sourcemap-codec": { 891 | "version": "1.4.15", 892 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", 893 | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", 894 | "dev": true 895 | }, 896 | "@pkgjs/parseargs": { 897 | "version": "0.11.0", 898 | "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", 899 | "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", 900 | "dev": true, 901 | "optional": true 902 | }, 903 | "@rollup/plugin-commonjs": { 904 | "version": "24.1.0", 905 | "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-24.1.0.tgz", 906 | "integrity": "sha512-eSL45hjhCWI0jCCXcNtLVqM5N1JlBGvlFfY0m6oOYnLCJ6N0qEXoZql4sY2MOUArzhH4SA/qBpTxvvZp2Sc+DQ==", 907 | "dev": true, 908 | "requires": { 909 | "@rollup/pluginutils": "^5.0.1", 910 | "commondir": "^1.0.1", 911 | "estree-walker": "^2.0.2", 912 | "glob": "^8.0.3", 913 | "is-reference": "1.2.1", 914 | "magic-string": "^0.27.0" 915 | }, 916 | "dependencies": { 917 | "glob": { 918 | "version": "8.1.0", 919 | "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", 920 | "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", 921 | "dev": true, 922 | "requires": { 923 | "fs.realpath": "^1.0.0", 924 | "inflight": "^1.0.4", 925 | "inherits": "2", 926 | "minimatch": "^5.0.1", 927 | "once": "^1.3.0" 928 | } 929 | }, 930 | "minimatch": { 931 | "version": "5.1.6", 932 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", 933 | "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", 934 | "dev": true, 935 | "requires": { 936 | "brace-expansion": "^2.0.1" 937 | } 938 | } 939 | } 940 | }, 941 | "@rollup/plugin-node-resolve": { 942 | "version": "15.0.2", 943 | "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.0.2.tgz", 944 | "integrity": "sha512-Y35fRGUjC3FaurG722uhUuG8YHOJRJQbI6/CkbRkdPotSpDj9NtIN85z1zrcyDcCQIW4qp5mgG72U+gJ0TAFEg==", 945 | "dev": true, 946 | "requires": { 947 | "@rollup/pluginutils": "^5.0.1", 948 | "@types/resolve": "1.20.2", 949 | "deepmerge": "^4.2.2", 950 | "is-builtin-module": "^3.2.1", 951 | "is-module": "^1.0.0", 952 | "resolve": "^1.22.1" 953 | } 954 | }, 955 | "@rollup/plugin-typescript": { 956 | "version": "11.1.0", 957 | "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-11.1.0.tgz", 958 | "integrity": "sha512-86flrfE+bSHB69znnTV6kVjkncs2LBMhcTCyxWgRxLyfXfQrxg4UwlAqENnjrrxnSNS/XKCDJCl8EkdFJVHOxw==", 959 | "dev": true, 960 | "requires": { 961 | "@rollup/pluginutils": "^5.0.1", 962 | "resolve": "^1.22.1" 963 | } 964 | }, 965 | "@rollup/pluginutils": { 966 | "version": "5.0.2", 967 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", 968 | "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", 969 | "dev": true, 970 | "requires": { 971 | "@types/estree": "^1.0.0", 972 | "estree-walker": "^2.0.2", 973 | "picomatch": "^2.3.1" 974 | } 975 | }, 976 | "@types/estree": { 977 | "version": "1.0.1", 978 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", 979 | "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", 980 | "dev": true 981 | }, 982 | "@types/resolve": { 983 | "version": "1.20.2", 984 | "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", 985 | "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", 986 | "dev": true 987 | }, 988 | "@xmldom/xmldom": { 989 | "version": "0.9.8", 990 | "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.8.tgz", 991 | "integrity": "sha512-p96FSY54r+WJ50FIOsCOjyj/wavs8921hG5+kVMmZgKcvIKxMXHTrjNJvRgWa/zuX3B6t2lijLNFaOyuxUH+2A==" 992 | }, 993 | "ansi-regex": { 994 | "version": "5.0.1", 995 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 996 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 997 | "dev": true 998 | }, 999 | "ansi-styles": { 1000 | "version": "4.3.0", 1001 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1002 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1003 | "dev": true, 1004 | "requires": { 1005 | "color-convert": "^2.0.1" 1006 | } 1007 | }, 1008 | "anylang": { 1009 | "version": "3.3.0", 1010 | "resolved": "https://registry.npmjs.org/anylang/-/anylang-3.3.0.tgz", 1011 | "integrity": "sha512-5YfgG025aGyBsN5/GF6XRqDJC47VY3rZG0SVVLmIbwzqv9lY63055XnsK+skDL+DiMhlbpFJM9oTv6cNP6hCTw==", 1012 | "requires": { 1013 | "@xmldom/xmldom": "^0.9.8", 1014 | "isomorphic-fetch": "^3.0.0", 1015 | "lodash": "^4.17.21", 1016 | "query-string": "^9.2.2", 1017 | "xpath": "^0.0.34", 1018 | "zod": "^4.0.5" 1019 | } 1020 | }, 1021 | "balanced-match": { 1022 | "version": "1.0.2", 1023 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 1024 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 1025 | "dev": true 1026 | }, 1027 | "brace-expansion": { 1028 | "version": "2.0.1", 1029 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 1030 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 1031 | "dev": true, 1032 | "requires": { 1033 | "balanced-match": "^1.0.0" 1034 | } 1035 | }, 1036 | "builtin-modules": { 1037 | "version": "3.3.0", 1038 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", 1039 | "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", 1040 | "dev": true 1041 | }, 1042 | "cliui": { 1043 | "version": "8.0.1", 1044 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", 1045 | "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", 1046 | "dev": true, 1047 | "requires": { 1048 | "string-width": "^4.2.0", 1049 | "strip-ansi": "^6.0.1", 1050 | "wrap-ansi": "^7.0.0" 1051 | } 1052 | }, 1053 | "color-convert": { 1054 | "version": "2.0.1", 1055 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1056 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1057 | "dev": true, 1058 | "requires": { 1059 | "color-name": "~1.1.4" 1060 | } 1061 | }, 1062 | "color-name": { 1063 | "version": "1.1.4", 1064 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1065 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1066 | "dev": true 1067 | }, 1068 | "commondir": { 1069 | "version": "1.0.1", 1070 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", 1071 | "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", 1072 | "dev": true 1073 | }, 1074 | "cross-spawn": { 1075 | "version": "7.0.3", 1076 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 1077 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 1078 | "dev": true, 1079 | "requires": { 1080 | "path-key": "^3.1.0", 1081 | "shebang-command": "^2.0.0", 1082 | "which": "^2.0.1" 1083 | } 1084 | }, 1085 | "decode-uri-component": { 1086 | "version": "0.4.1", 1087 | "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.4.1.tgz", 1088 | "integrity": "sha512-+8VxcR21HhTy8nOt6jf20w0c9CADrw1O8d+VZ/YzzCt4bJ3uBjw+D1q2osAB8RnpwwaeYBxy0HyKQxD5JBMuuQ==" 1089 | }, 1090 | "deepmerge": { 1091 | "version": "4.3.1", 1092 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", 1093 | "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", 1094 | "dev": true 1095 | }, 1096 | "emoji-regex": { 1097 | "version": "8.0.0", 1098 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1099 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 1100 | "dev": true 1101 | }, 1102 | "estree-walker": { 1103 | "version": "2.0.2", 1104 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 1105 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", 1106 | "dev": true 1107 | }, 1108 | "filter-obj": { 1109 | "version": "5.1.0", 1110 | "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-5.1.0.tgz", 1111 | "integrity": "sha512-qWeTREPoT7I0bifpPUXtxkZJ1XJzxWtfoWWkdVGqa+eCr3SHW/Ocp89o8vLvbUuQnadybJpjOKu4V+RwO6sGng==" 1112 | }, 1113 | "foreground-child": { 1114 | "version": "3.1.1", 1115 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", 1116 | "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", 1117 | "dev": true, 1118 | "requires": { 1119 | "cross-spawn": "^7.0.0", 1120 | "signal-exit": "^4.0.1" 1121 | } 1122 | }, 1123 | "fs.realpath": { 1124 | "version": "1.0.0", 1125 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1126 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 1127 | "dev": true 1128 | }, 1129 | "fsevents": { 1130 | "version": "2.3.2", 1131 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 1132 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 1133 | "dev": true, 1134 | "optional": true 1135 | }, 1136 | "function-bind": { 1137 | "version": "1.1.1", 1138 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1139 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1140 | "dev": true 1141 | }, 1142 | "glob": { 1143 | "version": "10.2.2", 1144 | "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.2.tgz", 1145 | "integrity": "sha512-Xsa0BcxIC6th9UwNjZkhrMtNo/MnyRL8jGCP+uEwhA5oFOCY1f2s1/oNKY47xQ0Bg5nkjsfAEIej1VeH62bDDQ==", 1146 | "dev": true, 1147 | "requires": { 1148 | "foreground-child": "^3.1.0", 1149 | "jackspeak": "^2.0.3", 1150 | "minimatch": "^9.0.0", 1151 | "minipass": "^5.0.0", 1152 | "path-scurry": "^1.7.0" 1153 | } 1154 | }, 1155 | "has": { 1156 | "version": "1.0.3", 1157 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1158 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1159 | "dev": true, 1160 | "requires": { 1161 | "function-bind": "^1.1.1" 1162 | } 1163 | }, 1164 | "inflight": { 1165 | "version": "1.0.6", 1166 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1167 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 1168 | "dev": true, 1169 | "requires": { 1170 | "once": "^1.3.0", 1171 | "wrappy": "1" 1172 | } 1173 | }, 1174 | "inherits": { 1175 | "version": "2.0.4", 1176 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1177 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1178 | "dev": true 1179 | }, 1180 | "is-builtin-module": { 1181 | "version": "3.2.1", 1182 | "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", 1183 | "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", 1184 | "dev": true, 1185 | "requires": { 1186 | "builtin-modules": "^3.3.0" 1187 | } 1188 | }, 1189 | "is-core-module": { 1190 | "version": "2.12.0", 1191 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", 1192 | "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", 1193 | "dev": true, 1194 | "requires": { 1195 | "has": "^1.0.3" 1196 | } 1197 | }, 1198 | "is-fullwidth-code-point": { 1199 | "version": "3.0.0", 1200 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1201 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1202 | "dev": true 1203 | }, 1204 | "is-module": { 1205 | "version": "1.0.0", 1206 | "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", 1207 | "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", 1208 | "dev": true 1209 | }, 1210 | "is-reference": { 1211 | "version": "1.2.1", 1212 | "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", 1213 | "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", 1214 | "dev": true, 1215 | "requires": { 1216 | "@types/estree": "*" 1217 | } 1218 | }, 1219 | "isexe": { 1220 | "version": "2.0.0", 1221 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1222 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 1223 | "dev": true 1224 | }, 1225 | "isomorphic-fetch": { 1226 | "version": "3.0.0", 1227 | "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", 1228 | "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", 1229 | "requires": { 1230 | "node-fetch": "^2.6.1", 1231 | "whatwg-fetch": "^3.4.1" 1232 | } 1233 | }, 1234 | "jackspeak": { 1235 | "version": "2.1.1", 1236 | "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.1.1.tgz", 1237 | "integrity": "sha512-juf9stUEwUaILepraGOWIJTLwg48bUnBmRqd2ln2Os1sW987zeoj/hzhbvRB95oMuS2ZTpjULmdwHNX4rzZIZw==", 1238 | "dev": true, 1239 | "requires": { 1240 | "@pkgjs/parseargs": "^0.11.0", 1241 | "cliui": "^8.0.1" 1242 | } 1243 | }, 1244 | "lodash": { 1245 | "version": "4.17.21", 1246 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 1247 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 1248 | }, 1249 | "lru-cache": { 1250 | "version": "9.1.1", 1251 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.1.tgz", 1252 | "integrity": "sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==", 1253 | "dev": true 1254 | }, 1255 | "magic-string": { 1256 | "version": "0.27.0", 1257 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", 1258 | "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", 1259 | "dev": true, 1260 | "requires": { 1261 | "@jridgewell/sourcemap-codec": "^1.4.13" 1262 | } 1263 | }, 1264 | "minimatch": { 1265 | "version": "9.0.0", 1266 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", 1267 | "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", 1268 | "dev": true, 1269 | "requires": { 1270 | "brace-expansion": "^2.0.1" 1271 | } 1272 | }, 1273 | "minipass": { 1274 | "version": "5.0.0", 1275 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", 1276 | "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", 1277 | "dev": true 1278 | }, 1279 | "node-fetch": { 1280 | "version": "2.7.0", 1281 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", 1282 | "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", 1283 | "requires": { 1284 | "whatwg-url": "^5.0.0" 1285 | } 1286 | }, 1287 | "once": { 1288 | "version": "1.4.0", 1289 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1290 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 1291 | "dev": true, 1292 | "requires": { 1293 | "wrappy": "1" 1294 | } 1295 | }, 1296 | "path-key": { 1297 | "version": "3.1.1", 1298 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1299 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1300 | "dev": true 1301 | }, 1302 | "path-parse": { 1303 | "version": "1.0.7", 1304 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 1305 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 1306 | "dev": true 1307 | }, 1308 | "path-scurry": { 1309 | "version": "1.7.0", 1310 | "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.7.0.tgz", 1311 | "integrity": "sha512-UkZUeDjczjYRE495+9thsgcVgsaCPkaw80slmfVFgllxY+IO8ubTsOpFVjDPROBqJdHfVPUFRHPBV/WciOVfWg==", 1312 | "dev": true, 1313 | "requires": { 1314 | "lru-cache": "^9.0.0", 1315 | "minipass": "^5.0.0" 1316 | } 1317 | }, 1318 | "picomatch": { 1319 | "version": "2.3.1", 1320 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1321 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1322 | "dev": true 1323 | }, 1324 | "query-string": { 1325 | "version": "9.2.2", 1326 | "resolved": "https://registry.npmjs.org/query-string/-/query-string-9.2.2.tgz", 1327 | "integrity": "sha512-pDSIZJ9sFuOp6VnD+5IkakSVf+rICAuuU88Hcsr6AKL0QtxSIfVuKiVP2oahFI7tk3CRSexwV+Ya6MOoTxzg9g==", 1328 | "requires": { 1329 | "decode-uri-component": "^0.4.1", 1330 | "filter-obj": "^5.1.0", 1331 | "split-on-first": "^3.0.0" 1332 | } 1333 | }, 1334 | "resolve": { 1335 | "version": "1.22.2", 1336 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", 1337 | "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", 1338 | "dev": true, 1339 | "requires": { 1340 | "is-core-module": "^2.11.0", 1341 | "path-parse": "^1.0.7", 1342 | "supports-preserve-symlinks-flag": "^1.0.0" 1343 | } 1344 | }, 1345 | "rollup": { 1346 | "version": "3.21.2", 1347 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.21.2.tgz", 1348 | "integrity": "sha512-c4vC+JZ3bbF4Kqq2TtM7zSKtSyMybFOjqmomFax3xpfYaPZDZ4iz8NMIuBRMjnXOcKYozw7bC6vhJjiWD6JpzQ==", 1349 | "dev": true, 1350 | "requires": { 1351 | "fsevents": "~2.3.2" 1352 | } 1353 | }, 1354 | "shebang-command": { 1355 | "version": "2.0.0", 1356 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 1357 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1358 | "dev": true, 1359 | "requires": { 1360 | "shebang-regex": "^3.0.0" 1361 | } 1362 | }, 1363 | "shebang-regex": { 1364 | "version": "3.0.0", 1365 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 1366 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 1367 | "dev": true 1368 | }, 1369 | "signal-exit": { 1370 | "version": "4.0.1", 1371 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.1.tgz", 1372 | "integrity": "sha512-uUWsN4aOxJAS8KOuf3QMyFtgm1pkb6I+KRZbRF/ghdf5T7sM+B1lLLzPDxswUjkmHyxQAVzEgG35E3NzDM9GVw==", 1373 | "dev": true 1374 | }, 1375 | "split-on-first": { 1376 | "version": "3.0.0", 1377 | "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-3.0.0.tgz", 1378 | "integrity": "sha512-qxQJTx2ryR0Dw0ITYyekNQWpz6f8dGd7vffGNflQQ3Iqj9NJ6qiZ7ELpZsJ/QBhIVAiDfXdag3+Gp8RvWa62AA==" 1379 | }, 1380 | "string-width": { 1381 | "version": "4.2.3", 1382 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 1383 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1384 | "dev": true, 1385 | "requires": { 1386 | "emoji-regex": "^8.0.0", 1387 | "is-fullwidth-code-point": "^3.0.0", 1388 | "strip-ansi": "^6.0.1" 1389 | } 1390 | }, 1391 | "strip-ansi": { 1392 | "version": "6.0.1", 1393 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1394 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1395 | "dev": true, 1396 | "requires": { 1397 | "ansi-regex": "^5.0.1" 1398 | } 1399 | }, 1400 | "supports-preserve-symlinks-flag": { 1401 | "version": "1.0.0", 1402 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 1403 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 1404 | "dev": true 1405 | }, 1406 | "tr46": { 1407 | "version": "0.0.3", 1408 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 1409 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" 1410 | }, 1411 | "tslib": { 1412 | "version": "2.5.0", 1413 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", 1414 | "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", 1415 | "dev": true 1416 | }, 1417 | "typescript": { 1418 | "version": "4.9.5", 1419 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", 1420 | "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", 1421 | "dev": true 1422 | }, 1423 | "webidl-conversions": { 1424 | "version": "3.0.1", 1425 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 1426 | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" 1427 | }, 1428 | "whatwg-fetch": { 1429 | "version": "3.6.20", 1430 | "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", 1431 | "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==" 1432 | }, 1433 | "whatwg-url": { 1434 | "version": "5.0.0", 1435 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 1436 | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", 1437 | "requires": { 1438 | "tr46": "~0.0.3", 1439 | "webidl-conversions": "^3.0.0" 1440 | } 1441 | }, 1442 | "which": { 1443 | "version": "2.0.2", 1444 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 1445 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 1446 | "dev": true, 1447 | "requires": { 1448 | "isexe": "^2.0.0" 1449 | } 1450 | }, 1451 | "wrap-ansi": { 1452 | "version": "7.0.0", 1453 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 1454 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 1455 | "dev": true, 1456 | "requires": { 1457 | "ansi-styles": "^4.0.0", 1458 | "string-width": "^4.1.0", 1459 | "strip-ansi": "^6.0.0" 1460 | } 1461 | }, 1462 | "wrappy": { 1463 | "version": "1.0.2", 1464 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1465 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 1466 | "dev": true 1467 | }, 1468 | "xpath": { 1469 | "version": "0.0.34", 1470 | "resolved": "https://registry.npmjs.org/xpath/-/xpath-0.0.34.tgz", 1471 | "integrity": "sha512-FxF6+rkr1rNSQrhUNYrAFJpRXNzlDoMxeXN5qI84939ylEv3qqPFKa85Oxr6tDaJKqwW6KKyo2v26TSv3k6LeA==" 1472 | }, 1473 | "zod": { 1474 | "version": "4.1.5", 1475 | "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.5.tgz", 1476 | "integrity": "sha512-rcUUZqlLJgBC33IT3PNMgsCq6TzLQEG/Ei/KTCU0PedSWRMAXoOUN+4t/0H+Q8bdnLPdqUYnvboJT0bn/229qg==" 1477 | } 1478 | } 1479 | } 1480 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@translate-tools/linguist-translators", 3 | "version": "0.0.1", 4 | "description": "Translators for Linguist", 5 | "license": "Apache-2.0", 6 | "author": "Robert Vitonsky ", 7 | "scripts": { 8 | "build": "rm -Rf translators/generated && rollup -c ./rollup.config.mjs", 9 | "test": "jest" 10 | }, 11 | "devDependencies": { 12 | "@rollup/plugin-commonjs": "^24.1.0", 13 | "@rollup/plugin-node-resolve": "^15.0.2", 14 | "@rollup/plugin-typescript": "^11.1.0", 15 | "glob": "^10.2.2", 16 | "rollup": "^3.21.2", 17 | "tslib": "^2.5.0", 18 | "typescript": "^4.3.2" 19 | }, 20 | "dependencies": { 21 | "anylang": "^3.3.0" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /rollup.config.mjs: -------------------------------------------------------------------------------- 1 | import { glob } from "glob"; 2 | 3 | import commonjs from "@rollup/plugin-commonjs"; 4 | import typescript from "@rollup/plugin-typescript"; 5 | import { nodeResolve } from "@rollup/plugin-node-resolve"; 6 | 7 | export default glob.sync("src/translators/*.ts").map((filename) => ({ 8 | input: filename, 9 | output: { 10 | dir: "translators/generated", 11 | format: "es", 12 | }, 13 | treeshake: true, 14 | plugins: [ 15 | commonjs(), 16 | typescript({ 17 | target: "esnext", 18 | module: "esnext", 19 | moduleResolution: "nodenext", 20 | }), 21 | nodeResolve({ 22 | browser: true, 23 | }), 24 | ], 25 | })); 26 | -------------------------------------------------------------------------------- /src/translators/ChatGPT.ts: -------------------------------------------------------------------------------- 1 | import { ChatGPTLLMTranslator as BaseChatGPTTranslator } from 'anylang/translators/LLMTranslators/ChatGPTLLMTranslator'; 2 | 3 | type Options = typeof BaseChatGPTTranslator extends { new(...params: infer T): any } ? T : never; 4 | 5 | function ChatGPTTranslator(options: Partial) { 6 | return new BaseChatGPTTranslator({ 7 | ...options, 8 | // Insert your API key here 9 | apiKey: '', 10 | 11 | // Optional. Custom API endpoint 12 | // baseUrl: 'https://openrouter.ai/api/v1', 13 | 14 | // Optional. Custom model name 15 | // model: 'openai/gpt-4o-mini', 16 | }); 17 | } 18 | 19 | ChatGPTTranslator.__proto__ = BaseChatGPTTranslator; 20 | 21 | (globalThis as any).translator = ChatGPTTranslator; -------------------------------------------------------------------------------- /src/translators/DeepL.ts: -------------------------------------------------------------------------------- 1 | import { DeepLTranslator as BaseDeepLTranslator, DeepLTranslatorOptions } from 'anylang/translators/DeepLTranslator'; 2 | 3 | function DeepLTranslator(options: DeepLTranslatorOptions) { 4 | // Find your API key on page https://www.deepl.com/account/summary 5 | // Insert your API key here 6 | const apiKey = ''; 7 | return new BaseDeepLTranslator({ ...options, apiKey }); 8 | } 9 | 10 | DeepLTranslator.__proto__ = BaseDeepLTranslator; 11 | 12 | (globalThis as any).translator = DeepLTranslator; -------------------------------------------------------------------------------- /src/translators/GoogleTokenFree.ts: -------------------------------------------------------------------------------- 1 | import { GoogleTranslatorTokenFree } from 'anylang/translators/GoogleTranslator'; 2 | 3 | (globalThis as any).translator = GoogleTranslatorTokenFree; -------------------------------------------------------------------------------- /translators/LibreTranslator.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Homepage: https://github.com/LibreTranslate/LibreTranslate 3 | * Demo: https://libretranslate.com/ 4 | * API docs: https://libretranslate.com/docs/ 5 | */ 6 | class LibreTranslator { 7 | // URL of your instance of LibreTranslate 8 | // for local instance use URL "http://localhost/translate" 9 | apiPath = 'https://translate.terraprint.co/translate'; 10 | // Insert API key if you have 11 | apiKey = ''; 12 | 13 | translate = (text, from, to) => { 14 | return fetch(this.apiPath, { 15 | credentials: 'omit', 16 | headers: { 17 | 'User-Agent': 18 | 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0', 19 | Accept: '*/*', 20 | 'Accept-Language': 'en-US,en;q=0.5', 21 | 'Sec-Fetch-Dest': 'empty', 22 | 'Sec-Fetch-Mode': 'cors', 23 | 'Sec-Fetch-Site': 'same-origin', 24 | 'Content-Type': 'application/json', 25 | }, 26 | method: 'POST', 27 | mode: 'cors', 28 | body: JSON.stringify({ 29 | q: text, 30 | source: from, 31 | target: to, 32 | format: 'text', 33 | api_key: this.apiKey, 34 | }), 35 | }) 36 | .then((r) => r.json()) 37 | .then(({ translatedText }) => translatedText); 38 | }; 39 | 40 | translateBatch = (texts, from, to) => 41 | Promise.all(texts.map((text) => this.translate(text, from, to))); 42 | 43 | getLengthLimit = () => 4000; 44 | getRequestsTimeout = () => 300; 45 | checkLimitExceeding = (text) => { 46 | const textLength = !Array.isArray(text) 47 | ? text.length 48 | : text.reduce((len, text) => len + text.length, 0); 49 | 50 | return textLength - this.getLengthLimit(); 51 | }; 52 | 53 | static isSupportedAutoFrom = () => true; 54 | // prettier-ignore 55 | static getSupportedLanguages = () => [ 56 | "en", "ar", "az", "zh", "cs", 57 | "nl", "eo", "fi", "fr", "de", 58 | "el", "hi", "hu", "id", "ga", 59 | "it", "ja", "ko", "fa", "pl", 60 | "pt", "ru", "sk", "es", "sv", 61 | "tr", "uk", "vi" 62 | ]; 63 | } 64 | 65 | LibreTranslator; 66 | -------------------------------------------------------------------------------- /translators/LingvaTranslator.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Homepage: https://github.com/thedaviddelta/lingva-translate 3 | * Public instances list: https://github.com/thedaviddelta/lingva-translate#instances 4 | * Demo: https://lingva.ml/ 5 | * API docs: https://github.com/thedaviddelta/lingva-translate#public-apis 6 | */ 7 | class LingvaTranslator { 8 | // URL of your instance of LingvaTranslate 9 | apiPath = 'https://lingva.ml'; 10 | 11 | translate = (text, from, to) => { 12 | return fetch(`${this.apiPath}/api/v1/${from}/${to}/${text}`, { 13 | credentials: 'omit', 14 | headers: { 15 | 'User-Agent': 16 | 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0', 17 | Accept: '*/*', 18 | 'Accept-Language': 'en-US,en;q=0.5', 19 | 'Sec-Fetch-Dest': 'empty', 20 | 'Sec-Fetch-Mode': 'cors', 21 | 'Sec-Fetch-Site': 'same-origin', 22 | }, 23 | method: 'GET', 24 | mode: 'cors', 25 | }) 26 | .then((r) => r.json()) 27 | .then(({ translation }) => translation); 28 | }; 29 | 30 | translateBatch = (texts, from, to) => 31 | Promise.all(texts.map((text) => this.translate(text, from, to))); 32 | 33 | getLengthLimit = () => 4000; 34 | getRequestsTimeout = () => 300; 35 | checkLimitExceeding = (text) => { 36 | const textLength = !Array.isArray(text) 37 | ? text.length 38 | : text.reduce((len, text) => len + text.length, 0); 39 | 40 | return textLength - this.getLengthLimit(); 41 | }; 42 | 43 | static isSupportedAutoFrom = () => true; 44 | 45 | // prettier-ignore 46 | static getSupportedLanguages = () => [ 47 | "af", "sq", "am", "ar", "hy", "as", "ay", "az", "bm", "eu", 48 | "be", "bn", "bho", "bs", "bg", "ca", "ceb", "ny", "zh", "zh_HANT", 49 | "co", "hr", "cs", "da", "dv", "doi", "nl", "en", "eo", "et", "ee", 50 | "tl", "fi", "fr", "fy", "gl", "ka", "de", "el", "gn", "gu", "ht", 51 | "ha", "haw", "iw", "hi", "hmn", "hu", "is", "ig", "ilo", "id", 52 | "ga", "it", "ja", "jw", "kn", "kk", "km", "rw", "gom", "ko", 53 | "kri", "ku", "ckb", "ky", "lo", "la", "lv", "ln", "lt", "lg", 54 | "lb", "mk", "mai", "mg", "ms", "ml", "mt", "mi", "mr", "mni-Mtei", 55 | "lus", "mn", "my", "ne", "no", "or", "om", "ps", "fa", "pl", 56 | "pt", "pa", "qu", "ro", "ru", "sm", "sa", "gd", "nso", "sr", 57 | "st", "sn", "sd", "si", "sk", "sl", "so", "es", "su", "sw", "sv", 58 | "tg", "ta", "tt", "te", "th", "ti", "ts", "tr", "tk", "ak", "uk", "ur", 59 | "ug", "uz", "vi", "cy", "xh", "yi", "yo", "zu" 60 | ]; 61 | } 62 | 63 | LingvaTranslator; 64 | -------------------------------------------------------------------------------- /translators/TartuNLP.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Homepage: https://github.com/TartuNLP/translation-api 3 | * Demo: https://translate.ut.ee/ 4 | * API docs: https://api.tartunlp.ai/translation/docs 5 | */ 6 | class TartuNLP { 7 | translate = (text, from, to) => { 8 | return fetch('https://api.tartunlp.ai/translation/v2', { 9 | method: 'POST', 10 | headers: { 11 | 'Content-Type': 'application/json', 12 | }, 13 | body: JSON.stringify({ text, src: from, tgt: to }), 14 | }) 15 | .then((r) => r.json()) 16 | .then((r) => r.result); 17 | }; 18 | 19 | translateBatch = (texts, from, to) => 20 | Promise.all(texts.map((text) => this.translate(text, from, to))); 21 | 22 | getLengthLimit = () => 5000; 23 | getRequestsTimeout = () => 300; 24 | checkLimitExceeding = (text) => { 25 | const textLength = !Array.isArray(text) 26 | ? text.length 27 | : text.reduce((len, text) => len + text.length, 0); 28 | 29 | return textLength - this.getLengthLimit(); 30 | }; 31 | 32 | static isSupportedAutoFrom = () => false; 33 | 34 | // prettier-ignore 35 | static getSupportedLanguages = () => [ 36 | "en", "et", "de", "lt", "lv", 37 | "fi", "ru", "no", "hu", "se", 38 | ]; 39 | } 40 | 41 | TartuNLP; 42 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es6", 4 | "module": "esnext", 5 | "moduleResolution": "node", 6 | "esModuleInterop": true, 7 | "strict": true, 8 | "alwaysStrict": true, 9 | "strictFunctionTypes": true, 10 | "strictNullChecks": true, 11 | "strictPropertyInitialization": true, 12 | "forceConsistentCasingInFileNames": true, 13 | "noImplicitAny": true, 14 | "noImplicitReturns": true, 15 | "noImplicitThis": true, 16 | "noFallthroughCasesInSwitch": true, 17 | "noUnusedLocals": true, 18 | "noUnusedParameters": true, 19 | "declaration": false, 20 | "downlevelIteration": true, 21 | "emitDecoratorMetadata": true, 22 | "experimentalDecorators": true, 23 | "pretty": true, 24 | "preserveConstEnums": true, 25 | "removeComments": false, 26 | "sourceMap": true, 27 | "lib": [ 28 | "es2020", 29 | "dom" 30 | ], 31 | "skipLibCheck": true, 32 | "rootDir": ".", 33 | "allowJs": true 34 | }, 35 | "include": [ 36 | "src/**/*.ts", 37 | "src/*.ts" 38 | ] 39 | } --------------------------------------------------------------------------------