├── pkl ├── .gitignore ├── tsconfig.json ├── src │ ├── main.ts │ └── index.ts └── package.json ├── .gitignore ├── README.md ├── pkl-eval ├── tsconfig.json ├── package.json ├── README.md ├── src │ └── index.ts └── package-lock.json ├── binaries └── package.json.tmpl ├── .github ├── dependabot.yml └── workflows │ └── npm.yml └── LICENSE.txt /pkl/.gitignore: -------------------------------------------------------------------------------- 1 | package-lock.json 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | lib 3 | .idea 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Pkl Node Packages 2 | 3 | These packages ship the [Pkl](https://pkl-lang.org/) CLI as an NPM module, allowing it to be run with 4 | `npx` and controlled programmatically as a library. 5 | -------------------------------------------------------------------------------- /pkl/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2016", 4 | "module": "commonjs", 5 | "esModuleInterop": true, 6 | "baseUrl": "./", 7 | "outDir": "lib", 8 | "forceConsistentCasingInFileNames": true, 9 | "strict": true, 10 | "skipLibCheck": true 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /pkl-eval/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2016", 4 | "module": "commonjs", 5 | "esModuleInterop": true, 6 | "baseUrl": "./", 7 | "outDir": "lib", 8 | "forceConsistentCasingInFileNames": true, 9 | "strict": true, 10 | "skipLibCheck": true 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /pkl/src/main.ts: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | import { spawnSync } from "child_process"; 4 | import {getExePath} from "./index"; 5 | 6 | function run() { 7 | const args = process.argv.slice(2); 8 | const processResult = spawnSync(getExePath(), args, { stdio: "inherit" }); 9 | process.exit(processResult.status ?? 0); 10 | } 11 | 12 | run(); 13 | -------------------------------------------------------------------------------- /pkl/src/index.ts: -------------------------------------------------------------------------------- 1 | import os from 'node:os'; 2 | 3 | export function getExePath() { 4 | const arch = os.arch(); 5 | const op = os.platform(); 6 | 7 | try { 8 | return require.resolve(`@pkl-community/pkl-${op}-${arch}/bin/pkl`); 9 | } catch (e) { 10 | throw new Error( 11 | `Couldn't find application binary inside node_modules for ${op}-${arch}` 12 | ); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /binaries/package.json.tmpl: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@pkl-community/${node_pkg}", 3 | "version": "${node_version}", 4 | "repository": { 5 | "type": "git", 6 | "url": "git+https://github.com/pkl-community/node-packages.git" 7 | }, 8 | "publishConfig": { 9 | "@pkl-community:registry": "https://registry.npmjs.org" 10 | }, 11 | "author": "Pkl community developers", 12 | "license": "Apache-2.0", 13 | "homepage": "https://github.com/pkl-community/node-packages#readme", 14 | "os": [ 15 | "${node_os}" 16 | ], 17 | "cpu": [ 18 | "${node_arch}" 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: github-actions 4 | directory: / 5 | schedule: 6 | interval: weekly 7 | groups: 8 | actions-minor: 9 | update-types: 10 | - minor 11 | - patch 12 | 13 | - package-ecosystem: npm 14 | directories: 15 | - "/pkl" 16 | - "/pkl-eval" 17 | schedule: 18 | interval: weekly 19 | groups: 20 | npm-development: 21 | dependency-type: development 22 | update-types: 23 | - minor 24 | - patch 25 | npm-production: 26 | dependency-type: production 27 | update-types: 28 | - patch 29 | -------------------------------------------------------------------------------- /pkl-eval/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@pkl-community/pkl-eval", 3 | "description": "A library wrapper for the Pkl CLI", 4 | "version": "0.0.3", 5 | "main": "lib/index.js", 6 | "repository": { 7 | "type": "git", 8 | "url": "git+https://github.com/pkl-community/node-packages.git" 9 | }, 10 | "publishConfig": { 11 | "@pkl-community:registry": "https://registry.npmjs.org" 12 | }, 13 | "author": "Pkl community Developers", 14 | "license": "Apache-2.0", 15 | "homepage": "https://github.com/pkl-community/node-packages#readme", 16 | "scripts": { 17 | "typecheck": "tsc --noEmit", 18 | "lint": "eslint .", 19 | "lint:fix": "eslint . --fix", 20 | "build": "tsc --declaration" 21 | }, 22 | "dependencies": { 23 | "@pkl-community/pkl": "0.28.2" 24 | }, 25 | "devDependencies": { 26 | "@types/node": "^22.7.5", 27 | "@typescript-eslint/eslint-plugin": "^8.8.1", 28 | "@typescript-eslint/parser": "^8.11.0", 29 | "eslint": "^9.12.0", 30 | "typescript": "^5.6.3" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /pkl/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@pkl-community/pkl", 3 | "description": "The pkl CLI", 4 | "version": "0.25.1", 5 | "bin": "lib/main.js", 6 | "main": "lib/index.js", 7 | "repository": { 8 | "type": "git", 9 | "url": "git+https://github.com/pkl-community/node-packages.git" 10 | }, 11 | "publishConfig": { 12 | "@pkl-community:registry": "https://registry.npmjs.org" 13 | }, 14 | "author": "Pkl community Developers", 15 | "license": "Apache-2.0", 16 | "homepage": "https://github.com/pkl-community/node-packages#readme", 17 | "scripts": { 18 | "typecheck": "tsc --noEmit", 19 | "lint": "eslint .", 20 | "lint:fix": "eslint . --fix", 21 | "build": "tsc --declaration", 22 | "dev": "npm run build && node lib/index.js" 23 | }, 24 | "devDependencies": { 25 | "@types/node": "^24.3.1", 26 | "@typescript-eslint/eslint-plugin": "^8.8.1", 27 | "@typescript-eslint/parser": "^8.10.0", 28 | "eslint": "^9.12.0", 29 | "typescript": "^5.6.3" 30 | }, 31 | "optionalDependencies": { 32 | "@pkl-community/pkl-linux-x64": "0.28.2", 33 | "@pkl-community/pkl-linux-arm64": "0.28.2", 34 | "@pkl-community/pkl-darwin-x64": "0.28.2", 35 | "@pkl-community/pkl-darwin-arm64": "0.28.2" 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /pkl-eval/README.md: -------------------------------------------------------------------------------- 1 | # pkl-eval 2 | 3 | A very simple library that wraps the `pkl eval` command to interpret a fixed string as a Pkl module. 4 | A stopgap until we have Typescript bindings. 5 | 6 | Supported flags: 7 | - format 8 | - allowed-modules 9 | - allowed-resources 10 | - timeout 11 | - expression 12 | 13 | ## Example 14 | 15 | The simple example from the https://pkl-lang.org/ homepage: 16 | 17 | ```ts 18 | import {evaluate} from "@pkl-community/pkl-eval" 19 | 20 | const bird = JSON.parse(await evaluate(` 21 | name = "Swallow" 22 | 23 | job { 24 | title = "Sr. Nest Maker" 25 | company = "Nests R Us" 26 | yearsOfExperience = 2 27 | } 28 | `, {format: "json"})); 29 | 30 | console.log(bird); 31 | ``` 32 | 33 | Outputs: 34 | 35 | ```js 36 | { 37 | name: "Swallow", 38 | job: { 39 | title: "Sr. Nest Maker", 40 | company: "Nests R Us", 41 | yearsOfExperience: 2 42 | } 43 | } 44 | ``` 45 | 46 | A more complex example (careful with nested escaping!): 47 | 48 | ```ts 49 | import {evaluate} from "@pkl-community/pkl-eval" 50 | 51 | const output = JSON.parse(await evaluate(` 52 | class Bird { 53 | name: String 54 | function greet(bird: Bird): String = "Hello, \\(bird.name)!" 55 | } 56 | 57 | function greetPigeon(bird: Bird): String = bird.greet(pigeon) 58 | 59 | pigeon: Bird = new { 60 | name = "Pigeon" 61 | } 62 | parrot: Bird = new { 63 | name = "Parrot" 64 | } 65 | 66 | greeting1 = pigeon.greet(parrot) 67 | greeting2 = greetPigeon(parrot) 68 | `, {format: "json"})); 69 | 70 | console.log(output); 71 | ``` 72 | 73 | Outputs: 74 | 75 | ```js 76 | { 77 | pigeon: { name: "Pigeon" }, 78 | parrot: { name: "Parrot" }, 79 | greeting1: "Hello, Parrot!", 80 | greeting2: "Hello, Pigeon!" 81 | } 82 | ``` 83 | -------------------------------------------------------------------------------- /pkl-eval/src/index.ts: -------------------------------------------------------------------------------- 1 | import {getExePath} from "@pkl-community/pkl" 2 | import {execFile} from "child_process"; 3 | 4 | export type Options = { 5 | format?: 'json' | 'jsonnet' | 'pcf' | 'properties' | 'plist' | 'textproto' | 'xml' | 'yaml' 6 | allowedModules?: string[], 7 | allowedResources?: string[], 8 | timeout?: number, 9 | expression?: string, 10 | cache?: { enabled: false } | { enabled: true, directory?: string } 11 | } 12 | 13 | export async function evaluate(mod: string, opts?: Options): Promise { 14 | const args = ["eval", "-", "--no-project"] 15 | 16 | if (opts?.format) { 17 | args.push("--format", opts.format) 18 | } 19 | 20 | if (opts?.allowedModules) { 21 | args.push("--allowed-modules", opts.allowedModules.join(",")) 22 | } 23 | 24 | if (opts?.allowedResources) { 25 | args.push("--allowed-modules", opts.allowedResources.join(",")) 26 | } 27 | 28 | if (opts?.timeout && opts.timeout > 0) { 29 | args.push("--timeout", opts.timeout.toString()) 30 | } 31 | 32 | if (opts?.expression) { 33 | args.push("--expression", opts.expression) 34 | } 35 | 36 | if (opts?.cache?.enabled === false) { 37 | args.push("--no-cache") 38 | } else if (opts?.cache?.enabled && opts.cache.directory) { 39 | args.push("--cache-dir", opts.cache.directory) 40 | } 41 | 42 | let resolve: (value: PromiseLike | string) => void; 43 | let reject: (err: Error) => void; 44 | const out: Promise = new Promise((_resolve, _reject) => { 45 | resolve = _resolve; 46 | reject = _reject; 47 | }) 48 | 49 | const process = execFile(getExePath(), args, { 50 | env: {}, 51 | timeout: opts?.timeout ? (opts?.timeout * 1000) + 100 : 0, 52 | }, (err, stdout, stderr) => { 53 | if (err !== null) { 54 | reject(new Error(`pkl failed with error ${err} and stderr:\n ${stderr}`)); 55 | } else { 56 | resolve(stdout) 57 | } 58 | }); 59 | 60 | await new Promise((resolve, reject) => process.stdin?.write(mod, (error) => { 61 | if (error) { 62 | reject(error) 63 | } else { 64 | resolve(undefined) 65 | } 66 | })); 67 | 68 | await new Promise(((resolve) => process.stdin?.end(resolve))); 69 | 70 | return out; 71 | } 72 | -------------------------------------------------------------------------------- /.github/workflows/npm.yml: -------------------------------------------------------------------------------- 1 | name: Publish npm binary packages 2 | 3 | on: 4 | workflow_dispatch: 5 | inputs: 6 | version: 7 | description: 'pkl release tag' 8 | required: true 9 | type: string 10 | versionSuffix: 11 | description: 'suffix for npm version, eg -1' 12 | required: false 13 | default: '' 14 | type: string 15 | 16 | jobs: 17 | publish-npm-binaries: 18 | permissions: 19 | contents: read 20 | packages: read 21 | runs-on: ubuntu-latest 22 | strategy: 23 | matrix: 24 | build: 25 | - target: macos-aarch64 26 | node_arch: arm64 27 | node_os: darwin 28 | - target: macos-amd64 29 | node_arch: x64 30 | node_os: darwin 31 | - target: alpine-linux-amd64 32 | node_arch: x64 33 | node_os: linux 34 | - target: linux-aarch64 # TODO; no alpine aarch64 binaries yet 35 | node_arch: arm64 36 | node_os: linux 37 | steps: 38 | - name: Checkout 39 | uses: actions/checkout@v5 40 | 41 | - uses: actions/setup-node@v4 42 | with: 43 | node-version: "18.x" 44 | registry-url: 'https://registry.npmjs.org' 45 | 46 | - name: Download binary from pkl releases 47 | run: | 48 | curl --fail -Lo binaries/pkl https://github.com/apple/pkl/releases/download/${{ inputs.version }}/pkl-${{ matrix.build.target }} 49 | chmod +x binaries/pkl 50 | 51 | - name: Download NOTICE.txt 52 | run: curl --fail -Lo binaries/NOTICE.txt https://raw.githubusercontent.com/apple/pkl/${{ inputs.version }}/NOTICE.txt 53 | 54 | - name: Download LICENSE.txt 55 | run: curl --fail -Lo binaries/LICENSE.txt https://raw.githubusercontent.com/apple/pkl/${{ inputs.version }}/LICENSE.txt 56 | 57 | - name: Publish to NPM 58 | shell: bash 59 | run: | 60 | cd binaries 61 | 62 | # set the os 63 | node_os="${{ matrix.build.node_os }}" 64 | export node_os 65 | 66 | # set the arch 67 | export node_arch="${{ matrix.build.node_arch }}" 68 | export node_arch 69 | 70 | # set the version 71 | node_version="${{ inputs.version }}${{ inputs.versionSuffix }}" 72 | node_version="${node_version#v}" 73 | export node_version 74 | 75 | # set the package name 76 | export node_pkg="pkl-${node_os}-${node_arch}" 77 | 78 | # skip if exists 79 | if npm view "@pkl-community/${node_pkg}@${node_version}" 80 | then 81 | exit 0 82 | fi 83 | 84 | # create the package directory 85 | mkdir -p "${node_pkg}/bin" 86 | # generate package.json from the template 87 | envsubst < package.json.tmpl > "${node_pkg}/package.json" 88 | 89 | # copy the binary into the package 90 | cp "pkl" "${node_pkg}/bin" 91 | cp NOTICE.txt "${node_pkg}" 92 | cp LICENSE.txt "${node_pkg}" 93 | cp ../README.md "${node_pkg}" 94 | 95 | # publish the package 96 | pushd "${node_pkg}" 97 | npm publish --access public 98 | popd 99 | env: 100 | NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} 101 | 102 | publish-npm-base: 103 | needs: publish-npm-binaries 104 | runs-on: ubuntu-latest 105 | steps: 106 | - name: Checkout 107 | uses: actions/checkout@v5 108 | 109 | - uses: actions/setup-node@v4 110 | with: 111 | node-version: "18.x" 112 | registry-url: 'https://registry.npmjs.org' 113 | 114 | - name: Publish to npm 115 | shell: bash 116 | run: | 117 | node_version="${{ inputs.version }}${{ inputs.versionSuffix }}" 118 | node_version="${node_version#v}" 119 | 120 | cd pkl 121 | 122 | if npm view "@pkl-community/pkl@${node_version}" 123 | then 124 | continue 125 | fi 126 | 127 | sed -i "s/\"version\": \".*\",/\"version\": \"${node_version}\",/" package.json 128 | for os in linux darwin 129 | do 130 | for arch in x64 arm64 131 | do 132 | sed -i "s|\"@pkl-community/pkl-${os}-${arch}\": \".*\"|\"@pkl-community/pkl-${os}-${arch}\": \"${node_version}\"|" package.json 133 | done 134 | done 135 | cp ../README.md README.md 136 | npm install 137 | npm run build 138 | npm publish --access public 139 | env: 140 | NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} 141 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 6 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 7 | 8 | 1. Definitions. 9 | 10 | "License" shall mean the terms and conditions for use, reproduction, 11 | and distribution as defined by Sections 1 through 9 of this document. 12 | 13 | "Licensor" shall mean the copyright owner or entity authorized by 14 | the copyright owner that is granting the License. 15 | 16 | "Legal Entity" shall mean the union of the acting entity and all 17 | other entities that control, are controlled by, or are under common 18 | control with that entity. For the purposes of this definition, 19 | "control" means (i) the power, direct or indirect, to cause the 20 | direction or management of such entity, whether by contract or 21 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 22 | outstanding shares, or (iii) beneficial ownership of such entity. 23 | 24 | "You" (or "Your") shall mean an individual or Legal Entity 25 | exercising permissions granted by this License. 26 | 27 | "Source" form shall mean the preferred form for making modifications, 28 | including but not limited to software source code, documentation 29 | source, and configuration files. 30 | 31 | "Object" form shall mean any form resulting from mechanical 32 | transformation or translation of a Source form, including but 33 | not limited to compiled object code, generated documentation, 34 | and conversions to other media types. 35 | 36 | "Work" shall mean the work of authorship, whether in Source or 37 | Object form, made available under the License, as indicated by a 38 | copyright notice that is included in or attached to the work 39 | (an example is provided in the Appendix below). 40 | 41 | "Derivative Works" shall mean any work, whether in Source or Object 42 | form, that is based on (or derived from) the Work and for which the 43 | editorial revisions, annotations, elaborations, or other modifications 44 | represent, as a whole, an original work of authorship. For the purposes 45 | of this License, Derivative Works shall not include works that remain 46 | separable from, or merely link (or bind by name) to the interfaces of, 47 | the Work and Derivative Works thereof. 48 | 49 | "Contribution" shall mean any work of authorship, including 50 | the original version of the Work and any modifications or additions 51 | to that Work or Derivative Works thereof, that is intentionally 52 | submitted to Licensor for inclusion in the Work by the copyright owner 53 | or by an individual or Legal Entity authorized to submit on behalf of 54 | the copyright owner. For the purposes of this definition, "submitted" 55 | means any form of electronic, verbal, or written communication sent 56 | to the Licensor or its representatives, including but not limited to 57 | communication on electronic mailing lists, source code control systems, 58 | and issue tracking systems that are managed by, or on behalf of, the 59 | Licensor for the purpose of discussing and improving the Work, but 60 | excluding communication that is conspicuously marked or otherwise 61 | designated in writing by the copyright owner as "Not a Contribution." 62 | 63 | "Contributor" shall mean Licensor and any individual or Legal Entity 64 | on behalf of whom a Contribution has been received by Licensor and 65 | subsequently incorporated within the Work. 66 | 67 | 2. Grant of Copyright License. Subject to the terms and conditions of 68 | this License, each Contributor hereby grants to You a perpetual, 69 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 70 | copyright license to reproduce, prepare Derivative Works of, 71 | publicly display, publicly perform, sublicense, and distribute the 72 | Work and such Derivative Works in Source or Object form. 73 | 74 | 3. Grant of Patent License. Subject to the terms and conditions of 75 | this License, each Contributor hereby grants to You a perpetual, 76 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 77 | (except as stated in this section) patent license to make, have made, 78 | use, offer to sell, sell, import, and otherwise transfer the Work, 79 | where such license applies only to those patent claims licensable 80 | by such Contributor that are necessarily infringed by their 81 | Contribution(s) alone or by combination of their Contribution(s) 82 | with the Work to which such Contribution(s) was submitted. If You 83 | institute patent litigation against any entity (including a 84 | cross-claim or counterclaim in a lawsuit) alleging that the Work 85 | or a Contribution incorporated within the Work constitutes direct 86 | or contributory patent infringement, then any patent licenses 87 | granted to You under this License for that Work shall terminate 88 | as of the date such litigation is filed. 89 | 90 | 4. Redistribution. You may reproduce and distribute copies of the 91 | Work or Derivative Works thereof in any medium, with or without 92 | modifications, and in Source or Object form, provided that You 93 | meet the following conditions: 94 | 95 | (a) You must give any other recipients of the Work or 96 | Derivative Works a copy of this License; and 97 | 98 | (b) You must cause any modified files to carry prominent notices 99 | stating that You changed the files; and 100 | 101 | (c) You must retain, in the Source form of any Derivative Works 102 | that You distribute, all copyright, patent, trademark, and 103 | attribution notices from the Source form of the Work, 104 | excluding those notices that do not pertain to any part of 105 | the Derivative Works; and 106 | 107 | (d) If the Work includes a "NOTICE" text file as part of its 108 | distribution, then any Derivative Works that You distribute must 109 | include a readable copy of the attribution notices contained 110 | within such NOTICE file, excluding those notices that do not 111 | pertain to any part of the Derivative Works, in at least one 112 | of the following places: within a NOTICE text file distributed 113 | as part of the Derivative Works; within the Source form or 114 | documentation, if provided along with the Derivative Works; or, 115 | within a display generated by the Derivative Works, if and 116 | wherever such third-party notices normally appear. The contents 117 | of the NOTICE file are for informational purposes only and 118 | do not modify the License. You may add Your own attribution 119 | notices within Derivative Works that You distribute, alongside 120 | or as an addendum to the NOTICE text from the Work, provided 121 | that such additional attribution notices cannot be construed 122 | as modifying the License. 123 | 124 | You may add Your own copyright statement to Your modifications and 125 | may provide additional or different license terms and conditions 126 | for use, reproduction, or distribution of Your modifications, or 127 | for any such Derivative Works as a whole, provided Your use, 128 | reproduction, and distribution of the Work otherwise complies with 129 | the conditions stated in this License. 130 | 131 | 5. Submission of Contributions. Unless You explicitly state otherwise, 132 | any Contribution intentionally submitted for inclusion in the Work 133 | by You to the Licensor shall be under the terms and conditions of 134 | this License, without any additional terms or conditions. 135 | Notwithstanding the above, nothing herein shall supersede or modify 136 | the terms of any separate license agreement you may have executed 137 | with Licensor regarding such Contributions. 138 | 139 | 6. Trademarks. This License does not grant permission to use the trade 140 | names, trademarks, service marks, or product names of the Licensor, 141 | except as required for reasonable and customary use in describing the 142 | origin of the Work and reproducing the content of the NOTICE file. 143 | 144 | 7. Disclaimer of Warranty. Unless required by applicable law or 145 | agreed to in writing, Licensor provides the Work (and each 146 | Contributor provides its Contributions) on an "AS IS" BASIS, 147 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 148 | implied, including, without limitation, any warranties or conditions 149 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 150 | PARTICULAR PURPOSE. You are solely responsible for determining the 151 | appropriateness of using or redistributing the Work and assume any 152 | risks associated with Your exercise of permissions under this License. 153 | 154 | 8. Limitation of Liability. In no event and under no legal theory, 155 | whether in tort (including negligence), contract, or otherwise, 156 | unless required by applicable law (such as deliberate and grossly 157 | negligent acts) or agreed to in writing, shall any Contributor be 158 | liable to You for damages, including any direct, indirect, special, 159 | incidental, or consequential damages of any character arising as a 160 | result of this License or out of the use or inability to use the 161 | Work (including but not limited to damages for loss of goodwill, 162 | work stoppage, computer failure or malfunction, or any and all 163 | other commercial damages or losses), even if such Contributor 164 | has been advised of the possibility of such damages. 165 | 166 | 9. Accepting Warranty or Additional Liability. While redistributing 167 | the Work or Derivative Works thereof, You may choose to offer, 168 | and charge a fee for, acceptance of support, warranty, indemnity, 169 | or other liability obligations and/or rights consistent with this 170 | License. However, in accepting such obligations, You may act only 171 | on Your own behalf and on Your sole responsibility, not on behalf 172 | of any other Contributor, and only if You agree to indemnify, 173 | defend, and hold each Contributor harmless for any liability 174 | incurred by, or claims asserted against, such Contributor by reason 175 | of your accepting any such warranty or additional liability. 176 | 177 | END OF TERMS AND CONDITIONS 178 | 179 | APPENDIX: How to apply the Apache License to your work. 180 | 181 | To apply the Apache License to your work, attach the following 182 | boilerplate notice, with the fields enclosed by brackets "[]" 183 | replaced with your own identifying information. (Don't include 184 | the brackets!) The text should be enclosed in the appropriate 185 | comment syntax for the file format. We also recommend that a 186 | file or class name and description of purpose be included on the 187 | same "printed page" as the copyright notice for easier 188 | identification within third-party archives. 189 | 190 | Copyright [yyyy] [name of copyright owner] 191 | 192 | Licensed under the Apache License, Version 2.0 (the "License"); 193 | you may not use this file except in compliance with the License. 194 | You may obtain a copy of the License at 195 | 196 | http://www.apache.org/licenses/LICENSE-2.0 197 | 198 | Unless required by applicable law or agreed to in writing, software 199 | distributed under the License is distributed on an "AS IS" BASIS, 200 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 201 | See the License for the specific language governing permissions and 202 | limitations under the License. 203 | -------------------------------------------------------------------------------- /pkl-eval/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@pkl-community/pkl-eval", 3 | "version": "0.0.3", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "@pkl-community/pkl-eval", 9 | "version": "0.0.3", 10 | "license": "Apache-2.0", 11 | "dependencies": { 12 | "@pkl-community/pkl": "0.28.2" 13 | }, 14 | "devDependencies": { 15 | "@types/node": "^22.7.5", 16 | "@typescript-eslint/eslint-plugin": "^8.8.1", 17 | "@typescript-eslint/parser": "^8.11.0", 18 | "eslint": "^9.12.0", 19 | "typescript": "^5.6.3" 20 | } 21 | }, 22 | "node_modules/@aashutoshrathi/word-wrap": { 23 | "version": "1.2.6", 24 | "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", 25 | "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", 26 | "dev": true, 27 | "engines": { 28 | "node": ">=0.10.0" 29 | } 30 | }, 31 | "node_modules/@eslint-community/eslint-utils": { 32 | "version": "4.9.0", 33 | "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", 34 | "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", 35 | "dev": true, 36 | "license": "MIT", 37 | "dependencies": { 38 | "eslint-visitor-keys": "^3.4.3" 39 | }, 40 | "engines": { 41 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 42 | }, 43 | "funding": { 44 | "url": "https://opencollective.com/eslint" 45 | }, 46 | "peerDependencies": { 47 | "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" 48 | } 49 | }, 50 | "node_modules/@eslint-community/regexpp": { 51 | "version": "4.12.1", 52 | "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", 53 | "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", 54 | "dev": true, 55 | "engines": { 56 | "node": "^12.0.0 || ^14.0.0 || >=16.0.0" 57 | } 58 | }, 59 | "node_modules/@eslint/config-array": { 60 | "version": "0.21.0", 61 | "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", 62 | "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", 63 | "dev": true, 64 | "license": "Apache-2.0", 65 | "dependencies": { 66 | "@eslint/object-schema": "^2.1.6", 67 | "debug": "^4.3.1", 68 | "minimatch": "^3.1.2" 69 | }, 70 | "engines": { 71 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 72 | } 73 | }, 74 | "node_modules/@eslint/config-helpers": { 75 | "version": "0.3.1", 76 | "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.1.tgz", 77 | "integrity": "sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==", 78 | "dev": true, 79 | "license": "Apache-2.0", 80 | "engines": { 81 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 82 | } 83 | }, 84 | "node_modules/@eslint/core": { 85 | "version": "0.15.2", 86 | "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.2.tgz", 87 | "integrity": "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==", 88 | "dev": true, 89 | "license": "Apache-2.0", 90 | "dependencies": { 91 | "@types/json-schema": "^7.0.15" 92 | }, 93 | "engines": { 94 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 95 | } 96 | }, 97 | "node_modules/@eslint/eslintrc": { 98 | "version": "3.3.1", 99 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", 100 | "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", 101 | "dev": true, 102 | "license": "MIT", 103 | "dependencies": { 104 | "ajv": "^6.12.4", 105 | "debug": "^4.3.2", 106 | "espree": "^10.0.1", 107 | "globals": "^14.0.0", 108 | "ignore": "^5.2.0", 109 | "import-fresh": "^3.2.1", 110 | "js-yaml": "^4.1.0", 111 | "minimatch": "^3.1.2", 112 | "strip-json-comments": "^3.1.1" 113 | }, 114 | "engines": { 115 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 116 | }, 117 | "funding": { 118 | "url": "https://opencollective.com/eslint" 119 | } 120 | }, 121 | "node_modules/@eslint/js": { 122 | "version": "9.36.0", 123 | "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.36.0.tgz", 124 | "integrity": "sha512-uhCbYtYynH30iZErszX78U+nR3pJU3RHGQ57NXy5QupD4SBVwDeU8TNBy+MjMngc1UyIW9noKqsRqfjQTBU2dw==", 125 | "dev": true, 126 | "license": "MIT", 127 | "engines": { 128 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 129 | }, 130 | "funding": { 131 | "url": "https://eslint.org/donate" 132 | } 133 | }, 134 | "node_modules/@eslint/object-schema": { 135 | "version": "2.1.6", 136 | "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", 137 | "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", 138 | "dev": true, 139 | "license": "Apache-2.0", 140 | "engines": { 141 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 142 | } 143 | }, 144 | "node_modules/@eslint/plugin-kit": { 145 | "version": "0.3.5", 146 | "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.5.tgz", 147 | "integrity": "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==", 148 | "dev": true, 149 | "license": "Apache-2.0", 150 | "dependencies": { 151 | "@eslint/core": "^0.15.2", 152 | "levn": "^0.4.1" 153 | }, 154 | "engines": { 155 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 156 | } 157 | }, 158 | "node_modules/@humanfs/core": { 159 | "version": "0.19.1", 160 | "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", 161 | "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", 162 | "dev": true, 163 | "engines": { 164 | "node": ">=18.18.0" 165 | } 166 | }, 167 | "node_modules/@humanfs/node": { 168 | "version": "0.16.6", 169 | "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", 170 | "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", 171 | "dev": true, 172 | "dependencies": { 173 | "@humanfs/core": "^0.19.1", 174 | "@humanwhocodes/retry": "^0.3.0" 175 | }, 176 | "engines": { 177 | "node": ">=18.18.0" 178 | } 179 | }, 180 | "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { 181 | "version": "0.3.1", 182 | "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", 183 | "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", 184 | "dev": true, 185 | "engines": { 186 | "node": ">=18.18" 187 | }, 188 | "funding": { 189 | "type": "github", 190 | "url": "https://github.com/sponsors/nzakas" 191 | } 192 | }, 193 | "node_modules/@humanwhocodes/module-importer": { 194 | "version": "1.0.1", 195 | "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", 196 | "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", 197 | "dev": true, 198 | "engines": { 199 | "node": ">=12.22" 200 | }, 201 | "funding": { 202 | "type": "github", 203 | "url": "https://github.com/sponsors/nzakas" 204 | } 205 | }, 206 | "node_modules/@humanwhocodes/retry": { 207 | "version": "0.4.2", 208 | "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz", 209 | "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", 210 | "dev": true, 211 | "license": "Apache-2.0", 212 | "engines": { 213 | "node": ">=18.18" 214 | }, 215 | "funding": { 216 | "type": "github", 217 | "url": "https://github.com/sponsors/nzakas" 218 | } 219 | }, 220 | "node_modules/@nodelib/fs.scandir": { 221 | "version": "2.1.5", 222 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 223 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 224 | "dev": true, 225 | "license": "MIT", 226 | "dependencies": { 227 | "@nodelib/fs.stat": "2.0.5", 228 | "run-parallel": "^1.1.9" 229 | }, 230 | "engines": { 231 | "node": ">= 8" 232 | } 233 | }, 234 | "node_modules/@nodelib/fs.stat": { 235 | "version": "2.0.5", 236 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 237 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 238 | "dev": true, 239 | "license": "MIT", 240 | "engines": { 241 | "node": ">= 8" 242 | } 243 | }, 244 | "node_modules/@nodelib/fs.walk": { 245 | "version": "1.2.8", 246 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 247 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 248 | "dev": true, 249 | "license": "MIT", 250 | "dependencies": { 251 | "@nodelib/fs.scandir": "2.1.5", 252 | "fastq": "^1.6.0" 253 | }, 254 | "engines": { 255 | "node": ">= 8" 256 | } 257 | }, 258 | "node_modules/@pkl-community/pkl": { 259 | "version": "0.28.2", 260 | "resolved": "https://registry.npmjs.org/@pkl-community/pkl/-/pkl-0.28.2.tgz", 261 | "integrity": "sha512-seSZrwGvDEd1BeT9+dRRnqvyNit8vpFL2I+YBEJ+t3pBYpnpHaVHwQNPlMLvDQ0KZUCQkiWGZnbCMF9WtaxHNA==", 262 | "license": "Apache-2.0", 263 | "bin": { 264 | "pkl": "lib/main.js" 265 | }, 266 | "optionalDependencies": { 267 | "@pkl-community/pkl-darwin-arm64": "0.28.2", 268 | "@pkl-community/pkl-darwin-x64": "0.28.2", 269 | "@pkl-community/pkl-linux-arm64": "0.28.2", 270 | "@pkl-community/pkl-linux-x64": "0.28.2" 271 | } 272 | }, 273 | "node_modules/@pkl-community/pkl-darwin-arm64": { 274 | "version": "0.28.2", 275 | "resolved": "https://registry.npmjs.org/@pkl-community/pkl-darwin-arm64/-/pkl-darwin-arm64-0.28.2.tgz", 276 | "integrity": "sha512-1CP5VayKnZeL1BUTaQUltiBu5wbn/pNizP3aSK1zbWMHDGK/S/rIs1X0GWEyOHWG7P/h9EBsNzHmJqg4kCn5jw==", 277 | "cpu": [ 278 | "arm64" 279 | ], 280 | "license": "Apache-2.0", 281 | "optional": true, 282 | "os": [ 283 | "darwin" 284 | ] 285 | }, 286 | "node_modules/@pkl-community/pkl-darwin-x64": { 287 | "version": "0.28.2", 288 | "resolved": "https://registry.npmjs.org/@pkl-community/pkl-darwin-x64/-/pkl-darwin-x64-0.28.2.tgz", 289 | "integrity": "sha512-gGV3S9Hnyclga3/8wvspXWxKKEPMJrWzgeafIPpFPDa49DDlPCrf4zNkN0T29yylWd4aLwMUGRE15vswkjhdjA==", 290 | "cpu": [ 291 | "x64" 292 | ], 293 | "license": "Apache-2.0", 294 | "optional": true, 295 | "os": [ 296 | "darwin" 297 | ] 298 | }, 299 | "node_modules/@pkl-community/pkl-linux-arm64": { 300 | "version": "0.28.2", 301 | "resolved": "https://registry.npmjs.org/@pkl-community/pkl-linux-arm64/-/pkl-linux-arm64-0.28.2.tgz", 302 | "integrity": "sha512-IGJDm0maESl7Q+x2XukC7ia39m7Z++/C92cknrvTtyNdEROufGDobUv96ekq4e1gdcEgDvvDqCXLEQNC871Trg==", 303 | "cpu": [ 304 | "arm64" 305 | ], 306 | "license": "Apache-2.0", 307 | "optional": true, 308 | "os": [ 309 | "linux" 310 | ] 311 | }, 312 | "node_modules/@pkl-community/pkl-linux-x64": { 313 | "version": "0.28.2", 314 | "resolved": "https://registry.npmjs.org/@pkl-community/pkl-linux-x64/-/pkl-linux-x64-0.28.2.tgz", 315 | "integrity": "sha512-9MndyTuiRhBRdrDqgcNadi6mT8mCNcLChwh28D5t5EDko8maUDTKHwHeuIzdBI5P0ZLNYPnT4McPufkeBu67vQ==", 316 | "cpu": [ 317 | "x64" 318 | ], 319 | "license": "Apache-2.0", 320 | "optional": true, 321 | "os": [ 322 | "linux" 323 | ] 324 | }, 325 | "node_modules/@types/estree": { 326 | "version": "1.0.6", 327 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", 328 | "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", 329 | "dev": true 330 | }, 331 | "node_modules/@types/json-schema": { 332 | "version": "7.0.15", 333 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", 334 | "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", 335 | "dev": true, 336 | "license": "MIT" 337 | }, 338 | "node_modules/@types/node": { 339 | "version": "22.15.3", 340 | "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.3.tgz", 341 | "integrity": "sha512-lX7HFZeHf4QG/J7tBZqrCAXwz9J5RD56Y6MpP0eJkka8p+K0RY/yBTW7CYFJ4VGCclxqOLKmiGP5juQc6MKgcw==", 342 | "dev": true, 343 | "license": "MIT", 344 | "dependencies": { 345 | "undici-types": "~6.21.0" 346 | } 347 | }, 348 | "node_modules/@typescript-eslint/eslint-plugin": { 349 | "version": "8.44.0", 350 | "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.44.0.tgz", 351 | "integrity": "sha512-EGDAOGX+uwwekcS0iyxVDmRV9HX6FLSM5kzrAToLTsr9OWCIKG/y3lQheCq18yZ5Xh78rRKJiEpP0ZaCs4ryOQ==", 352 | "dev": true, 353 | "license": "MIT", 354 | "dependencies": { 355 | "@eslint-community/regexpp": "^4.10.0", 356 | "@typescript-eslint/scope-manager": "8.44.0", 357 | "@typescript-eslint/type-utils": "8.44.0", 358 | "@typescript-eslint/utils": "8.44.0", 359 | "@typescript-eslint/visitor-keys": "8.44.0", 360 | "graphemer": "^1.4.0", 361 | "ignore": "^7.0.0", 362 | "natural-compare": "^1.4.0", 363 | "ts-api-utils": "^2.1.0" 364 | }, 365 | "engines": { 366 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 367 | }, 368 | "funding": { 369 | "type": "opencollective", 370 | "url": "https://opencollective.com/typescript-eslint" 371 | }, 372 | "peerDependencies": { 373 | "@typescript-eslint/parser": "^8.44.0", 374 | "eslint": "^8.57.0 || ^9.0.0", 375 | "typescript": ">=4.8.4 <6.0.0" 376 | } 377 | }, 378 | "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { 379 | "version": "7.0.5", 380 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", 381 | "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", 382 | "dev": true, 383 | "license": "MIT", 384 | "engines": { 385 | "node": ">= 4" 386 | } 387 | }, 388 | "node_modules/@typescript-eslint/parser": { 389 | "version": "8.44.0", 390 | "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.44.0.tgz", 391 | "integrity": "sha512-VGMpFQGUQWYT9LfnPcX8ouFojyrZ/2w3K5BucvxL/spdNehccKhB4jUyB1yBCXpr2XFm0jkECxgrpXBW2ipoAw==", 392 | "dev": true, 393 | "license": "MIT", 394 | "dependencies": { 395 | "@typescript-eslint/scope-manager": "8.44.0", 396 | "@typescript-eslint/types": "8.44.0", 397 | "@typescript-eslint/typescript-estree": "8.44.0", 398 | "@typescript-eslint/visitor-keys": "8.44.0", 399 | "debug": "^4.3.4" 400 | }, 401 | "engines": { 402 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 403 | }, 404 | "funding": { 405 | "type": "opencollective", 406 | "url": "https://opencollective.com/typescript-eslint" 407 | }, 408 | "peerDependencies": { 409 | "eslint": "^8.57.0 || ^9.0.0", 410 | "typescript": ">=4.8.4 <6.0.0" 411 | } 412 | }, 413 | "node_modules/@typescript-eslint/project-service": { 414 | "version": "8.44.0", 415 | "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.44.0.tgz", 416 | "integrity": "sha512-ZeaGNraRsq10GuEohKTo4295Z/SuGcSq2LzfGlqiuEvfArzo/VRrT0ZaJsVPuKZ55lVbNk8U6FcL+ZMH8CoyVA==", 417 | "dev": true, 418 | "license": "MIT", 419 | "dependencies": { 420 | "@typescript-eslint/tsconfig-utils": "^8.44.0", 421 | "@typescript-eslint/types": "^8.44.0", 422 | "debug": "^4.3.4" 423 | }, 424 | "engines": { 425 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 426 | }, 427 | "funding": { 428 | "type": "opencollective", 429 | "url": "https://opencollective.com/typescript-eslint" 430 | }, 431 | "peerDependencies": { 432 | "typescript": ">=4.8.4 <6.0.0" 433 | } 434 | }, 435 | "node_modules/@typescript-eslint/scope-manager": { 436 | "version": "8.44.0", 437 | "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.44.0.tgz", 438 | "integrity": "sha512-87Jv3E+al8wpD+rIdVJm/ItDBe/Im09zXIjFoipOjr5gHUhJmTzfFLuTJ/nPTMc2Srsroy4IBXwcTCHyRR7KzA==", 439 | "dev": true, 440 | "license": "MIT", 441 | "dependencies": { 442 | "@typescript-eslint/types": "8.44.0", 443 | "@typescript-eslint/visitor-keys": "8.44.0" 444 | }, 445 | "engines": { 446 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 447 | }, 448 | "funding": { 449 | "type": "opencollective", 450 | "url": "https://opencollective.com/typescript-eslint" 451 | } 452 | }, 453 | "node_modules/@typescript-eslint/tsconfig-utils": { 454 | "version": "8.44.0", 455 | "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.44.0.tgz", 456 | "integrity": "sha512-x5Y0+AuEPqAInc6yd0n5DAcvtoQ/vyaGwuX5HE9n6qAefk1GaedqrLQF8kQGylLUb9pnZyLf+iEiL9fr8APDtQ==", 457 | "dev": true, 458 | "license": "MIT", 459 | "engines": { 460 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 461 | }, 462 | "funding": { 463 | "type": "opencollective", 464 | "url": "https://opencollective.com/typescript-eslint" 465 | }, 466 | "peerDependencies": { 467 | "typescript": ">=4.8.4 <6.0.0" 468 | } 469 | }, 470 | "node_modules/@typescript-eslint/type-utils": { 471 | "version": "8.44.0", 472 | "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.44.0.tgz", 473 | "integrity": "sha512-9cwsoSxJ8Sak67Be/hD2RNt/fsqmWnNE1iHohG8lxqLSNY8xNfyY7wloo5zpW3Nu9hxVgURevqfcH6vvKCt6yg==", 474 | "dev": true, 475 | "license": "MIT", 476 | "dependencies": { 477 | "@typescript-eslint/types": "8.44.0", 478 | "@typescript-eslint/typescript-estree": "8.44.0", 479 | "@typescript-eslint/utils": "8.44.0", 480 | "debug": "^4.3.4", 481 | "ts-api-utils": "^2.1.0" 482 | }, 483 | "engines": { 484 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 485 | }, 486 | "funding": { 487 | "type": "opencollective", 488 | "url": "https://opencollective.com/typescript-eslint" 489 | }, 490 | "peerDependencies": { 491 | "eslint": "^8.57.0 || ^9.0.0", 492 | "typescript": ">=4.8.4 <6.0.0" 493 | } 494 | }, 495 | "node_modules/@typescript-eslint/types": { 496 | "version": "8.44.0", 497 | "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.44.0.tgz", 498 | "integrity": "sha512-ZSl2efn44VsYM0MfDQe68RKzBz75NPgLQXuGypmym6QVOWL5kegTZuZ02xRAT9T+onqvM6T8CdQk0OwYMB6ZvA==", 499 | "dev": true, 500 | "license": "MIT", 501 | "engines": { 502 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 503 | }, 504 | "funding": { 505 | "type": "opencollective", 506 | "url": "https://opencollective.com/typescript-eslint" 507 | } 508 | }, 509 | "node_modules/@typescript-eslint/typescript-estree": { 510 | "version": "8.44.0", 511 | "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.44.0.tgz", 512 | "integrity": "sha512-lqNj6SgnGcQZwL4/SBJ3xdPEfcBuhCG8zdcwCPgYcmiPLgokiNDKlbPzCwEwu7m279J/lBYWtDYL+87OEfn8Jw==", 513 | "dev": true, 514 | "license": "MIT", 515 | "dependencies": { 516 | "@typescript-eslint/project-service": "8.44.0", 517 | "@typescript-eslint/tsconfig-utils": "8.44.0", 518 | "@typescript-eslint/types": "8.44.0", 519 | "@typescript-eslint/visitor-keys": "8.44.0", 520 | "debug": "^4.3.4", 521 | "fast-glob": "^3.3.2", 522 | "is-glob": "^4.0.3", 523 | "minimatch": "^9.0.4", 524 | "semver": "^7.6.0", 525 | "ts-api-utils": "^2.1.0" 526 | }, 527 | "engines": { 528 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 529 | }, 530 | "funding": { 531 | "type": "opencollective", 532 | "url": "https://opencollective.com/typescript-eslint" 533 | }, 534 | "peerDependencies": { 535 | "typescript": ">=4.8.4 <6.0.0" 536 | } 537 | }, 538 | "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { 539 | "version": "2.0.2", 540 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", 541 | "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", 542 | "dev": true, 543 | "license": "MIT", 544 | "dependencies": { 545 | "balanced-match": "^1.0.0" 546 | } 547 | }, 548 | "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { 549 | "version": "9.0.5", 550 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", 551 | "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", 552 | "dev": true, 553 | "license": "ISC", 554 | "dependencies": { 555 | "brace-expansion": "^2.0.1" 556 | }, 557 | "engines": { 558 | "node": ">=16 || 14 >=14.17" 559 | }, 560 | "funding": { 561 | "url": "https://github.com/sponsors/isaacs" 562 | } 563 | }, 564 | "node_modules/@typescript-eslint/utils": { 565 | "version": "8.44.0", 566 | "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.44.0.tgz", 567 | "integrity": "sha512-nktOlVcg3ALo0mYlV+L7sWUD58KG4CMj1rb2HUVOO4aL3K/6wcD+NERqd0rrA5Vg06b42YhF6cFxeixsp9Riqg==", 568 | "dev": true, 569 | "license": "MIT", 570 | "dependencies": { 571 | "@eslint-community/eslint-utils": "^4.7.0", 572 | "@typescript-eslint/scope-manager": "8.44.0", 573 | "@typescript-eslint/types": "8.44.0", 574 | "@typescript-eslint/typescript-estree": "8.44.0" 575 | }, 576 | "engines": { 577 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 578 | }, 579 | "funding": { 580 | "type": "opencollective", 581 | "url": "https://opencollective.com/typescript-eslint" 582 | }, 583 | "peerDependencies": { 584 | "eslint": "^8.57.0 || ^9.0.0", 585 | "typescript": ">=4.8.4 <6.0.0" 586 | } 587 | }, 588 | "node_modules/@typescript-eslint/visitor-keys": { 589 | "version": "8.44.0", 590 | "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.44.0.tgz", 591 | "integrity": "sha512-zaz9u8EJ4GBmnehlrpoKvj/E3dNbuQ7q0ucyZImm3cLqJ8INTc970B1qEqDX/Rzq65r3TvVTN7kHWPBoyW7DWw==", 592 | "dev": true, 593 | "license": "MIT", 594 | "dependencies": { 595 | "@typescript-eslint/types": "8.44.0", 596 | "eslint-visitor-keys": "^4.2.1" 597 | }, 598 | "engines": { 599 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 600 | }, 601 | "funding": { 602 | "type": "opencollective", 603 | "url": "https://opencollective.com/typescript-eslint" 604 | } 605 | }, 606 | "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { 607 | "version": "4.2.1", 608 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", 609 | "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", 610 | "dev": true, 611 | "license": "Apache-2.0", 612 | "engines": { 613 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 614 | }, 615 | "funding": { 616 | "url": "https://opencollective.com/eslint" 617 | } 618 | }, 619 | "node_modules/acorn": { 620 | "version": "8.15.0", 621 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", 622 | "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", 623 | "dev": true, 624 | "license": "MIT", 625 | "bin": { 626 | "acorn": "bin/acorn" 627 | }, 628 | "engines": { 629 | "node": ">=0.4.0" 630 | } 631 | }, 632 | "node_modules/acorn-jsx": { 633 | "version": "5.3.2", 634 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 635 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 636 | "dev": true, 637 | "license": "MIT", 638 | "peerDependencies": { 639 | "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" 640 | } 641 | }, 642 | "node_modules/ajv": { 643 | "version": "6.12.6", 644 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 645 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 646 | "dev": true, 647 | "license": "MIT", 648 | "dependencies": { 649 | "fast-deep-equal": "^3.1.1", 650 | "fast-json-stable-stringify": "^2.0.0", 651 | "json-schema-traverse": "^0.4.1", 652 | "uri-js": "^4.2.2" 653 | }, 654 | "funding": { 655 | "type": "github", 656 | "url": "https://github.com/sponsors/epoberezkin" 657 | } 658 | }, 659 | "node_modules/ansi-styles": { 660 | "version": "4.3.0", 661 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 662 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 663 | "dev": true, 664 | "dependencies": { 665 | "color-convert": "^2.0.1" 666 | }, 667 | "engines": { 668 | "node": ">=8" 669 | }, 670 | "funding": { 671 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 672 | } 673 | }, 674 | "node_modules/argparse": { 675 | "version": "2.0.1", 676 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 677 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 678 | "dev": true, 679 | "license": "Python-2.0" 680 | }, 681 | "node_modules/balanced-match": { 682 | "version": "1.0.2", 683 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 684 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 685 | "dev": true 686 | }, 687 | "node_modules/brace-expansion": { 688 | "version": "1.1.11", 689 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 690 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 691 | "dev": true, 692 | "license": "MIT", 693 | "dependencies": { 694 | "balanced-match": "^1.0.0", 695 | "concat-map": "0.0.1" 696 | } 697 | }, 698 | "node_modules/braces": { 699 | "version": "3.0.3", 700 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 701 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 702 | "dev": true, 703 | "license": "MIT", 704 | "dependencies": { 705 | "fill-range": "^7.1.1" 706 | }, 707 | "engines": { 708 | "node": ">=8" 709 | } 710 | }, 711 | "node_modules/callsites": { 712 | "version": "3.1.0", 713 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 714 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 715 | "dev": true, 716 | "license": "MIT", 717 | "engines": { 718 | "node": ">=6" 719 | } 720 | }, 721 | "node_modules/chalk": { 722 | "version": "4.1.2", 723 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 724 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 725 | "dev": true, 726 | "dependencies": { 727 | "ansi-styles": "^4.1.0", 728 | "supports-color": "^7.1.0" 729 | }, 730 | "engines": { 731 | "node": ">=10" 732 | }, 733 | "funding": { 734 | "url": "https://github.com/chalk/chalk?sponsor=1" 735 | } 736 | }, 737 | "node_modules/color-convert": { 738 | "version": "2.0.1", 739 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 740 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 741 | "dev": true, 742 | "dependencies": { 743 | "color-name": "~1.1.4" 744 | }, 745 | "engines": { 746 | "node": ">=7.0.0" 747 | } 748 | }, 749 | "node_modules/color-name": { 750 | "version": "1.1.4", 751 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 752 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 753 | "dev": true 754 | }, 755 | "node_modules/concat-map": { 756 | "version": "0.0.1", 757 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 758 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 759 | "dev": true, 760 | "license": "MIT" 761 | }, 762 | "node_modules/cross-spawn": { 763 | "version": "7.0.6", 764 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", 765 | "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", 766 | "dev": true, 767 | "license": "MIT", 768 | "dependencies": { 769 | "path-key": "^3.1.0", 770 | "shebang-command": "^2.0.0", 771 | "which": "^2.0.1" 772 | }, 773 | "engines": { 774 | "node": ">= 8" 775 | } 776 | }, 777 | "node_modules/debug": { 778 | "version": "4.4.0", 779 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", 780 | "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", 781 | "dev": true, 782 | "license": "MIT", 783 | "dependencies": { 784 | "ms": "^2.1.3" 785 | }, 786 | "engines": { 787 | "node": ">=6.0" 788 | }, 789 | "peerDependenciesMeta": { 790 | "supports-color": { 791 | "optional": true 792 | } 793 | } 794 | }, 795 | "node_modules/deep-is": { 796 | "version": "0.1.4", 797 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 798 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 799 | "dev": true 800 | }, 801 | "node_modules/escape-string-regexp": { 802 | "version": "4.0.0", 803 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 804 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 805 | "dev": true, 806 | "engines": { 807 | "node": ">=10" 808 | }, 809 | "funding": { 810 | "url": "https://github.com/sponsors/sindresorhus" 811 | } 812 | }, 813 | "node_modules/eslint": { 814 | "version": "9.36.0", 815 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.36.0.tgz", 816 | "integrity": "sha512-hB4FIzXovouYzwzECDcUkJ4OcfOEkXTv2zRY6B9bkwjx/cprAq0uvm1nl7zvQ0/TsUk0zQiN4uPfJpB9m+rPMQ==", 817 | "dev": true, 818 | "license": "MIT", 819 | "dependencies": { 820 | "@eslint-community/eslint-utils": "^4.8.0", 821 | "@eslint-community/regexpp": "^4.12.1", 822 | "@eslint/config-array": "^0.21.0", 823 | "@eslint/config-helpers": "^0.3.1", 824 | "@eslint/core": "^0.15.2", 825 | "@eslint/eslintrc": "^3.3.1", 826 | "@eslint/js": "9.36.0", 827 | "@eslint/plugin-kit": "^0.3.5", 828 | "@humanfs/node": "^0.16.6", 829 | "@humanwhocodes/module-importer": "^1.0.1", 830 | "@humanwhocodes/retry": "^0.4.2", 831 | "@types/estree": "^1.0.6", 832 | "@types/json-schema": "^7.0.15", 833 | "ajv": "^6.12.4", 834 | "chalk": "^4.0.0", 835 | "cross-spawn": "^7.0.6", 836 | "debug": "^4.3.2", 837 | "escape-string-regexp": "^4.0.0", 838 | "eslint-scope": "^8.4.0", 839 | "eslint-visitor-keys": "^4.2.1", 840 | "espree": "^10.4.0", 841 | "esquery": "^1.5.0", 842 | "esutils": "^2.0.2", 843 | "fast-deep-equal": "^3.1.3", 844 | "file-entry-cache": "^8.0.0", 845 | "find-up": "^5.0.0", 846 | "glob-parent": "^6.0.2", 847 | "ignore": "^5.2.0", 848 | "imurmurhash": "^0.1.4", 849 | "is-glob": "^4.0.0", 850 | "json-stable-stringify-without-jsonify": "^1.0.1", 851 | "lodash.merge": "^4.6.2", 852 | "minimatch": "^3.1.2", 853 | "natural-compare": "^1.4.0", 854 | "optionator": "^0.9.3" 855 | }, 856 | "bin": { 857 | "eslint": "bin/eslint.js" 858 | }, 859 | "engines": { 860 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 861 | }, 862 | "funding": { 863 | "url": "https://eslint.org/donate" 864 | }, 865 | "peerDependencies": { 866 | "jiti": "*" 867 | }, 868 | "peerDependenciesMeta": { 869 | "jiti": { 870 | "optional": true 871 | } 872 | } 873 | }, 874 | "node_modules/eslint-scope": { 875 | "version": "8.4.0", 876 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", 877 | "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", 878 | "dev": true, 879 | "license": "BSD-2-Clause", 880 | "dependencies": { 881 | "esrecurse": "^4.3.0", 882 | "estraverse": "^5.2.0" 883 | }, 884 | "engines": { 885 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 886 | }, 887 | "funding": { 888 | "url": "https://opencollective.com/eslint" 889 | } 890 | }, 891 | "node_modules/eslint-visitor-keys": { 892 | "version": "3.4.3", 893 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", 894 | "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", 895 | "dev": true, 896 | "engines": { 897 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 898 | }, 899 | "funding": { 900 | "url": "https://opencollective.com/eslint" 901 | } 902 | }, 903 | "node_modules/eslint/node_modules/eslint-visitor-keys": { 904 | "version": "4.2.1", 905 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", 906 | "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", 907 | "dev": true, 908 | "license": "Apache-2.0", 909 | "engines": { 910 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 911 | }, 912 | "funding": { 913 | "url": "https://opencollective.com/eslint" 914 | } 915 | }, 916 | "node_modules/espree": { 917 | "version": "10.4.0", 918 | "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", 919 | "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", 920 | "dev": true, 921 | "license": "BSD-2-Clause", 922 | "dependencies": { 923 | "acorn": "^8.15.0", 924 | "acorn-jsx": "^5.3.2", 925 | "eslint-visitor-keys": "^4.2.1" 926 | }, 927 | "engines": { 928 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 929 | }, 930 | "funding": { 931 | "url": "https://opencollective.com/eslint" 932 | } 933 | }, 934 | "node_modules/espree/node_modules/eslint-visitor-keys": { 935 | "version": "4.2.1", 936 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", 937 | "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", 938 | "dev": true, 939 | "license": "Apache-2.0", 940 | "engines": { 941 | "node": "^18.18.0 || ^20.9.0 || >=21.1.0" 942 | }, 943 | "funding": { 944 | "url": "https://opencollective.com/eslint" 945 | } 946 | }, 947 | "node_modules/esquery": { 948 | "version": "1.5.0", 949 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", 950 | "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", 951 | "dev": true, 952 | "dependencies": { 953 | "estraverse": "^5.1.0" 954 | }, 955 | "engines": { 956 | "node": ">=0.10" 957 | } 958 | }, 959 | "node_modules/esrecurse": { 960 | "version": "4.3.0", 961 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 962 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 963 | "dev": true, 964 | "license": "BSD-2-Clause", 965 | "dependencies": { 966 | "estraverse": "^5.2.0" 967 | }, 968 | "engines": { 969 | "node": ">=4.0" 970 | } 971 | }, 972 | "node_modules/estraverse": { 973 | "version": "5.3.0", 974 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 975 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 976 | "dev": true, 977 | "engines": { 978 | "node": ">=4.0" 979 | } 980 | }, 981 | "node_modules/esutils": { 982 | "version": "2.0.3", 983 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 984 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 985 | "dev": true, 986 | "engines": { 987 | "node": ">=0.10.0" 988 | } 989 | }, 990 | "node_modules/fast-deep-equal": { 991 | "version": "3.1.3", 992 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 993 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 994 | "dev": true, 995 | "license": "MIT" 996 | }, 997 | "node_modules/fast-glob": { 998 | "version": "3.3.3", 999 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", 1000 | "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", 1001 | "dev": true, 1002 | "license": "MIT", 1003 | "dependencies": { 1004 | "@nodelib/fs.stat": "^2.0.2", 1005 | "@nodelib/fs.walk": "^1.2.3", 1006 | "glob-parent": "^5.1.2", 1007 | "merge2": "^1.3.0", 1008 | "micromatch": "^4.0.8" 1009 | }, 1010 | "engines": { 1011 | "node": ">=8.6.0" 1012 | } 1013 | }, 1014 | "node_modules/fast-glob/node_modules/glob-parent": { 1015 | "version": "5.1.2", 1016 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1017 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1018 | "dev": true, 1019 | "license": "ISC", 1020 | "dependencies": { 1021 | "is-glob": "^4.0.1" 1022 | }, 1023 | "engines": { 1024 | "node": ">= 6" 1025 | } 1026 | }, 1027 | "node_modules/fast-json-stable-stringify": { 1028 | "version": "2.1.0", 1029 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 1030 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 1031 | "dev": true, 1032 | "license": "MIT" 1033 | }, 1034 | "node_modules/fast-levenshtein": { 1035 | "version": "2.0.6", 1036 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 1037 | "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 1038 | "dev": true 1039 | }, 1040 | "node_modules/fastq": { 1041 | "version": "1.19.1", 1042 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", 1043 | "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", 1044 | "dev": true, 1045 | "license": "ISC", 1046 | "dependencies": { 1047 | "reusify": "^1.0.4" 1048 | } 1049 | }, 1050 | "node_modules/file-entry-cache": { 1051 | "version": "8.0.0", 1052 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", 1053 | "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", 1054 | "dev": true, 1055 | "dependencies": { 1056 | "flat-cache": "^4.0.0" 1057 | }, 1058 | "engines": { 1059 | "node": ">=16.0.0" 1060 | } 1061 | }, 1062 | "node_modules/fill-range": { 1063 | "version": "7.1.1", 1064 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 1065 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 1066 | "dev": true, 1067 | "license": "MIT", 1068 | "dependencies": { 1069 | "to-regex-range": "^5.0.1" 1070 | }, 1071 | "engines": { 1072 | "node": ">=8" 1073 | } 1074 | }, 1075 | "node_modules/find-up": { 1076 | "version": "5.0.0", 1077 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 1078 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 1079 | "dev": true, 1080 | "dependencies": { 1081 | "locate-path": "^6.0.0", 1082 | "path-exists": "^4.0.0" 1083 | }, 1084 | "engines": { 1085 | "node": ">=10" 1086 | }, 1087 | "funding": { 1088 | "url": "https://github.com/sponsors/sindresorhus" 1089 | } 1090 | }, 1091 | "node_modules/flat-cache": { 1092 | "version": "4.0.1", 1093 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", 1094 | "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", 1095 | "dev": true, 1096 | "dependencies": { 1097 | "flatted": "^3.2.9", 1098 | "keyv": "^4.5.4" 1099 | }, 1100 | "engines": { 1101 | "node": ">=16" 1102 | } 1103 | }, 1104 | "node_modules/flatted": { 1105 | "version": "3.3.1", 1106 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", 1107 | "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", 1108 | "dev": true 1109 | }, 1110 | "node_modules/glob-parent": { 1111 | "version": "6.0.2", 1112 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 1113 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 1114 | "dev": true, 1115 | "dependencies": { 1116 | "is-glob": "^4.0.3" 1117 | }, 1118 | "engines": { 1119 | "node": ">=10.13.0" 1120 | } 1121 | }, 1122 | "node_modules/globals": { 1123 | "version": "14.0.0", 1124 | "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", 1125 | "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", 1126 | "dev": true, 1127 | "license": "MIT", 1128 | "engines": { 1129 | "node": ">=18" 1130 | }, 1131 | "funding": { 1132 | "url": "https://github.com/sponsors/sindresorhus" 1133 | } 1134 | }, 1135 | "node_modules/graphemer": { 1136 | "version": "1.4.0", 1137 | "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", 1138 | "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", 1139 | "dev": true 1140 | }, 1141 | "node_modules/has-flag": { 1142 | "version": "4.0.0", 1143 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1144 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1145 | "dev": true, 1146 | "engines": { 1147 | "node": ">=8" 1148 | } 1149 | }, 1150 | "node_modules/ignore": { 1151 | "version": "5.3.1", 1152 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", 1153 | "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", 1154 | "dev": true, 1155 | "engines": { 1156 | "node": ">= 4" 1157 | } 1158 | }, 1159 | "node_modules/import-fresh": { 1160 | "version": "3.3.1", 1161 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", 1162 | "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", 1163 | "dev": true, 1164 | "license": "MIT", 1165 | "dependencies": { 1166 | "parent-module": "^1.0.0", 1167 | "resolve-from": "^4.0.0" 1168 | }, 1169 | "engines": { 1170 | "node": ">=6" 1171 | }, 1172 | "funding": { 1173 | "url": "https://github.com/sponsors/sindresorhus" 1174 | } 1175 | }, 1176 | "node_modules/imurmurhash": { 1177 | "version": "0.1.4", 1178 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1179 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 1180 | "dev": true, 1181 | "engines": { 1182 | "node": ">=0.8.19" 1183 | } 1184 | }, 1185 | "node_modules/is-extglob": { 1186 | "version": "2.1.1", 1187 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1188 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 1189 | "dev": true, 1190 | "engines": { 1191 | "node": ">=0.10.0" 1192 | } 1193 | }, 1194 | "node_modules/is-glob": { 1195 | "version": "4.0.3", 1196 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1197 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1198 | "dev": true, 1199 | "dependencies": { 1200 | "is-extglob": "^2.1.1" 1201 | }, 1202 | "engines": { 1203 | "node": ">=0.10.0" 1204 | } 1205 | }, 1206 | "node_modules/is-number": { 1207 | "version": "7.0.0", 1208 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1209 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1210 | "dev": true, 1211 | "license": "MIT", 1212 | "engines": { 1213 | "node": ">=0.12.0" 1214 | } 1215 | }, 1216 | "node_modules/isexe": { 1217 | "version": "2.0.0", 1218 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1219 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 1220 | "dev": true, 1221 | "license": "ISC" 1222 | }, 1223 | "node_modules/js-yaml": { 1224 | "version": "4.1.0", 1225 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 1226 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 1227 | "dev": true, 1228 | "license": "MIT", 1229 | "dependencies": { 1230 | "argparse": "^2.0.1" 1231 | }, 1232 | "bin": { 1233 | "js-yaml": "bin/js-yaml.js" 1234 | } 1235 | }, 1236 | "node_modules/json-buffer": { 1237 | "version": "3.0.1", 1238 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", 1239 | "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", 1240 | "dev": true 1241 | }, 1242 | "node_modules/json-schema-traverse": { 1243 | "version": "0.4.1", 1244 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1245 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 1246 | "dev": true, 1247 | "license": "MIT" 1248 | }, 1249 | "node_modules/json-stable-stringify-without-jsonify": { 1250 | "version": "1.0.1", 1251 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 1252 | "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", 1253 | "dev": true 1254 | }, 1255 | "node_modules/keyv": { 1256 | "version": "4.5.4", 1257 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", 1258 | "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", 1259 | "dev": true, 1260 | "dependencies": { 1261 | "json-buffer": "3.0.1" 1262 | } 1263 | }, 1264 | "node_modules/levn": { 1265 | "version": "0.4.1", 1266 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 1267 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 1268 | "dev": true, 1269 | "dependencies": { 1270 | "prelude-ls": "^1.2.1", 1271 | "type-check": "~0.4.0" 1272 | }, 1273 | "engines": { 1274 | "node": ">= 0.8.0" 1275 | } 1276 | }, 1277 | "node_modules/locate-path": { 1278 | "version": "6.0.0", 1279 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 1280 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 1281 | "dev": true, 1282 | "dependencies": { 1283 | "p-locate": "^5.0.0" 1284 | }, 1285 | "engines": { 1286 | "node": ">=10" 1287 | }, 1288 | "funding": { 1289 | "url": "https://github.com/sponsors/sindresorhus" 1290 | } 1291 | }, 1292 | "node_modules/lodash.merge": { 1293 | "version": "4.6.2", 1294 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 1295 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 1296 | "dev": true 1297 | }, 1298 | "node_modules/merge2": { 1299 | "version": "1.4.1", 1300 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 1301 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 1302 | "dev": true, 1303 | "license": "MIT", 1304 | "engines": { 1305 | "node": ">= 8" 1306 | } 1307 | }, 1308 | "node_modules/micromatch": { 1309 | "version": "4.0.8", 1310 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", 1311 | "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", 1312 | "dev": true, 1313 | "license": "MIT", 1314 | "dependencies": { 1315 | "braces": "^3.0.3", 1316 | "picomatch": "^2.3.1" 1317 | }, 1318 | "engines": { 1319 | "node": ">=8.6" 1320 | } 1321 | }, 1322 | "node_modules/minimatch": { 1323 | "version": "3.1.2", 1324 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1325 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1326 | "dev": true, 1327 | "license": "ISC", 1328 | "dependencies": { 1329 | "brace-expansion": "^1.1.7" 1330 | }, 1331 | "engines": { 1332 | "node": "*" 1333 | } 1334 | }, 1335 | "node_modules/ms": { 1336 | "version": "2.1.3", 1337 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1338 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 1339 | "dev": true, 1340 | "license": "MIT" 1341 | }, 1342 | "node_modules/natural-compare": { 1343 | "version": "1.4.0", 1344 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 1345 | "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", 1346 | "dev": true 1347 | }, 1348 | "node_modules/optionator": { 1349 | "version": "0.9.3", 1350 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", 1351 | "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", 1352 | "dev": true, 1353 | "dependencies": { 1354 | "@aashutoshrathi/word-wrap": "^1.2.3", 1355 | "deep-is": "^0.1.3", 1356 | "fast-levenshtein": "^2.0.6", 1357 | "levn": "^0.4.1", 1358 | "prelude-ls": "^1.2.1", 1359 | "type-check": "^0.4.0" 1360 | }, 1361 | "engines": { 1362 | "node": ">= 0.8.0" 1363 | } 1364 | }, 1365 | "node_modules/p-limit": { 1366 | "version": "3.1.0", 1367 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 1368 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 1369 | "dev": true, 1370 | "dependencies": { 1371 | "yocto-queue": "^0.1.0" 1372 | }, 1373 | "engines": { 1374 | "node": ">=10" 1375 | }, 1376 | "funding": { 1377 | "url": "https://github.com/sponsors/sindresorhus" 1378 | } 1379 | }, 1380 | "node_modules/p-locate": { 1381 | "version": "5.0.0", 1382 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 1383 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 1384 | "dev": true, 1385 | "dependencies": { 1386 | "p-limit": "^3.0.2" 1387 | }, 1388 | "engines": { 1389 | "node": ">=10" 1390 | }, 1391 | "funding": { 1392 | "url": "https://github.com/sponsors/sindresorhus" 1393 | } 1394 | }, 1395 | "node_modules/parent-module": { 1396 | "version": "1.0.1", 1397 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 1398 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 1399 | "dev": true, 1400 | "license": "MIT", 1401 | "dependencies": { 1402 | "callsites": "^3.0.0" 1403 | }, 1404 | "engines": { 1405 | "node": ">=6" 1406 | } 1407 | }, 1408 | "node_modules/path-exists": { 1409 | "version": "4.0.0", 1410 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 1411 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 1412 | "dev": true, 1413 | "engines": { 1414 | "node": ">=8" 1415 | } 1416 | }, 1417 | "node_modules/path-key": { 1418 | "version": "3.1.1", 1419 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1420 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1421 | "dev": true, 1422 | "license": "MIT", 1423 | "engines": { 1424 | "node": ">=8" 1425 | } 1426 | }, 1427 | "node_modules/picomatch": { 1428 | "version": "2.3.1", 1429 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1430 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1431 | "dev": true, 1432 | "license": "MIT", 1433 | "engines": { 1434 | "node": ">=8.6" 1435 | }, 1436 | "funding": { 1437 | "url": "https://github.com/sponsors/jonschlinkert" 1438 | } 1439 | }, 1440 | "node_modules/prelude-ls": { 1441 | "version": "1.2.1", 1442 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 1443 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 1444 | "dev": true, 1445 | "engines": { 1446 | "node": ">= 0.8.0" 1447 | } 1448 | }, 1449 | "node_modules/punycode": { 1450 | "version": "2.3.1", 1451 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", 1452 | "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", 1453 | "dev": true, 1454 | "license": "MIT", 1455 | "engines": { 1456 | "node": ">=6" 1457 | } 1458 | }, 1459 | "node_modules/queue-microtask": { 1460 | "version": "1.2.3", 1461 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 1462 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 1463 | "dev": true, 1464 | "funding": [ 1465 | { 1466 | "type": "github", 1467 | "url": "https://github.com/sponsors/feross" 1468 | }, 1469 | { 1470 | "type": "patreon", 1471 | "url": "https://www.patreon.com/feross" 1472 | }, 1473 | { 1474 | "type": "consulting", 1475 | "url": "https://feross.org/support" 1476 | } 1477 | ], 1478 | "license": "MIT" 1479 | }, 1480 | "node_modules/resolve-from": { 1481 | "version": "4.0.0", 1482 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 1483 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 1484 | "dev": true, 1485 | "license": "MIT", 1486 | "engines": { 1487 | "node": ">=4" 1488 | } 1489 | }, 1490 | "node_modules/reusify": { 1491 | "version": "1.1.0", 1492 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", 1493 | "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", 1494 | "dev": true, 1495 | "license": "MIT", 1496 | "engines": { 1497 | "iojs": ">=1.0.0", 1498 | "node": ">=0.10.0" 1499 | } 1500 | }, 1501 | "node_modules/run-parallel": { 1502 | "version": "1.2.0", 1503 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 1504 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 1505 | "dev": true, 1506 | "funding": [ 1507 | { 1508 | "type": "github", 1509 | "url": "https://github.com/sponsors/feross" 1510 | }, 1511 | { 1512 | "type": "patreon", 1513 | "url": "https://www.patreon.com/feross" 1514 | }, 1515 | { 1516 | "type": "consulting", 1517 | "url": "https://feross.org/support" 1518 | } 1519 | ], 1520 | "license": "MIT", 1521 | "dependencies": { 1522 | "queue-microtask": "^1.2.2" 1523 | } 1524 | }, 1525 | "node_modules/semver": { 1526 | "version": "7.7.2", 1527 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", 1528 | "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", 1529 | "dev": true, 1530 | "license": "ISC", 1531 | "bin": { 1532 | "semver": "bin/semver.js" 1533 | }, 1534 | "engines": { 1535 | "node": ">=10" 1536 | } 1537 | }, 1538 | "node_modules/shebang-command": { 1539 | "version": "2.0.0", 1540 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 1541 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1542 | "dev": true, 1543 | "license": "MIT", 1544 | "dependencies": { 1545 | "shebang-regex": "^3.0.0" 1546 | }, 1547 | "engines": { 1548 | "node": ">=8" 1549 | } 1550 | }, 1551 | "node_modules/shebang-regex": { 1552 | "version": "3.0.0", 1553 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 1554 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 1555 | "dev": true, 1556 | "license": "MIT", 1557 | "engines": { 1558 | "node": ">=8" 1559 | } 1560 | }, 1561 | "node_modules/strip-json-comments": { 1562 | "version": "3.1.1", 1563 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 1564 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 1565 | "dev": true, 1566 | "license": "MIT", 1567 | "engines": { 1568 | "node": ">=8" 1569 | }, 1570 | "funding": { 1571 | "url": "https://github.com/sponsors/sindresorhus" 1572 | } 1573 | }, 1574 | "node_modules/supports-color": { 1575 | "version": "7.2.0", 1576 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1577 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1578 | "dev": true, 1579 | "dependencies": { 1580 | "has-flag": "^4.0.0" 1581 | }, 1582 | "engines": { 1583 | "node": ">=8" 1584 | } 1585 | }, 1586 | "node_modules/to-regex-range": { 1587 | "version": "5.0.1", 1588 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1589 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1590 | "dev": true, 1591 | "license": "MIT", 1592 | "dependencies": { 1593 | "is-number": "^7.0.0" 1594 | }, 1595 | "engines": { 1596 | "node": ">=8.0" 1597 | } 1598 | }, 1599 | "node_modules/ts-api-utils": { 1600 | "version": "2.1.0", 1601 | "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", 1602 | "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", 1603 | "dev": true, 1604 | "license": "MIT", 1605 | "engines": { 1606 | "node": ">=18.12" 1607 | }, 1608 | "peerDependencies": { 1609 | "typescript": ">=4.8.4" 1610 | } 1611 | }, 1612 | "node_modules/type-check": { 1613 | "version": "0.4.0", 1614 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 1615 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 1616 | "dev": true, 1617 | "dependencies": { 1618 | "prelude-ls": "^1.2.1" 1619 | }, 1620 | "engines": { 1621 | "node": ">= 0.8.0" 1622 | } 1623 | }, 1624 | "node_modules/typescript": { 1625 | "version": "5.9.2", 1626 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz", 1627 | "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", 1628 | "dev": true, 1629 | "license": "Apache-2.0", 1630 | "bin": { 1631 | "tsc": "bin/tsc", 1632 | "tsserver": "bin/tsserver" 1633 | }, 1634 | "engines": { 1635 | "node": ">=14.17" 1636 | } 1637 | }, 1638 | "node_modules/undici-types": { 1639 | "version": "6.21.0", 1640 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", 1641 | "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", 1642 | "dev": true, 1643 | "license": "MIT" 1644 | }, 1645 | "node_modules/uri-js": { 1646 | "version": "4.4.1", 1647 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 1648 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 1649 | "dev": true, 1650 | "license": "BSD-2-Clause", 1651 | "dependencies": { 1652 | "punycode": "^2.1.0" 1653 | } 1654 | }, 1655 | "node_modules/which": { 1656 | "version": "2.0.2", 1657 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 1658 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 1659 | "dev": true, 1660 | "license": "ISC", 1661 | "dependencies": { 1662 | "isexe": "^2.0.0" 1663 | }, 1664 | "bin": { 1665 | "node-which": "bin/node-which" 1666 | }, 1667 | "engines": { 1668 | "node": ">= 8" 1669 | } 1670 | }, 1671 | "node_modules/yocto-queue": { 1672 | "version": "0.1.0", 1673 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 1674 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 1675 | "dev": true, 1676 | "engines": { 1677 | "node": ">=10" 1678 | }, 1679 | "funding": { 1680 | "url": "https://github.com/sponsors/sindresorhus" 1681 | } 1682 | } 1683 | } 1684 | } 1685 | --------------------------------------------------------------------------------