From bb72f9b797e2f32424e55161e012e083fb5ad2c0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 13 Mar 2026 21:22:23 +0000 Subject: [PATCH 1/6] (npm): Bump the vite group across 1 directory with 3 updates Bumps the vite group with 3 updates in the / directory: [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite), [vite-node](https://github.com/antfu-collective/vite-node) and [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest). Updates `vite` from 7.3.1 to 8.0.0 - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/create-vite@8.0.0/packages/vite) Updates `vite-node` from 5.3.0 to 6.0.0 - [Release notes](https://github.com/antfu-collective/vite-node/releases) - [Commits](https://github.com/antfu-collective/vite-node/compare/v5.3.0...v6.0.0) Updates `vitest` from 4.0.18 to 4.1.0 - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.0/packages/vitest) --- updated-dependencies: - dependency-name: vite dependency-version: 8.0.0 dependency-type: direct:development update-type: version-update:semver-major dependency-group: vite - dependency-name: vite-node dependency-version: 6.0.0 dependency-type: direct:development update-type: version-update:semver-major dependency-group: vite - dependency-name: vitest dependency-version: 4.1.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: vite ... Signed-off-by: dependabot[bot] --- package-lock.json | 1425 +++++++++++++++++++-------------------------- package.json | 6 +- 2 files changed, 601 insertions(+), 830 deletions(-) diff --git a/package-lock.json b/package-lock.json index c0baa78dc..0191ce859 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,10 +33,10 @@ "tfx-cli": "0.23.1", "typescript": "5.9.3", "typescript-eslint": "8.57.0", - "vite": "7.3.1", - "vite-node": "5.3.0", + "vite": "8.0.0", + "vite-node": "6.0.0", "vite-tsconfig-paths": "6.1.1", - "vitest": "4.0.18" + "vitest": "4.1.0" }, "engines": { "node": ">=24" @@ -51,446 +51,38 @@ "node": ">=0.1.90" } }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz", - "integrity": "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.2.tgz", - "integrity": "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz", - "integrity": "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.2.tgz", - "integrity": "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz", - "integrity": "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz", - "integrity": "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz", - "integrity": "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz", - "integrity": "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz", - "integrity": "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz", - "integrity": "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz", - "integrity": "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz", - "integrity": "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz", - "integrity": "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz", - "integrity": "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz", - "integrity": "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz", - "integrity": "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz", - "integrity": "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz", - "integrity": "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz", - "integrity": "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz", - "integrity": "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz", - "integrity": "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz", - "integrity": "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz", - "integrity": "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz", - "integrity": "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==", - "cpu": [ - "arm64" - ], + "node_modules/@emnapi/core": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.0.tgz", + "integrity": "sha512-0DQ98G9ZQZOxfUcQn1waV2yS8aWdZ6kJMbYCJB3oUBecjWYO1fqJ+a1DRfPF3O5JEkwqwP1A9QEN/9mYm2Yd0w==", "dev": true, "license": "MIT", "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@emnapi/wasi-threads": "1.2.0", + "tslib": "^2.4.0" } }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz", - "integrity": "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==", - "cpu": [ - "ia32" - ], + "node_modules/@emnapi/runtime": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.0.tgz", + "integrity": "sha512-QN75eB0IH2ywSpRpNddCRfQIhmJYBCJ1x5Lb3IscKAL8bMnVAKnRg8dCoXbHzVLLH7P38N2Z3mtulB7W0J0FKw==", "dev": true, "license": "MIT", "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" + "dependencies": { + "tslib": "^2.4.0" } }, - "node_modules/@esbuild/win32-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz", - "integrity": "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==", - "cpu": [ - "x64" - ], + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.0.tgz", + "integrity": "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==", "dev": true, "license": "MIT", "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" + "dependencies": { + "tslib": "^2.4.0" } }, "node_modules/@eslint-community/eslint-utils": { @@ -710,6 +302,23 @@ "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==", "dev": true }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.1.tgz", + "integrity": "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1", + "@tybys/wasm-util": "^0.10.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -745,6 +354,26 @@ "node": ">= 8" } }, + "node_modules/@oxc-project/runtime": { + "version": "0.115.0", + "resolved": "https://registry.npmjs.org/@oxc-project/runtime/-/runtime-0.115.0.tgz", + "integrity": "sha512-Rg8Wlt5dCbXhQnsXPrkOjL1DTSvXLgb2R/KYfnf1/K+R0k6UMLEmbQXPM+kwrWqSmWA2t0B1EtHy2/3zikQpvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-project/types": { + "version": "0.115.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.115.0.tgz", + "integrity": "sha512-4n91DKnebUS4yjUHl2g3/b2T+IUdCfmoZGhmwsovZCDaJSs+QkVAM+0AqqTxHSsHfeiMuueT75cZaZcT/m0pSw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -769,24 +398,10 @@ "url": "https://opencollective.com/pkgr" } }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz", - "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz", - "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==", + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.0.0-rc.9", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.9.tgz", + "integrity": "sha512-lcJL0bN5hpgJfSIz/8PIf02irmyL43P+j1pTCfbD1DbLkmGRuFIA4DD3B3ZOvGqG0XiVvRznbKtN0COQVaKUTg==", "cpu": [ "arm64" ], @@ -795,12 +410,15 @@ "optional": true, "os": [ "android" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz", - "integrity": "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==", + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.0.0-rc.9", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.9.tgz", + "integrity": "sha512-J7Zk3kLYFsLtuH6U+F4pS2sYVzac0qkjcO5QxHS7OS7yZu2LRs+IXo+uvJ/mvpyUljDJ3LROZPoQfgBIpCMhdQ==", "cpu": [ "arm64" ], @@ -809,12 +427,15 @@ "optional": true, "os": [ "darwin" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz", - "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==", + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.0.0-rc.9", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.9.tgz", + "integrity": "sha512-iwtmmghy8nhfRGeNAIltcNXzD0QMNaaA5U/NyZc1Ia4bxrzFByNMDoppoC+hl7cDiUq5/1CnFthpT9n+UtfFyg==", "cpu": [ "x64" ], @@ -823,26 +444,15 @@ "optional": true, "os": [ "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz", - "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==", - "cpu": [ - "arm64" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz", - "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==", + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.0.0-rc.9", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.9.tgz", + "integrity": "sha512-DLFYI78SCiZr5VvdEplsVC2Vx53lnA4/Ga5C65iyldMVaErr86aiqCoNBLl92PXPfDtUYjUh+xFFor40ueNs4Q==", "cpu": [ "x64" ], @@ -851,26 +461,15 @@ "optional": true, "os": [ "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz", - "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==", - "cpu": [ - "arm" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz", - "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==", + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.0.0-rc.9", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.9.tgz", + "integrity": "sha512-CsjTmTwd0Hri6iTw/DRMK7kOZ7FwAkrO4h8YWKoX/kcj833e4coqo2wzIFywtch/8Eb5enQ/lwLM7w6JX1W5RQ==", "cpu": [ "arm" ], @@ -879,26 +478,15 @@ "optional": true, "os": [ "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz", - "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==", - "cpu": [ - "arm64" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz", - "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==", + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.0.0-rc.9", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.9.tgz", + "integrity": "sha512-2x9O2JbSPxpxMDhP9Z74mahAStibTlrBMW0520+epJH5sac7/LwZW5Bmg/E6CXuEF53JJFW509uP+lSedaUNxg==", "cpu": [ "arm64" ], @@ -907,54 +495,32 @@ "optional": true, "os": [ "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz", - "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==", - "cpu": [ - "loong64" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz", - "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==", + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.0.0-rc.9", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.9.tgz", + "integrity": "sha512-JA1QRW31ogheAIRhIg9tjMfsYbglXXYGNPLdPEYrwFxdbkQCAzvpSCSHCDWNl4hTtrol8WeboCSEpjdZK8qrCg==", "cpu": [ - "loong64" + "arm64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "linux" - ] - }, - "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz", - "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==", - "cpu": [ - "ppc64" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz", - "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==", + "node_modules/@rolldown/binding-linux-ppc64-gnu": { + "version": "1.0.0-rc.9", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0-rc.9.tgz", + "integrity": "sha512-aOKU9dJheda8Kj8Y3w9gnt9QFOO+qKPAl8SWd7JPHP+Cu0EuDAE5wokQubLzIDQWg2myXq2XhTpOVS07qqvT+w==", "cpu": [ "ppc64" ], @@ -963,40 +529,15 @@ "optional": true, "os": [ "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz", - "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz", - "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==", - "cpu": [ - "riscv64" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz", - "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==", + "node_modules/@rolldown/binding-linux-s390x-gnu": { + "version": "1.0.0-rc.9", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0-rc.9.tgz", + "integrity": "sha512-OalO94fqj7IWRn3VdXWty75jC5dk4C197AWEuMhIpvVv2lw9fiPhud0+bW2ctCxb3YoBZor71QHbY+9/WToadA==", "cpu": [ "s390x" ], @@ -1005,12 +546,15 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz", - "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==", + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.0.0-rc.9", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.9.tgz", + "integrity": "sha512-cVEl1vZtBsBZna3YMjGXNvnYYrOJ7RzuWvZU0ffvJUexWkukMaDuGhUXn0rjnV0ptzGVkvc+vW9Yqy6h8YX4pg==", "cpu": [ "x64" ], @@ -1019,12 +563,15 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz", - "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==", + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.0.0-rc.9", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.9.tgz", + "integrity": "sha512-UzYnKCIIc4heAKgI4PZ3dfBGUZefGCJ1TPDuLHoCzgrMYPb5Rv6TLFuYtyM4rWyHM7hymNdsg5ik2C+UD9VDbA==", "cpu": [ "x64" ], @@ -1033,26 +580,15 @@ "optional": true, "os": [ "linux" - ] - }, - "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz", - "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==", - "cpu": [ - "x64" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz", - "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==", + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.0.0-rc.9", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.9.tgz", + "integrity": "sha512-+6zoiF+RRyf5cdlFQP7nm58mq7+/2PFaY2DNQeD4B87N36JzfF/l9mdBkkmTvSYcYPE8tMh/o3cRlsx1ldLfog==", "cpu": [ "arm64" ], @@ -1061,54 +597,49 @@ "optional": true, "os": [ "openharmony" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz", - "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==", - "cpu": [ - "arm64" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz", - "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==", + "node_modules/@rolldown/binding-wasm32-wasi": { + "version": "1.0.0-rc.9", + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.9.tgz", + "integrity": "sha512-rgFN6sA/dyebil3YTlL2evvi/M+ivhfnyxec7AccTpRPccno/rPoNlqybEZQBkcbZu8Hy+eqNJCqfBR8P7Pg8g==", "cpu": [ - "ia32" + "wasm32" ], "dev": true, "license": "MIT", "optional": true, - "os": [ - "win32" - ] + "dependencies": { + "@napi-rs/wasm-runtime": "^1.1.1" + }, + "engines": { + "node": ">=14.0.0" + } }, - "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz", - "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==", + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.0.0-rc.9", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.9.tgz", + "integrity": "sha512-lHVNUG/8nlF1IQk1C0Ci574qKYyty2goMiPlRqkC5R+3LkXDkL5Dhx8ytbxq35m+pkHVIvIxviD+TWLdfeuadA==", "cpu": [ - "x64" + "arm64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "win32" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz", - "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==", + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.0.0-rc.9", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.9.tgz", + "integrity": "sha512-G0oA4+w1iY5AGi5HcDTxWsoxF509hrFIPB2rduV5aDqS9FtDg1CAfa7V34qImbjfhIcA8C+RekocJZA96EarwQ==", "cpu": [ "x64" ], @@ -1117,7 +648,17 @@ "optional": true, "os": [ "win32" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-rc.9", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.9.tgz", + "integrity": "sha512-w6oiRWgEBl04QkFZgmW+jnU1EC9b57Oihi2ot3HNWIQRqgHp5PnYDia5iZ5FF7rpa4EQdiqMDXjlqKGXBhsoXw==", + "dev": true, + "license": "MIT" }, "node_modules/@standard-schema/spec": { "version": "1.1.0", @@ -1173,6 +714,17 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@types/chai": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", @@ -1542,17 +1094,17 @@ } }, "node_modules/@vitest/expect": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.18.tgz", - "integrity": "sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.0.tgz", + "integrity": "sha512-EIxG7k4wlWweuCLG9Y5InKFwpMEOyrMb6ZJ1ihYu02LVj/bzUwn2VMU+13PinsjRW75XnITeFrQBMH5+dLvCDA==", "dev": true, "license": "MIT", "dependencies": { - "@standard-schema/spec": "^1.0.0", + "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", - "@vitest/spy": "4.0.18", - "@vitest/utils": "4.0.18", - "chai": "^6.2.1", + "@vitest/spy": "4.1.0", + "@vitest/utils": "4.1.0", + "chai": "^6.2.2", "tinyrainbow": "^3.0.3" }, "funding": { @@ -1560,13 +1112,13 @@ } }, "node_modules/@vitest/mocker": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.18.tgz", - "integrity": "sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.0.tgz", + "integrity": "sha512-evxREh+Hork43+Y4IOhTo+h5lGmVRyjqI739Rz4RlUPqwrkFFDF6EMvOOYjTx4E8Tl6gyCLRL8Mu7Ry12a13Tw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "4.0.18", + "@vitest/spy": "4.1.0", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, @@ -1575,7 +1127,7 @@ }, "peerDependencies": { "msw": "^2.4.9", - "vite": "^6.0.0 || ^7.0.0-0" + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0-0" }, "peerDependenciesMeta": { "msw": { @@ -1587,9 +1139,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.18.tgz", - "integrity": "sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.0.tgz", + "integrity": "sha512-3RZLZlh88Ib0J7NQTRATfc/3ZPOnSUn2uDBUoGNn5T36+bALixmzphN26OUD3LRXWkJu4H0s5vvUeqBiw+kS0A==", "dev": true, "license": "MIT", "dependencies": { @@ -1600,13 +1152,13 @@ } }, "node_modules/@vitest/runner": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.18.tgz", - "integrity": "sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.0.tgz", + "integrity": "sha512-Duvx2OzQ7d6OjchL+trw+aSrb9idh7pnNfxrklo14p3zmNL4qPCDeIJAK+eBKYjkIwG96Bc6vYuxhqDXQOWpoQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "4.0.18", + "@vitest/utils": "4.1.0", "pathe": "^2.0.3" }, "funding": { @@ -1614,13 +1166,14 @@ } }, "node_modules/@vitest/snapshot": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.18.tgz", - "integrity": "sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.0.tgz", + "integrity": "sha512-0Vy9euT1kgsnj1CHttwi9i9o+4rRLEaPRSOJ5gyv579GJkNpgJK+B4HSv/rAWixx2wdAFci1X4CEPjiu2bXIMg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.0.18", + "@vitest/pretty-format": "4.1.0", + "@vitest/utils": "4.1.0", "magic-string": "^0.30.21", "pathe": "^2.0.3" }, @@ -1629,9 +1182,9 @@ } }, "node_modules/@vitest/spy": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.18.tgz", - "integrity": "sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.0.tgz", + "integrity": "sha512-pz77k+PgNpyMDv2FV6qmk5ZVau6c3R8HC8v342T2xlFxQKTrSeYw9waIJG8KgV9fFwAtTu4ceRzMivPTH6wSxw==", "dev": true, "license": "MIT", "funding": { @@ -1639,13 +1192,14 @@ } }, "node_modules/@vitest/utils": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.18.tgz", - "integrity": "sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.0.tgz", + "integrity": "sha512-XfPXT6a8TZY3dcGY8EdwsBulFCIw+BeeX0RZn2x/BtiY/75YGh8FeWGG8QISN/WhaqSrE2OrlDgtF8q5uhOTmw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.0.18", + "@vitest/pretty-format": "4.1.0", + "convert-source-map": "^2.0.0", "tinyrainbow": "^3.0.3" }, "funding": { @@ -2205,12 +1759,13 @@ } }, "node_modules/cac": { - "version": "6.7.14", - "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", - "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cac/-/cac-7.0.0.tgz", + "integrity": "sha512-tixWYgm5ZoOD+3g6UTea91eow5z6AAHaho3g0V9CNSNb45gM8SmflpAc+GRd1InC4AqN/07Unrgp56Y94N9hJQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=20.19.0" } }, "node_modules/call-bind": { @@ -2496,6 +2051,13 @@ "safe-buffer": "~5.2.0" } }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", @@ -2769,6 +2331,16 @@ "minimalistic-assert": "^1.0.0" } }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, "node_modules/devlop": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", @@ -2937,9 +2509,9 @@ } }, "node_modules/es-module-lexer": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", - "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", + "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", "dev": true, "license": "MIT" }, @@ -2987,48 +2559,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/esbuild": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz", - "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.27.2", - "@esbuild/android-arm": "0.27.2", - "@esbuild/android-arm64": "0.27.2", - "@esbuild/android-x64": "0.27.2", - "@esbuild/darwin-arm64": "0.27.2", - "@esbuild/darwin-x64": "0.27.2", - "@esbuild/freebsd-arm64": "0.27.2", - "@esbuild/freebsd-x64": "0.27.2", - "@esbuild/linux-arm": "0.27.2", - "@esbuild/linux-arm64": "0.27.2", - "@esbuild/linux-ia32": "0.27.2", - "@esbuild/linux-loong64": "0.27.2", - "@esbuild/linux-mips64el": "0.27.2", - "@esbuild/linux-ppc64": "0.27.2", - "@esbuild/linux-riscv64": "0.27.2", - "@esbuild/linux-s390x": "0.27.2", - "@esbuild/linux-x64": "0.27.2", - "@esbuild/netbsd-arm64": "0.27.2", - "@esbuild/netbsd-x64": "0.27.2", - "@esbuild/openbsd-arm64": "0.27.2", - "@esbuild/openbsd-x64": "0.27.2", - "@esbuild/openharmony-arm64": "0.27.2", - "@esbuild/sunos-x64": "0.27.2", - "@esbuild/win32-arm64": "0.27.2", - "@esbuild/win32-ia32": "0.27.2", - "@esbuild/win32-x64": "0.27.2" - } - }, "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -3369,9 +2899,9 @@ } }, "node_modules/expect-type": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz", - "integrity": "sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz", + "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -4531,6 +4061,267 @@ "immediate": "~3.0.5" } }, + "node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, "node_modules/linkify-it": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", @@ -5965,9 +5756,9 @@ } }, "node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "version": "8.5.8", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", + "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", "dev": true, "funding": [ { @@ -6242,49 +6033,38 @@ "dev": true, "license": "MIT" }, - "node_modules/rollup": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz", - "integrity": "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==", + "node_modules/rolldown": { + "version": "1.0.0-rc.9", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.9.tgz", + "integrity": "sha512-9EbgWge7ZH+yqb4d2EnELAntgPTWbfL8ajiTW+SyhJEC4qhBbkCKbqFV4Ge4zmu5ziQuVbWxb/XwLZ+RIO7E8Q==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "1.0.8" + "@oxc-project/types": "=0.115.0", + "@rolldown/pluginutils": "1.0.0-rc.9" }, "bin": { - "rollup": "dist/bin/rollup" + "rolldown": "bin/cli.mjs" }, "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" + "node": "^20.19.0 || >=22.12.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.59.0", - "@rollup/rollup-android-arm64": "4.59.0", - "@rollup/rollup-darwin-arm64": "4.59.0", - "@rollup/rollup-darwin-x64": "4.59.0", - "@rollup/rollup-freebsd-arm64": "4.59.0", - "@rollup/rollup-freebsd-x64": "4.59.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.59.0", - "@rollup/rollup-linux-arm-musleabihf": "4.59.0", - "@rollup/rollup-linux-arm64-gnu": "4.59.0", - "@rollup/rollup-linux-arm64-musl": "4.59.0", - "@rollup/rollup-linux-loong64-gnu": "4.59.0", - "@rollup/rollup-linux-loong64-musl": "4.59.0", - "@rollup/rollup-linux-ppc64-gnu": "4.59.0", - "@rollup/rollup-linux-ppc64-musl": "4.59.0", - "@rollup/rollup-linux-riscv64-gnu": "4.59.0", - "@rollup/rollup-linux-riscv64-musl": "4.59.0", - "@rollup/rollup-linux-s390x-gnu": "4.59.0", - "@rollup/rollup-linux-x64-gnu": "4.59.0", - "@rollup/rollup-linux-x64-musl": "4.59.0", - "@rollup/rollup-openbsd-x64": "4.59.0", - "@rollup/rollup-openharmony-arm64": "4.59.0", - "@rollup/rollup-win32-arm64-msvc": "4.59.0", - "@rollup/rollup-win32-ia32-msvc": "4.59.0", - "@rollup/rollup-win32-x64-gnu": "4.59.0", - "@rollup/rollup-win32-x64-msvc": "4.59.0", - "fsevents": "~2.3.2" + "@rolldown/binding-android-arm64": "1.0.0-rc.9", + "@rolldown/binding-darwin-arm64": "1.0.0-rc.9", + "@rolldown/binding-darwin-x64": "1.0.0-rc.9", + "@rolldown/binding-freebsd-x64": "1.0.0-rc.9", + "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.9", + "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.9", + "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.9", + "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.9", + "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.9", + "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.9", + "@rolldown/binding-linux-x64-musl": "1.0.0-rc.9", + "@rolldown/binding-openharmony-arm64": "1.0.0-rc.9", + "@rolldown/binding-wasm32-wasi": "1.0.0-rc.9", + "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.9", + "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.9" } }, "node_modules/run-con": { @@ -6777,9 +6557,9 @@ "dev": true }, "node_modules/std-env": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", - "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.0.0.tgz", + "integrity": "sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==", "dev": true, "license": "MIT" }, @@ -7172,9 +6952,9 @@ } }, "node_modules/tinyrainbow": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.0.3.tgz", - "integrity": "sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.0.tgz", + "integrity": "sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==", "dev": true, "license": "MIT", "engines": { @@ -7268,6 +7048,14 @@ } } }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD", + "optional": true + }, "node_modules/tunnel": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", @@ -7513,17 +7301,17 @@ } }, "node_modules/vite": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", - "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.0.tgz", + "integrity": "sha512-fPGaRNj9Zytaf8LEiBhY7Z6ijnFKdzU/+mL8EFBaKr7Vw1/FWcTBAMW0wLPJAGMPX38ZPVCVgLceWiEqeoqL2Q==", "dev": true, "license": "MIT", "dependencies": { - "esbuild": "^0.27.0", - "fdir": "^6.5.0", + "@oxc-project/runtime": "0.115.0", + "lightningcss": "^1.32.0", "picomatch": "^4.0.3", - "postcss": "^8.5.6", - "rollup": "^4.43.0", + "postcss": "^8.5.8", + "rolldown": "1.0.0-rc.9", "tinyglobby": "^0.2.15" }, "bin": { @@ -7540,9 +7328,10 @@ }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", + "@vitejs/devtools": "^0.0.0-alpha.31", + "esbuild": "^0.27.0", "jiti": ">=1.21.0", "less": "^4.0.0", - "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", @@ -7555,13 +7344,16 @@ "@types/node": { "optional": true }, - "jiti": { + "@vitejs/devtools": { "optional": true }, - "less": { + "esbuild": { + "optional": true + }, + "jiti": { "optional": true }, - "lightningcss": { + "less": { "optional": true }, "sass": { @@ -7588,17 +7380,17 @@ } }, "node_modules/vite-node": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-5.3.0.tgz", - "integrity": "sha512-8f20COPYJujc3OKPX6OuyBy3ZIv2det4eRRU4GY1y2MjbeGSUmPjedxg1b72KnTagCofwvZ65ThzjxDW2AtQFQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-6.0.0.tgz", + "integrity": "sha512-oj4PVrT+pDh6GYf5wfUXkcZyekYS8kKPfLPXVl8qe324Ec6l4K2DUKNadRbZ3LQl0qGcDz+PyOo7ZAh00Y+JjQ==", "dev": true, "license": "MIT", "dependencies": { - "cac": "^6.7.14", + "cac": "^7.0.0", "es-module-lexer": "^2.0.0", "obug": "^2.1.1", "pathe": "^2.0.3", - "vite": "^7.3.1" + "vite": "^8.0.0" }, "bin": { "vite-node": "dist/cli.mjs" @@ -7610,13 +7402,6 @@ "url": "https://opencollective.com/antfu" } }, - "node_modules/vite-node/node_modules/es-module-lexer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", - "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", - "dev": true, - "license": "MIT" - }, "node_modules/vite-tsconfig-paths": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-6.1.1.tgz", @@ -7632,24 +7417,6 @@ "vite": "*" } }, - "node_modules/vite/node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, "node_modules/vite/node_modules/picomatch": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", @@ -7664,31 +7431,31 @@ } }, "node_modules/vitest": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.0.18.tgz", - "integrity": "sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.0.tgz", + "integrity": "sha512-YbDrMF9jM2Lqc++2530UourxZHmkKLxrs4+mYhEwqWS97WJ7wOYEkcr+QfRgJ3PW9wz3odRijLZjHEaRLTNbqw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/expect": "4.0.18", - "@vitest/mocker": "4.0.18", - "@vitest/pretty-format": "4.0.18", - "@vitest/runner": "4.0.18", - "@vitest/snapshot": "4.0.18", - "@vitest/spy": "4.0.18", - "@vitest/utils": "4.0.18", - "es-module-lexer": "^1.7.0", - "expect-type": "^1.2.2", + "@vitest/expect": "4.1.0", + "@vitest/mocker": "4.1.0", + "@vitest/pretty-format": "4.1.0", + "@vitest/runner": "4.1.0", + "@vitest/snapshot": "4.1.0", + "@vitest/spy": "4.1.0", + "@vitest/utils": "4.1.0", + "es-module-lexer": "^2.0.0", + "expect-type": "^1.3.0", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", - "std-env": "^3.10.0", + "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.0.3", - "vite": "^6.0.0 || ^7.0.0", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0-0", "why-is-node-running": "^2.3.0" }, "bin": { @@ -7704,12 +7471,13 @@ "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", - "@vitest/browser-playwright": "4.0.18", - "@vitest/browser-preview": "4.0.18", - "@vitest/browser-webdriverio": "4.0.18", - "@vitest/ui": "4.0.18", + "@vitest/browser-playwright": "4.1.0", + "@vitest/browser-preview": "4.1.0", + "@vitest/browser-webdriverio": "4.1.0", + "@vitest/ui": "4.1.0", "happy-dom": "*", - "jsdom": "*" + "jsdom": "*", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0-0" }, "peerDependenciesMeta": { "@edge-runtime/vm": { @@ -7738,6 +7506,9 @@ }, "jsdom": { "optional": true + }, + "vite": { + "optional": false } } }, diff --git a/package.json b/package.json index 5c5294d40..79b0eb6a8 100644 --- a/package.json +++ b/package.json @@ -68,10 +68,10 @@ "tfx-cli": "0.23.1", "typescript": "5.9.3", "typescript-eslint": "8.57.0", - "vite": "7.3.1", - "vite-node": "5.3.0", + "vite": "8.0.0", + "vite-node": "6.0.0", "vite-tsconfig-paths": "6.1.1", - "vitest": "4.0.18" + "vitest": "4.1.0" }, "dependencies": { "semver": "7.7.4" From 5535f8cfbf498faebae0b9ac12c148ea4afd63e5 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 13 Mar 2026 21:30:48 +0000 Subject: [PATCH 2/6] Initial plan From ca93ac46bb286b5a91b61f58c54ae43a83c28ebd Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 13 Mar 2026 21:33:16 +0000 Subject: [PATCH 3/6] Initial plan for Vite 8 migration fixes Co-authored-by: arturcic <1760506+arturcic@users.noreply.github.com> --- dist/lib.mjs | 49 + dist/lib.mjs.map | 1 + dist/rolldown-runtime.mjs | 24 + dist/tools/cli.mjs | 10 +- dist/tools/cli.mjs.map | 2 +- dist/tools/lib.mjs | 41 +- dist/tools/libs/gitreleasemanager.mjs | 467 ++- dist/tools/libs/gitreleasemanager.mjs.map | 2 +- dist/tools/libs/gitversion.mjs | 562 ++- dist/tools/libs/gitversion.mjs.map | 2 +- dist/tools/libs/semver.mjs | 3983 +++++++-------------- dist/tools/libs/semver.mjs.map | 2 +- dist/tools/libs/tools.mjs | 860 ++--- dist/tools/libs/tools.mjs.map | 2 +- 14 files changed, 2241 insertions(+), 3766 deletions(-) create mode 100644 dist/lib.mjs create mode 100644 dist/lib.mjs.map create mode 100644 dist/rolldown-runtime.mjs diff --git a/dist/lib.mjs b/dist/lib.mjs new file mode 100644 index 000000000..e14a2b7a6 --- /dev/null +++ b/dist/lib.mjs @@ -0,0 +1,49 @@ +import { parseArgs } from "node:util"; +//#region src/tools/lib.ts +async function getAgent(buildAgent) { + return new (await (import(`./${buildAgent}/agent.mjs`))).BuildAgent(); +} +async function getToolRunner(buildAgent, tool) { + const agent = await getAgent(buildAgent); + return new (await (import(`./libs/${tool}.mjs`))).Runner(agent); +} +function parseCliArgs() { + return parseArgs({ options: { + agent: { + type: "string", + short: "a" + }, + tool: { + type: "string", + short: "t" + }, + command: { + type: "string", + short: "c" + } + } }).values; +} +async function run(agent, tool, command) { + return await (await getToolRunner(agent, tool)).run(command); +} +/** +* Returns all indexes of a specified single character within a given string. +* +* Iterates through the `searchString` and collects the zero-based indexes +* where the character `indexOf` appears. Throws an error if `indexOf` is not a single character. +* +* @param searchString - The string to search within. +* @param indexOf - The single character to find in the string. +* @returns An array of indexes where the character appears in the string. +* @throws {Error} If `indexOf` is not a single character. +*/ +function allIndexesOf(searchString, indexOf) { + if (indexOf.length !== 1) throw new Error("indexOf must be a single character"); + const resultArray = []; + for (let i = 0; i < searchString.length; i++) if (searchString[i] === indexOf) resultArray.push(i); + return resultArray; +} +//#endregion +export { run as a, parseCliArgs as i, getAgent as n, getToolRunner as r, allIndexesOf as t }; + +//# sourceMappingURL=lib.mjs.map \ No newline at end of file diff --git a/dist/lib.mjs.map b/dist/lib.mjs.map new file mode 100644 index 000000000..ffd31bfb2 --- /dev/null +++ b/dist/lib.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"lib.mjs","names":[],"sources":["../src/tools/lib.ts"],"sourcesContent":["import { parseArgs } from 'node:util'\n\nimport { type ExecResult, type IBuildAgent } from '@agents/common'\nimport { type IRunner } from '@tools/common'\n\ntype CliArgs = {\n agent: string\n tool: string\n command: string\n}\n\nexport async function getAgent(buildAgent: string | undefined): Promise {\n const agent = `./${buildAgent}/agent.mjs`\n const module = (await import(agent)) as { BuildAgent: new () => IBuildAgent }\n return new module.BuildAgent()\n}\n\nexport async function getToolRunner(buildAgent: string | undefined, tool: string | undefined): Promise {\n const agent = await getAgent(buildAgent)\n const toolRunner = `./libs/${tool}.mjs`\n const module = (await import(toolRunner)) as { Runner: new (buildAgent: IBuildAgent) => IRunner }\n return new module.Runner(agent)\n}\n\nexport function parseCliArgs(): CliArgs {\n return parseArgs({\n options: {\n agent: { type: 'string', short: 'a' },\n tool: { type: 'string', short: 't' },\n command: { type: 'string', short: 'c' }\n }\n }).values as CliArgs\n}\n\nexport async function run(agent: string, tool: string, command: string): Promise {\n const runner = await getToolRunner(agent, tool)\n return await runner.run(command)\n}\n\n/**\n * Returns all indexes of a specified single character within a given string.\n *\n * Iterates through the `searchString` and collects the zero-based indexes\n * where the character `indexOf` appears. Throws an error if `indexOf` is not a single character.\n *\n * @param searchString - The string to search within.\n * @param indexOf - The single character to find in the string.\n * @returns An array of indexes where the character appears in the string.\n * @throws {Error} If `indexOf` is not a single character.\n */\nexport function allIndexesOf(searchString: string, indexOf: string): number[] {\n if (indexOf.length !== 1) {\n throw new Error('indexOf must be a single character')\n }\n\n const resultArray: number[] = []\n\n for (let i = 0; i < searchString.length; i++) {\n if (searchString[i] === indexOf) {\n resultArray.push(i)\n }\n }\n\n return resultArray\n}\n"],"mappings":";;AAWA,eAAsB,SAAS,YAAsD;AAGjF,QAAO,KADS,OAAM,OADR,KAAK,WAAW,eAEZ,YAAY;;AAGlC,eAAsB,cAAc,YAAgC,MAA4C;CAC5G,MAAM,QAAQ,MAAM,SAAS,WAAW;AAGxC,QAAO,KADS,OAAM,OADH,UAAU,KAAK,SAEhB,OAAO,MAAM;;AAGnC,SAAgB,eAAwB;AACpC,QAAO,UAAU,EACb,SAAS;EACL,OAAO;GAAE,MAAM;GAAU,OAAO;GAAK;EACrC,MAAM;GAAE,MAAM;GAAU,OAAO;GAAK;EACpC,SAAS;GAAE,MAAM;GAAU,OAAO;GAAK;EAC1C,EACJ,CAAC,CAAC;;AAGP,eAAsB,IAAI,OAAe,MAAc,SAAsC;AAEzF,QAAO,OADQ,MAAM,cAAc,OAAO,KAAK,EAC3B,IAAI,QAAQ;;;;;;;;;;;;;AAcpC,SAAgB,aAAa,cAAsB,SAA2B;AAC1E,KAAI,QAAQ,WAAW,EACnB,OAAM,IAAI,MAAM,qCAAqC;CAGzD,MAAM,cAAwB,EAAE;AAEhC,MAAK,IAAI,IAAI,GAAG,IAAI,aAAa,QAAQ,IACrC,KAAI,aAAa,OAAO,QACpB,aAAY,KAAK,EAAE;AAI3B,QAAO"} \ No newline at end of file diff --git a/dist/rolldown-runtime.mjs b/dist/rolldown-runtime.mjs new file mode 100644 index 000000000..e6b2f0e3f --- /dev/null +++ b/dist/rolldown-runtime.mjs @@ -0,0 +1,24 @@ +//#region \0rolldown/runtime.js +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __commonJSMin = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports); +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) { + key = keys[i]; + if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { + get: ((k) => from[k]).bind(null, key), + enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable + }); + } + return to; +}; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { + value: mod, + enumerable: true +}) : target, mod)); +//#endregion +export { __toESM as n, __commonJSMin as t }; diff --git a/dist/tools/cli.mjs b/dist/tools/cli.mjs index f03ed6564..7a8f4f24a 100644 --- a/dist/tools/cli.mjs +++ b/dist/tools/cli.mjs @@ -1,5 +1,7 @@ -import { parseCliArgs, run } from './lib.mjs'; - -const { agent, tool, command } = parseCliArgs(); +import { a as run, i as parseCliArgs } from "../lib.mjs"; +//#region src/tools/cli.ts +var { agent, tool, command } = parseCliArgs(); await run(agent, tool, command); -//# sourceMappingURL=cli.mjs.map +//#endregion + +//# sourceMappingURL=cli.mjs.map \ No newline at end of file diff --git a/dist/tools/cli.mjs.map b/dist/tools/cli.mjs.map index 295ca74bd..8efc556cd 100644 --- a/dist/tools/cli.mjs.map +++ b/dist/tools/cli.mjs.map @@ -1 +1 @@ -{"version":3,"file":"cli.mjs","sources":["../../src/tools/cli.ts"],"sourcesContent":["import { parseCliArgs, run } from '@lib'\n\nconst { agent, tool, command } = parseCliArgs()\nawait run(agent, tool, command)\n"],"names":[],"mappings":";;AAEA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAM,OAAA,KAAY,YAAA,EAAa;AAC9C,MAAM,GAAA,CAAI,KAAA,EAAO,IAAA,EAAM,OAAO,CAAA"} \ No newline at end of file +{"version":3,"file":"cli.mjs","names":[],"sources":["../../src/tools/cli.ts"],"sourcesContent":["import { parseCliArgs, run } from '@lib'\n\nconst { agent, tool, command } = parseCliArgs()\nawait run(agent, tool, command)\n"],"mappings":";;AAEA,IAAM,EAAE,OAAO,MAAM,YAAY,cAAc;AAC/C,MAAM,IAAI,OAAO,MAAM,QAAQ"} \ No newline at end of file diff --git a/dist/tools/lib.mjs b/dist/tools/lib.mjs index da9b5d205..c08bd17ea 100644 --- a/dist/tools/lib.mjs +++ b/dist/tools/lib.mjs @@ -1,41 +1,2 @@ -import { parseArgs } from 'node:util'; - -async function getAgent(buildAgent) { - const agent = `./${buildAgent}/agent.mjs`; - const module = await import(agent); - return new module.BuildAgent(); -} -async function getToolRunner(buildAgent, tool) { - const agent = await getAgent(buildAgent); - const toolRunner = `./libs/${tool}.mjs`; - const module = await import(toolRunner); - return new module.Runner(agent); -} -function parseCliArgs() { - return parseArgs({ - options: { - agent: { type: "string", short: "a" }, - tool: { type: "string", short: "t" }, - command: { type: "string", short: "c" } - } - }).values; -} -async function run(agent, tool, command) { - const runner = await getToolRunner(agent, tool); - return await runner.run(command); -} -function allIndexesOf(searchString, indexOf) { - if (indexOf.length !== 1) { - throw new Error("indexOf must be a single character"); - } - const resultArray = []; - for (let i = 0; i < searchString.length; i++) { - if (searchString[i] === indexOf) { - resultArray.push(i); - } - } - return resultArray; -} - +import { a as run, i as parseCliArgs, n as getAgent, r as getToolRunner, t as allIndexesOf } from "../lib.mjs"; export { allIndexesOf, getAgent, getToolRunner, parseCliArgs, run }; -//# sourceMappingURL=lib.mjs.map diff --git a/dist/tools/libs/gitreleasemanager.mjs b/dist/tools/libs/gitreleasemanager.mjs index 736b29f01..42000dc67 100644 --- a/dist/tools/libs/gitreleasemanager.mjs +++ b/dist/tools/libs/gitreleasemanager.mjs @@ -1,260 +1,209 @@ -import * as path from 'path'; -import { S as SettingsProvider, D as DotnetTool, A as ArgumentsBuilder, R as RunnerBase } from './tools.mjs'; -import 'node:crypto'; -import 'node:fs/promises'; -import 'node:os'; -import 'node:path'; -import './semver.mjs'; - -class GitReleaseManagerSettingsProvider extends SettingsProvider { - getCreateSettings() { - const name = this.buildAgent.getInput("name"); - const inputFilePath = this.buildAgent.getInput("inputFilePath"); - const isPreRelease = this.buildAgent.getBooleanInput("isPreRelease"); - const targetcommitish = this.buildAgent.getInput("targetcommitish"); - const assets = this.buildAgent.getListInput("assets"); - const commonSettings = this.getCommonSettings(); - return { - ...commonSettings, - name, - inputFilePath, - isPreRelease, - targetcommitish, - assets - }; - } - getDiscardSettings() { - const commonSettings = this.getCommonSettings(); - return { - ...commonSettings - }; - } - getCloseSettings() { - const commonSettings = this.getCommonSettings(); - return { - ...commonSettings - }; - } - getOpenSettings() { - const commonSettings = this.getCommonSettings(); - return { - ...commonSettings - }; - } - getPublishSettings() { - const commonSettings = this.getCommonSettings(); - return { - ...commonSettings - }; - } - getAddAssetSettings() { - const assets = this.buildAgent.getListInput("assets"); - const commonSettings = this.getCommonSettings(); - return { - ...commonSettings, - assets - }; - } - getCommonSettings() { - const milestone = this.buildAgent.getInput("milestone"); - const repository = this.buildAgent.getInput("repository"); - const token = this.buildAgent.getInput("token"); - const targetDirectory = this.buildAgent.getInput("targetDirectory"); - const logFilePath = this.buildAgent.getInput("logFilePath"); - return { - repository, - token, - targetDirectory, - milestone, - logFilePath - }; - } -} - -class GitReleaseManagerTool extends DotnetTool { - get packageName() { - return "GitReleaseManager.Tool"; - } - get toolName() { - return "dotnet-gitreleasemanager"; - } - get toolPathVariable() { - return "GITRELEASEMANAGER_PATH"; - } - get versionRange() { - return ">=0.19.0 <0.21.0"; - } - get settingsProvider() { - return new GitReleaseManagerSettingsProvider(this.buildAgent); - } - async create() { - const settings = this.settingsProvider.getCreateSettings(); - const args = await this.getCreateArguments(settings); - return await this.executeTool(args); - } - async discard() { - const settings = this.settingsProvider.getDiscardSettings(); - const args = await this.getDiscardArguments(settings); - return await this.executeTool(args); - } - async close() { - const settings = this.settingsProvider.getCloseSettings(); - const args = await this.getCloseArguments(settings); - return await this.executeTool(args); - } - async open() { - const settings = this.settingsProvider.getOpenSettings(); - const args = await this.getOpenArguments(settings); - return await this.executeTool(args); - } - async publish() { - const settings = this.settingsProvider.getPublishSettings(); - const args = await this.getPublishArguments(settings); - return await this.executeTool(args); - } - async addAsset() { - const settings = this.settingsProvider.getAddAssetSettings(); - const args = await this.getAddAssetArguments(settings); - return await this.executeTool(args); - } - async getCommonArguments(settings) { - const builder = new ArgumentsBuilder(); - const [owner, repository] = settings.repository.split("/"); - builder.addKeyValue("owner", owner); - builder.addKeyValue("repository", repository); - builder.addKeyValue("token", settings.token); - settings.targetDirectory = await this.getRepoDir(settings); - builder.addKeyValue("targetDirectory", settings.targetDirectory); - if (settings.logFilePath) { - builder.addKeyValue("logFilePath", settings.logFilePath); - } - return builder.build(); - } - async getCreateArguments(settings) { - const builder = new ArgumentsBuilder().addArgument("create").addArguments(await this.getCommonArguments(settings)); - if (settings.milestone) { - builder.addKeyValue("milestone", settings.milestone); - } - if (settings.name) { - builder.addKeyValue("name", settings.name); - } - if (settings.targetcommitish) { - builder.addKeyValue("targetcommitish", settings.targetcommitish); - } - if (settings.inputFilePath) { - if (await this.buildAgent.fileExists(settings.inputFilePath)) { - builder.addKeyValue("inputFilePath", settings.inputFilePath); - } else { - throw new Error(`GitReleaseManager inputFilePath not found at ${settings.inputFilePath}`); - } - } - if (settings.isPreRelease) { - builder.addFlag("pre"); - } - if (settings.assets && settings.assets.length > 0) { - settings.assets = settings.assets.map((asset) => { - return path.join(settings.targetDirectory, asset); - }); - builder.addKeyValue("assets", settings.assets.join(",")); - } - return builder.build(); - } - async getDiscardArguments(settings) { - const builder = new ArgumentsBuilder().addArgument("discard").addArguments(await this.getCommonArguments(settings)); - if (settings.milestone) { - builder.addKeyValue("milestone", settings.milestone); - } - return builder.build(); - } - async getCloseArguments(settings) { - const builder = new ArgumentsBuilder().addArgument("close").addArguments(await this.getCommonArguments(settings)); - if (settings.milestone) { - builder.addKeyValue("milestone", settings.milestone); - } - return builder.build(); - } - async getOpenArguments(settings) { - const builder = new ArgumentsBuilder().addArgument("open").addArguments(await this.getCommonArguments(settings)); - if (settings.milestone) { - builder.addKeyValue("milestone", settings.milestone); - } - return builder.build(); - } - async getPublishArguments(settings) { - const builder = new ArgumentsBuilder().addArgument("publish").addArguments(await this.getCommonArguments(settings)); - if (settings.milestone) { - builder.addKeyValue("tagName", settings.milestone); - } - return builder.build(); - } - async getAddAssetArguments(settings) { - const builder = new ArgumentsBuilder().addArgument("addasset").addArguments(await this.getCommonArguments(settings)); - if (settings.milestone) { - builder.addKeyValue("tagName", settings.milestone); - } - if (settings.assets && settings.assets.length > 0) { - settings.assets = settings.assets.map((asset) => { - return path.join(settings.targetDirectory, asset); - }); - builder.addKeyValue("assets", settings.assets.join(",")); - } - return builder.build(); - } - async getRepoDir(settings) { - return await this.getRepoPath(settings.targetDirectory); - } -} - -class Runner extends RunnerBase { - constructor(buildAgent) { - super(buildAgent); - this.buildAgent = buildAgent; - this.tool = new GitReleaseManagerTool(this.buildAgent); - } - tool; - async run(command) { - switch (command) { - case "setup": - return await this.setup(); - case "addasset": - return await this.addAsset(); - case "open": - return await this.open(); - case "close": - return await this.close(); - case "create": - return await this.create(); - case "discard": - return await this.discard(); - case "publish": - return await this.publish(); - } - } - async setup() { - return this.safeExecute(async () => { - await this.tool.install(); - return { code: 0 }; - }, "GitReleaseManager setup successfully"); - } - async create() { - return this.safeExecute(async () => await this.tool.create(), "GitReleaseManager created release successfully"); - } - async discard() { - return this.safeExecute(async () => await this.tool.discard(), "GitReleaseManager discarded release successfully"); - } - async close() { - return this.safeExecute(async () => await this.tool.close(), "GitReleaseManager closed release successfully"); - } - async open() { - return this.safeExecute(async () => await this.tool.open(), "GitReleaseManager opened release successfully"); - } - async publish() { - return this.safeExecute(async () => await this.tool.publish(), "GitReleaseManager published release successfully"); - } - async addAsset() { - return this.safeExecute(async () => await this.tool.addAsset(), "GitReleaseManager added assets to release successfully"); - } -} - +import "./semver.mjs"; +import { a as ArgumentsBuilder, i as DotnetTool, r as SettingsProvider, t as RunnerBase } from "./tools.mjs"; +import * as path from "path"; +//#region src/tools/gitreleasemanager/settings.ts +var GitReleaseManagerSettingsProvider = class extends SettingsProvider { + getCreateSettings() { + const name = this.buildAgent.getInput("name"); + const inputFilePath = this.buildAgent.getInput("inputFilePath"); + const isPreRelease = this.buildAgent.getBooleanInput("isPreRelease"); + const targetcommitish = this.buildAgent.getInput("targetcommitish"); + const assets = this.buildAgent.getListInput("assets"); + return { + ...this.getCommonSettings(), + name, + inputFilePath, + isPreRelease, + targetcommitish, + assets + }; + } + getDiscardSettings() { + return { ...this.getCommonSettings() }; + } + getCloseSettings() { + return { ...this.getCommonSettings() }; + } + getOpenSettings() { + return { ...this.getCommonSettings() }; + } + getPublishSettings() { + return { ...this.getCommonSettings() }; + } + getAddAssetSettings() { + const assets = this.buildAgent.getListInput("assets"); + return { + ...this.getCommonSettings(), + assets + }; + } + getCommonSettings() { + const milestone = this.buildAgent.getInput("milestone"); + return { + repository: this.buildAgent.getInput("repository"), + token: this.buildAgent.getInput("token"), + targetDirectory: this.buildAgent.getInput("targetDirectory"), + milestone, + logFilePath: this.buildAgent.getInput("logFilePath") + }; + } +}; +//#endregion +//#region src/tools/gitreleasemanager/tool.ts +var GitReleaseManagerTool = class extends DotnetTool { + get packageName() { + return "GitReleaseManager.Tool"; + } + get toolName() { + return "dotnet-gitreleasemanager"; + } + get toolPathVariable() { + return "GITRELEASEMANAGER_PATH"; + } + get versionRange() { + return ">=0.19.0 <0.21.0"; + } + get settingsProvider() { + return new GitReleaseManagerSettingsProvider(this.buildAgent); + } + async create() { + const settings = this.settingsProvider.getCreateSettings(); + const args = await this.getCreateArguments(settings); + return await this.executeTool(args); + } + async discard() { + const settings = this.settingsProvider.getDiscardSettings(); + const args = await this.getDiscardArguments(settings); + return await this.executeTool(args); + } + async close() { + const settings = this.settingsProvider.getCloseSettings(); + const args = await this.getCloseArguments(settings); + return await this.executeTool(args); + } + async open() { + const settings = this.settingsProvider.getOpenSettings(); + const args = await this.getOpenArguments(settings); + return await this.executeTool(args); + } + async publish() { + const settings = this.settingsProvider.getPublishSettings(); + const args = await this.getPublishArguments(settings); + return await this.executeTool(args); + } + async addAsset() { + const settings = this.settingsProvider.getAddAssetSettings(); + const args = await this.getAddAssetArguments(settings); + return await this.executeTool(args); + } + async getCommonArguments(settings) { + const builder = new ArgumentsBuilder(); + const [owner, repository] = settings.repository.split("/"); + builder.addKeyValue("owner", owner); + builder.addKeyValue("repository", repository); + builder.addKeyValue("token", settings.token); + settings.targetDirectory = await this.getRepoDir(settings); + builder.addKeyValue("targetDirectory", settings.targetDirectory); + if (settings.logFilePath) builder.addKeyValue("logFilePath", settings.logFilePath); + return builder.build(); + } + async getCreateArguments(settings) { + const builder = new ArgumentsBuilder().addArgument("create").addArguments(await this.getCommonArguments(settings)); + if (settings.milestone) builder.addKeyValue("milestone", settings.milestone); + if (settings.name) builder.addKeyValue("name", settings.name); + if (settings.targetcommitish) builder.addKeyValue("targetcommitish", settings.targetcommitish); + if (settings.inputFilePath) if (await this.buildAgent.fileExists(settings.inputFilePath)) builder.addKeyValue("inputFilePath", settings.inputFilePath); + else throw new Error(`GitReleaseManager inputFilePath not found at ${settings.inputFilePath}`); + if (settings.isPreRelease) builder.addFlag("pre"); + if (settings.assets && settings.assets.length > 0) { + settings.assets = settings.assets.map((asset) => { + return path.join(settings.targetDirectory, asset); + }); + builder.addKeyValue("assets", settings.assets.join(",")); + } + return builder.build(); + } + async getDiscardArguments(settings) { + const builder = new ArgumentsBuilder().addArgument("discard").addArguments(await this.getCommonArguments(settings)); + if (settings.milestone) builder.addKeyValue("milestone", settings.milestone); + return builder.build(); + } + async getCloseArguments(settings) { + const builder = new ArgumentsBuilder().addArgument("close").addArguments(await this.getCommonArguments(settings)); + if (settings.milestone) builder.addKeyValue("milestone", settings.milestone); + return builder.build(); + } + async getOpenArguments(settings) { + const builder = new ArgumentsBuilder().addArgument("open").addArguments(await this.getCommonArguments(settings)); + if (settings.milestone) builder.addKeyValue("milestone", settings.milestone); + return builder.build(); + } + async getPublishArguments(settings) { + const builder = new ArgumentsBuilder().addArgument("publish").addArguments(await this.getCommonArguments(settings)); + if (settings.milestone) builder.addKeyValue("tagName", settings.milestone); + return builder.build(); + } + async getAddAssetArguments(settings) { + const builder = new ArgumentsBuilder().addArgument("addasset").addArguments(await this.getCommonArguments(settings)); + if (settings.milestone) builder.addKeyValue("tagName", settings.milestone); + if (settings.assets && settings.assets.length > 0) { + settings.assets = settings.assets.map((asset) => { + return path.join(settings.targetDirectory, asset); + }); + builder.addKeyValue("assets", settings.assets.join(",")); + } + return builder.build(); + } + async getRepoDir(settings) { + return await this.getRepoPath(settings.targetDirectory); + } +}; +//#endregion +//#region src/tools/gitreleasemanager/runner.ts +var Runner = class extends RunnerBase { + tool; + constructor(buildAgent) { + super(buildAgent); + this.buildAgent = buildAgent; + this.tool = new GitReleaseManagerTool(this.buildAgent); + } + async run(command) { + switch (command) { + case "setup": return await this.setup(); + case "addasset": return await this.addAsset(); + case "open": return await this.open(); + case "close": return await this.close(); + case "create": return await this.create(); + case "discard": return await this.discard(); + case "publish": return await this.publish(); + } + } + async setup() { + return this.safeExecute(async () => { + await this.tool.install(); + return { code: 0 }; + }, "GitReleaseManager setup successfully"); + } + async create() { + return this.safeExecute(async () => await this.tool.create(), "GitReleaseManager created release successfully"); + } + async discard() { + return this.safeExecute(async () => await this.tool.discard(), "GitReleaseManager discarded release successfully"); + } + async close() { + return this.safeExecute(async () => await this.tool.close(), "GitReleaseManager closed release successfully"); + } + async open() { + return this.safeExecute(async () => await this.tool.open(), "GitReleaseManager opened release successfully"); + } + async publish() { + return this.safeExecute(async () => await this.tool.publish(), "GitReleaseManager published release successfully"); + } + async addAsset() { + return this.safeExecute(async () => await this.tool.addAsset(), "GitReleaseManager added assets to release successfully"); + } +}; +//#endregion export { Runner }; -//# sourceMappingURL=gitreleasemanager.mjs.map + +//# sourceMappingURL=gitreleasemanager.mjs.map \ No newline at end of file diff --git a/dist/tools/libs/gitreleasemanager.mjs.map b/dist/tools/libs/gitreleasemanager.mjs.map index 542b48503..7dc3d8c72 100644 --- a/dist/tools/libs/gitreleasemanager.mjs.map +++ b/dist/tools/libs/gitreleasemanager.mjs.map @@ -1 +1 @@ -{"version":3,"file":"gitreleasemanager.mjs","sources":["../../../src/tools/gitreleasemanager/settings.ts","../../../src/tools/gitreleasemanager/tool.ts","../../../src/tools/gitreleasemanager/runner.ts"],"sourcesContent":["import { type ISettingsProvider, SettingsProvider } from '@tools/common'\nimport {\n type AddAssetSettings,\n type CloseSettings,\n type CreateSettings,\n type DiscardSettings,\n type OpenSettings,\n type PublishSettings,\n type CommonSettings\n} from './models'\nexport interface IGitReleaseManagerSettingsProvider extends ISettingsProvider {\n getCreateSettings(): CreateSettings\n\n getDiscardSettings(): DiscardSettings\n\n getCloseSettings(): CloseSettings\n\n getOpenSettings(): OpenSettings\n\n getPublishSettings(): PublishSettings\n\n getAddAssetSettings(): AddAssetSettings\n\n getCommonSettings(): CommonSettings\n}\n\nexport class GitReleaseManagerSettingsProvider extends SettingsProvider implements IGitReleaseManagerSettingsProvider {\n getCreateSettings(): CreateSettings {\n const name = this.buildAgent.getInput('name')\n const inputFilePath = this.buildAgent.getInput('inputFilePath')\n const isPreRelease = this.buildAgent.getBooleanInput('isPreRelease')\n const targetcommitish = this.buildAgent.getInput('targetcommitish')\n const assets = this.buildAgent.getListInput('assets')\n\n const commonSettings = this.getCommonSettings()\n return {\n ...commonSettings,\n name,\n inputFilePath,\n isPreRelease,\n targetcommitish,\n assets\n }\n }\n\n getDiscardSettings(): DiscardSettings {\n const commonSettings = this.getCommonSettings()\n return {\n ...commonSettings\n }\n }\n\n getCloseSettings(): CloseSettings {\n const commonSettings = this.getCommonSettings()\n return {\n ...commonSettings\n }\n }\n\n getOpenSettings(): OpenSettings {\n const commonSettings = this.getCommonSettings()\n return {\n ...commonSettings\n }\n }\n\n getPublishSettings(): PublishSettings {\n const commonSettings = this.getCommonSettings()\n return {\n ...commonSettings\n }\n }\n\n getAddAssetSettings(): AddAssetSettings {\n const assets = this.buildAgent.getListInput('assets')\n\n const commonSettings = this.getCommonSettings()\n return {\n ...commonSettings,\n assets\n }\n }\n\n getCommonSettings(): CommonSettings {\n const milestone = this.buildAgent.getInput('milestone')\n const repository = this.buildAgent.getInput('repository')\n const token = this.buildAgent.getInput('token')\n const targetDirectory = this.buildAgent.getInput('targetDirectory')\n const logFilePath = this.buildAgent.getInput('logFilePath')\n\n return {\n repository,\n token,\n targetDirectory,\n milestone,\n logFilePath\n }\n }\n}\n","import * as path from 'path'\n\nimport { ArgumentsBuilder, DotnetTool } from '@tools/common'\nimport { type ExecResult } from '@agents/common'\n\nimport {\n type AddAssetSettings,\n type CloseSettings,\n type CreateSettings,\n type DiscardSettings,\n type OpenSettings,\n type PublishSettings,\n type CommonSettings\n} from './models'\nimport { GitReleaseManagerSettingsProvider, IGitReleaseManagerSettingsProvider } from './settings'\n\nexport class GitReleaseManagerTool extends DotnetTool {\n get packageName(): string {\n return 'GitReleaseManager.Tool'\n }\n\n get toolName(): string {\n return 'dotnet-gitreleasemanager'\n }\n\n get toolPathVariable(): string {\n return 'GITRELEASEMANAGER_PATH'\n }\n\n get versionRange(): string | null {\n return '>=0.19.0 <0.21.0'\n }\n\n get settingsProvider(): IGitReleaseManagerSettingsProvider {\n return new GitReleaseManagerSettingsProvider(this.buildAgent)\n }\n\n async create(): Promise {\n const settings = this.settingsProvider.getCreateSettings()\n const args = await this.getCreateArguments(settings)\n\n return await this.executeTool(args)\n }\n\n async discard(): Promise {\n const settings = this.settingsProvider.getDiscardSettings()\n const args = await this.getDiscardArguments(settings)\n\n return await this.executeTool(args)\n }\n\n async close(): Promise {\n const settings = this.settingsProvider.getCloseSettings()\n const args = await this.getCloseArguments(settings)\n\n return await this.executeTool(args)\n }\n\n async open(): Promise {\n const settings = this.settingsProvider.getOpenSettings()\n const args = await this.getOpenArguments(settings)\n\n return await this.executeTool(args)\n }\n\n async publish(): Promise {\n const settings = this.settingsProvider.getPublishSettings()\n const args = await this.getPublishArguments(settings)\n\n return await this.executeTool(args)\n }\n\n async addAsset(): Promise {\n const settings = this.settingsProvider.getAddAssetSettings()\n const args = await this.getAddAssetArguments(settings)\n\n return await this.executeTool(args)\n }\n\n protected async getCommonArguments(settings: CommonSettings): Promise {\n const builder = new ArgumentsBuilder()\n\n const [owner, repository] = settings.repository.split('/') // this is the github repository\n builder.addKeyValue('owner', owner)\n builder.addKeyValue('repository', repository)\n builder.addKeyValue('token', settings.token)\n\n settings.targetDirectory = await this.getRepoDir(settings)\n\n builder.addKeyValue('targetDirectory', settings.targetDirectory)\n\n if (settings.logFilePath) {\n builder.addKeyValue('logFilePath', settings.logFilePath)\n }\n\n return builder.build()\n }\n\n protected async getCreateArguments(settings: CreateSettings): Promise {\n const builder = new ArgumentsBuilder().addArgument('create').addArguments(await this.getCommonArguments(settings))\n\n if (settings.milestone) {\n builder.addKeyValue('milestone', settings.milestone)\n }\n if (settings.name) {\n builder.addKeyValue('name', settings.name)\n }\n if (settings.targetcommitish) {\n builder.addKeyValue('targetcommitish', settings.targetcommitish)\n }\n\n if (settings.inputFilePath) {\n if (await this.buildAgent.fileExists(settings.inputFilePath)) {\n builder.addKeyValue('inputFilePath', settings.inputFilePath)\n } else {\n throw new Error(`GitReleaseManager inputFilePath not found at ${settings.inputFilePath}`)\n }\n }\n if (settings.isPreRelease) {\n builder.addFlag('pre')\n }\n if (settings.assets && settings.assets.length > 0) {\n settings.assets = settings.assets.map(asset => {\n return path.join(settings.targetDirectory, asset)\n })\n\n builder.addKeyValue('assets', settings.assets.join(','))\n }\n\n return builder.build()\n }\n\n protected async getDiscardArguments(settings: DiscardSettings): Promise {\n const builder = new ArgumentsBuilder().addArgument('discard').addArguments(await this.getCommonArguments(settings))\n\n if (settings.milestone) {\n builder.addKeyValue('milestone', settings.milestone)\n }\n\n return builder.build()\n }\n\n protected async getCloseArguments(settings: CloseSettings): Promise {\n const builder = new ArgumentsBuilder().addArgument('close').addArguments(await this.getCommonArguments(settings))\n\n if (settings.milestone) {\n builder.addKeyValue('milestone', settings.milestone)\n }\n\n return builder.build()\n }\n\n protected async getOpenArguments(settings: OpenSettings): Promise {\n const builder = new ArgumentsBuilder().addArgument('open').addArguments(await this.getCommonArguments(settings))\n\n if (settings.milestone) {\n builder.addKeyValue('milestone', settings.milestone)\n }\n\n return builder.build()\n }\n\n protected async getPublishArguments(settings: PublishSettings): Promise {\n const builder = new ArgumentsBuilder().addArgument('publish').addArguments(await this.getCommonArguments(settings))\n\n if (settings.milestone) {\n builder.addKeyValue('tagName', settings.milestone)\n }\n\n return builder.build()\n }\n\n protected async getAddAssetArguments(settings: AddAssetSettings): Promise {\n const builder = new ArgumentsBuilder().addArgument('addasset').addArguments(await this.getCommonArguments(settings))\n\n if (settings.milestone) {\n builder.addKeyValue('tagName', settings.milestone)\n }\n if (settings.assets && settings.assets.length > 0) {\n settings.assets = settings.assets.map(asset => {\n return path.join(settings.targetDirectory, asset)\n })\n\n builder.addKeyValue('assets', settings.assets.join(','))\n }\n\n return builder.build()\n }\n\n protected async getRepoDir(settings: CommonSettings): Promise {\n return await this.getRepoPath(settings.targetDirectory)\n }\n}\n","import { type ExecResult, type IBuildAgent } from '@agents/common'\nimport { type Commands } from './models'\nimport { GitReleaseManagerTool } from './tool'\nimport { RunnerBase } from '../common/runner'\n\nexport class Runner extends RunnerBase {\n protected readonly tool: GitReleaseManagerTool\n\n constructor(protected readonly buildAgent: IBuildAgent) {\n super(buildAgent)\n this.tool = new GitReleaseManagerTool(this.buildAgent)\n }\n\n async run(command: Commands): Promise {\n switch (command) {\n case 'setup':\n return await this.setup()\n case 'addasset':\n return await this.addAsset()\n case 'open':\n return await this.open()\n case 'close':\n return await this.close()\n case 'create':\n return await this.create()\n case 'discard':\n return await this.discard()\n case 'publish':\n return await this.publish()\n }\n }\n\n private async setup(): Promise {\n return this.safeExecute(async () => {\n await this.tool.install()\n return { code: 0 }\n }, 'GitReleaseManager setup successfully')\n }\n\n private async create(): Promise {\n return this.safeExecute(async () => await this.tool.create(), 'GitReleaseManager created release successfully')\n }\n\n private async discard(): Promise {\n return this.safeExecute(async () => await this.tool.discard(), 'GitReleaseManager discarded release successfully')\n }\n\n private async close(): Promise {\n return this.safeExecute(async () => await this.tool.close(), 'GitReleaseManager closed release successfully')\n }\n\n private async open(): Promise {\n return this.safeExecute(async () => await this.tool.open(), 'GitReleaseManager opened release successfully')\n }\n\n private async publish(): Promise {\n return this.safeExecute(async () => await this.tool.publish(), 'GitReleaseManager published release successfully')\n }\n\n private async addAsset(): Promise {\n return this.safeExecute(async () => await this.tool.addAsset(), 'GitReleaseManager added assets to release successfully')\n }\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"gitreleasemanager.mjs","names":[],"sources":["../../../src/tools/gitreleasemanager/settings.ts","../../../src/tools/gitreleasemanager/tool.ts","../../../src/tools/gitreleasemanager/runner.ts"],"sourcesContent":["import { type ISettingsProvider, SettingsProvider } from '@tools/common'\nimport {\n type AddAssetSettings,\n type CloseSettings,\n type CreateSettings,\n type DiscardSettings,\n type OpenSettings,\n type PublishSettings,\n type CommonSettings\n} from './models'\nexport interface IGitReleaseManagerSettingsProvider extends ISettingsProvider {\n getCreateSettings(): CreateSettings\n\n getDiscardSettings(): DiscardSettings\n\n getCloseSettings(): CloseSettings\n\n getOpenSettings(): OpenSettings\n\n getPublishSettings(): PublishSettings\n\n getAddAssetSettings(): AddAssetSettings\n\n getCommonSettings(): CommonSettings\n}\n\nexport class GitReleaseManagerSettingsProvider extends SettingsProvider implements IGitReleaseManagerSettingsProvider {\n getCreateSettings(): CreateSettings {\n const name = this.buildAgent.getInput('name')\n const inputFilePath = this.buildAgent.getInput('inputFilePath')\n const isPreRelease = this.buildAgent.getBooleanInput('isPreRelease')\n const targetcommitish = this.buildAgent.getInput('targetcommitish')\n const assets = this.buildAgent.getListInput('assets')\n\n const commonSettings = this.getCommonSettings()\n return {\n ...commonSettings,\n name,\n inputFilePath,\n isPreRelease,\n targetcommitish,\n assets\n }\n }\n\n getDiscardSettings(): DiscardSettings {\n const commonSettings = this.getCommonSettings()\n return {\n ...commonSettings\n }\n }\n\n getCloseSettings(): CloseSettings {\n const commonSettings = this.getCommonSettings()\n return {\n ...commonSettings\n }\n }\n\n getOpenSettings(): OpenSettings {\n const commonSettings = this.getCommonSettings()\n return {\n ...commonSettings\n }\n }\n\n getPublishSettings(): PublishSettings {\n const commonSettings = this.getCommonSettings()\n return {\n ...commonSettings\n }\n }\n\n getAddAssetSettings(): AddAssetSettings {\n const assets = this.buildAgent.getListInput('assets')\n\n const commonSettings = this.getCommonSettings()\n return {\n ...commonSettings,\n assets\n }\n }\n\n getCommonSettings(): CommonSettings {\n const milestone = this.buildAgent.getInput('milestone')\n const repository = this.buildAgent.getInput('repository')\n const token = this.buildAgent.getInput('token')\n const targetDirectory = this.buildAgent.getInput('targetDirectory')\n const logFilePath = this.buildAgent.getInput('logFilePath')\n\n return {\n repository,\n token,\n targetDirectory,\n milestone,\n logFilePath\n }\n }\n}\n","import * as path from 'path'\n\nimport { ArgumentsBuilder, DotnetTool } from '@tools/common'\nimport { type ExecResult } from '@agents/common'\n\nimport {\n type AddAssetSettings,\n type CloseSettings,\n type CreateSettings,\n type DiscardSettings,\n type OpenSettings,\n type PublishSettings,\n type CommonSettings\n} from './models'\nimport { GitReleaseManagerSettingsProvider, IGitReleaseManagerSettingsProvider } from './settings'\n\nexport class GitReleaseManagerTool extends DotnetTool {\n get packageName(): string {\n return 'GitReleaseManager.Tool'\n }\n\n get toolName(): string {\n return 'dotnet-gitreleasemanager'\n }\n\n get toolPathVariable(): string {\n return 'GITRELEASEMANAGER_PATH'\n }\n\n get versionRange(): string | null {\n return '>=0.19.0 <0.21.0'\n }\n\n get settingsProvider(): IGitReleaseManagerSettingsProvider {\n return new GitReleaseManagerSettingsProvider(this.buildAgent)\n }\n\n async create(): Promise {\n const settings = this.settingsProvider.getCreateSettings()\n const args = await this.getCreateArguments(settings)\n\n return await this.executeTool(args)\n }\n\n async discard(): Promise {\n const settings = this.settingsProvider.getDiscardSettings()\n const args = await this.getDiscardArguments(settings)\n\n return await this.executeTool(args)\n }\n\n async close(): Promise {\n const settings = this.settingsProvider.getCloseSettings()\n const args = await this.getCloseArguments(settings)\n\n return await this.executeTool(args)\n }\n\n async open(): Promise {\n const settings = this.settingsProvider.getOpenSettings()\n const args = await this.getOpenArguments(settings)\n\n return await this.executeTool(args)\n }\n\n async publish(): Promise {\n const settings = this.settingsProvider.getPublishSettings()\n const args = await this.getPublishArguments(settings)\n\n return await this.executeTool(args)\n }\n\n async addAsset(): Promise {\n const settings = this.settingsProvider.getAddAssetSettings()\n const args = await this.getAddAssetArguments(settings)\n\n return await this.executeTool(args)\n }\n\n protected async getCommonArguments(settings: CommonSettings): Promise {\n const builder = new ArgumentsBuilder()\n\n const [owner, repository] = settings.repository.split('/') // this is the github repository\n builder.addKeyValue('owner', owner)\n builder.addKeyValue('repository', repository)\n builder.addKeyValue('token', settings.token)\n\n settings.targetDirectory = await this.getRepoDir(settings)\n\n builder.addKeyValue('targetDirectory', settings.targetDirectory)\n\n if (settings.logFilePath) {\n builder.addKeyValue('logFilePath', settings.logFilePath)\n }\n\n return builder.build()\n }\n\n protected async getCreateArguments(settings: CreateSettings): Promise {\n const builder = new ArgumentsBuilder().addArgument('create').addArguments(await this.getCommonArguments(settings))\n\n if (settings.milestone) {\n builder.addKeyValue('milestone', settings.milestone)\n }\n if (settings.name) {\n builder.addKeyValue('name', settings.name)\n }\n if (settings.targetcommitish) {\n builder.addKeyValue('targetcommitish', settings.targetcommitish)\n }\n\n if (settings.inputFilePath) {\n if (await this.buildAgent.fileExists(settings.inputFilePath)) {\n builder.addKeyValue('inputFilePath', settings.inputFilePath)\n } else {\n throw new Error(`GitReleaseManager inputFilePath not found at ${settings.inputFilePath}`)\n }\n }\n if (settings.isPreRelease) {\n builder.addFlag('pre')\n }\n if (settings.assets && settings.assets.length > 0) {\n settings.assets = settings.assets.map(asset => {\n return path.join(settings.targetDirectory, asset)\n })\n\n builder.addKeyValue('assets', settings.assets.join(','))\n }\n\n return builder.build()\n }\n\n protected async getDiscardArguments(settings: DiscardSettings): Promise {\n const builder = new ArgumentsBuilder().addArgument('discard').addArguments(await this.getCommonArguments(settings))\n\n if (settings.milestone) {\n builder.addKeyValue('milestone', settings.milestone)\n }\n\n return builder.build()\n }\n\n protected async getCloseArguments(settings: CloseSettings): Promise {\n const builder = new ArgumentsBuilder().addArgument('close').addArguments(await this.getCommonArguments(settings))\n\n if (settings.milestone) {\n builder.addKeyValue('milestone', settings.milestone)\n }\n\n return builder.build()\n }\n\n protected async getOpenArguments(settings: OpenSettings): Promise {\n const builder = new ArgumentsBuilder().addArgument('open').addArguments(await this.getCommonArguments(settings))\n\n if (settings.milestone) {\n builder.addKeyValue('milestone', settings.milestone)\n }\n\n return builder.build()\n }\n\n protected async getPublishArguments(settings: PublishSettings): Promise {\n const builder = new ArgumentsBuilder().addArgument('publish').addArguments(await this.getCommonArguments(settings))\n\n if (settings.milestone) {\n builder.addKeyValue('tagName', settings.milestone)\n }\n\n return builder.build()\n }\n\n protected async getAddAssetArguments(settings: AddAssetSettings): Promise {\n const builder = new ArgumentsBuilder().addArgument('addasset').addArguments(await this.getCommonArguments(settings))\n\n if (settings.milestone) {\n builder.addKeyValue('tagName', settings.milestone)\n }\n if (settings.assets && settings.assets.length > 0) {\n settings.assets = settings.assets.map(asset => {\n return path.join(settings.targetDirectory, asset)\n })\n\n builder.addKeyValue('assets', settings.assets.join(','))\n }\n\n return builder.build()\n }\n\n protected async getRepoDir(settings: CommonSettings): Promise {\n return await this.getRepoPath(settings.targetDirectory)\n }\n}\n","import { type ExecResult, type IBuildAgent } from '@agents/common'\nimport { type Commands } from './models'\nimport { GitReleaseManagerTool } from './tool'\nimport { RunnerBase } from '../common/runner'\n\nexport class Runner extends RunnerBase {\n protected readonly tool: GitReleaseManagerTool\n\n constructor(protected readonly buildAgent: IBuildAgent) {\n super(buildAgent)\n this.tool = new GitReleaseManagerTool(this.buildAgent)\n }\n\n async run(command: Commands): Promise {\n switch (command) {\n case 'setup':\n return await this.setup()\n case 'addasset':\n return await this.addAsset()\n case 'open':\n return await this.open()\n case 'close':\n return await this.close()\n case 'create':\n return await this.create()\n case 'discard':\n return await this.discard()\n case 'publish':\n return await this.publish()\n }\n }\n\n private async setup(): Promise {\n return this.safeExecute(async () => {\n await this.tool.install()\n return { code: 0 }\n }, 'GitReleaseManager setup successfully')\n }\n\n private async create(): Promise {\n return this.safeExecute(async () => await this.tool.create(), 'GitReleaseManager created release successfully')\n }\n\n private async discard(): Promise {\n return this.safeExecute(async () => await this.tool.discard(), 'GitReleaseManager discarded release successfully')\n }\n\n private async close(): Promise {\n return this.safeExecute(async () => await this.tool.close(), 'GitReleaseManager closed release successfully')\n }\n\n private async open(): Promise {\n return this.safeExecute(async () => await this.tool.open(), 'GitReleaseManager opened release successfully')\n }\n\n private async publish(): Promise {\n return this.safeExecute(async () => await this.tool.publish(), 'GitReleaseManager published release successfully')\n }\n\n private async addAsset(): Promise {\n return this.safeExecute(async () => await this.tool.addAsset(), 'GitReleaseManager added assets to release successfully')\n }\n}\n"],"mappings":"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"} \ No newline at end of file diff --git a/dist/tools/libs/gitversion.mjs b/dist/tools/libs/gitversion.mjs index f48584d85..a7d9f650a 100644 --- a/dist/tools/libs/gitversion.mjs +++ b/dist/tools/libs/gitversion.mjs @@ -1,312 +1,252 @@ -import * as path from 'node:path'; -import * as fs from 'node:fs/promises'; -import * as crypto from 'node:crypto'; -import { S as SettingsProvider, D as DotnetTool, k as keysOf, A as ArgumentsBuilder, R as RunnerBase } from './tools.mjs'; -import 'node:os'; -import './semver.mjs'; -import { allIndexesOf } from '../lib.mjs'; - -class GitVersionSettingsProvider extends SettingsProvider { - getExecuteSettings() { - const targetPath = this.buildAgent.getInput("targetPath"); - const disableCache = this.buildAgent.getBooleanInput("disableCache"); - const disableNormalization = this.buildAgent.getBooleanInput("disableNormalization"); - const disableShallowCloneCheck = this.buildAgent.getBooleanInput("disableShallowCloneCheck"); - const configFilePath = this.buildAgent.getInput("configFilePath", false); - const overrideConfig = this.buildAgent.getListInput("overrideConfig", false); - const updateAssemblyInfo = this.buildAgent.getBooleanInput("updateAssemblyInfo"); - const updateAssemblyInfoFilename = this.buildAgent.getInput("updateAssemblyInfoFilename"); - const updateProjectFiles = this.buildAgent.getBooleanInput("updateProjectFiles"); - const buildNumberFormat = this.buildAgent.getInput("buildNumberFormat", false); - return { - targetPath, - disableCache, - disableNormalization, - disableShallowCloneCheck, - configFilePath, - overrideConfig, - updateAssemblyInfo, - updateAssemblyInfoFilename, - updateProjectFiles, - buildNumberFormat - }; - } - getCommandSettings() { - const targetPath = this.buildAgent.getInput("targetPath"); - const disableShallowCloneCheck = this.buildAgent.getBooleanInput("disableShallowCloneCheck"); - const args = this.buildAgent.getInput("arguments"); - return { - targetPath, - disableShallowCloneCheck, - arguments: args - }; - } -} - -class GitVersionTool extends DotnetTool { - get packageName() { - return "GitVersion.Tool"; - } - get toolName() { - return "dotnet-gitversion"; - } - get toolPathVariable() { - return "GITVERSION_PATH"; - } - get versionRange() { - return ">=6.1.0 <7.0.0"; - } - get settingsProvider() { - return new GitVersionSettingsProvider(this.buildAgent); - } - async executeJson() { - const settings = this.settingsProvider.getExecuteSettings(); - const workDir = await this.getRepoDir(settings); - await this.checkShallowClone(settings, workDir); - const outputFile = path.join(this.buildAgent.tempDir, `gitversion-${crypto.randomUUID()}.json`); - this.buildAgent.debug(`Writing GitVersion variables to file: ${outputFile}`); - const args = await this.getExecuteArguments(workDir, settings, outputFile); - await this.setDotnetRoot(); - const result = await this.executeTool(args); - return { ...result, outputFile }; - } - async executeCommand() { - const settings = this.settingsProvider.getCommandSettings(); - const workDir = await this.getRepoDir(settings); - await this.checkShallowClone(settings, workDir); - const args = this.getCommandArguments(workDir, settings); - await this.setDotnetRoot(); - return await this.executeTool(args); - } - writeGitVersionToAgent(output) { - for (const property of keysOf(output)) { - const name = this.toCamelCase(property); - try { - let value = output[property]?.toString(); - if (value === "0") { - value = "0"; - } - this.buildAgent.setOutput(name, value); - this.buildAgent.setOutput(`GitVersion_${property}`, value); - this.buildAgent.setVariable(name, value); - this.buildAgent.setVariable(`GitVersion_${property}`, value); - } catch (_error) { - this.buildAgent.error(`Unable to set output/variable for ${property}`); - } - } - } - updateBuildNumber() { - const settings = this.settingsProvider.getExecuteSettings(); - if (settings.buildNumberFormat) { - const buildNumber = this.buildAgent.getExpandedString(settings.buildNumberFormat); - this.buildAgent.updateBuildNumber(buildNumber); - } else { - this.buildAgent.debug("No buildNumberFormat provided. Skipping build number update."); - } - } - async getRepoDir(settings) { - return await super.getRepoPath(settings.targetPath); - } - async getExecuteArguments(workDir, options, outputFile) { - const builder = new ArgumentsBuilder().addArgument(workDir); - if (outputFile) { - builder.addArgument("/output").addArgument("file").addArgument("/outputfile").addArgument(outputFile); - } else { - builder.addArgument("/output").addArgument("json"); - } - builder.addArgument("/l").addArgument("console"); - const { - disableCache, - disableNormalization, - configFilePath, - overrideConfig, - updateAssemblyInfo, - updateAssemblyInfoFilename, - updateProjectFiles - // - } = options; - if (disableCache) { - builder.addArgument("/nocache"); - } - if (disableNormalization) { - builder.addArgument("/nonormalize"); - } - if (configFilePath) { - if (await this.isValidInputFile(workDir, configFilePath)) { - builder.addArgument("/config").addArgument(configFilePath); - } else { - throw new Error(`GitVersion configuration file not found at ${configFilePath}`); - } - } - if (overrideConfig) { - for (let config of overrideConfig) { - config = config.trim(); - if (config.match(/([a-zA-Z0-9]+(-[a-zA-Z]+)*=[a-zA-Z0-9\- :.']*)/)) { - builder.addArgument("/overrideconfig").addArgument(config); - } - } - } - if (updateAssemblyInfo) { - builder.addArgument("/updateassemblyinfo"); - if (updateAssemblyInfoFilename) { - if (await this.isValidInputFile(workDir, updateAssemblyInfoFilename)) { - builder.addArgument(updateAssemblyInfoFilename); - } else { - throw new Error(`AssemblyInfoFilename file not found at ${updateAssemblyInfoFilename}`); - } - } - } - if (updateProjectFiles) { - builder.addArgument("/updateprojectfiles"); - } - return builder.build(); - } - getCommandArguments(workDir, options) { - const builder = new ArgumentsBuilder().addArgument(workDir); - if (options.arguments) { - builder.addArguments(ArgumentsBuilder.parseArgumentString(options.arguments)); - } - return builder.build(); - } - async checkShallowClone(settings, workDir) { - if (!settings.disableShallowCloneCheck) { - const isShallowResult = await this.execute("git", ["-C", workDir, "rev-parse", "--is-shallow-repository"]); - if (isShallowResult.code === 0 && isShallowResult.stdout?.trim() === "true") { - throw new Error( - "The repository is shallow. Consider disabling shallow clones. See https://github.com/GitTools/actions/blob/main/docs/cloning.md for more information." - ); - } - } - } - async readGitVersionOutput(outputFile) { - const content = await fs.readFile(outputFile, "utf8"); - const output = JSON.parse(content); - await fs.unlink(outputFile).catch(() => { - }); - return output; - } - toCamelCase(input) { - return input.replace(/^\w|[A-Z]|\b\w|\s+/g, function(match, index) { - if (+match === 0) return ""; - return index === 0 ? match.toLowerCase() : match.toUpperCase(); - }); - } -} - -class Runner extends RunnerBase { - constructor(buildAgent) { - super(buildAgent); - this.buildAgent = buildAgent; - this.tool = new GitVersionTool(this.buildAgent); - } - tool; - async run(command) { - switch (command) { - case "setup": - return await this.setup(); - case "execute": - return await this.execute(); - case "command": - return await this.command(); - } - } - async setup() { - return this.safeExecute(async () => { - await this.tool.install(); - return { code: 0 }; - }, "GitVersion setup successfully"); - } - async execute() { - return this.safeExecute(async () => { - const result = await this.tool.executeJson(); - return await this.processGitVersionOutput(result); - }, "GitVersion executed successfully"); - } - async command() { - return this.safeExecute(async () => await this.tool.executeCommand(), "GitVersion executed successfully"); - } - async processGitVersionOutput(result) { - this.buildAgent.debug("Processing GitVersion output"); - if (result.code !== 0) { - return result; - } - let gitVersionOutput; - if (result.outputFile) { - this.buildAgent.debug(`Reading GitVersion variables from file: ${result.outputFile}`); - try { - gitVersionOutput = await this.tool.readGitVersionOutput(result.outputFile); - } catch (error) { - return this.handleOutputError(`Failed to read or parse GitVersion variables file: ${this.getErrorMessage(error)}`); - } - } else { - this.buildAgent.debug("Parsing GitVersion output from stdout"); - const stdout = result.stdout; - gitVersionOutput = this.extractGitVersionOutput(stdout); - } - if (gitVersionOutput === null) { - return this.handleOutputError("GitVersion output is not valid JSON, see output details"); - } - this.tool.writeGitVersionToAgent(gitVersionOutput); - this.tool.updateBuildNumber(); - this.buildAgent.setSucceeded("GitVersion executed successfully", true); - return result; - } - getErrorMessage(error) { - return error instanceof Error ? error.message : String(error); - } - handleOutputError(message) { - this.buildAgent.debug(message); - this.buildAgent.setFailed(message, true); - return { - code: -1, - error: new Error(message) - }; - } - /** - * Attempts to extract and parse a JSON object representing `GitVersionOutput` from the given input string. - * The method assumes the last closing curly brace (`}`) in the input belongs to the end of the JSON object, - * and iteratively expands the search area backwards from each opening curly brace (`{`) until a valid JSON object is found. - * If parsing fails, it logs debug information and continues searching until all possible start positions are exhausted. - * - * @param input - The string containing the potential JSON output from GitVersion. - * @returns The parsed `GitVersionOutput` object if extraction and parsing succeed; otherwise, `null`. - */ - extractGitVersionOutput(input) { - const allStartOfJsonIndexes = allIndexesOf(input, "{"); - const endOfJsonIndex = input.lastIndexOf("}") + 1; - if (allStartOfJsonIndexes.length === 0) { - this.buildAgent.debug("No opening curly brace '{' found in input; cannot extract JSON."); - return null; - } - if (endOfJsonIndex === 0) { - this.buildAgent.debug("No closing curly brace '}' found in input; cannot extract JSON."); - return null; - } - let startIndexArrayPos = allStartOfJsonIndexes.length - 1; - let decodePassCount = 1; - let currSearchString = input.substring(allStartOfJsonIndexes[startIndexArrayPos], endOfJsonIndex); - let resultJson = null; - while (resultJson === null && startIndexArrayPos >= 0) { - try { - this.buildAgent.debug(`Starting JSON extraction at ${allStartOfJsonIndexes[startIndexArrayPos]} to ${endOfJsonIndex}`); - resultJson = JSON.parse(currSearchString); - } catch (ex) { - let exObject = new Error("Unable to parse exception object"); - if (ex instanceof Error) { - exObject = ex; - } - const errorMessage = `Failed to parse JSON object on pass ${decodePassCount}. Expanding search area from string index ${allStartOfJsonIndexes[startIndexArrayPos]} to ${endOfJsonIndex}. -Previous search area:'${currSearchString}' -Caught Exception: ${exObject.message}`; - this.buildAgent.debug(errorMessage); - decodePassCount++; - startIndexArrayPos--; - currSearchString = input.substring(allStartOfJsonIndexes[startIndexArrayPos], endOfJsonIndex); - } - } - return resultJson; - } -} - +import "./semver.mjs"; +import { a as ArgumentsBuilder, i as DotnetTool, n as keysOf, r as SettingsProvider, t as RunnerBase } from "./tools.mjs"; +import { t as allIndexesOf } from "../../lib.mjs"; +import * as path from "node:path"; +import * as fs from "node:fs/promises"; +import * as crypto from "node:crypto"; +//#region src/tools/gitversion/settings.ts +var GitVersionSettingsProvider = class extends SettingsProvider { + getExecuteSettings() { + return { + targetPath: this.buildAgent.getInput("targetPath"), + disableCache: this.buildAgent.getBooleanInput("disableCache"), + disableNormalization: this.buildAgent.getBooleanInput("disableNormalization"), + disableShallowCloneCheck: this.buildAgent.getBooleanInput("disableShallowCloneCheck"), + configFilePath: this.buildAgent.getInput("configFilePath", false), + overrideConfig: this.buildAgent.getListInput("overrideConfig", false), + updateAssemblyInfo: this.buildAgent.getBooleanInput("updateAssemblyInfo"), + updateAssemblyInfoFilename: this.buildAgent.getInput("updateAssemblyInfoFilename"), + updateProjectFiles: this.buildAgent.getBooleanInput("updateProjectFiles"), + buildNumberFormat: this.buildAgent.getInput("buildNumberFormat", false) + }; + } + getCommandSettings() { + return { + targetPath: this.buildAgent.getInput("targetPath"), + disableShallowCloneCheck: this.buildAgent.getBooleanInput("disableShallowCloneCheck"), + arguments: this.buildAgent.getInput("arguments") + }; + } +}; +//#endregion +//#region src/tools/gitversion/tool.ts +var GitVersionTool = class extends DotnetTool { + get packageName() { + return "GitVersion.Tool"; + } + get toolName() { + return "dotnet-gitversion"; + } + get toolPathVariable() { + return "GITVERSION_PATH"; + } + get versionRange() { + return ">=6.1.0 <7.0.0"; + } + get settingsProvider() { + return new GitVersionSettingsProvider(this.buildAgent); + } + async executeJson() { + const settings = this.settingsProvider.getExecuteSettings(); + const workDir = await this.getRepoDir(settings); + await this.checkShallowClone(settings, workDir); + const outputFile = path.join(this.buildAgent.tempDir, `gitversion-${crypto.randomUUID()}.json`); + this.buildAgent.debug(`Writing GitVersion variables to file: ${outputFile}`); + const args = await this.getExecuteArguments(workDir, settings, outputFile); + await this.setDotnetRoot(); + return { + ...await this.executeTool(args), + outputFile + }; + } + async executeCommand() { + const settings = this.settingsProvider.getCommandSettings(); + const workDir = await this.getRepoDir(settings); + await this.checkShallowClone(settings, workDir); + const args = this.getCommandArguments(workDir, settings); + await this.setDotnetRoot(); + return await this.executeTool(args); + } + writeGitVersionToAgent(output) { + for (const property of keysOf(output)) { + const name = this.toCamelCase(property); + try { + let value = output[property]?.toString(); + if (value === "0") value = "0"; + this.buildAgent.setOutput(name, value); + this.buildAgent.setOutput(`GitVersion_${property}`, value); + this.buildAgent.setVariable(name, value); + this.buildAgent.setVariable(`GitVersion_${property}`, value); + } catch (_error) { + this.buildAgent.error(`Unable to set output/variable for ${property}`); + } + } + } + updateBuildNumber() { + const settings = this.settingsProvider.getExecuteSettings(); + if (settings.buildNumberFormat) { + const buildNumber = this.buildAgent.getExpandedString(settings.buildNumberFormat); + this.buildAgent.updateBuildNumber(buildNumber); + } else this.buildAgent.debug("No buildNumberFormat provided. Skipping build number update."); + } + async getRepoDir(settings) { + return await super.getRepoPath(settings.targetPath); + } + async getExecuteArguments(workDir, options, outputFile) { + const builder = new ArgumentsBuilder().addArgument(workDir); + if (outputFile) builder.addArgument("/output").addArgument("file").addArgument("/outputfile").addArgument(outputFile); + else builder.addArgument("/output").addArgument("json"); + builder.addArgument("/l").addArgument("console"); + const { disableCache, disableNormalization, configFilePath, overrideConfig, updateAssemblyInfo, updateAssemblyInfoFilename, updateProjectFiles } = options; + if (disableCache) builder.addArgument("/nocache"); + if (disableNormalization) builder.addArgument("/nonormalize"); + if (configFilePath) if (await this.isValidInputFile(workDir, configFilePath)) builder.addArgument("/config").addArgument(configFilePath); + else throw new Error(`GitVersion configuration file not found at ${configFilePath}`); + if (overrideConfig) for (let config of overrideConfig) { + config = config.trim(); + if (config.match(/([a-zA-Z0-9]+(-[a-zA-Z]+)*=[a-zA-Z0-9\- :.']*)/)) builder.addArgument("/overrideconfig").addArgument(config); + } + if (updateAssemblyInfo) { + builder.addArgument("/updateassemblyinfo"); + if (updateAssemblyInfoFilename) if (await this.isValidInputFile(workDir, updateAssemblyInfoFilename)) builder.addArgument(updateAssemblyInfoFilename); + else throw new Error(`AssemblyInfoFilename file not found at ${updateAssemblyInfoFilename}`); + } + if (updateProjectFiles) builder.addArgument("/updateprojectfiles"); + return builder.build(); + } + getCommandArguments(workDir, options) { + const builder = new ArgumentsBuilder().addArgument(workDir); + if (options.arguments) builder.addArguments(ArgumentsBuilder.parseArgumentString(options.arguments)); + return builder.build(); + } + async checkShallowClone(settings, workDir) { + if (!settings.disableShallowCloneCheck) { + const isShallowResult = await this.execute("git", [ + "-C", + workDir, + "rev-parse", + "--is-shallow-repository" + ]); + if (isShallowResult.code === 0 && isShallowResult.stdout?.trim() === "true") throw new Error("The repository is shallow. Consider disabling shallow clones. See https://github.com/GitTools/actions/blob/main/docs/cloning.md for more information."); + } + } + async readGitVersionOutput(outputFile) { + const content = await fs.readFile(outputFile, "utf8"); + const output = JSON.parse(content); + await fs.unlink(outputFile).catch(() => {}); + return output; + } + toCamelCase(input) { + return input.replace(/^\w|[A-Z]|\b\w|\s+/g, function(match, index) { + if (+match === 0) return ""; + return index === 0 ? match.toLowerCase() : match.toUpperCase(); + }); + } +}; +//#endregion +//#region src/tools/gitversion/runner.ts +var Runner = class extends RunnerBase { + tool; + constructor(buildAgent) { + super(buildAgent); + this.buildAgent = buildAgent; + this.tool = new GitVersionTool(this.buildAgent); + } + async run(command) { + switch (command) { + case "setup": return await this.setup(); + case "execute": return await this.execute(); + case "command": return await this.command(); + } + } + async setup() { + return this.safeExecute(async () => { + await this.tool.install(); + return { code: 0 }; + }, "GitVersion setup successfully"); + } + async execute() { + return this.safeExecute(async () => { + const result = await this.tool.executeJson(); + return await this.processGitVersionOutput(result); + }, "GitVersion executed successfully"); + } + async command() { + return this.safeExecute(async () => await this.tool.executeCommand(), "GitVersion executed successfully"); + } + async processGitVersionOutput(result) { + this.buildAgent.debug("Processing GitVersion output"); + if (result.code !== 0) return result; + let gitVersionOutput; + if (result.outputFile) { + this.buildAgent.debug(`Reading GitVersion variables from file: ${result.outputFile}`); + try { + gitVersionOutput = await this.tool.readGitVersionOutput(result.outputFile); + } catch (error) { + return this.handleOutputError(`Failed to read or parse GitVersion variables file: ${this.getErrorMessage(error)}`); + } + } else { + this.buildAgent.debug("Parsing GitVersion output from stdout"); + const stdout = result.stdout; + gitVersionOutput = this.extractGitVersionOutput(stdout); + } + if (gitVersionOutput === null) return this.handleOutputError("GitVersion output is not valid JSON, see output details"); + this.tool.writeGitVersionToAgent(gitVersionOutput); + this.tool.updateBuildNumber(); + this.buildAgent.setSucceeded("GitVersion executed successfully", true); + return result; + } + getErrorMessage(error) { + return error instanceof Error ? error.message : String(error); + } + handleOutputError(message) { + this.buildAgent.debug(message); + this.buildAgent.setFailed(message, true); + return { + code: -1, + error: new Error(message) + }; + } + /** + * Attempts to extract and parse a JSON object representing `GitVersionOutput` from the given input string. + * The method assumes the last closing curly brace (`}`) in the input belongs to the end of the JSON object, + * and iteratively expands the search area backwards from each opening curly brace (`{`) until a valid JSON object is found. + * If parsing fails, it logs debug information and continues searching until all possible start positions are exhausted. + * + * @param input - The string containing the potential JSON output from GitVersion. + * @returns The parsed `GitVersionOutput` object if extraction and parsing succeed; otherwise, `null`. + */ + extractGitVersionOutput(input) { + const allStartOfJsonIndexes = allIndexesOf(input, "{"); + const endOfJsonIndex = input.lastIndexOf("}") + 1; + if (allStartOfJsonIndexes.length === 0) { + this.buildAgent.debug("No opening curly brace '{' found in input; cannot extract JSON."); + return null; + } + if (endOfJsonIndex === 0) { + this.buildAgent.debug("No closing curly brace '}' found in input; cannot extract JSON."); + return null; + } + let startIndexArrayPos = allStartOfJsonIndexes.length - 1; + let decodePassCount = 1; + let currSearchString = input.substring(allStartOfJsonIndexes[startIndexArrayPos], endOfJsonIndex); + let resultJson = null; + while (resultJson === null && startIndexArrayPos >= 0) try { + this.buildAgent.debug(`Starting JSON extraction at ${allStartOfJsonIndexes[startIndexArrayPos]} to ${endOfJsonIndex}`); + resultJson = JSON.parse(currSearchString); + } catch (ex) { + let exObject = /* @__PURE__ */ new Error("Unable to parse exception object"); + if (ex instanceof Error) exObject = ex; + const errorMessage = `Failed to parse JSON object on pass ${decodePassCount}. Expanding search area from string index ${allStartOfJsonIndexes[startIndexArrayPos]} to ${endOfJsonIndex}. \nPrevious search area:'${currSearchString}' \nCaught Exception: ${exObject.message}`; + this.buildAgent.debug(errorMessage); + decodePassCount++; + startIndexArrayPos--; + currSearchString = input.substring(allStartOfJsonIndexes[startIndexArrayPos], endOfJsonIndex); + } + return resultJson; + } +}; +//#endregion export { Runner }; -//# sourceMappingURL=gitversion.mjs.map + +//# sourceMappingURL=gitversion.mjs.map \ No newline at end of file diff --git a/dist/tools/libs/gitversion.mjs.map b/dist/tools/libs/gitversion.mjs.map index 0e44cc5dd..8839d28a2 100644 --- a/dist/tools/libs/gitversion.mjs.map +++ b/dist/tools/libs/gitversion.mjs.map @@ -1 +1 @@ -{"version":3,"file":"gitversion.mjs","sources":["../../../src/tools/gitversion/settings.ts","../../../src/tools/gitversion/tool.ts","../../../src/tools/gitversion/runner.ts"],"sourcesContent":["import { type ISettingsProvider, SettingsProvider } from '@tools/common'\nimport { type CommandSettings, type ExecuteSettings } from './models'\n\nexport interface IGitVersionSettingsProvider extends ISettingsProvider {\n getExecuteSettings(): ExecuteSettings\n\n getCommandSettings(): CommandSettings\n}\n\nexport class GitVersionSettingsProvider extends SettingsProvider implements IGitVersionSettingsProvider {\n getExecuteSettings(): ExecuteSettings {\n const targetPath = this.buildAgent.getInput('targetPath')\n\n const disableCache = this.buildAgent.getBooleanInput('disableCache')\n const disableNormalization = this.buildAgent.getBooleanInput('disableNormalization')\n const disableShallowCloneCheck = this.buildAgent.getBooleanInput('disableShallowCloneCheck')\n\n const configFilePath = this.buildAgent.getInput('configFilePath', false)\n const overrideConfig = this.buildAgent.getListInput('overrideConfig', false)\n\n const updateAssemblyInfo = this.buildAgent.getBooleanInput('updateAssemblyInfo')\n const updateAssemblyInfoFilename = this.buildAgent.getInput('updateAssemblyInfoFilename')\n\n const updateProjectFiles = this.buildAgent.getBooleanInput('updateProjectFiles')\n\n const buildNumberFormat = this.buildAgent.getInput('buildNumberFormat', false)\n\n return {\n targetPath,\n disableCache,\n disableNormalization,\n disableShallowCloneCheck,\n configFilePath,\n overrideConfig,\n updateAssemblyInfo,\n updateAssemblyInfoFilename,\n updateProjectFiles,\n buildNumberFormat\n }\n }\n\n getCommandSettings(): CommandSettings {\n const targetPath = this.buildAgent.getInput('targetPath')\n const disableShallowCloneCheck = this.buildAgent.getBooleanInput('disableShallowCloneCheck')\n const args = this.buildAgent.getInput('arguments')\n\n return {\n targetPath,\n disableShallowCloneCheck,\n arguments: args\n }\n }\n}\n","import * as path from 'node:path'\nimport * as fs from 'node:fs/promises'\nimport * as crypto from 'node:crypto'\nimport { type ExecResult } from '@agents/common'\nimport { ArgumentsBuilder, DotnetTool, keysOf } from '@tools/common'\nimport { type CommandSettings, type ExecuteSettings, type GitVersionOutput } from './models'\nimport { GitVersionSettingsProvider, type IGitVersionSettingsProvider } from './settings'\n\nexport class GitVersionTool extends DotnetTool {\n get packageName(): string {\n return 'GitVersion.Tool'\n }\n\n get toolName(): string {\n return 'dotnet-gitversion'\n }\n\n get toolPathVariable(): string {\n return 'GITVERSION_PATH'\n }\n\n get versionRange(): string | null {\n return '>=6.1.0 <7.0.0'\n }\n\n get settingsProvider(): IGitVersionSettingsProvider {\n return new GitVersionSettingsProvider(this.buildAgent)\n }\n\n async executeJson(): Promise {\n const settings = this.settingsProvider.getExecuteSettings()\n const workDir = await this.getRepoDir(settings)\n\n await this.checkShallowClone(settings, workDir)\n\n const outputFile = path.join(this.buildAgent.tempDir, `gitversion-${crypto.randomUUID()}.json`)\n this.buildAgent.debug(`Writing GitVersion variables to file: ${outputFile}`)\n const args = await this.getExecuteArguments(workDir, settings, outputFile)\n\n await this.setDotnetRoot()\n const result = await this.executeTool(args)\n return { ...result, outputFile }\n }\n\n async executeCommand(): Promise {\n const settings = this.settingsProvider.getCommandSettings()\n const workDir = await this.getRepoDir(settings)\n\n await this.checkShallowClone(settings, workDir)\n\n const args = this.getCommandArguments(workDir, settings)\n\n await this.setDotnetRoot()\n return await this.executeTool(args)\n }\n\n writeGitVersionToAgent(output: GitVersionOutput): void {\n for (const property of keysOf(output)) {\n const name = this.toCamelCase(property)\n try {\n let value = output[property]?.toString()\n if (value === '0') {\n value = '0'\n }\n this.buildAgent.setOutput(name, value)\n this.buildAgent.setOutput(`GitVersion_${property}`, value)\n this.buildAgent.setVariable(name, value)\n this.buildAgent.setVariable(`GitVersion_${property}`, value)\n } catch (_error) {\n this.buildAgent.error(`Unable to set output/variable for ${property}`)\n }\n }\n }\n\n updateBuildNumber(): void {\n const settings = this.settingsProvider.getExecuteSettings()\n if (settings.buildNumberFormat) {\n const buildNumber = this.buildAgent.getExpandedString(settings.buildNumberFormat)\n this.buildAgent.updateBuildNumber(buildNumber)\n } else {\n this.buildAgent.debug('No buildNumberFormat provided. Skipping build number update.')\n }\n }\n\n protected async getRepoDir(settings: ExecuteSettings | CommandSettings): Promise {\n return await super.getRepoPath(settings.targetPath)\n }\n\n protected async getExecuteArguments(workDir: string, options: ExecuteSettings, outputFile?: string): Promise {\n const builder = new ArgumentsBuilder().addArgument(workDir)\n\n if (outputFile) {\n builder.addArgument('/output').addArgument('file').addArgument('/outputfile').addArgument(outputFile)\n } else {\n builder.addArgument('/output').addArgument('json')\n }\n\n builder.addArgument('/l').addArgument('console')\n\n const {\n disableCache,\n disableNormalization,\n configFilePath,\n overrideConfig,\n updateAssemblyInfo,\n updateAssemblyInfoFilename,\n updateProjectFiles\n //\n } = options\n\n if (disableCache) {\n builder.addArgument('/nocache')\n }\n\n if (disableNormalization) {\n builder.addArgument('/nonormalize')\n }\n\n if (configFilePath) {\n if (await this.isValidInputFile(workDir, configFilePath)) {\n builder.addArgument('/config').addArgument(configFilePath)\n } else {\n throw new Error(`GitVersion configuration file not found at ${configFilePath}`)\n }\n }\n\n if (overrideConfig) {\n for (let config of overrideConfig) {\n config = config.trim()\n if (config.match(/([a-zA-Z0-9]+(-[a-zA-Z]+)*=[a-zA-Z0-9\\- :.']*)/)) {\n builder.addArgument('/overrideconfig').addArgument(config)\n }\n }\n }\n\n if (updateAssemblyInfo) {\n builder.addArgument('/updateassemblyinfo')\n\n // You can specify 'updateAssemblyInfo' without 'updateAssemblyInfoFilename'.\n if (updateAssemblyInfoFilename) {\n if (await this.isValidInputFile(workDir, updateAssemblyInfoFilename)) {\n builder.addArgument(updateAssemblyInfoFilename)\n } else {\n throw new Error(`AssemblyInfoFilename file not found at ${updateAssemblyInfoFilename}`)\n }\n }\n }\n\n if (updateProjectFiles) {\n builder.addArgument('/updateprojectfiles')\n }\n\n return builder.build()\n }\n\n protected getCommandArguments(workDir: string, options: CommandSettings): string[] {\n const builder = new ArgumentsBuilder().addArgument(workDir)\n\n if (options.arguments) {\n builder.addArguments(ArgumentsBuilder.parseArgumentString(options.arguments))\n }\n\n return builder.build()\n }\n\n private async checkShallowClone(settings: ExecuteSettings | CommandSettings, workDir: string): Promise {\n if (!settings.disableShallowCloneCheck) {\n const isShallowResult = await this.execute('git', ['-C', workDir, 'rev-parse', '--is-shallow-repository'])\n if (isShallowResult.code === 0 && isShallowResult.stdout?.trim() === 'true') {\n throw new Error(\n 'The repository is shallow. Consider disabling shallow clones. See https://github.com/GitTools/actions/blob/main/docs/cloning.md for more information.'\n )\n }\n }\n }\n\n async readGitVersionOutput(outputFile: string): Promise {\n const content = await fs.readFile(outputFile, 'utf8')\n const output = JSON.parse(content) as GitVersionOutput\n // Clean up the temporary file\n await fs.unlink(outputFile).catch(() => {\n // Ignore errors if file doesn't exist\n })\n return output\n }\n\n private toCamelCase(input: string): string {\n return input.replace(/^\\w|[A-Z]|\\b\\w|\\s+/g, function (match, index) {\n if (+match === 0) return '' // or if (/\\s+/.test(match)) for white spaces\n return index === 0 ? match.toLowerCase() : match.toUpperCase()\n })\n }\n}\n","import { type ExecResult, type IBuildAgent } from '@agents/common'\nimport { type Commands, type GitVersionOutput } from './models'\nimport { GitVersionTool } from './tool'\nimport { RunnerBase } from '../common/runner'\nimport { allIndexesOf } from '@lib'\n\nexport class Runner extends RunnerBase {\n protected readonly tool: GitVersionTool\n\n constructor(protected readonly buildAgent: IBuildAgent) {\n super(buildAgent)\n this.tool = new GitVersionTool(this.buildAgent)\n }\n\n async run(command: Commands): Promise {\n switch (command) {\n case 'setup':\n return await this.setup()\n case 'execute':\n return await this.execute()\n case 'command':\n return await this.command()\n }\n }\n\n private async setup(): Promise {\n return this.safeExecute(async () => {\n await this.tool.install()\n return { code: 0 }\n }, 'GitVersion setup successfully')\n }\n\n private async execute(): Promise {\n return this.safeExecute(async () => {\n const result = await this.tool.executeJson()\n return await this.processGitVersionOutput(result)\n }, 'GitVersion executed successfully')\n }\n\n private async command(): Promise {\n return this.safeExecute(async () => await this.tool.executeCommand(), 'GitVersion executed successfully')\n }\n\n private async processGitVersionOutput(result: ExecResult & { outputFile?: string }): Promise {\n this.buildAgent.debug('Processing GitVersion output')\n\n // Return error to be handled by calling function\n if (result.code !== 0) {\n return result\n }\n\n let gitVersionOutput: GitVersionOutput | null\n\n if (result.outputFile) {\n // Read from the file\n this.buildAgent.debug(`Reading GitVersion variables from file: ${result.outputFile}`)\n try {\n gitVersionOutput = await this.tool.readGitVersionOutput(result.outputFile)\n } catch (error) {\n return this.handleOutputError(`Failed to read or parse GitVersion variables file: ${this.getErrorMessage(error)}`)\n }\n } else {\n // Fallback to parsing stdout (for backward compatibility)\n this.buildAgent.debug('Parsing GitVersion output from stdout')\n const stdout = result.stdout as string\n gitVersionOutput = this.extractGitVersionOutput(stdout)\n }\n\n if (gitVersionOutput === null) {\n return this.handleOutputError('GitVersion output is not valid JSON, see output details')\n }\n\n this.tool.writeGitVersionToAgent(gitVersionOutput)\n this.tool.updateBuildNumber()\n this.buildAgent.setSucceeded('GitVersion executed successfully', true)\n return result\n }\n\n private getErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error)\n }\n\n private handleOutputError(message: string): ExecResult {\n this.buildAgent.debug(message)\n this.buildAgent.setFailed(message, true)\n return {\n code: -1,\n error: new Error(message)\n }\n }\n\n /**\n * Attempts to extract and parse a JSON object representing `GitVersionOutput` from the given input string.\n * The method assumes the last closing curly brace (`}`) in the input belongs to the end of the JSON object,\n * and iteratively expands the search area backwards from each opening curly brace (`{`) until a valid JSON object is found.\n * If parsing fails, it logs debug information and continues searching until all possible start positions are exhausted.\n *\n * @param input - The string containing the potential JSON output from GitVersion.\n * @returns The parsed `GitVersionOutput` object if extraction and parsing succeed; otherwise, `null`.\n */\n private extractGitVersionOutput(input: string): GitVersionOutput | null {\n const allStartOfJsonIndexes = allIndexesOf(input, '{')\n // Assumed last '}' character will belong to the JSON object\n const endOfJsonIndex = input.lastIndexOf('}') + 1\n\n // Early return if no '{' or '}' found\n if (allStartOfJsonIndexes.length === 0) {\n this.buildAgent.debug(\"No opening curly brace '{' found in input; cannot extract JSON.\")\n return null\n }\n if (endOfJsonIndex === 0) {\n this.buildAgent.debug(\"No closing curly brace '}' found in input; cannot extract JSON.\")\n return null\n }\n\n // Start from the bottom when searching for the JSON object\n let startIndexArrayPos = allStartOfJsonIndexes.length - 1\n let decodePassCount = 1\n\n let currSearchString = input.substring(allStartOfJsonIndexes[startIndexArrayPos], endOfJsonIndex)\n let resultJson = null\n\n while (resultJson === null && startIndexArrayPos >= 0) {\n try {\n this.buildAgent.debug(`Starting JSON extraction at ${allStartOfJsonIndexes[startIndexArrayPos]} to ${endOfJsonIndex}`)\n\n resultJson = JSON.parse(currSearchString) as GitVersionOutput\n } catch (ex) {\n let exObject = new Error('Unable to parse exception object')\n\n if (ex instanceof Error) {\n exObject = ex\n }\n\n const errorMessage = `Failed to parse JSON object on pass ${decodePassCount}. Expanding search area from string index ${allStartOfJsonIndexes[startIndexArrayPos]} to ${endOfJsonIndex}. \\nPrevious search area:'${currSearchString}' \\nCaught Exception: ${exObject.message}`\n this.buildAgent.debug(errorMessage)\n\n // Expand search area\n decodePassCount++\n startIndexArrayPos--\n currSearchString = input.substring(allStartOfJsonIndexes[startIndexArrayPos], endOfJsonIndex)\n }\n }\n\n return resultJson\n }\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"gitversion.mjs","names":[],"sources":["../../../src/tools/gitversion/settings.ts","../../../src/tools/gitversion/tool.ts","../../../src/tools/gitversion/runner.ts"],"sourcesContent":["import { type ISettingsProvider, SettingsProvider } from '@tools/common'\nimport { type CommandSettings, type ExecuteSettings } from './models'\n\nexport interface IGitVersionSettingsProvider extends ISettingsProvider {\n getExecuteSettings(): ExecuteSettings\n\n getCommandSettings(): CommandSettings\n}\n\nexport class GitVersionSettingsProvider extends SettingsProvider implements IGitVersionSettingsProvider {\n getExecuteSettings(): ExecuteSettings {\n const targetPath = this.buildAgent.getInput('targetPath')\n\n const disableCache = this.buildAgent.getBooleanInput('disableCache')\n const disableNormalization = this.buildAgent.getBooleanInput('disableNormalization')\n const disableShallowCloneCheck = this.buildAgent.getBooleanInput('disableShallowCloneCheck')\n\n const configFilePath = this.buildAgent.getInput('configFilePath', false)\n const overrideConfig = this.buildAgent.getListInput('overrideConfig', false)\n\n const updateAssemblyInfo = this.buildAgent.getBooleanInput('updateAssemblyInfo')\n const updateAssemblyInfoFilename = this.buildAgent.getInput('updateAssemblyInfoFilename')\n\n const updateProjectFiles = this.buildAgent.getBooleanInput('updateProjectFiles')\n\n const buildNumberFormat = this.buildAgent.getInput('buildNumberFormat', false)\n\n return {\n targetPath,\n disableCache,\n disableNormalization,\n disableShallowCloneCheck,\n configFilePath,\n overrideConfig,\n updateAssemblyInfo,\n updateAssemblyInfoFilename,\n updateProjectFiles,\n buildNumberFormat\n }\n }\n\n getCommandSettings(): CommandSettings {\n const targetPath = this.buildAgent.getInput('targetPath')\n const disableShallowCloneCheck = this.buildAgent.getBooleanInput('disableShallowCloneCheck')\n const args = this.buildAgent.getInput('arguments')\n\n return {\n targetPath,\n disableShallowCloneCheck,\n arguments: args\n }\n }\n}\n","import * as path from 'node:path'\nimport * as fs from 'node:fs/promises'\nimport * as crypto from 'node:crypto'\nimport { type ExecResult } from '@agents/common'\nimport { ArgumentsBuilder, DotnetTool, keysOf } from '@tools/common'\nimport { type CommandSettings, type ExecuteSettings, type GitVersionOutput } from './models'\nimport { GitVersionSettingsProvider, type IGitVersionSettingsProvider } from './settings'\n\nexport class GitVersionTool extends DotnetTool {\n get packageName(): string {\n return 'GitVersion.Tool'\n }\n\n get toolName(): string {\n return 'dotnet-gitversion'\n }\n\n get toolPathVariable(): string {\n return 'GITVERSION_PATH'\n }\n\n get versionRange(): string | null {\n return '>=6.1.0 <7.0.0'\n }\n\n get settingsProvider(): IGitVersionSettingsProvider {\n return new GitVersionSettingsProvider(this.buildAgent)\n }\n\n async executeJson(): Promise {\n const settings = this.settingsProvider.getExecuteSettings()\n const workDir = await this.getRepoDir(settings)\n\n await this.checkShallowClone(settings, workDir)\n\n const outputFile = path.join(this.buildAgent.tempDir, `gitversion-${crypto.randomUUID()}.json`)\n this.buildAgent.debug(`Writing GitVersion variables to file: ${outputFile}`)\n const args = await this.getExecuteArguments(workDir, settings, outputFile)\n\n await this.setDotnetRoot()\n const result = await this.executeTool(args)\n return { ...result, outputFile }\n }\n\n async executeCommand(): Promise {\n const settings = this.settingsProvider.getCommandSettings()\n const workDir = await this.getRepoDir(settings)\n\n await this.checkShallowClone(settings, workDir)\n\n const args = this.getCommandArguments(workDir, settings)\n\n await this.setDotnetRoot()\n return await this.executeTool(args)\n }\n\n writeGitVersionToAgent(output: GitVersionOutput): void {\n for (const property of keysOf(output)) {\n const name = this.toCamelCase(property)\n try {\n let value = output[property]?.toString()\n if (value === '0') {\n value = '0'\n }\n this.buildAgent.setOutput(name, value)\n this.buildAgent.setOutput(`GitVersion_${property}`, value)\n this.buildAgent.setVariable(name, value)\n this.buildAgent.setVariable(`GitVersion_${property}`, value)\n } catch (_error) {\n this.buildAgent.error(`Unable to set output/variable for ${property}`)\n }\n }\n }\n\n updateBuildNumber(): void {\n const settings = this.settingsProvider.getExecuteSettings()\n if (settings.buildNumberFormat) {\n const buildNumber = this.buildAgent.getExpandedString(settings.buildNumberFormat)\n this.buildAgent.updateBuildNumber(buildNumber)\n } else {\n this.buildAgent.debug('No buildNumberFormat provided. Skipping build number update.')\n }\n }\n\n protected async getRepoDir(settings: ExecuteSettings | CommandSettings): Promise {\n return await super.getRepoPath(settings.targetPath)\n }\n\n protected async getExecuteArguments(workDir: string, options: ExecuteSettings, outputFile?: string): Promise {\n const builder = new ArgumentsBuilder().addArgument(workDir)\n\n if (outputFile) {\n builder.addArgument('/output').addArgument('file').addArgument('/outputfile').addArgument(outputFile)\n } else {\n builder.addArgument('/output').addArgument('json')\n }\n\n builder.addArgument('/l').addArgument('console')\n\n const {\n disableCache,\n disableNormalization,\n configFilePath,\n overrideConfig,\n updateAssemblyInfo,\n updateAssemblyInfoFilename,\n updateProjectFiles\n //\n } = options\n\n if (disableCache) {\n builder.addArgument('/nocache')\n }\n\n if (disableNormalization) {\n builder.addArgument('/nonormalize')\n }\n\n if (configFilePath) {\n if (await this.isValidInputFile(workDir, configFilePath)) {\n builder.addArgument('/config').addArgument(configFilePath)\n } else {\n throw new Error(`GitVersion configuration file not found at ${configFilePath}`)\n }\n }\n\n if (overrideConfig) {\n for (let config of overrideConfig) {\n config = config.trim()\n if (config.match(/([a-zA-Z0-9]+(-[a-zA-Z]+)*=[a-zA-Z0-9\\- :.']*)/)) {\n builder.addArgument('/overrideconfig').addArgument(config)\n }\n }\n }\n\n if (updateAssemblyInfo) {\n builder.addArgument('/updateassemblyinfo')\n\n // You can specify 'updateAssemblyInfo' without 'updateAssemblyInfoFilename'.\n if (updateAssemblyInfoFilename) {\n if (await this.isValidInputFile(workDir, updateAssemblyInfoFilename)) {\n builder.addArgument(updateAssemblyInfoFilename)\n } else {\n throw new Error(`AssemblyInfoFilename file not found at ${updateAssemblyInfoFilename}`)\n }\n }\n }\n\n if (updateProjectFiles) {\n builder.addArgument('/updateprojectfiles')\n }\n\n return builder.build()\n }\n\n protected getCommandArguments(workDir: string, options: CommandSettings): string[] {\n const builder = new ArgumentsBuilder().addArgument(workDir)\n\n if (options.arguments) {\n builder.addArguments(ArgumentsBuilder.parseArgumentString(options.arguments))\n }\n\n return builder.build()\n }\n\n private async checkShallowClone(settings: ExecuteSettings | CommandSettings, workDir: string): Promise {\n if (!settings.disableShallowCloneCheck) {\n const isShallowResult = await this.execute('git', ['-C', workDir, 'rev-parse', '--is-shallow-repository'])\n if (isShallowResult.code === 0 && isShallowResult.stdout?.trim() === 'true') {\n throw new Error(\n 'The repository is shallow. Consider disabling shallow clones. See https://github.com/GitTools/actions/blob/main/docs/cloning.md for more information.'\n )\n }\n }\n }\n\n async readGitVersionOutput(outputFile: string): Promise {\n const content = await fs.readFile(outputFile, 'utf8')\n const output = JSON.parse(content) as GitVersionOutput\n // Clean up the temporary file\n await fs.unlink(outputFile).catch(() => {\n // Ignore errors if file doesn't exist\n })\n return output\n }\n\n private toCamelCase(input: string): string {\n return input.replace(/^\\w|[A-Z]|\\b\\w|\\s+/g, function (match, index) {\n if (+match === 0) return '' // or if (/\\s+/.test(match)) for white spaces\n return index === 0 ? match.toLowerCase() : match.toUpperCase()\n })\n }\n}\n","import { type ExecResult, type IBuildAgent } from '@agents/common'\nimport { type Commands, type GitVersionOutput } from './models'\nimport { GitVersionTool } from './tool'\nimport { RunnerBase } from '../common/runner'\nimport { allIndexesOf } from '@lib'\n\nexport class Runner extends RunnerBase {\n protected readonly tool: GitVersionTool\n\n constructor(protected readonly buildAgent: IBuildAgent) {\n super(buildAgent)\n this.tool = new GitVersionTool(this.buildAgent)\n }\n\n async run(command: Commands): Promise {\n switch (command) {\n case 'setup':\n return await this.setup()\n case 'execute':\n return await this.execute()\n case 'command':\n return await this.command()\n }\n }\n\n private async setup(): Promise {\n return this.safeExecute(async () => {\n await this.tool.install()\n return { code: 0 }\n }, 'GitVersion setup successfully')\n }\n\n private async execute(): Promise {\n return this.safeExecute(async () => {\n const result = await this.tool.executeJson()\n return await this.processGitVersionOutput(result)\n }, 'GitVersion executed successfully')\n }\n\n private async command(): Promise {\n return this.safeExecute(async () => await this.tool.executeCommand(), 'GitVersion executed successfully')\n }\n\n private async processGitVersionOutput(result: ExecResult & { outputFile?: string }): Promise {\n this.buildAgent.debug('Processing GitVersion output')\n\n // Return error to be handled by calling function\n if (result.code !== 0) {\n return result\n }\n\n let gitVersionOutput: GitVersionOutput | null\n\n if (result.outputFile) {\n // Read from the file\n this.buildAgent.debug(`Reading GitVersion variables from file: ${result.outputFile}`)\n try {\n gitVersionOutput = await this.tool.readGitVersionOutput(result.outputFile)\n } catch (error) {\n return this.handleOutputError(`Failed to read or parse GitVersion variables file: ${this.getErrorMessage(error)}`)\n }\n } else {\n // Fallback to parsing stdout (for backward compatibility)\n this.buildAgent.debug('Parsing GitVersion output from stdout')\n const stdout = result.stdout as string\n gitVersionOutput = this.extractGitVersionOutput(stdout)\n }\n\n if (gitVersionOutput === null) {\n return this.handleOutputError('GitVersion output is not valid JSON, see output details')\n }\n\n this.tool.writeGitVersionToAgent(gitVersionOutput)\n this.tool.updateBuildNumber()\n this.buildAgent.setSucceeded('GitVersion executed successfully', true)\n return result\n }\n\n private getErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error)\n }\n\n private handleOutputError(message: string): ExecResult {\n this.buildAgent.debug(message)\n this.buildAgent.setFailed(message, true)\n return {\n code: -1,\n error: new Error(message)\n }\n }\n\n /**\n * Attempts to extract and parse a JSON object representing `GitVersionOutput` from the given input string.\n * The method assumes the last closing curly brace (`}`) in the input belongs to the end of the JSON object,\n * and iteratively expands the search area backwards from each opening curly brace (`{`) until a valid JSON object is found.\n * If parsing fails, it logs debug information and continues searching until all possible start positions are exhausted.\n *\n * @param input - The string containing the potential JSON output from GitVersion.\n * @returns The parsed `GitVersionOutput` object if extraction and parsing succeed; otherwise, `null`.\n */\n private extractGitVersionOutput(input: string): GitVersionOutput | null {\n const allStartOfJsonIndexes = allIndexesOf(input, '{')\n // Assumed last '}' character will belong to the JSON object\n const endOfJsonIndex = input.lastIndexOf('}') + 1\n\n // Early return if no '{' or '}' found\n if (allStartOfJsonIndexes.length === 0) {\n this.buildAgent.debug(\"No opening curly brace '{' found in input; cannot extract JSON.\")\n return null\n }\n if (endOfJsonIndex === 0) {\n this.buildAgent.debug(\"No closing curly brace '}' found in input; cannot extract JSON.\")\n return null\n }\n\n // Start from the bottom when searching for the JSON object\n let startIndexArrayPos = allStartOfJsonIndexes.length - 1\n let decodePassCount = 1\n\n let currSearchString = input.substring(allStartOfJsonIndexes[startIndexArrayPos], endOfJsonIndex)\n let resultJson = null\n\n while (resultJson === null && startIndexArrayPos >= 0) {\n try {\n this.buildAgent.debug(`Starting JSON extraction at ${allStartOfJsonIndexes[startIndexArrayPos]} to ${endOfJsonIndex}`)\n\n resultJson = JSON.parse(currSearchString) as GitVersionOutput\n } catch (ex) {\n let exObject = new Error('Unable to parse exception object')\n\n if (ex instanceof Error) {\n exObject = ex\n }\n\n const errorMessage = `Failed to parse JSON object on pass ${decodePassCount}. Expanding search area from string index ${allStartOfJsonIndexes[startIndexArrayPos]} to ${endOfJsonIndex}. \\nPrevious search area:'${currSearchString}' \\nCaught Exception: ${exObject.message}`\n this.buildAgent.debug(errorMessage)\n\n // Expand search area\n decodePassCount++\n startIndexArrayPos--\n currSearchString = input.substring(allStartOfJsonIndexes[startIndexArrayPos], endOfJsonIndex)\n }\n }\n\n return resultJson\n }\n}\n"],"mappings":"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"} \ No newline at end of file diff --git a/dist/tools/libs/semver.mjs b/dist/tools/libs/semver.mjs index 78a49e4e8..689823318 100644 --- a/dist/tools/libs/semver.mjs +++ b/dist/tools/libs/semver.mjs @@ -1,2722 +1,1341 @@ -var re = {exports: {}}; - -var constants; -var hasRequiredConstants; - -function requireConstants () { - if (hasRequiredConstants) return constants; - hasRequiredConstants = 1; - - // Note: this is the semver.org version of the spec that it implements - // Not necessarily the package version of this code. - const SEMVER_SPEC_VERSION = '2.0.0'; - - const MAX_LENGTH = 256; - const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || - /* istanbul ignore next */ 9007199254740991; - - // Max safe segment length for coercion. - const MAX_SAFE_COMPONENT_LENGTH = 16; - - // Max safe length for a build identifier. The max length minus 6 characters for - // the shortest version with a build 0.0.0+BUILD. - const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6; - - const RELEASE_TYPES = [ - 'major', - 'premajor', - 'minor', - 'preminor', - 'patch', - 'prepatch', - 'prerelease', +import { t as __commonJSMin } from "../../rolldown-runtime.mjs"; +//#region node_modules/semver/internal/constants.js +var require_constants = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var SEMVER_SPEC_VERSION = "2.0.0"; + var MAX_LENGTH = 256; + var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; + module.exports = { + MAX_LENGTH, + MAX_SAFE_COMPONENT_LENGTH: 16, + MAX_SAFE_BUILD_LENGTH: MAX_LENGTH - 6, + MAX_SAFE_INTEGER, + RELEASE_TYPES: [ + "major", + "premajor", + "minor", + "preminor", + "patch", + "prepatch", + "prerelease" + ], + SEMVER_SPEC_VERSION, + FLAG_INCLUDE_PRERELEASE: 1, + FLAG_LOOSE: 2 + }; +})); +//#endregion +//#region node_modules/semver/internal/debug.js +var require_debug = /* @__PURE__ */ __commonJSMin(((exports, module) => { + module.exports = typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error("SEMVER", ...args) : () => {}; +})); +//#endregion +//#region node_modules/semver/internal/re.js +var require_re = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var { MAX_SAFE_COMPONENT_LENGTH, MAX_SAFE_BUILD_LENGTH, MAX_LENGTH } = require_constants(); + var debug = require_debug(); + exports = module.exports = {}; + var re = exports.re = []; + var safeRe = exports.safeRe = []; + var src = exports.src = []; + var safeSrc = exports.safeSrc = []; + var t = exports.t = {}; + var R = 0; + var LETTERDASHNUMBER = "[a-zA-Z0-9-]"; + var safeRegexReplacements = [ + ["\\s", 1], + ["\\d", MAX_LENGTH], + [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH] ]; - - constants = { - MAX_LENGTH, - MAX_SAFE_COMPONENT_LENGTH, - MAX_SAFE_BUILD_LENGTH, - MAX_SAFE_INTEGER, - RELEASE_TYPES, - SEMVER_SPEC_VERSION, - FLAG_INCLUDE_PRERELEASE: 0b001, - FLAG_LOOSE: 0b010, + var makeSafeRegex = (value) => { + for (const [token, max] of safeRegexReplacements) value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`); + return value; }; - return constants; -} - -var debug_1; -var hasRequiredDebug; - -function requireDebug () { - if (hasRequiredDebug) return debug_1; - hasRequiredDebug = 1; - - const debug = ( - typeof process === 'object' && - process.env && - process.env.NODE_DEBUG && - /\bsemver\b/i.test(process.env.NODE_DEBUG) - ) ? (...args) => console.error('SEMVER', ...args) - : () => {}; - - debug_1 = debug; - return debug_1; -} - -var hasRequiredRe; - -function requireRe () { - if (hasRequiredRe) return re.exports; - hasRequiredRe = 1; - (function (module, exports$1) { - - const { - MAX_SAFE_COMPONENT_LENGTH, - MAX_SAFE_BUILD_LENGTH, - MAX_LENGTH, - } = requireConstants(); - const debug = requireDebug(); - exports$1 = module.exports = {}; - - // The actual regexps go on exports.re - const re = exports$1.re = []; - const safeRe = exports$1.safeRe = []; - const src = exports$1.src = []; - const safeSrc = exports$1.safeSrc = []; - const t = exports$1.t = {}; - let R = 0; - - const LETTERDASHNUMBER = '[a-zA-Z0-9-]'; - - // Replace some greedy regex tokens to prevent regex dos issues. These regex are - // used internally via the safeRe object since all inputs in this library get - // normalized first to trim and collapse all extra whitespace. The original - // regexes are exported for userland consumption and lower level usage. A - // future breaking change could export the safer regex only with a note that - // all input should have extra whitespace removed. - const safeRegexReplacements = [ - ['\\s', 1], - ['\\d', MAX_LENGTH], - [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH], - ]; - - const makeSafeRegex = (value) => { - for (const [token, max] of safeRegexReplacements) { - value = value - .split(`${token}*`).join(`${token}{0,${max}}`) - .split(`${token}+`).join(`${token}{1,${max}}`); - } - return value - }; - - const createToken = (name, value, isGlobal) => { - const safe = makeSafeRegex(value); - const index = R++; - debug(name, index, value); - t[name] = index; - src[index] = value; - safeSrc[index] = safe; - re[index] = new RegExp(value, isGlobal ? 'g' : undefined); - safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined); - }; - - // The following Regular Expressions can be used for tokenizing, - // validating, and parsing SemVer version strings. - - // ## Numeric Identifier - // A single `0`, or a non-zero digit followed by zero or more digits. - - createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*'); - createToken('NUMERICIDENTIFIERLOOSE', '\\d+'); - - // ## Non-numeric Identifier - // Zero or more digits, followed by a letter or hyphen, and then zero or - // more letters, digits, or hyphens. - - createToken('NONNUMERICIDENTIFIER', `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`); - - // ## Main Version - // Three dot-separated numeric identifiers. - - createToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\.` + - `(${src[t.NUMERICIDENTIFIER]})\\.` + - `(${src[t.NUMERICIDENTIFIER]})`); - - createToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` + - `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` + - `(${src[t.NUMERICIDENTIFIERLOOSE]})`); - - // ## Pre-release Version Identifier - // A numeric identifier, or a non-numeric identifier. - // Non-numeric identifiers include numeric identifiers but can be longer. - // Therefore non-numeric identifiers must go first. - - createToken('PRERELEASEIDENTIFIER', `(?:${src[t.NONNUMERICIDENTIFIER] - }|${src[t.NUMERICIDENTIFIER]})`); - - createToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NONNUMERICIDENTIFIER] - }|${src[t.NUMERICIDENTIFIERLOOSE]})`); - - // ## Pre-release Version - // Hyphen, followed by one or more dot-separated pre-release version - // identifiers. - - createToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER] - }(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`); - - createToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE] - }(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`); - - // ## Build Metadata Identifier - // Any combination of digits, letters, or hyphens. - - createToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`); - - // ## Build Metadata - // Plus sign, followed by one or more period-separated build metadata - // identifiers. - - createToken('BUILD', `(?:\\+(${src[t.BUILDIDENTIFIER] - }(?:\\.${src[t.BUILDIDENTIFIER]})*))`); - - // ## Full Version String - // A main version, followed optionally by a pre-release version and - // build metadata. - - // Note that the only major, minor, patch, and pre-release sections of - // the version string are capturing groups. The build metadata is not a - // capturing group, because it should not ever be used in version - // comparison. - - createToken('FULLPLAIN', `v?${src[t.MAINVERSION] - }${src[t.PRERELEASE]}?${ - src[t.BUILD]}?`); - - createToken('FULL', `^${src[t.FULLPLAIN]}$`); - - // like full, but allows v1.2.3 and =1.2.3, which people do sometimes. - // also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty - // common in the npm registry. - createToken('LOOSEPLAIN', `[v=\\s]*${src[t.MAINVERSIONLOOSE] - }${src[t.PRERELEASELOOSE]}?${ - src[t.BUILD]}?`); - - createToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`); - - createToken('GTLT', '((?:<|>)?=?)'); - - // Something like "2.*" or "1.2.x". - // Note that "x.x" is a valid xRange identifer, meaning "any version" - // Only the first item is strictly required. - createToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`); - createToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`); - - createToken('XRANGEPLAIN', `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})` + - `(?:\\.(${src[t.XRANGEIDENTIFIER]})` + - `(?:\\.(${src[t.XRANGEIDENTIFIER]})` + - `(?:${src[t.PRERELEASE]})?${ - src[t.BUILD]}?` + - `)?)?`); - - createToken('XRANGEPLAINLOOSE', `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` + - `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` + - `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` + - `(?:${src[t.PRERELEASELOOSE]})?${ - src[t.BUILD]}?` + - `)?)?`); - - createToken('XRANGE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`); - createToken('XRANGELOOSE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`); - - // Coercion. - // Extract anything that could conceivably be a part of a valid semver - createToken('COERCEPLAIN', `${'(^|[^\\d])' + - '(\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` + - `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` + - `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`); - createToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\d])`); - createToken('COERCEFULL', src[t.COERCEPLAIN] + - `(?:${src[t.PRERELEASE]})?` + - `(?:${src[t.BUILD]})?` + - `(?:$|[^\\d])`); - createToken('COERCERTL', src[t.COERCE], true); - createToken('COERCERTLFULL', src[t.COERCEFULL], true); - - // Tilde ranges. - // Meaning is "reasonably at or greater than" - createToken('LONETILDE', '(?:~>?)'); - - createToken('TILDETRIM', `(\\s*)${src[t.LONETILDE]}\\s+`, true); - exports$1.tildeTrimReplace = '$1~'; - - createToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`); - createToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`); - - // Caret ranges. - // Meaning is "at least and backwards compatible with" - createToken('LONECARET', '(?:\\^)'); - - createToken('CARETTRIM', `(\\s*)${src[t.LONECARET]}\\s+`, true); - exports$1.caretTrimReplace = '$1^'; - - createToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`); - createToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`); - - // A simple gt/lt/eq thing, or just "" to indicate "any version" - createToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`); - createToken('COMPARATOR', `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`); - - // An expression to strip any whitespace between the gtlt and the thing - // it modifies, so that `> 1.2.3` ==> `>1.2.3` - createToken('COMPARATORTRIM', `(\\s*)${src[t.GTLT] - }\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true); - exports$1.comparatorTrimReplace = '$1$2$3'; - - // Something like `1.2.3 - 1.2.4` - // Note that these all use the loose form, because they'll be - // checked against either the strict or loose comparator form - // later. - createToken('HYPHENRANGE', `^\\s*(${src[t.XRANGEPLAIN]})` + - `\\s+-\\s+` + - `(${src[t.XRANGEPLAIN]})` + - `\\s*$`); - - createToken('HYPHENRANGELOOSE', `^\\s*(${src[t.XRANGEPLAINLOOSE]})` + - `\\s+-\\s+` + - `(${src[t.XRANGEPLAINLOOSE]})` + - `\\s*$`); - - // Star ranges basically just allow anything at all. - createToken('STAR', '(<|>)?=?\\s*\\*'); - // >=0.0.0 is like a star - createToken('GTE0', '^\\s*>=\\s*0\\.0\\.0\\s*$'); - createToken('GTE0PRE', '^\\s*>=\\s*0\\.0\\.0-0\\s*$'); - } (re, re.exports)); - return re.exports; -} - -var parseOptions_1; -var hasRequiredParseOptions; - -function requireParseOptions () { - if (hasRequiredParseOptions) return parseOptions_1; - hasRequiredParseOptions = 1; - - // parse out just the options we care about - const looseOption = Object.freeze({ loose: true }); - const emptyOpts = Object.freeze({ }); - const parseOptions = options => { - if (!options) { - return emptyOpts - } - - if (typeof options !== 'object') { - return looseOption - } - - return options + var createToken = (name, value, isGlobal) => { + const safe = makeSafeRegex(value); + const index = R++; + debug(name, index, value); + t[name] = index; + src[index] = value; + safeSrc[index] = safe; + re[index] = new RegExp(value, isGlobal ? "g" : void 0); + safeRe[index] = new RegExp(safe, isGlobal ? "g" : void 0); }; - parseOptions_1 = parseOptions; - return parseOptions_1; -} - -var identifiers; -var hasRequiredIdentifiers; - -function requireIdentifiers () { - if (hasRequiredIdentifiers) return identifiers; - hasRequiredIdentifiers = 1; - - const numeric = /^[0-9]+$/; - const compareIdentifiers = (a, b) => { - if (typeof a === 'number' && typeof b === 'number') { - return a === b ? 0 : a < b ? -1 : 1 - } - - const anum = numeric.test(a); - const bnum = numeric.test(b); - - if (anum && bnum) { - a = +a; - b = +b; - } - - return a === b ? 0 - : (anum && !bnum) ? -1 - : (bnum && !anum) ? 1 - : a < b ? -1 - : 1 + createToken("NUMERICIDENTIFIER", "0|[1-9]\\d*"); + createToken("NUMERICIDENTIFIERLOOSE", "\\d+"); + createToken("NONNUMERICIDENTIFIER", `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`); + createToken("MAINVERSION", `(${src[t.NUMERICIDENTIFIER]})\\.(${src[t.NUMERICIDENTIFIER]})\\.(${src[t.NUMERICIDENTIFIER]})`); + createToken("MAINVERSIONLOOSE", `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.(${src[t.NUMERICIDENTIFIERLOOSE]})\\.(${src[t.NUMERICIDENTIFIERLOOSE]})`); + createToken("PRERELEASEIDENTIFIER", `(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIER]})`); + createToken("PRERELEASEIDENTIFIERLOOSE", `(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIERLOOSE]})`); + createToken("PRERELEASE", `(?:-(${src[t.PRERELEASEIDENTIFIER]}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`); + createToken("PRERELEASELOOSE", `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`); + createToken("BUILDIDENTIFIER", `${LETTERDASHNUMBER}+`); + createToken("BUILD", `(?:\\+(${src[t.BUILDIDENTIFIER]}(?:\\.${src[t.BUILDIDENTIFIER]})*))`); + createToken("FULLPLAIN", `v?${src[t.MAINVERSION]}${src[t.PRERELEASE]}?${src[t.BUILD]}?`); + createToken("FULL", `^${src[t.FULLPLAIN]}$`); + createToken("LOOSEPLAIN", `[v=\\s]*${src[t.MAINVERSIONLOOSE]}${src[t.PRERELEASELOOSE]}?${src[t.BUILD]}?`); + createToken("LOOSE", `^${src[t.LOOSEPLAIN]}$`); + createToken("GTLT", "((?:<|>)?=?)"); + createToken("XRANGEIDENTIFIERLOOSE", `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`); + createToken("XRANGEIDENTIFIER", `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`); + createToken("XRANGEPLAIN", `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})(?:\\.(${src[t.XRANGEIDENTIFIER]})(?:\\.(${src[t.XRANGEIDENTIFIER]})(?:${src[t.PRERELEASE]})?${src[t.BUILD]}?)?)?`); + createToken("XRANGEPLAINLOOSE", `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:${src[t.PRERELEASELOOSE]})?${src[t.BUILD]}?)?)?`); + createToken("XRANGE", `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`); + createToken("XRANGELOOSE", `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`); + createToken("COERCEPLAIN", `(^|[^\\d])(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}})(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`); + createToken("COERCE", `${src[t.COERCEPLAIN]}(?:$|[^\\d])`); + createToken("COERCEFULL", src[t.COERCEPLAIN] + `(?:${src[t.PRERELEASE]})?(?:${src[t.BUILD]})?(?:$|[^\\d])`); + createToken("COERCERTL", src[t.COERCE], true); + createToken("COERCERTLFULL", src[t.COERCEFULL], true); + createToken("LONETILDE", "(?:~>?)"); + createToken("TILDETRIM", `(\\s*)${src[t.LONETILDE]}\\s+`, true); + exports.tildeTrimReplace = "$1~"; + createToken("TILDE", `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`); + createToken("TILDELOOSE", `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`); + createToken("LONECARET", "(?:\\^)"); + createToken("CARETTRIM", `(\\s*)${src[t.LONECARET]}\\s+`, true); + exports.caretTrimReplace = "$1^"; + createToken("CARET", `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`); + createToken("CARETLOOSE", `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`); + createToken("COMPARATORLOOSE", `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`); + createToken("COMPARATOR", `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`); + createToken("COMPARATORTRIM", `(\\s*)${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true); + exports.comparatorTrimReplace = "$1$2$3"; + createToken("HYPHENRANGE", `^\\s*(${src[t.XRANGEPLAIN]})\\s+-\\s+(${src[t.XRANGEPLAIN]})\\s*$`); + createToken("HYPHENRANGELOOSE", `^\\s*(${src[t.XRANGEPLAINLOOSE]})\\s+-\\s+(${src[t.XRANGEPLAINLOOSE]})\\s*$`); + createToken("STAR", "(<|>)?=?\\s*\\*"); + createToken("GTE0", "^\\s*>=\\s*0\\.0\\.0\\s*$"); + createToken("GTE0PRE", "^\\s*>=\\s*0\\.0\\.0-0\\s*$"); +})); +//#endregion +//#region node_modules/semver/internal/parse-options.js +var require_parse_options = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var looseOption = Object.freeze({ loose: true }); + var emptyOpts = Object.freeze({}); + var parseOptions = (options) => { + if (!options) return emptyOpts; + if (typeof options !== "object") return looseOption; + return options; }; - - const rcompareIdentifiers = (a, b) => compareIdentifiers(b, a); - - identifiers = { - compareIdentifiers, - rcompareIdentifiers, + module.exports = parseOptions; +})); +//#endregion +//#region node_modules/semver/internal/identifiers.js +var require_identifiers = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var numeric = /^[0-9]+$/; + var compareIdentifiers = (a, b) => { + if (typeof a === "number" && typeof b === "number") return a === b ? 0 : a < b ? -1 : 1; + const anum = numeric.test(a); + const bnum = numeric.test(b); + if (anum && bnum) { + a = +a; + b = +b; + } + return a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1; }; - return identifiers; -} - -var semver$1; -var hasRequiredSemver$1; - -function requireSemver$1 () { - if (hasRequiredSemver$1) return semver$1; - hasRequiredSemver$1 = 1; - - const debug = requireDebug(); - const { MAX_LENGTH, MAX_SAFE_INTEGER } = requireConstants(); - const { safeRe: re, t } = requireRe(); - - const parseOptions = requireParseOptions(); - const { compareIdentifiers } = requireIdentifiers(); - class SemVer { - constructor (version, options) { - options = parseOptions(options); - - if (version instanceof SemVer) { - if (version.loose === !!options.loose && - version.includePrerelease === !!options.includePrerelease) { - return version - } else { - version = version.version; - } - } else if (typeof version !== 'string') { - throw new TypeError(`Invalid version. Must be a string. Got type "${typeof version}".`) - } - - if (version.length > MAX_LENGTH) { - throw new TypeError( - `version is longer than ${MAX_LENGTH} characters` - ) - } - - debug('SemVer', version, options); - this.options = options; - this.loose = !!options.loose; - // this isn't actually relevant for versions, but keep it so that we - // don't run into trouble passing this.options around. - this.includePrerelease = !!options.includePrerelease; - - const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]); - - if (!m) { - throw new TypeError(`Invalid Version: ${version}`) - } - - this.raw = version; - - // these are actually numbers - this.major = +m[1]; - this.minor = +m[2]; - this.patch = +m[3]; - - if (this.major > MAX_SAFE_INTEGER || this.major < 0) { - throw new TypeError('Invalid major version') - } - - if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { - throw new TypeError('Invalid minor version') - } - - if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { - throw new TypeError('Invalid patch version') - } - - // numberify any prerelease numeric ids - if (!m[4]) { - this.prerelease = []; - } else { - this.prerelease = m[4].split('.').map((id) => { - if (/^[0-9]+$/.test(id)) { - const num = +id; - if (num >= 0 && num < MAX_SAFE_INTEGER) { - return num - } - } - return id - }); - } - - this.build = m[5] ? m[5].split('.') : []; - this.format(); - } - - format () { - this.version = `${this.major}.${this.minor}.${this.patch}`; - if (this.prerelease.length) { - this.version += `-${this.prerelease.join('.')}`; - } - return this.version - } - - toString () { - return this.version - } - - compare (other) { - debug('SemVer.compare', this.version, this.options, other); - if (!(other instanceof SemVer)) { - if (typeof other === 'string' && other === this.version) { - return 0 - } - other = new SemVer(other, this.options); - } - - if (other.version === this.version) { - return 0 - } - - return this.compareMain(other) || this.comparePre(other) - } - - compareMain (other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options); - } - - if (this.major < other.major) { - return -1 - } - if (this.major > other.major) { - return 1 - } - if (this.minor < other.minor) { - return -1 - } - if (this.minor > other.minor) { - return 1 - } - if (this.patch < other.patch) { - return -1 - } - if (this.patch > other.patch) { - return 1 - } - return 0 - } - - comparePre (other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options); - } - - // NOT having a prerelease is > having one - if (this.prerelease.length && !other.prerelease.length) { - return -1 - } else if (!this.prerelease.length && other.prerelease.length) { - return 1 - } else if (!this.prerelease.length && !other.prerelease.length) { - return 0 - } - - let i = 0; - do { - const a = this.prerelease[i]; - const b = other.prerelease[i]; - debug('prerelease compare', i, a, b); - if (a === undefined && b === undefined) { - return 0 - } else if (b === undefined) { - return 1 - } else if (a === undefined) { - return -1 - } else if (a === b) { - continue - } else { - return compareIdentifiers(a, b) - } - } while (++i) - } - - compareBuild (other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options); - } - - let i = 0; - do { - const a = this.build[i]; - const b = other.build[i]; - debug('build compare', i, a, b); - if (a === undefined && b === undefined) { - return 0 - } else if (b === undefined) { - return 1 - } else if (a === undefined) { - return -1 - } else if (a === b) { - continue - } else { - return compareIdentifiers(a, b) - } - } while (++i) - } - - // preminor will bump the version up to the next minor release, and immediately - // down to pre-release. premajor and prepatch work the same way. - inc (release, identifier, identifierBase) { - if (release.startsWith('pre')) { - if (!identifier && identifierBase === false) { - throw new Error('invalid increment argument: identifier is empty') - } - // Avoid an invalid semver results - if (identifier) { - const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE]); - if (!match || match[1] !== identifier) { - throw new Error(`invalid identifier: ${identifier}`) - } - } - } - - switch (release) { - case 'premajor': - this.prerelease.length = 0; - this.patch = 0; - this.minor = 0; - this.major++; - this.inc('pre', identifier, identifierBase); - break - case 'preminor': - this.prerelease.length = 0; - this.patch = 0; - this.minor++; - this.inc('pre', identifier, identifierBase); - break - case 'prepatch': - // If this is already a prerelease, it will bump to the next version - // drop any prereleases that might already exist, since they are not - // relevant at this point. - this.prerelease.length = 0; - this.inc('patch', identifier, identifierBase); - this.inc('pre', identifier, identifierBase); - break - // If the input is a non-prerelease version, this acts the same as - // prepatch. - case 'prerelease': - if (this.prerelease.length === 0) { - this.inc('patch', identifier, identifierBase); - } - this.inc('pre', identifier, identifierBase); - break - case 'release': - if (this.prerelease.length === 0) { - throw new Error(`version ${this.raw} is not a prerelease`) - } - this.prerelease.length = 0; - break - - case 'major': - // If this is a pre-major version, bump up to the same major version. - // Otherwise increment major. - // 1.0.0-5 bumps to 1.0.0 - // 1.1.0 bumps to 2.0.0 - if ( - this.minor !== 0 || - this.patch !== 0 || - this.prerelease.length === 0 - ) { - this.major++; - } - this.minor = 0; - this.patch = 0; - this.prerelease = []; - break - case 'minor': - // If this is a pre-minor version, bump up to the same minor version. - // Otherwise increment minor. - // 1.2.0-5 bumps to 1.2.0 - // 1.2.1 bumps to 1.3.0 - if (this.patch !== 0 || this.prerelease.length === 0) { - this.minor++; - } - this.patch = 0; - this.prerelease = []; - break - case 'patch': - // If this is not a pre-release version, it will increment the patch. - // If it is a pre-release it will bump up to the same patch version. - // 1.2.0-5 patches to 1.2.0 - // 1.2.0 patches to 1.2.1 - if (this.prerelease.length === 0) { - this.patch++; - } - this.prerelease = []; - break - // This probably shouldn't be used publicly. - // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction. - case 'pre': { - const base = Number(identifierBase) ? 1 : 0; - - if (this.prerelease.length === 0) { - this.prerelease = [base]; - } else { - let i = this.prerelease.length; - while (--i >= 0) { - if (typeof this.prerelease[i] === 'number') { - this.prerelease[i]++; - i = -2; - } - } - if (i === -1) { - // didn't increment anything - if (identifier === this.prerelease.join('.') && identifierBase === false) { - throw new Error('invalid increment argument: identifier already exists') - } - this.prerelease.push(base); - } - } - if (identifier) { - // 1.2.0-beta.1 bumps to 1.2.0-beta.2, - // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 - let prerelease = [identifier, base]; - if (identifierBase === false) { - prerelease = [identifier]; - } - if (compareIdentifiers(this.prerelease[0], identifier) === 0) { - if (isNaN(this.prerelease[1])) { - this.prerelease = prerelease; - } - } else { - this.prerelease = prerelease; - } - } - break - } - default: - throw new Error(`invalid increment argument: ${release}`) - } - this.raw = this.format(); - if (this.build.length) { - this.raw += `+${this.build.join('.')}`; - } - return this - } - } - - semver$1 = SemVer; - return semver$1; -} - -var parse_1; -var hasRequiredParse; - -function requireParse () { - if (hasRequiredParse) return parse_1; - hasRequiredParse = 1; - - const SemVer = requireSemver$1(); - const parse = (version, options, throwErrors = false) => { - if (version instanceof SemVer) { - return version - } - try { - return new SemVer(version, options) - } catch (er) { - if (!throwErrors) { - return null - } - throw er - } + var rcompareIdentifiers = (a, b) => compareIdentifiers(b, a); + module.exports = { + compareIdentifiers, + rcompareIdentifiers }; - - parse_1 = parse; - return parse_1; -} - -var valid_1; -var hasRequiredValid$1; - -function requireValid$1 () { - if (hasRequiredValid$1) return valid_1; - hasRequiredValid$1 = 1; - - const parse = requireParse(); - const valid = (version, options) => { - const v = parse(version, options); - return v ? v.version : null +})); +//#endregion +//#region node_modules/semver/classes/semver.js +var require_semver$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var debug = require_debug(); + var { MAX_LENGTH, MAX_SAFE_INTEGER } = require_constants(); + var { safeRe: re, t } = require_re(); + var parseOptions = require_parse_options(); + var { compareIdentifiers } = require_identifiers(); + module.exports = class SemVer { + constructor(version, options) { + options = parseOptions(options); + if (version instanceof SemVer) if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) return version; + else version = version.version; + else if (typeof version !== "string") throw new TypeError(`Invalid version. Must be a string. Got type "${typeof version}".`); + if (version.length > MAX_LENGTH) throw new TypeError(`version is longer than ${MAX_LENGTH} characters`); + debug("SemVer", version, options); + this.options = options; + this.loose = !!options.loose; + this.includePrerelease = !!options.includePrerelease; + const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]); + if (!m) throw new TypeError(`Invalid Version: ${version}`); + this.raw = version; + this.major = +m[1]; + this.minor = +m[2]; + this.patch = +m[3]; + if (this.major > MAX_SAFE_INTEGER || this.major < 0) throw new TypeError("Invalid major version"); + if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) throw new TypeError("Invalid minor version"); + if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) throw new TypeError("Invalid patch version"); + if (!m[4]) this.prerelease = []; + else this.prerelease = m[4].split(".").map((id) => { + if (/^[0-9]+$/.test(id)) { + const num = +id; + if (num >= 0 && num < MAX_SAFE_INTEGER) return num; + } + return id; + }); + this.build = m[5] ? m[5].split(".") : []; + this.format(); + } + format() { + this.version = `${this.major}.${this.minor}.${this.patch}`; + if (this.prerelease.length) this.version += `-${this.prerelease.join(".")}`; + return this.version; + } + toString() { + return this.version; + } + compare(other) { + debug("SemVer.compare", this.version, this.options, other); + if (!(other instanceof SemVer)) { + if (typeof other === "string" && other === this.version) return 0; + other = new SemVer(other, this.options); + } + if (other.version === this.version) return 0; + return this.compareMain(other) || this.comparePre(other); + } + compareMain(other) { + if (!(other instanceof SemVer)) other = new SemVer(other, this.options); + if (this.major < other.major) return -1; + if (this.major > other.major) return 1; + if (this.minor < other.minor) return -1; + if (this.minor > other.minor) return 1; + if (this.patch < other.patch) return -1; + if (this.patch > other.patch) return 1; + return 0; + } + comparePre(other) { + if (!(other instanceof SemVer)) other = new SemVer(other, this.options); + if (this.prerelease.length && !other.prerelease.length) return -1; + else if (!this.prerelease.length && other.prerelease.length) return 1; + else if (!this.prerelease.length && !other.prerelease.length) return 0; + let i = 0; + do { + const a = this.prerelease[i]; + const b = other.prerelease[i]; + debug("prerelease compare", i, a, b); + if (a === void 0 && b === void 0) return 0; + else if (b === void 0) return 1; + else if (a === void 0) return -1; + else if (a === b) continue; + else return compareIdentifiers(a, b); + } while (++i); + } + compareBuild(other) { + if (!(other instanceof SemVer)) other = new SemVer(other, this.options); + let i = 0; + do { + const a = this.build[i]; + const b = other.build[i]; + debug("build compare", i, a, b); + if (a === void 0 && b === void 0) return 0; + else if (b === void 0) return 1; + else if (a === void 0) return -1; + else if (a === b) continue; + else return compareIdentifiers(a, b); + } while (++i); + } + inc(release, identifier, identifierBase) { + if (release.startsWith("pre")) { + if (!identifier && identifierBase === false) throw new Error("invalid increment argument: identifier is empty"); + if (identifier) { + const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE]); + if (!match || match[1] !== identifier) throw new Error(`invalid identifier: ${identifier}`); + } + } + switch (release) { + case "premajor": + this.prerelease.length = 0; + this.patch = 0; + this.minor = 0; + this.major++; + this.inc("pre", identifier, identifierBase); + break; + case "preminor": + this.prerelease.length = 0; + this.patch = 0; + this.minor++; + this.inc("pre", identifier, identifierBase); + break; + case "prepatch": + this.prerelease.length = 0; + this.inc("patch", identifier, identifierBase); + this.inc("pre", identifier, identifierBase); + break; + case "prerelease": + if (this.prerelease.length === 0) this.inc("patch", identifier, identifierBase); + this.inc("pre", identifier, identifierBase); + break; + case "release": + if (this.prerelease.length === 0) throw new Error(`version ${this.raw} is not a prerelease`); + this.prerelease.length = 0; + break; + case "major": + if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) this.major++; + this.minor = 0; + this.patch = 0; + this.prerelease = []; + break; + case "minor": + if (this.patch !== 0 || this.prerelease.length === 0) this.minor++; + this.patch = 0; + this.prerelease = []; + break; + case "patch": + if (this.prerelease.length === 0) this.patch++; + this.prerelease = []; + break; + case "pre": { + const base = Number(identifierBase) ? 1 : 0; + if (this.prerelease.length === 0) this.prerelease = [base]; + else { + let i = this.prerelease.length; + while (--i >= 0) if (typeof this.prerelease[i] === "number") { + this.prerelease[i]++; + i = -2; + } + if (i === -1) { + if (identifier === this.prerelease.join(".") && identifierBase === false) throw new Error("invalid increment argument: identifier already exists"); + this.prerelease.push(base); + } + } + if (identifier) { + let prerelease = [identifier, base]; + if (identifierBase === false) prerelease = [identifier]; + if (compareIdentifiers(this.prerelease[0], identifier) === 0) { + if (isNaN(this.prerelease[1])) this.prerelease = prerelease; + } else this.prerelease = prerelease; + } + break; + } + default: throw new Error(`invalid increment argument: ${release}`); + } + this.raw = this.format(); + if (this.build.length) this.raw += `+${this.build.join(".")}`; + return this; + } }; - valid_1 = valid; - return valid_1; -} - -var clean_1; -var hasRequiredClean; - -function requireClean () { - if (hasRequiredClean) return clean_1; - hasRequiredClean = 1; - - const parse = requireParse(); - const clean = (version, options) => { - const s = parse(version.trim().replace(/^[=v]+/, ''), options); - return s ? s.version : null +})); +//#endregion +//#region node_modules/semver/functions/parse.js +var require_parse = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var SemVer = require_semver$1(); + var parse = (version, options, throwErrors = false) => { + if (version instanceof SemVer) return version; + try { + return new SemVer(version, options); + } catch (er) { + if (!throwErrors) return null; + throw er; + } }; - clean_1 = clean; - return clean_1; -} - -var inc_1; -var hasRequiredInc; - -function requireInc () { - if (hasRequiredInc) return inc_1; - hasRequiredInc = 1; - - const SemVer = requireSemver$1(); - - const inc = (version, release, options, identifier, identifierBase) => { - if (typeof (options) === 'string') { - identifierBase = identifier; - identifier = options; - options = undefined; - } - - try { - return new SemVer( - version instanceof SemVer ? version.version : version, - options - ).inc(release, identifier, identifierBase).version - } catch (er) { - return null - } + module.exports = parse; +})); +//#endregion +//#region node_modules/semver/functions/valid.js +var require_valid$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var parse = require_parse(); + var valid = (version, options) => { + const v = parse(version, options); + return v ? v.version : null; }; - inc_1 = inc; - return inc_1; -} - -var diff_1; -var hasRequiredDiff; - -function requireDiff () { - if (hasRequiredDiff) return diff_1; - hasRequiredDiff = 1; - - const parse = requireParse(); - - const diff = (version1, version2) => { - const v1 = parse(version1, null, true); - const v2 = parse(version2, null, true); - const comparison = v1.compare(v2); - - if (comparison === 0) { - return null - } - - const v1Higher = comparison > 0; - const highVersion = v1Higher ? v1 : v2; - const lowVersion = v1Higher ? v2 : v1; - const highHasPre = !!highVersion.prerelease.length; - const lowHasPre = !!lowVersion.prerelease.length; - - if (lowHasPre && !highHasPre) { - // Going from prerelease -> no prerelease requires some special casing - - // If the low version has only a major, then it will always be a major - // Some examples: - // 1.0.0-1 -> 1.0.0 - // 1.0.0-1 -> 1.1.1 - // 1.0.0-1 -> 2.0.0 - if (!lowVersion.patch && !lowVersion.minor) { - return 'major' - } - - // If the main part has no difference - if (lowVersion.compareMain(highVersion) === 0) { - if (lowVersion.minor && !lowVersion.patch) { - return 'minor' - } - return 'patch' - } - } - - // add the `pre` prefix if we are going to a prerelease version - const prefix = highHasPre ? 'pre' : ''; - - if (v1.major !== v2.major) { - return prefix + 'major' - } - - if (v1.minor !== v2.minor) { - return prefix + 'minor' - } - - if (v1.patch !== v2.patch) { - return prefix + 'patch' - } - - // high and low are prereleases - return 'prerelease' + module.exports = valid; +})); +//#endregion +//#region node_modules/semver/functions/clean.js +var require_clean = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var parse = require_parse(); + var clean = (version, options) => { + const s = parse(version.trim().replace(/^[=v]+/, ""), options); + return s ? s.version : null; }; - - diff_1 = diff; - return diff_1; -} - -var major_1; -var hasRequiredMajor; - -function requireMajor () { - if (hasRequiredMajor) return major_1; - hasRequiredMajor = 1; - - const SemVer = requireSemver$1(); - const major = (a, loose) => new SemVer(a, loose).major; - major_1 = major; - return major_1; -} - -var minor_1; -var hasRequiredMinor; - -function requireMinor () { - if (hasRequiredMinor) return minor_1; - hasRequiredMinor = 1; - - const SemVer = requireSemver$1(); - const minor = (a, loose) => new SemVer(a, loose).minor; - minor_1 = minor; - return minor_1; -} - -var patch_1; -var hasRequiredPatch; - -function requirePatch () { - if (hasRequiredPatch) return patch_1; - hasRequiredPatch = 1; - - const SemVer = requireSemver$1(); - const patch = (a, loose) => new SemVer(a, loose).patch; - patch_1 = patch; - return patch_1; -} - -var prerelease_1; -var hasRequiredPrerelease; - -function requirePrerelease () { - if (hasRequiredPrerelease) return prerelease_1; - hasRequiredPrerelease = 1; - - const parse = requireParse(); - const prerelease = (version, options) => { - const parsed = parse(version, options); - return (parsed && parsed.prerelease.length) ? parsed.prerelease : null + module.exports = clean; +})); +//#endregion +//#region node_modules/semver/functions/inc.js +var require_inc = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var SemVer = require_semver$1(); + var inc = (version, release, options, identifier, identifierBase) => { + if (typeof options === "string") { + identifierBase = identifier; + identifier = options; + options = void 0; + } + try { + return new SemVer(version instanceof SemVer ? version.version : version, options).inc(release, identifier, identifierBase).version; + } catch (er) { + return null; + } }; - prerelease_1 = prerelease; - return prerelease_1; -} - -var compare_1; -var hasRequiredCompare; - -function requireCompare () { - if (hasRequiredCompare) return compare_1; - hasRequiredCompare = 1; - - const SemVer = requireSemver$1(); - const compare = (a, b, loose) => - new SemVer(a, loose).compare(new SemVer(b, loose)); - - compare_1 = compare; - return compare_1; -} - -var rcompare_1; -var hasRequiredRcompare; - -function requireRcompare () { - if (hasRequiredRcompare) return rcompare_1; - hasRequiredRcompare = 1; - - const compare = requireCompare(); - const rcompare = (a, b, loose) => compare(b, a, loose); - rcompare_1 = rcompare; - return rcompare_1; -} - -var compareLoose_1; -var hasRequiredCompareLoose; - -function requireCompareLoose () { - if (hasRequiredCompareLoose) return compareLoose_1; - hasRequiredCompareLoose = 1; - - const compare = requireCompare(); - const compareLoose = (a, b) => compare(a, b, true); - compareLoose_1 = compareLoose; - return compareLoose_1; -} - -var compareBuild_1; -var hasRequiredCompareBuild; - -function requireCompareBuild () { - if (hasRequiredCompareBuild) return compareBuild_1; - hasRequiredCompareBuild = 1; - - const SemVer = requireSemver$1(); - const compareBuild = (a, b, loose) => { - const versionA = new SemVer(a, loose); - const versionB = new SemVer(b, loose); - return versionA.compare(versionB) || versionA.compareBuild(versionB) + module.exports = inc; +})); +//#endregion +//#region node_modules/semver/functions/diff.js +var require_diff = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var parse = require_parse(); + var diff = (version1, version2) => { + const v1 = parse(version1, null, true); + const v2 = parse(version2, null, true); + const comparison = v1.compare(v2); + if (comparison === 0) return null; + const v1Higher = comparison > 0; + const highVersion = v1Higher ? v1 : v2; + const lowVersion = v1Higher ? v2 : v1; + const highHasPre = !!highVersion.prerelease.length; + if (!!lowVersion.prerelease.length && !highHasPre) { + if (!lowVersion.patch && !lowVersion.minor) return "major"; + if (lowVersion.compareMain(highVersion) === 0) { + if (lowVersion.minor && !lowVersion.patch) return "minor"; + return "patch"; + } + } + const prefix = highHasPre ? "pre" : ""; + if (v1.major !== v2.major) return prefix + "major"; + if (v1.minor !== v2.minor) return prefix + "minor"; + if (v1.patch !== v2.patch) return prefix + "patch"; + return "prerelease"; }; - compareBuild_1 = compareBuild; - return compareBuild_1; -} - -var sort_1; -var hasRequiredSort; - -function requireSort () { - if (hasRequiredSort) return sort_1; - hasRequiredSort = 1; - - const compareBuild = requireCompareBuild(); - const sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose)); - sort_1 = sort; - return sort_1; -} - -var rsort_1; -var hasRequiredRsort; - -function requireRsort () { - if (hasRequiredRsort) return rsort_1; - hasRequiredRsort = 1; - - const compareBuild = requireCompareBuild(); - const rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose)); - rsort_1 = rsort; - return rsort_1; -} - -var gt_1; -var hasRequiredGt; - -function requireGt () { - if (hasRequiredGt) return gt_1; - hasRequiredGt = 1; - - const compare = requireCompare(); - const gt = (a, b, loose) => compare(a, b, loose) > 0; - gt_1 = gt; - return gt_1; -} - -var lt_1; -var hasRequiredLt; - -function requireLt () { - if (hasRequiredLt) return lt_1; - hasRequiredLt = 1; - - const compare = requireCompare(); - const lt = (a, b, loose) => compare(a, b, loose) < 0; - lt_1 = lt; - return lt_1; -} - -var eq_1; -var hasRequiredEq; - -function requireEq () { - if (hasRequiredEq) return eq_1; - hasRequiredEq = 1; - - const compare = requireCompare(); - const eq = (a, b, loose) => compare(a, b, loose) === 0; - eq_1 = eq; - return eq_1; -} - -var neq_1; -var hasRequiredNeq; - -function requireNeq () { - if (hasRequiredNeq) return neq_1; - hasRequiredNeq = 1; - - const compare = requireCompare(); - const neq = (a, b, loose) => compare(a, b, loose) !== 0; - neq_1 = neq; - return neq_1; -} - -var gte_1; -var hasRequiredGte; - -function requireGte () { - if (hasRequiredGte) return gte_1; - hasRequiredGte = 1; - - const compare = requireCompare(); - const gte = (a, b, loose) => compare(a, b, loose) >= 0; - gte_1 = gte; - return gte_1; -} - -var lte_1; -var hasRequiredLte; - -function requireLte () { - if (hasRequiredLte) return lte_1; - hasRequiredLte = 1; - - const compare = requireCompare(); - const lte = (a, b, loose) => compare(a, b, loose) <= 0; - lte_1 = lte; - return lte_1; -} - -var cmp_1; -var hasRequiredCmp; - -function requireCmp () { - if (hasRequiredCmp) return cmp_1; - hasRequiredCmp = 1; - - const eq = requireEq(); - const neq = requireNeq(); - const gt = requireGt(); - const gte = requireGte(); - const lt = requireLt(); - const lte = requireLte(); - - const cmp = (a, op, b, loose) => { - switch (op) { - case '===': - if (typeof a === 'object') { - a = a.version; - } - if (typeof b === 'object') { - b = b.version; - } - return a === b - - case '!==': - if (typeof a === 'object') { - a = a.version; - } - if (typeof b === 'object') { - b = b.version; - } - return a !== b - - case '': - case '=': - case '==': - return eq(a, b, loose) - - case '!=': - return neq(a, b, loose) - - case '>': - return gt(a, b, loose) - - case '>=': - return gte(a, b, loose) - - case '<': - return lt(a, b, loose) - - case '<=': - return lte(a, b, loose) - - default: - throw new TypeError(`Invalid operator: ${op}`) - } + module.exports = diff; +})); +//#endregion +//#region node_modules/semver/functions/major.js +var require_major = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var SemVer = require_semver$1(); + var major = (a, loose) => new SemVer(a, loose).major; + module.exports = major; +})); +//#endregion +//#region node_modules/semver/functions/minor.js +var require_minor = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var SemVer = require_semver$1(); + var minor = (a, loose) => new SemVer(a, loose).minor; + module.exports = minor; +})); +//#endregion +//#region node_modules/semver/functions/patch.js +var require_patch = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var SemVer = require_semver$1(); + var patch = (a, loose) => new SemVer(a, loose).patch; + module.exports = patch; +})); +//#endregion +//#region node_modules/semver/functions/prerelease.js +var require_prerelease = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var parse = require_parse(); + var prerelease = (version, options) => { + const parsed = parse(version, options); + return parsed && parsed.prerelease.length ? parsed.prerelease : null; }; - cmp_1 = cmp; - return cmp_1; -} - -var coerce_1; -var hasRequiredCoerce; - -function requireCoerce () { - if (hasRequiredCoerce) return coerce_1; - hasRequiredCoerce = 1; - - const SemVer = requireSemver$1(); - const parse = requireParse(); - const { safeRe: re, t } = requireRe(); - - const coerce = (version, options) => { - if (version instanceof SemVer) { - return version - } - - if (typeof version === 'number') { - version = String(version); - } - - if (typeof version !== 'string') { - return null - } - - options = options || {}; - - let match = null; - if (!options.rtl) { - match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE]); - } else { - // Find the right-most coercible string that does not share - // a terminus with a more left-ward coercible string. - // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4' - // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4' - // - // Walk through the string checking with a /g regexp - // Manually set the index so as to pick up overlapping matches. - // Stop when we get a match that ends at the string end, since no - // coercible string can be more right-ward without the same terminus. - const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]; - let next; - while ((next = coerceRtlRegex.exec(version)) && - (!match || match.index + match[0].length !== version.length) - ) { - if (!match || - next.index + next[0].length !== match.index + match[0].length) { - match = next; - } - coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length; - } - // leave it in a clean state - coerceRtlRegex.lastIndex = -1; - } - - if (match === null) { - return null - } - - const major = match[2]; - const minor = match[3] || '0'; - const patch = match[4] || '0'; - const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ''; - const build = options.includePrerelease && match[6] ? `+${match[6]}` : ''; - - return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options) + module.exports = prerelease; +})); +//#endregion +//#region node_modules/semver/functions/compare.js +var require_compare = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var SemVer = require_semver$1(); + var compare = (a, b, loose) => new SemVer(a, loose).compare(new SemVer(b, loose)); + module.exports = compare; +})); +//#endregion +//#region node_modules/semver/functions/rcompare.js +var require_rcompare = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var compare = require_compare(); + var rcompare = (a, b, loose) => compare(b, a, loose); + module.exports = rcompare; +})); +//#endregion +//#region node_modules/semver/functions/compare-loose.js +var require_compare_loose = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var compare = require_compare(); + var compareLoose = (a, b) => compare(a, b, true); + module.exports = compareLoose; +})); +//#endregion +//#region node_modules/semver/functions/compare-build.js +var require_compare_build = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var SemVer = require_semver$1(); + var compareBuild = (a, b, loose) => { + const versionA = new SemVer(a, loose); + const versionB = new SemVer(b, loose); + return versionA.compare(versionB) || versionA.compareBuild(versionB); }; - coerce_1 = coerce; - return coerce_1; -} - -var lrucache; -var hasRequiredLrucache; - -function requireLrucache () { - if (hasRequiredLrucache) return lrucache; - hasRequiredLrucache = 1; - - class LRUCache { - constructor () { - this.max = 1000; - this.map = new Map(); - } - - get (key) { - const value = this.map.get(key); - if (value === undefined) { - return undefined - } else { - // Remove the key from the map and add it to the end - this.map.delete(key); - this.map.set(key, value); - return value - } - } - - delete (key) { - return this.map.delete(key) - } - - set (key, value) { - const deleted = this.delete(key); - - if (!deleted && value !== undefined) { - // If cache is full, delete the least recently used item - if (this.map.size >= this.max) { - const firstKey = this.map.keys().next().value; - this.delete(firstKey); - } - - this.map.set(key, value); - } - - return this - } - } - - lrucache = LRUCache; - return lrucache; -} - -var range; -var hasRequiredRange; - -function requireRange () { - if (hasRequiredRange) return range; - hasRequiredRange = 1; - - const SPACE_CHARACTERS = /\s+/g; - - // hoisted class for cyclic dependency - class Range { - constructor (range, options) { - options = parseOptions(options); - - if (range instanceof Range) { - if ( - range.loose === !!options.loose && - range.includePrerelease === !!options.includePrerelease - ) { - return range - } else { - return new Range(range.raw, options) - } - } - - if (range instanceof Comparator) { - // just put it in the set and return - this.raw = range.value; - this.set = [[range]]; - this.formatted = undefined; - return this - } - - this.options = options; - this.loose = !!options.loose; - this.includePrerelease = !!options.includePrerelease; - - // First reduce all whitespace as much as possible so we do not have to rely - // on potentially slow regexes like \s*. This is then stored and used for - // future error messages as well. - this.raw = range.trim().replace(SPACE_CHARACTERS, ' '); - - // First, split on || - this.set = this.raw - .split('||') - // map the range to a 2d array of comparators - .map(r => this.parseRange(r.trim())) - // throw out any comparator lists that are empty - // this generally means that it was not a valid range, which is allowed - // in loose mode, but will still throw if the WHOLE range is invalid. - .filter(c => c.length); - - if (!this.set.length) { - throw new TypeError(`Invalid SemVer Range: ${this.raw}`) - } - - // if we have any that are not the null set, throw out null sets. - if (this.set.length > 1) { - // keep the first one, in case they're all null sets - const first = this.set[0]; - this.set = this.set.filter(c => !isNullSet(c[0])); - if (this.set.length === 0) { - this.set = [first]; - } else if (this.set.length > 1) { - // if we have any that are *, then the range is just * - for (const c of this.set) { - if (c.length === 1 && isAny(c[0])) { - this.set = [c]; - break - } - } - } - } - - this.formatted = undefined; - } - - get range () { - if (this.formatted === undefined) { - this.formatted = ''; - for (let i = 0; i < this.set.length; i++) { - if (i > 0) { - this.formatted += '||'; - } - const comps = this.set[i]; - for (let k = 0; k < comps.length; k++) { - if (k > 0) { - this.formatted += ' '; - } - this.formatted += comps[k].toString().trim(); - } - } - } - return this.formatted - } - - format () { - return this.range - } - - toString () { - return this.range - } - - parseRange (range) { - // memoize range parsing for performance. - // this is a very hot path, and fully deterministic. - const memoOpts = - (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | - (this.options.loose && FLAG_LOOSE); - const memoKey = memoOpts + ':' + range; - const cached = cache.get(memoKey); - if (cached) { - return cached - } - - const loose = this.options.loose; - // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` - const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]; - range = range.replace(hr, hyphenReplace(this.options.includePrerelease)); - debug('hyphen replace', range); - - // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5` - range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace); - debug('comparator trim', range); - - // `~ 1.2.3` => `~1.2.3` - range = range.replace(re[t.TILDETRIM], tildeTrimReplace); - debug('tilde trim', range); - - // `^ 1.2.3` => `^1.2.3` - range = range.replace(re[t.CARETTRIM], caretTrimReplace); - debug('caret trim', range); - - // At this point, the range is completely trimmed and - // ready to be split into comparators. - - let rangeList = range - .split(' ') - .map(comp => parseComparator(comp, this.options)) - .join(' ') - .split(/\s+/) - // >=0.0.0 is equivalent to * - .map(comp => replaceGTE0(comp, this.options)); - - if (loose) { - // in loose mode, throw out any that are not valid comparators - rangeList = rangeList.filter(comp => { - debug('loose invalid filter', comp, this.options); - return !!comp.match(re[t.COMPARATORLOOSE]) - }); - } - debug('range list', rangeList); - - // if any comparators are the null set, then replace with JUST null set - // if more than one comparator, remove any * comparators - // also, don't include the same comparator more than once - const rangeMap = new Map(); - const comparators = rangeList.map(comp => new Comparator(comp, this.options)); - for (const comp of comparators) { - if (isNullSet(comp)) { - return [comp] - } - rangeMap.set(comp.value, comp); - } - if (rangeMap.size > 1 && rangeMap.has('')) { - rangeMap.delete(''); - } - - const result = [...rangeMap.values()]; - cache.set(memoKey, result); - return result - } - - intersects (range, options) { - if (!(range instanceof Range)) { - throw new TypeError('a Range is required') - } - - return this.set.some((thisComparators) => { - return ( - isSatisfiable(thisComparators, options) && - range.set.some((rangeComparators) => { - return ( - isSatisfiable(rangeComparators, options) && - thisComparators.every((thisComparator) => { - return rangeComparators.every((rangeComparator) => { - return thisComparator.intersects(rangeComparator, options) - }) - }) - ) - }) - ) - }) - } - - // if ANY of the sets match ALL of its comparators, then pass - test (version) { - if (!version) { - return false - } - - if (typeof version === 'string') { - try { - version = new SemVer(version, this.options); - } catch (er) { - return false - } - } - - for (let i = 0; i < this.set.length; i++) { - if (testSet(this.set[i], version, this.options)) { - return true - } - } - return false - } - } - - range = Range; - - const LRU = requireLrucache(); - const cache = new LRU(); - - const parseOptions = requireParseOptions(); - const Comparator = requireComparator(); - const debug = requireDebug(); - const SemVer = requireSemver$1(); - const { - safeRe: re, - t, - comparatorTrimReplace, - tildeTrimReplace, - caretTrimReplace, - } = requireRe(); - const { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = requireConstants(); - - const isNullSet = c => c.value === '<0.0.0-0'; - const isAny = c => c.value === ''; - - // take a set of comparators and determine whether there - // exists a version which can satisfy it - const isSatisfiable = (comparators, options) => { - let result = true; - const remainingComparators = comparators.slice(); - let testComparator = remainingComparators.pop(); - - while (result && remainingComparators.length) { - result = remainingComparators.every((otherComparator) => { - return testComparator.intersects(otherComparator, options) - }); - - testComparator = remainingComparators.pop(); - } - - return result + module.exports = compareBuild; +})); +//#endregion +//#region node_modules/semver/functions/sort.js +var require_sort = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var compareBuild = require_compare_build(); + var sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose)); + module.exports = sort; +})); +//#endregion +//#region node_modules/semver/functions/rsort.js +var require_rsort = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var compareBuild = require_compare_build(); + var rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose)); + module.exports = rsort; +})); +//#endregion +//#region node_modules/semver/functions/gt.js +var require_gt = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var compare = require_compare(); + var gt = (a, b, loose) => compare(a, b, loose) > 0; + module.exports = gt; +})); +//#endregion +//#region node_modules/semver/functions/lt.js +var require_lt = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var compare = require_compare(); + var lt = (a, b, loose) => compare(a, b, loose) < 0; + module.exports = lt; +})); +//#endregion +//#region node_modules/semver/functions/eq.js +var require_eq = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var compare = require_compare(); + var eq = (a, b, loose) => compare(a, b, loose) === 0; + module.exports = eq; +})); +//#endregion +//#region node_modules/semver/functions/neq.js +var require_neq = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var compare = require_compare(); + var neq = (a, b, loose) => compare(a, b, loose) !== 0; + module.exports = neq; +})); +//#endregion +//#region node_modules/semver/functions/gte.js +var require_gte = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var compare = require_compare(); + var gte = (a, b, loose) => compare(a, b, loose) >= 0; + module.exports = gte; +})); +//#endregion +//#region node_modules/semver/functions/lte.js +var require_lte = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var compare = require_compare(); + var lte = (a, b, loose) => compare(a, b, loose) <= 0; + module.exports = lte; +})); +//#endregion +//#region node_modules/semver/functions/cmp.js +var require_cmp = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var eq = require_eq(); + var neq = require_neq(); + var gt = require_gt(); + var gte = require_gte(); + var lt = require_lt(); + var lte = require_lte(); + var cmp = (a, op, b, loose) => { + switch (op) { + case "===": + if (typeof a === "object") a = a.version; + if (typeof b === "object") b = b.version; + return a === b; + case "!==": + if (typeof a === "object") a = a.version; + if (typeof b === "object") b = b.version; + return a !== b; + case "": + case "=": + case "==": return eq(a, b, loose); + case "!=": return neq(a, b, loose); + case ">": return gt(a, b, loose); + case ">=": return gte(a, b, loose); + case "<": return lt(a, b, loose); + case "<=": return lte(a, b, loose); + default: throw new TypeError(`Invalid operator: ${op}`); + } }; - - // comprised of xranges, tildes, stars, and gtlt's at this point. - // already replaced the hyphen ranges - // turn into a set of JUST comparators. - const parseComparator = (comp, options) => { - comp = comp.replace(re[t.BUILD], ''); - debug('comp', comp, options); - comp = replaceCarets(comp, options); - debug('caret', comp); - comp = replaceTildes(comp, options); - debug('tildes', comp); - comp = replaceXRanges(comp, options); - debug('xrange', comp); - comp = replaceStars(comp, options); - debug('stars', comp); - return comp + module.exports = cmp; +})); +//#endregion +//#region node_modules/semver/functions/coerce.js +var require_coerce = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var SemVer = require_semver$1(); + var parse = require_parse(); + var { safeRe: re, t } = require_re(); + var coerce = (version, options) => { + if (version instanceof SemVer) return version; + if (typeof version === "number") version = String(version); + if (typeof version !== "string") return null; + options = options || {}; + let match = null; + if (!options.rtl) match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE]); + else { + const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]; + let next; + while ((next = coerceRtlRegex.exec(version)) && (!match || match.index + match[0].length !== version.length)) { + if (!match || next.index + next[0].length !== match.index + match[0].length) match = next; + coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length; + } + coerceRtlRegex.lastIndex = -1; + } + if (match === null) return null; + const major = match[2]; + return parse(`${major}.${match[3] || "0"}.${match[4] || "0"}${options.includePrerelease && match[5] ? `-${match[5]}` : ""}${options.includePrerelease && match[6] ? `+${match[6]}` : ""}`, options); }; - - const isX = id => !id || id.toLowerCase() === 'x' || id === '*'; - - // ~, ~> --> * (any, kinda silly) - // ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0 - // ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0 - // ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0 - // ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0 - // ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0 - // ~0.0.1 --> >=0.0.1 <0.1.0-0 - const replaceTildes = (comp, options) => { - return comp - .trim() - .split(/\s+/) - .map((c) => replaceTilde(c, options)) - .join(' ') + module.exports = coerce; +})); +//#endregion +//#region node_modules/semver/internal/lrucache.js +var require_lrucache = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var LRUCache = class { + constructor() { + this.max = 1e3; + this.map = /* @__PURE__ */ new Map(); + } + get(key) { + const value = this.map.get(key); + if (value === void 0) return; + else { + this.map.delete(key); + this.map.set(key, value); + return value; + } + } + delete(key) { + return this.map.delete(key); + } + set(key, value) { + if (!this.delete(key) && value !== void 0) { + if (this.map.size >= this.max) { + const firstKey = this.map.keys().next().value; + this.delete(firstKey); + } + this.map.set(key, value); + } + return this; + } }; - - const replaceTilde = (comp, options) => { - const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]; - return comp.replace(r, (_, M, m, p, pr) => { - debug('tilde', comp, _, M, m, p, pr); - let ret; - - if (isX(M)) { - ret = ''; - } else if (isX(m)) { - ret = `>=${M}.0.0 <${+M + 1}.0.0-0`; - } else if (isX(p)) { - // ~1.2 == >=1.2.0 <1.3.0-0 - ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`; - } else if (pr) { - debug('replaceTilde pr', pr); - ret = `>=${M}.${m}.${p}-${pr - } <${M}.${+m + 1}.0-0`; - } else { - // ~1.2.3 == >=1.2.3 <1.3.0-0 - ret = `>=${M}.${m}.${p - } <${M}.${+m + 1}.0-0`; - } - - debug('tilde return', ret); - return ret - }) + module.exports = LRUCache; +})); +//#endregion +//#region node_modules/semver/classes/range.js +var require_range = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var SPACE_CHARACTERS = /\s+/g; + module.exports = class Range { + constructor(range, options) { + options = parseOptions(options); + if (range instanceof Range) if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) return range; + else return new Range(range.raw, options); + if (range instanceof Comparator) { + this.raw = range.value; + this.set = [[range]]; + this.formatted = void 0; + return this; + } + this.options = options; + this.loose = !!options.loose; + this.includePrerelease = !!options.includePrerelease; + this.raw = range.trim().replace(SPACE_CHARACTERS, " "); + this.set = this.raw.split("||").map((r) => this.parseRange(r.trim())).filter((c) => c.length); + if (!this.set.length) throw new TypeError(`Invalid SemVer Range: ${this.raw}`); + if (this.set.length > 1) { + const first = this.set[0]; + this.set = this.set.filter((c) => !isNullSet(c[0])); + if (this.set.length === 0) this.set = [first]; + else if (this.set.length > 1) { + for (const c of this.set) if (c.length === 1 && isAny(c[0])) { + this.set = [c]; + break; + } + } + } + this.formatted = void 0; + } + get range() { + if (this.formatted === void 0) { + this.formatted = ""; + for (let i = 0; i < this.set.length; i++) { + if (i > 0) this.formatted += "||"; + const comps = this.set[i]; + for (let k = 0; k < comps.length; k++) { + if (k > 0) this.formatted += " "; + this.formatted += comps[k].toString().trim(); + } + } + } + return this.formatted; + } + format() { + return this.range; + } + toString() { + return this.range; + } + parseRange(range) { + const memoKey = ((this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | (this.options.loose && FLAG_LOOSE)) + ":" + range; + const cached = cache.get(memoKey); + if (cached) return cached; + const loose = this.options.loose; + const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]; + range = range.replace(hr, hyphenReplace(this.options.includePrerelease)); + debug("hyphen replace", range); + range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace); + debug("comparator trim", range); + range = range.replace(re[t.TILDETRIM], tildeTrimReplace); + debug("tilde trim", range); + range = range.replace(re[t.CARETTRIM], caretTrimReplace); + debug("caret trim", range); + let rangeList = range.split(" ").map((comp) => parseComparator(comp, this.options)).join(" ").split(/\s+/).map((comp) => replaceGTE0(comp, this.options)); + if (loose) rangeList = rangeList.filter((comp) => { + debug("loose invalid filter", comp, this.options); + return !!comp.match(re[t.COMPARATORLOOSE]); + }); + debug("range list", rangeList); + const rangeMap = /* @__PURE__ */ new Map(); + const comparators = rangeList.map((comp) => new Comparator(comp, this.options)); + for (const comp of comparators) { + if (isNullSet(comp)) return [comp]; + rangeMap.set(comp.value, comp); + } + if (rangeMap.size > 1 && rangeMap.has("")) rangeMap.delete(""); + const result = [...rangeMap.values()]; + cache.set(memoKey, result); + return result; + } + intersects(range, options) { + if (!(range instanceof Range)) throw new TypeError("a Range is required"); + return this.set.some((thisComparators) => { + return isSatisfiable(thisComparators, options) && range.set.some((rangeComparators) => { + return isSatisfiable(rangeComparators, options) && thisComparators.every((thisComparator) => { + return rangeComparators.every((rangeComparator) => { + return thisComparator.intersects(rangeComparator, options); + }); + }); + }); + }); + } + test(version) { + if (!version) return false; + if (typeof version === "string") try { + version = new SemVer(version, this.options); + } catch (er) { + return false; + } + for (let i = 0; i < this.set.length; i++) if (testSet(this.set[i], version, this.options)) return true; + return false; + } }; - - // ^ --> * (any, kinda silly) - // ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0 - // ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0 - // ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0 - // ^1.2.3 --> >=1.2.3 <2.0.0-0 - // ^1.2.0 --> >=1.2.0 <2.0.0-0 - // ^0.0.1 --> >=0.0.1 <0.0.2-0 - // ^0.1.0 --> >=0.1.0 <0.2.0-0 - const replaceCarets = (comp, options) => { - return comp - .trim() - .split(/\s+/) - .map((c) => replaceCaret(c, options)) - .join(' ') + var cache = new (require_lrucache())(); + var parseOptions = require_parse_options(); + var Comparator = require_comparator(); + var debug = require_debug(); + var SemVer = require_semver$1(); + var { safeRe: re, t, comparatorTrimReplace, tildeTrimReplace, caretTrimReplace } = require_re(); + var { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require_constants(); + var isNullSet = (c) => c.value === "<0.0.0-0"; + var isAny = (c) => c.value === ""; + var isSatisfiable = (comparators, options) => { + let result = true; + const remainingComparators = comparators.slice(); + let testComparator = remainingComparators.pop(); + while (result && remainingComparators.length) { + result = remainingComparators.every((otherComparator) => { + return testComparator.intersects(otherComparator, options); + }); + testComparator = remainingComparators.pop(); + } + return result; }; - - const replaceCaret = (comp, options) => { - debug('caret', comp, options); - const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]; - const z = options.includePrerelease ? '-0' : ''; - return comp.replace(r, (_, M, m, p, pr) => { - debug('caret', comp, _, M, m, p, pr); - let ret; - - if (isX(M)) { - ret = ''; - } else if (isX(m)) { - ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`; - } else if (isX(p)) { - if (M === '0') { - ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`; - } else { - ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`; - } - } else if (pr) { - debug('replaceCaret pr', pr); - if (M === '0') { - if (m === '0') { - ret = `>=${M}.${m}.${p}-${pr - } <${M}.${m}.${+p + 1}-0`; - } else { - ret = `>=${M}.${m}.${p}-${pr - } <${M}.${+m + 1}.0-0`; - } - } else { - ret = `>=${M}.${m}.${p}-${pr - } <${+M + 1}.0.0-0`; - } - } else { - debug('no pr'); - if (M === '0') { - if (m === '0') { - ret = `>=${M}.${m}.${p - }${z} <${M}.${m}.${+p + 1}-0`; - } else { - ret = `>=${M}.${m}.${p - }${z} <${M}.${+m + 1}.0-0`; - } - } else { - ret = `>=${M}.${m}.${p - } <${+M + 1}.0.0-0`; - } - } - - debug('caret return', ret); - return ret - }) + var parseComparator = (comp, options) => { + comp = comp.replace(re[t.BUILD], ""); + debug("comp", comp, options); + comp = replaceCarets(comp, options); + debug("caret", comp); + comp = replaceTildes(comp, options); + debug("tildes", comp); + comp = replaceXRanges(comp, options); + debug("xrange", comp); + comp = replaceStars(comp, options); + debug("stars", comp); + return comp; }; - - const replaceXRanges = (comp, options) => { - debug('replaceXRanges', comp, options); - return comp - .split(/\s+/) - .map((c) => replaceXRange(c, options)) - .join(' ') + var isX = (id) => !id || id.toLowerCase() === "x" || id === "*"; + var replaceTildes = (comp, options) => { + return comp.trim().split(/\s+/).map((c) => replaceTilde(c, options)).join(" "); }; - - const replaceXRange = (comp, options) => { - comp = comp.trim(); - const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]; - return comp.replace(r, (ret, gtlt, M, m, p, pr) => { - debug('xRange', comp, ret, gtlt, M, m, p, pr); - const xM = isX(M); - const xm = xM || isX(m); - const xp = xm || isX(p); - const anyX = xp; - - if (gtlt === '=' && anyX) { - gtlt = ''; - } - - // if we're including prereleases in the match, then we need - // to fix this to -0, the lowest possible prerelease value - pr = options.includePrerelease ? '-0' : ''; - - if (xM) { - if (gtlt === '>' || gtlt === '<') { - // nothing is allowed - ret = '<0.0.0-0'; - } else { - // nothing is forbidden - ret = '*'; - } - } else if (gtlt && anyX) { - // we know patch is an x, because we have any x at all. - // replace X with 0 - if (xm) { - m = 0; - } - p = 0; - - if (gtlt === '>') { - // >1 => >=2.0.0 - // >1.2 => >=1.3.0 - gtlt = '>='; - if (xm) { - M = +M + 1; - m = 0; - p = 0; - } else { - m = +m + 1; - p = 0; - } - } else if (gtlt === '<=') { - // <=0.7.x is actually <0.8.0, since any 0.7.x should - // pass. Similarly, <=7.x is actually <8.0.0, etc. - gtlt = '<'; - if (xm) { - M = +M + 1; - } else { - m = +m + 1; - } - } - - if (gtlt === '<') { - pr = '-0'; - } - - ret = `${gtlt + M}.${m}.${p}${pr}`; - } else if (xm) { - ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`; - } else if (xp) { - ret = `>=${M}.${m}.0${pr - } <${M}.${+m + 1}.0-0`; - } - - debug('xRange return', ret); - - return ret - }) + var replaceTilde = (comp, options) => { + const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]; + return comp.replace(r, (_, M, m, p, pr) => { + debug("tilde", comp, _, M, m, p, pr); + let ret; + if (isX(M)) ret = ""; + else if (isX(m)) ret = `>=${M}.0.0 <${+M + 1}.0.0-0`; + else if (isX(p)) ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`; + else if (pr) { + debug("replaceTilde pr", pr); + ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`; + } else ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`; + debug("tilde return", ret); + return ret; + }); }; - - // Because * is AND-ed with everything else in the comparator, - // and '' means "any version", just remove the *s entirely. - const replaceStars = (comp, options) => { - debug('replaceStars', comp, options); - // Looseness is ignored here. star is always as loose as it gets! - return comp - .trim() - .replace(re[t.STAR], '') + var replaceCarets = (comp, options) => { + return comp.trim().split(/\s+/).map((c) => replaceCaret(c, options)).join(" "); }; - - const replaceGTE0 = (comp, options) => { - debug('replaceGTE0', comp, options); - return comp - .trim() - .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '') + var replaceCaret = (comp, options) => { + debug("caret", comp, options); + const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]; + const z = options.includePrerelease ? "-0" : ""; + return comp.replace(r, (_, M, m, p, pr) => { + debug("caret", comp, _, M, m, p, pr); + let ret; + if (isX(M)) ret = ""; + else if (isX(m)) ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`; + else if (isX(p)) if (M === "0") ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`; + else ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`; + else if (pr) { + debug("replaceCaret pr", pr); + if (M === "0") if (m === "0") ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`; + else ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`; + else ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`; + } else { + debug("no pr"); + if (M === "0") if (m === "0") ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`; + else ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`; + else ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`; + } + debug("caret return", ret); + return ret; + }); }; - - // This function is passed to string.replace(re[t.HYPHENRANGE]) - // M, m, patch, prerelease, build - // 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 - // 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do - // 1.2 - 3.4 => >=1.2.0 <3.5.0-0 - // TODO build? - const hyphenReplace = incPr => ($0, - from, fM, fm, fp, fpr, fb, - to, tM, tm, tp, tpr) => { - if (isX(fM)) { - from = ''; - } else if (isX(fm)) { - from = `>=${fM}.0.0${incPr ? '-0' : ''}`; - } else if (isX(fp)) { - from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`; - } else if (fpr) { - from = `>=${from}`; - } else { - from = `>=${from}${incPr ? '-0' : ''}`; - } - - if (isX(tM)) { - to = ''; - } else if (isX(tm)) { - to = `<${+tM + 1}.0.0-0`; - } else if (isX(tp)) { - to = `<${tM}.${+tm + 1}.0-0`; - } else if (tpr) { - to = `<=${tM}.${tm}.${tp}-${tpr}`; - } else if (incPr) { - to = `<${tM}.${tm}.${+tp + 1}-0`; - } else { - to = `<=${to}`; - } - - return `${from} ${to}`.trim() + var replaceXRanges = (comp, options) => { + debug("replaceXRanges", comp, options); + return comp.split(/\s+/).map((c) => replaceXRange(c, options)).join(" "); }; - - const testSet = (set, version, options) => { - for (let i = 0; i < set.length; i++) { - if (!set[i].test(version)) { - return false - } - } - - if (version.prerelease.length && !options.includePrerelease) { - // Find the set of versions that are allowed to have prereleases - // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0 - // That should allow `1.2.3-pr.2` to pass. - // However, `1.2.4-alpha.notready` should NOT be allowed, - // even though it's within the range set by the comparators. - for (let i = 0; i < set.length; i++) { - debug(set[i].semver); - if (set[i].semver === Comparator.ANY) { - continue - } - - if (set[i].semver.prerelease.length > 0) { - const allowed = set[i].semver; - if (allowed.major === version.major && - allowed.minor === version.minor && - allowed.patch === version.patch) { - return true - } - } - } - - // Version has a -pre, but it's not one of the ones we like. - return false - } - - return true + var replaceXRange = (comp, options) => { + comp = comp.trim(); + const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]; + return comp.replace(r, (ret, gtlt, M, m, p, pr) => { + debug("xRange", comp, ret, gtlt, M, m, p, pr); + const xM = isX(M); + const xm = xM || isX(m); + const xp = xm || isX(p); + const anyX = xp; + if (gtlt === "=" && anyX) gtlt = ""; + pr = options.includePrerelease ? "-0" : ""; + if (xM) if (gtlt === ">" || gtlt === "<") ret = "<0.0.0-0"; + else ret = "*"; + else if (gtlt && anyX) { + if (xm) m = 0; + p = 0; + if (gtlt === ">") { + gtlt = ">="; + if (xm) { + M = +M + 1; + m = 0; + p = 0; + } else { + m = +m + 1; + p = 0; + } + } else if (gtlt === "<=") { + gtlt = "<"; + if (xm) M = +M + 1; + else m = +m + 1; + } + if (gtlt === "<") pr = "-0"; + ret = `${gtlt + M}.${m}.${p}${pr}`; + } else if (xm) ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`; + else if (xp) ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`; + debug("xRange return", ret); + return ret; + }); }; - return range; -} - -var comparator; -var hasRequiredComparator; - -function requireComparator () { - if (hasRequiredComparator) return comparator; - hasRequiredComparator = 1; - - const ANY = Symbol('SemVer ANY'); - // hoisted class for cyclic dependency - class Comparator { - static get ANY () { - return ANY - } - - constructor (comp, options) { - options = parseOptions(options); - - if (comp instanceof Comparator) { - if (comp.loose === !!options.loose) { - return comp - } else { - comp = comp.value; - } - } - - comp = comp.trim().split(/\s+/).join(' '); - debug('comparator', comp, options); - this.options = options; - this.loose = !!options.loose; - this.parse(comp); - - if (this.semver === ANY) { - this.value = ''; - } else { - this.value = this.operator + this.semver.version; - } - - debug('comp', this); - } - - parse (comp) { - const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]; - const m = comp.match(r); - - if (!m) { - throw new TypeError(`Invalid comparator: ${comp}`) - } - - this.operator = m[1] !== undefined ? m[1] : ''; - if (this.operator === '=') { - this.operator = ''; - } - - // if it literally is just '>' or '' then allow anything. - if (!m[2]) { - this.semver = ANY; - } else { - this.semver = new SemVer(m[2], this.options.loose); - } - } - - toString () { - return this.value - } - - test (version) { - debug('Comparator.test', version, this.options.loose); - - if (this.semver === ANY || version === ANY) { - return true - } - - if (typeof version === 'string') { - try { - version = new SemVer(version, this.options); - } catch (er) { - return false - } - } - - return cmp(version, this.operator, this.semver, this.options) - } - - intersects (comp, options) { - if (!(comp instanceof Comparator)) { - throw new TypeError('a Comparator is required') - } - - if (this.operator === '') { - if (this.value === '') { - return true - } - return new Range(comp.value, options).test(this.value) - } else if (comp.operator === '') { - if (comp.value === '') { - return true - } - return new Range(this.value, options).test(comp.semver) - } - - options = parseOptions(options); - - // Special cases where nothing can possibly be lower - if (options.includePrerelease && - (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) { - return false - } - if (!options.includePrerelease && - (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) { - return false - } - - // Same direction increasing (> or >=) - if (this.operator.startsWith('>') && comp.operator.startsWith('>')) { - return true - } - // Same direction decreasing (< or <=) - if (this.operator.startsWith('<') && comp.operator.startsWith('<')) { - return true - } - // same SemVer and both sides are inclusive (<= or >=) - if ( - (this.semver.version === comp.semver.version) && - this.operator.includes('=') && comp.operator.includes('=')) { - return true - } - // opposite directions less than - if (cmp(this.semver, '<', comp.semver, options) && - this.operator.startsWith('>') && comp.operator.startsWith('<')) { - return true - } - // opposite directions greater than - if (cmp(this.semver, '>', comp.semver, options) && - this.operator.startsWith('<') && comp.operator.startsWith('>')) { - return true - } - return false - } - } - - comparator = Comparator; - - const parseOptions = requireParseOptions(); - const { safeRe: re, t } = requireRe(); - const cmp = requireCmp(); - const debug = requireDebug(); - const SemVer = requireSemver$1(); - const Range = requireRange(); - return comparator; -} - -var satisfies_1; -var hasRequiredSatisfies; - -function requireSatisfies () { - if (hasRequiredSatisfies) return satisfies_1; - hasRequiredSatisfies = 1; - - const Range = requireRange(); - const satisfies = (version, range, options) => { - try { - range = new Range(range, options); - } catch (er) { - return false - } - return range.test(version) + var replaceStars = (comp, options) => { + debug("replaceStars", comp, options); + return comp.trim().replace(re[t.STAR], ""); }; - satisfies_1 = satisfies; - return satisfies_1; -} - -var toComparators_1; -var hasRequiredToComparators; - -function requireToComparators () { - if (hasRequiredToComparators) return toComparators_1; - hasRequiredToComparators = 1; - - const Range = requireRange(); - - // Mostly just for testing and legacy API reasons - const toComparators = (range, options) => - new Range(range, options).set - .map(comp => comp.map(c => c.value).join(' ').trim().split(' ')); - - toComparators_1 = toComparators; - return toComparators_1; -} - -var maxSatisfying_1; -var hasRequiredMaxSatisfying; - -function requireMaxSatisfying () { - if (hasRequiredMaxSatisfying) return maxSatisfying_1; - hasRequiredMaxSatisfying = 1; - - const SemVer = requireSemver$1(); - const Range = requireRange(); - - const maxSatisfying = (versions, range, options) => { - let max = null; - let maxSV = null; - let rangeObj = null; - try { - rangeObj = new Range(range, options); - } catch (er) { - return null - } - versions.forEach((v) => { - if (rangeObj.test(v)) { - // satisfies(v, range, options) - if (!max || maxSV.compare(v) === -1) { - // compare(max, v, true) - max = v; - maxSV = new SemVer(max, options); - } - } - }); - return max + var replaceGTE0 = (comp, options) => { + debug("replaceGTE0", comp, options); + return comp.trim().replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], ""); }; - maxSatisfying_1 = maxSatisfying; - return maxSatisfying_1; -} - -var minSatisfying_1; -var hasRequiredMinSatisfying; - -function requireMinSatisfying () { - if (hasRequiredMinSatisfying) return minSatisfying_1; - hasRequiredMinSatisfying = 1; - - const SemVer = requireSemver$1(); - const Range = requireRange(); - const minSatisfying = (versions, range, options) => { - let min = null; - let minSV = null; - let rangeObj = null; - try { - rangeObj = new Range(range, options); - } catch (er) { - return null - } - versions.forEach((v) => { - if (rangeObj.test(v)) { - // satisfies(v, range, options) - if (!min || minSV.compare(v) === 1) { - // compare(min, v, true) - min = v; - minSV = new SemVer(min, options); - } - } - }); - return min + var hyphenReplace = (incPr) => ($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => { + if (isX(fM)) from = ""; + else if (isX(fm)) from = `>=${fM}.0.0${incPr ? "-0" : ""}`; + else if (isX(fp)) from = `>=${fM}.${fm}.0${incPr ? "-0" : ""}`; + else if (fpr) from = `>=${from}`; + else from = `>=${from}${incPr ? "-0" : ""}`; + if (isX(tM)) to = ""; + else if (isX(tm)) to = `<${+tM + 1}.0.0-0`; + else if (isX(tp)) to = `<${tM}.${+tm + 1}.0-0`; + else if (tpr) to = `<=${tM}.${tm}.${tp}-${tpr}`; + else if (incPr) to = `<${tM}.${tm}.${+tp + 1}-0`; + else to = `<=${to}`; + return `${from} ${to}`.trim(); }; - minSatisfying_1 = minSatisfying; - return minSatisfying_1; -} - -var minVersion_1; -var hasRequiredMinVersion; - -function requireMinVersion () { - if (hasRequiredMinVersion) return minVersion_1; - hasRequiredMinVersion = 1; - - const SemVer = requireSemver$1(); - const Range = requireRange(); - const gt = requireGt(); - - const minVersion = (range, loose) => { - range = new Range(range, loose); - - let minver = new SemVer('0.0.0'); - if (range.test(minver)) { - return minver - } - - minver = new SemVer('0.0.0-0'); - if (range.test(minver)) { - return minver - } - - minver = null; - for (let i = 0; i < range.set.length; ++i) { - const comparators = range.set[i]; - - let setMin = null; - comparators.forEach((comparator) => { - // Clone to avoid manipulating the comparator's semver object. - const compver = new SemVer(comparator.semver.version); - switch (comparator.operator) { - case '>': - if (compver.prerelease.length === 0) { - compver.patch++; - } else { - compver.prerelease.push(0); - } - compver.raw = compver.format(); - /* fallthrough */ - case '': - case '>=': - if (!setMin || gt(compver, setMin)) { - setMin = compver; - } - break - case '<': - case '<=': - /* Ignore maximum versions */ - break - /* istanbul ignore next */ - default: - throw new Error(`Unexpected operation: ${comparator.operator}`) - } - }); - if (setMin && (!minver || gt(minver, setMin))) { - minver = setMin; - } - } - - if (minver && range.test(minver)) { - return minver - } - - return null + var testSet = (set, version, options) => { + for (let i = 0; i < set.length; i++) if (!set[i].test(version)) return false; + if (version.prerelease.length && !options.includePrerelease) { + for (let i = 0; i < set.length; i++) { + debug(set[i].semver); + if (set[i].semver === Comparator.ANY) continue; + if (set[i].semver.prerelease.length > 0) { + const allowed = set[i].semver; + if (allowed.major === version.major && allowed.minor === version.minor && allowed.patch === version.patch) return true; + } + } + return false; + } + return true; }; - minVersion_1 = minVersion; - return minVersion_1; -} - -var valid; -var hasRequiredValid; - -function requireValid () { - if (hasRequiredValid) return valid; - hasRequiredValid = 1; - - const Range = requireRange(); - const validRange = (range, options) => { - try { - // Return '*' instead of '' so that truthiness works. - // This will throw if it's invalid anyway - return new Range(range, options).range || '*' - } catch (er) { - return null - } +})); +//#endregion +//#region node_modules/semver/classes/comparator.js +var require_comparator = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var ANY = Symbol("SemVer ANY"); + module.exports = class Comparator { + static get ANY() { + return ANY; + } + constructor(comp, options) { + options = parseOptions(options); + if (comp instanceof Comparator) if (comp.loose === !!options.loose) return comp; + else comp = comp.value; + comp = comp.trim().split(/\s+/).join(" "); + debug("comparator", comp, options); + this.options = options; + this.loose = !!options.loose; + this.parse(comp); + if (this.semver === ANY) this.value = ""; + else this.value = this.operator + this.semver.version; + debug("comp", this); + } + parse(comp) { + const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]; + const m = comp.match(r); + if (!m) throw new TypeError(`Invalid comparator: ${comp}`); + this.operator = m[1] !== void 0 ? m[1] : ""; + if (this.operator === "=") this.operator = ""; + if (!m[2]) this.semver = ANY; + else this.semver = new SemVer(m[2], this.options.loose); + } + toString() { + return this.value; + } + test(version) { + debug("Comparator.test", version, this.options.loose); + if (this.semver === ANY || version === ANY) return true; + if (typeof version === "string") try { + version = new SemVer(version, this.options); + } catch (er) { + return false; + } + return cmp(version, this.operator, this.semver, this.options); + } + intersects(comp, options) { + if (!(comp instanceof Comparator)) throw new TypeError("a Comparator is required"); + if (this.operator === "") { + if (this.value === "") return true; + return new Range(comp.value, options).test(this.value); + } else if (comp.operator === "") { + if (comp.value === "") return true; + return new Range(this.value, options).test(comp.semver); + } + options = parseOptions(options); + if (options.includePrerelease && (this.value === "<0.0.0-0" || comp.value === "<0.0.0-0")) return false; + if (!options.includePrerelease && (this.value.startsWith("<0.0.0") || comp.value.startsWith("<0.0.0"))) return false; + if (this.operator.startsWith(">") && comp.operator.startsWith(">")) return true; + if (this.operator.startsWith("<") && comp.operator.startsWith("<")) return true; + if (this.semver.version === comp.semver.version && this.operator.includes("=") && comp.operator.includes("=")) return true; + if (cmp(this.semver, "<", comp.semver, options) && this.operator.startsWith(">") && comp.operator.startsWith("<")) return true; + if (cmp(this.semver, ">", comp.semver, options) && this.operator.startsWith("<") && comp.operator.startsWith(">")) return true; + return false; + } }; - valid = validRange; - return valid; -} - -var outside_1; -var hasRequiredOutside; - -function requireOutside () { - if (hasRequiredOutside) return outside_1; - hasRequiredOutside = 1; - - const SemVer = requireSemver$1(); - const Comparator = requireComparator(); - const { ANY } = Comparator; - const Range = requireRange(); - const satisfies = requireSatisfies(); - const gt = requireGt(); - const lt = requireLt(); - const lte = requireLte(); - const gte = requireGte(); - - const outside = (version, range, hilo, options) => { - version = new SemVer(version, options); - range = new Range(range, options); - - let gtfn, ltefn, ltfn, comp, ecomp; - switch (hilo) { - case '>': - gtfn = gt; - ltefn = lte; - ltfn = lt; - comp = '>'; - ecomp = '>='; - break - case '<': - gtfn = lt; - ltefn = gte; - ltfn = gt; - comp = '<'; - ecomp = '<='; - break - default: - throw new TypeError('Must provide a hilo val of "<" or ">"') - } - - // If it satisfies the range it is not outside - if (satisfies(version, range, options)) { - return false - } - - // From now on, variable terms are as if we're in "gtr" mode. - // but note that everything is flipped for the "ltr" function. - - for (let i = 0; i < range.set.length; ++i) { - const comparators = range.set[i]; - - let high = null; - let low = null; - - comparators.forEach((comparator) => { - if (comparator.semver === ANY) { - comparator = new Comparator('>=0.0.0'); - } - high = high || comparator; - low = low || comparator; - if (gtfn(comparator.semver, high.semver, options)) { - high = comparator; - } else if (ltfn(comparator.semver, low.semver, options)) { - low = comparator; - } - }); - - // If the edge version comparator has a operator then our version - // isn't outside it - if (high.operator === comp || high.operator === ecomp) { - return false - } - - // If the lowest version comparator has an operator and our version - // is less than it then it isn't higher than the range - if ((!low.operator || low.operator === comp) && - ltefn(version, low.semver)) { - return false - } else if (low.operator === ecomp && ltfn(version, low.semver)) { - return false - } - } - return true + var parseOptions = require_parse_options(); + var { safeRe: re, t } = require_re(); + var cmp = require_cmp(); + var debug = require_debug(); + var SemVer = require_semver$1(); + var Range = require_range(); +})); +//#endregion +//#region node_modules/semver/functions/satisfies.js +var require_satisfies = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var Range = require_range(); + var satisfies = (version, range, options) => { + try { + range = new Range(range, options); + } catch (er) { + return false; + } + return range.test(version); }; - - outside_1 = outside; - return outside_1; -} - -var gtr_1; -var hasRequiredGtr; - -function requireGtr () { - if (hasRequiredGtr) return gtr_1; - hasRequiredGtr = 1; - - // Determine if version is greater than all the versions possible in the range. - const outside = requireOutside(); - const gtr = (version, range, options) => outside(version, range, '>', options); - gtr_1 = gtr; - return gtr_1; -} - -var ltr_1; -var hasRequiredLtr; - -function requireLtr () { - if (hasRequiredLtr) return ltr_1; - hasRequiredLtr = 1; - - const outside = requireOutside(); - // Determine if version is less than all the versions possible in the range - const ltr = (version, range, options) => outside(version, range, '<', options); - ltr_1 = ltr; - return ltr_1; -} - -var intersects_1; -var hasRequiredIntersects; - -function requireIntersects () { - if (hasRequiredIntersects) return intersects_1; - hasRequiredIntersects = 1; - - const Range = requireRange(); - const intersects = (r1, r2, options) => { - r1 = new Range(r1, options); - r2 = new Range(r2, options); - return r1.intersects(r2, options) + module.exports = satisfies; +})); +//#endregion +//#region node_modules/semver/ranges/to-comparators.js +var require_to_comparators = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var Range = require_range(); + var toComparators = (range, options) => new Range(range, options).set.map((comp) => comp.map((c) => c.value).join(" ").trim().split(" ")); + module.exports = toComparators; +})); +//#endregion +//#region node_modules/semver/ranges/max-satisfying.js +var require_max_satisfying = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var SemVer = require_semver$1(); + var Range = require_range(); + var maxSatisfying = (versions, range, options) => { + let max = null; + let maxSV = null; + let rangeObj = null; + try { + rangeObj = new Range(range, options); + } catch (er) { + return null; + } + versions.forEach((v) => { + if (rangeObj.test(v)) { + if (!max || maxSV.compare(v) === -1) { + max = v; + maxSV = new SemVer(max, options); + } + } + }); + return max; }; - intersects_1 = intersects; - return intersects_1; -} - -var simplify; -var hasRequiredSimplify; - -function requireSimplify () { - if (hasRequiredSimplify) return simplify; - hasRequiredSimplify = 1; - - // given a set of versions and a range, create a "simplified" range - // that includes the same versions that the original range does - // If the original range is shorter than the simplified one, return that. - const satisfies = requireSatisfies(); - const compare = requireCompare(); - simplify = (versions, range, options) => { - const set = []; - let first = null; - let prev = null; - const v = versions.sort((a, b) => compare(a, b, options)); - for (const version of v) { - const included = satisfies(version, range, options); - if (included) { - prev = version; - if (!first) { - first = version; - } - } else { - if (prev) { - set.push([first, prev]); - } - prev = null; - first = null; - } - } - if (first) { - set.push([first, null]); - } - - const ranges = []; - for (const [min, max] of set) { - if (min === max) { - ranges.push(min); - } else if (!max && min === v[0]) { - ranges.push('*'); - } else if (!max) { - ranges.push(`>=${min}`); - } else if (min === v[0]) { - ranges.push(`<=${max}`); - } else { - ranges.push(`${min} - ${max}`); - } - } - const simplified = ranges.join(' || '); - const original = typeof range.raw === 'string' ? range.raw : String(range); - return simplified.length < original.length ? simplified : range + module.exports = maxSatisfying; +})); +//#endregion +//#region node_modules/semver/ranges/min-satisfying.js +var require_min_satisfying = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var SemVer = require_semver$1(); + var Range = require_range(); + var minSatisfying = (versions, range, options) => { + let min = null; + let minSV = null; + let rangeObj = null; + try { + rangeObj = new Range(range, options); + } catch (er) { + return null; + } + versions.forEach((v) => { + if (rangeObj.test(v)) { + if (!min || minSV.compare(v) === 1) { + min = v; + minSV = new SemVer(min, options); + } + } + }); + return min; }; - return simplify; -} - -var subset_1; -var hasRequiredSubset; - -function requireSubset () { - if (hasRequiredSubset) return subset_1; - hasRequiredSubset = 1; - - const Range = requireRange(); - const Comparator = requireComparator(); - const { ANY } = Comparator; - const satisfies = requireSatisfies(); - const compare = requireCompare(); - - // Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff: - // - Every simple range `r1, r2, ...` is a null set, OR - // - Every simple range `r1, r2, ...` which is not a null set is a subset of - // some `R1, R2, ...` - // - // Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff: - // - If c is only the ANY comparator - // - If C is only the ANY comparator, return true - // - Else if in prerelease mode, return false - // - else replace c with `[>=0.0.0]` - // - If C is only the ANY comparator - // - if in prerelease mode, return true - // - else replace C with `[>=0.0.0]` - // - Let EQ be the set of = comparators in c - // - If EQ is more than one, return true (null set) - // - Let GT be the highest > or >= comparator in c - // - Let LT be the lowest < or <= comparator in c - // - If GT and LT, and GT.semver > LT.semver, return true (null set) - // - If any C is a = range, and GT or LT are set, return false - // - If EQ - // - If GT, and EQ does not satisfy GT, return true (null set) - // - If LT, and EQ does not satisfy LT, return true (null set) - // - If EQ satisfies every C, return true - // - Else return false - // - If GT - // - If GT.semver is lower than any > or >= comp in C, return false - // - If GT is >=, and GT.semver does not satisfy every C, return false - // - If GT.semver has a prerelease, and not in prerelease mode - // - If no C has a prerelease and the GT.semver tuple, return false - // - If LT - // - If LT.semver is greater than any < or <= comp in C, return false - // - If LT is <=, and LT.semver does not satisfy every C, return false - // - If LT.semver has a prerelease, and not in prerelease mode - // - If no C has a prerelease and the LT.semver tuple, return false - // - Else return true - - const subset = (sub, dom, options = {}) => { - if (sub === dom) { - return true - } - - sub = new Range(sub, options); - dom = new Range(dom, options); - let sawNonNull = false; - - OUTER: for (const simpleSub of sub.set) { - for (const simpleDom of dom.set) { - const isSub = simpleSubset(simpleSub, simpleDom, options); - sawNonNull = sawNonNull || isSub !== null; - if (isSub) { - continue OUTER - } - } - // the null set is a subset of everything, but null simple ranges in - // a complex range should be ignored. so if we saw a non-null range, - // then we know this isn't a subset, but if EVERY simple range was null, - // then it is a subset. - if (sawNonNull) { - return false - } - } - return true + module.exports = minSatisfying; +})); +//#endregion +//#region node_modules/semver/ranges/min-version.js +var require_min_version = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var SemVer = require_semver$1(); + var Range = require_range(); + var gt = require_gt(); + var minVersion = (range, loose) => { + range = new Range(range, loose); + let minver = new SemVer("0.0.0"); + if (range.test(minver)) return minver; + minver = new SemVer("0.0.0-0"); + if (range.test(minver)) return minver; + minver = null; + for (let i = 0; i < range.set.length; ++i) { + const comparators = range.set[i]; + let setMin = null; + comparators.forEach((comparator) => { + const compver = new SemVer(comparator.semver.version); + switch (comparator.operator) { + case ">": + if (compver.prerelease.length === 0) compver.patch++; + else compver.prerelease.push(0); + compver.raw = compver.format(); + case "": + case ">=": + if (!setMin || gt(compver, setMin)) setMin = compver; + break; + case "<": + case "<=": break; + default: throw new Error(`Unexpected operation: ${comparator.operator}`); + } + }); + if (setMin && (!minver || gt(minver, setMin))) minver = setMin; + } + if (minver && range.test(minver)) return minver; + return null; }; - - const minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]; - const minimumVersion = [new Comparator('>=0.0.0')]; - - const simpleSubset = (sub, dom, options) => { - if (sub === dom) { - return true - } - - if (sub.length === 1 && sub[0].semver === ANY) { - if (dom.length === 1 && dom[0].semver === ANY) { - return true - } else if (options.includePrerelease) { - sub = minimumVersionWithPreRelease; - } else { - sub = minimumVersion; - } - } - - if (dom.length === 1 && dom[0].semver === ANY) { - if (options.includePrerelease) { - return true - } else { - dom = minimumVersion; - } - } - - const eqSet = new Set(); - let gt, lt; - for (const c of sub) { - if (c.operator === '>' || c.operator === '>=') { - gt = higherGT(gt, c, options); - } else if (c.operator === '<' || c.operator === '<=') { - lt = lowerLT(lt, c, options); - } else { - eqSet.add(c.semver); - } - } - - if (eqSet.size > 1) { - return null - } - - let gtltComp; - if (gt && lt) { - gtltComp = compare(gt.semver, lt.semver, options); - if (gtltComp > 0) { - return null - } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) { - return null - } - } - - // will iterate one or zero times - for (const eq of eqSet) { - if (gt && !satisfies(eq, String(gt), options)) { - return null - } - - if (lt && !satisfies(eq, String(lt), options)) { - return null - } - - for (const c of dom) { - if (!satisfies(eq, String(c), options)) { - return false - } - } - - return true - } - - let higher, lower; - let hasDomLT, hasDomGT; - // if the subset has a prerelease, we need a comparator in the superset - // with the same tuple and a prerelease, or it's not a subset - let needDomLTPre = lt && - !options.includePrerelease && - lt.semver.prerelease.length ? lt.semver : false; - let needDomGTPre = gt && - !options.includePrerelease && - gt.semver.prerelease.length ? gt.semver : false; - // exception: <1.2.3-0 is the same as <1.2.3 - if (needDomLTPre && needDomLTPre.prerelease.length === 1 && - lt.operator === '<' && needDomLTPre.prerelease[0] === 0) { - needDomLTPre = false; - } - - for (const c of dom) { - hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='; - hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='; - if (gt) { - if (needDomGTPre) { - if (c.semver.prerelease && c.semver.prerelease.length && - c.semver.major === needDomGTPre.major && - c.semver.minor === needDomGTPre.minor && - c.semver.patch === needDomGTPre.patch) { - needDomGTPre = false; - } - } - if (c.operator === '>' || c.operator === '>=') { - higher = higherGT(gt, c, options); - if (higher === c && higher !== gt) { - return false - } - } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) { - return false - } - } - if (lt) { - if (needDomLTPre) { - if (c.semver.prerelease && c.semver.prerelease.length && - c.semver.major === needDomLTPre.major && - c.semver.minor === needDomLTPre.minor && - c.semver.patch === needDomLTPre.patch) { - needDomLTPre = false; - } - } - if (c.operator === '<' || c.operator === '<=') { - lower = lowerLT(lt, c, options); - if (lower === c && lower !== lt) { - return false - } - } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) { - return false - } - } - if (!c.operator && (lt || gt) && gtltComp !== 0) { - return false - } - } - - // if there was a < or >, and nothing in the dom, then must be false - // UNLESS it was limited by another range in the other direction. - // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0 - if (gt && hasDomLT && !lt && gtltComp !== 0) { - return false - } - - if (lt && hasDomGT && !gt && gtltComp !== 0) { - return false - } - - // we needed a prerelease range in a specific tuple, but didn't get one - // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0, - // because it includes prereleases in the 1.2.3 tuple - if (needDomGTPre || needDomLTPre) { - return false - } - - return true + module.exports = minVersion; +})); +//#endregion +//#region node_modules/semver/ranges/valid.js +var require_valid = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var Range = require_range(); + var validRange = (range, options) => { + try { + return new Range(range, options).range || "*"; + } catch (er) { + return null; + } }; - - // >=1.2.3 is lower than >1.2.3 - const higherGT = (a, b, options) => { - if (!a) { - return b - } - const comp = compare(a.semver, b.semver, options); - return comp > 0 ? a - : comp < 0 ? b - : b.operator === '>' && a.operator === '>=' ? b - : a + module.exports = validRange; +})); +//#endregion +//#region node_modules/semver/ranges/outside.js +var require_outside = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var SemVer = require_semver$1(); + var Comparator = require_comparator(); + var { ANY } = Comparator; + var Range = require_range(); + var satisfies = require_satisfies(); + var gt = require_gt(); + var lt = require_lt(); + var lte = require_lte(); + var gte = require_gte(); + var outside = (version, range, hilo, options) => { + version = new SemVer(version, options); + range = new Range(range, options); + let gtfn, ltefn, ltfn, comp, ecomp; + switch (hilo) { + case ">": + gtfn = gt; + ltefn = lte; + ltfn = lt; + comp = ">"; + ecomp = ">="; + break; + case "<": + gtfn = lt; + ltefn = gte; + ltfn = gt; + comp = "<"; + ecomp = "<="; + break; + default: throw new TypeError("Must provide a hilo val of \"<\" or \">\""); + } + if (satisfies(version, range, options)) return false; + for (let i = 0; i < range.set.length; ++i) { + const comparators = range.set[i]; + let high = null; + let low = null; + comparators.forEach((comparator) => { + if (comparator.semver === ANY) comparator = new Comparator(">=0.0.0"); + high = high || comparator; + low = low || comparator; + if (gtfn(comparator.semver, high.semver, options)) high = comparator; + else if (ltfn(comparator.semver, low.semver, options)) low = comparator; + }); + if (high.operator === comp || high.operator === ecomp) return false; + if ((!low.operator || low.operator === comp) && ltefn(version, low.semver)) return false; + else if (low.operator === ecomp && ltfn(version, low.semver)) return false; + } + return true; }; - - // <=1.2.3 is higher than <1.2.3 - const lowerLT = (a, b, options) => { - if (!a) { - return b - } - const comp = compare(a.semver, b.semver, options); - return comp < 0 ? a - : comp > 0 ? b - : b.operator === '<' && a.operator === '<=' ? b - : a + module.exports = outside; +})); +//#endregion +//#region node_modules/semver/ranges/gtr.js +var require_gtr = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var outside = require_outside(); + var gtr = (version, range, options) => outside(version, range, ">", options); + module.exports = gtr; +})); +//#endregion +//#region node_modules/semver/ranges/ltr.js +var require_ltr = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var outside = require_outside(); + var ltr = (version, range, options) => outside(version, range, "<", options); + module.exports = ltr; +})); +//#endregion +//#region node_modules/semver/ranges/intersects.js +var require_intersects = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var Range = require_range(); + var intersects = (r1, r2, options) => { + r1 = new Range(r1, options); + r2 = new Range(r2, options); + return r1.intersects(r2, options); }; - - subset_1 = subset; - return subset_1; -} - -var semver; -var hasRequiredSemver; - -function requireSemver () { - if (hasRequiredSemver) return semver; - hasRequiredSemver = 1; - - // just pre-load all the stuff that index.js lazily exports - const internalRe = requireRe(); - const constants = requireConstants(); - const SemVer = requireSemver$1(); - const identifiers = requireIdentifiers(); - const parse = requireParse(); - const valid = requireValid$1(); - const clean = requireClean(); - const inc = requireInc(); - const diff = requireDiff(); - const major = requireMajor(); - const minor = requireMinor(); - const patch = requirePatch(); - const prerelease = requirePrerelease(); - const compare = requireCompare(); - const rcompare = requireRcompare(); - const compareLoose = requireCompareLoose(); - const compareBuild = requireCompareBuild(); - const sort = requireSort(); - const rsort = requireRsort(); - const gt = requireGt(); - const lt = requireLt(); - const eq = requireEq(); - const neq = requireNeq(); - const gte = requireGte(); - const lte = requireLte(); - const cmp = requireCmp(); - const coerce = requireCoerce(); - const Comparator = requireComparator(); - const Range = requireRange(); - const satisfies = requireSatisfies(); - const toComparators = requireToComparators(); - const maxSatisfying = requireMaxSatisfying(); - const minSatisfying = requireMinSatisfying(); - const minVersion = requireMinVersion(); - const validRange = requireValid(); - const outside = requireOutside(); - const gtr = requireGtr(); - const ltr = requireLtr(); - const intersects = requireIntersects(); - const simplifyRange = requireSimplify(); - const subset = requireSubset(); - semver = { - parse, - valid, - clean, - inc, - diff, - major, - minor, - patch, - prerelease, - compare, - rcompare, - compareLoose, - compareBuild, - sort, - rsort, - gt, - lt, - eq, - neq, - gte, - lte, - cmp, - coerce, - Comparator, - Range, - satisfies, - toComparators, - maxSatisfying, - minSatisfying, - minVersion, - validRange, - outside, - gtr, - ltr, - intersects, - simplifyRange, - subset, - SemVer, - re: internalRe.re, - src: internalRe.src, - tokens: internalRe.t, - SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION, - RELEASE_TYPES: constants.RELEASE_TYPES, - compareIdentifiers: identifiers.compareIdentifiers, - rcompareIdentifiers: identifiers.rcompareIdentifiers, + module.exports = intersects; +})); +//#endregion +//#region node_modules/semver/ranges/simplify.js +var require_simplify = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var satisfies = require_satisfies(); + var compare = require_compare(); + module.exports = (versions, range, options) => { + const set = []; + let first = null; + let prev = null; + const v = versions.sort((a, b) => compare(a, b, options)); + for (const version of v) if (satisfies(version, range, options)) { + prev = version; + if (!first) first = version; + } else { + if (prev) set.push([first, prev]); + prev = null; + first = null; + } + if (first) set.push([first, null]); + const ranges = []; + for (const [min, max] of set) if (min === max) ranges.push(min); + else if (!max && min === v[0]) ranges.push("*"); + else if (!max) ranges.push(`>=${min}`); + else if (min === v[0]) ranges.push(`<=${max}`); + else ranges.push(`${min} - ${max}`); + const simplified = ranges.join(" || "); + const original = typeof range.raw === "string" ? range.raw : String(range); + return simplified.length < original.length ? simplified : range; }; - return semver; -} - -var semverExports = requireSemver(); +})); +//#endregion +//#region node_modules/semver/ranges/subset.js +var require_subset = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var Range = require_range(); + var Comparator = require_comparator(); + var { ANY } = Comparator; + var satisfies = require_satisfies(); + var compare = require_compare(); + var subset = (sub, dom, options = {}) => { + if (sub === dom) return true; + sub = new Range(sub, options); + dom = new Range(dom, options); + let sawNonNull = false; + OUTER: for (const simpleSub of sub.set) { + for (const simpleDom of dom.set) { + const isSub = simpleSubset(simpleSub, simpleDom, options); + sawNonNull = sawNonNull || isSub !== null; + if (isSub) continue OUTER; + } + if (sawNonNull) return false; + } + return true; + }; + var minimumVersionWithPreRelease = [new Comparator(">=0.0.0-0")]; + var minimumVersion = [new Comparator(">=0.0.0")]; + var simpleSubset = (sub, dom, options) => { + if (sub === dom) return true; + if (sub.length === 1 && sub[0].semver === ANY) if (dom.length === 1 && dom[0].semver === ANY) return true; + else if (options.includePrerelease) sub = minimumVersionWithPreRelease; + else sub = minimumVersion; + if (dom.length === 1 && dom[0].semver === ANY) if (options.includePrerelease) return true; + else dom = minimumVersion; + const eqSet = /* @__PURE__ */ new Set(); + let gt, lt; + for (const c of sub) if (c.operator === ">" || c.operator === ">=") gt = higherGT(gt, c, options); + else if (c.operator === "<" || c.operator === "<=") lt = lowerLT(lt, c, options); + else eqSet.add(c.semver); + if (eqSet.size > 1) return null; + let gtltComp; + if (gt && lt) { + gtltComp = compare(gt.semver, lt.semver, options); + if (gtltComp > 0) return null; + else if (gtltComp === 0 && (gt.operator !== ">=" || lt.operator !== "<=")) return null; + } + for (const eq of eqSet) { + if (gt && !satisfies(eq, String(gt), options)) return null; + if (lt && !satisfies(eq, String(lt), options)) return null; + for (const c of dom) if (!satisfies(eq, String(c), options)) return false; + return true; + } + let higher, lower; + let hasDomLT, hasDomGT; + let needDomLTPre = lt && !options.includePrerelease && lt.semver.prerelease.length ? lt.semver : false; + let needDomGTPre = gt && !options.includePrerelease && gt.semver.prerelease.length ? gt.semver : false; + if (needDomLTPre && needDomLTPre.prerelease.length === 1 && lt.operator === "<" && needDomLTPre.prerelease[0] === 0) needDomLTPre = false; + for (const c of dom) { + hasDomGT = hasDomGT || c.operator === ">" || c.operator === ">="; + hasDomLT = hasDomLT || c.operator === "<" || c.operator === "<="; + if (gt) { + if (needDomGTPre) { + if (c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomGTPre.major && c.semver.minor === needDomGTPre.minor && c.semver.patch === needDomGTPre.patch) needDomGTPre = false; + } + if (c.operator === ">" || c.operator === ">=") { + higher = higherGT(gt, c, options); + if (higher === c && higher !== gt) return false; + } else if (gt.operator === ">=" && !satisfies(gt.semver, String(c), options)) return false; + } + if (lt) { + if (needDomLTPre) { + if (c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomLTPre.major && c.semver.minor === needDomLTPre.minor && c.semver.patch === needDomLTPre.patch) needDomLTPre = false; + } + if (c.operator === "<" || c.operator === "<=") { + lower = lowerLT(lt, c, options); + if (lower === c && lower !== lt) return false; + } else if (lt.operator === "<=" && !satisfies(lt.semver, String(c), options)) return false; + } + if (!c.operator && (lt || gt) && gtltComp !== 0) return false; + } + if (gt && hasDomLT && !lt && gtltComp !== 0) return false; + if (lt && hasDomGT && !gt && gtltComp !== 0) return false; + if (needDomGTPre || needDomLTPre) return false; + return true; + }; + var higherGT = (a, b, options) => { + if (!a) return b; + const comp = compare(a.semver, b.semver, options); + return comp > 0 ? a : comp < 0 ? b : b.operator === ">" && a.operator === ">=" ? b : a; + }; + var lowerLT = (a, b, options) => { + if (!a) return b; + const comp = compare(a.semver, b.semver, options); + return comp < 0 ? a : comp > 0 ? b : b.operator === "<" && a.operator === "<=" ? b : a; + }; + module.exports = subset; +})); +//#endregion +//#region node_modules/semver/index.js +var require_semver = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var internalRe = require_re(); + var constants = require_constants(); + var SemVer = require_semver$1(); + var identifiers = require_identifiers(); + module.exports = { + parse: require_parse(), + valid: require_valid$1(), + clean: require_clean(), + inc: require_inc(), + diff: require_diff(), + major: require_major(), + minor: require_minor(), + patch: require_patch(), + prerelease: require_prerelease(), + compare: require_compare(), + rcompare: require_rcompare(), + compareLoose: require_compare_loose(), + compareBuild: require_compare_build(), + sort: require_sort(), + rsort: require_rsort(), + gt: require_gt(), + lt: require_lt(), + eq: require_eq(), + neq: require_neq(), + gte: require_gte(), + lte: require_lte(), + cmp: require_cmp(), + coerce: require_coerce(), + Comparator: require_comparator(), + Range: require_range(), + satisfies: require_satisfies(), + toComparators: require_to_comparators(), + maxSatisfying: require_max_satisfying(), + minSatisfying: require_min_satisfying(), + minVersion: require_min_version(), + validRange: require_valid(), + outside: require_outside(), + gtr: require_gtr(), + ltr: require_ltr(), + intersects: require_intersects(), + simplifyRange: require_simplify(), + subset: require_subset(), + SemVer, + re: internalRe.re, + src: internalRe.src, + tokens: internalRe.t, + SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION, + RELEASE_TYPES: constants.RELEASE_TYPES, + compareIdentifiers: identifiers.compareIdentifiers, + rcompareIdentifiers: identifiers.rcompareIdentifiers + }; +})); +//#endregion +export { require_semver as t }; -export { semverExports as s }; -//# sourceMappingURL=semver.mjs.map +//# sourceMappingURL=semver.mjs.map \ No newline at end of file diff --git a/dist/tools/libs/semver.mjs.map b/dist/tools/libs/semver.mjs.map index fcea1a937..8d8cfa8d8 100644 --- a/dist/tools/libs/semver.mjs.map +++ b/dist/tools/libs/semver.mjs.map @@ -1 +1 @@ -{"version":3,"file":"semver.mjs","sources":["../../../node_modules/semver/internal/constants.js","../../../node_modules/semver/internal/debug.js","../../../node_modules/semver/internal/re.js","../../../node_modules/semver/internal/parse-options.js","../../../node_modules/semver/internal/identifiers.js","../../../node_modules/semver/classes/semver.js","../../../node_modules/semver/functions/parse.js","../../../node_modules/semver/functions/valid.js","../../../node_modules/semver/functions/clean.js","../../../node_modules/semver/functions/inc.js","../../../node_modules/semver/functions/diff.js","../../../node_modules/semver/functions/major.js","../../../node_modules/semver/functions/minor.js","../../../node_modules/semver/functions/patch.js","../../../node_modules/semver/functions/prerelease.js","../../../node_modules/semver/functions/compare.js","../../../node_modules/semver/functions/rcompare.js","../../../node_modules/semver/functions/compare-loose.js","../../../node_modules/semver/functions/compare-build.js","../../../node_modules/semver/functions/sort.js","../../../node_modules/semver/functions/rsort.js","../../../node_modules/semver/functions/gt.js","../../../node_modules/semver/functions/lt.js","../../../node_modules/semver/functions/eq.js","../../../node_modules/semver/functions/neq.js","../../../node_modules/semver/functions/gte.js","../../../node_modules/semver/functions/lte.js","../../../node_modules/semver/functions/cmp.js","../../../node_modules/semver/functions/coerce.js","../../../node_modules/semver/internal/lrucache.js","../../../node_modules/semver/classes/range.js","../../../node_modules/semver/classes/comparator.js","../../../node_modules/semver/functions/satisfies.js","../../../node_modules/semver/ranges/to-comparators.js","../../../node_modules/semver/ranges/max-satisfying.js","../../../node_modules/semver/ranges/min-satisfying.js","../../../node_modules/semver/ranges/min-version.js","../../../node_modules/semver/ranges/valid.js","../../../node_modules/semver/ranges/outside.js","../../../node_modules/semver/ranges/gtr.js","../../../node_modules/semver/ranges/ltr.js","../../../node_modules/semver/ranges/intersects.js","../../../node_modules/semver/ranges/simplify.js","../../../node_modules/semver/ranges/subset.js","../../../node_modules/semver/index.js"],"sourcesContent":["'use strict'\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n","'use strict'\n\nconst debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n","'use strict'\n\nconst {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst safeSrc = exports.safeSrc = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value\n .split(`${token}*`).join(`${token}{0,${max}}`)\n .split(`${token}+`).join(`${token}{1,${max}}`)\n }\n return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value)\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n safeSrc[index] = safe\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n// Non-numeric identifiers include numeric identifiers but can be longer.\n// Therefore non-numeric identifiers must go first.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCEPLAIN', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)\ncreateToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`)\ncreateToken('COERCEFULL', src[t.COERCEPLAIN] +\n `(?:${src[t.PRERELEASE]})?` +\n `(?:${src[t.BUILD]})?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\ncreateToken('COERCERTLFULL', src[t.COERCEFULL], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n","'use strict'\n\n// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n","'use strict'\n\nconst numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n if (typeof a === 'number' && typeof b === 'number') {\n return a === b ? 0 : a < b ? -1 : 1\n }\n\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n","'use strict'\n\nconst debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n if (this.major < other.major) {\n return -1\n }\n if (this.major > other.major) {\n return 1\n }\n if (this.minor < other.minor) {\n return -1\n }\n if (this.minor > other.minor) {\n return 1\n }\n if (this.patch < other.patch) {\n return -1\n }\n if (this.patch > other.patch) {\n return 1\n }\n return 0\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('build compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n if (release.startsWith('pre')) {\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n // Avoid an invalid semver results\n if (identifier) {\n const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE])\n if (!match || match[1] !== identifier) {\n throw new Error(`invalid identifier: ${identifier}`)\n }\n }\n }\n\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n case 'release':\n if (this.prerelease.length === 0) {\n throw new Error(`version ${this.raw} is not a prerelease`)\n }\n this.prerelease.length = 0\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version\n }\n try {\n return new SemVer(version, options)\n } catch (er) {\n if (!throwErrors) {\n return null\n }\n throw er\n }\n}\n\nmodule.exports = parse\n","'use strict'\n\nconst parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n","'use strict'\n\nconst parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n","'use strict'\n\nconst SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n","'use strict'\n\nconst parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n const v1 = parse(version1, null, true)\n const v2 = parse(version2, null, true)\n const comparison = v1.compare(v2)\n\n if (comparison === 0) {\n return null\n }\n\n const v1Higher = comparison > 0\n const highVersion = v1Higher ? v1 : v2\n const lowVersion = v1Higher ? v2 : v1\n const highHasPre = !!highVersion.prerelease.length\n const lowHasPre = !!lowVersion.prerelease.length\n\n if (lowHasPre && !highHasPre) {\n // Going from prerelease -> no prerelease requires some special casing\n\n // If the low version has only a major, then it will always be a major\n // Some examples:\n // 1.0.0-1 -> 1.0.0\n // 1.0.0-1 -> 1.1.1\n // 1.0.0-1 -> 2.0.0\n if (!lowVersion.patch && !lowVersion.minor) {\n return 'major'\n }\n\n // If the main part has no difference\n if (lowVersion.compareMain(highVersion) === 0) {\n if (lowVersion.minor && !lowVersion.patch) {\n return 'minor'\n }\n return 'patch'\n }\n }\n\n // add the `pre` prefix if we are going to a prerelease version\n const prefix = highHasPre ? 'pre' : ''\n\n if (v1.major !== v2.major) {\n return prefix + 'major'\n }\n\n if (v1.minor !== v2.minor) {\n return prefix + 'minor'\n }\n\n if (v1.patch !== v2.patch) {\n return prefix + 'patch'\n }\n\n // high and low are prereleases\n return 'prerelease'\n}\n\nmodule.exports = diff\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n","'use strict'\n\nconst parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","'use strict'\n\nconst compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n","'use strict'\n\nconst compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n","'use strict'\n\nconst compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n","'use strict'\n\nconst compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n","'use strict'\n\nconst compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n","'use strict'\n\nconst compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n","'use strict'\n\nconst compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n","'use strict'\n\nconst compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n","'use strict'\n\nconst compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n","'use strict'\n\nconst compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","'use strict'\n\nconst eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]\n let next\n while ((next = coerceRtlRegex.exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n coerceRtlRegex.lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n const major = match[2]\n const minor = match[3] || '0'\n const patch = match[4] || '0'\n const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ''\n const build = options.includePrerelease && match[6] ? `+${match[6]}` : ''\n\n return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options)\n}\nmodule.exports = coerce\n","'use strict'\n\nclass LRUCache {\n constructor () {\n this.max = 1000\n this.map = new Map()\n }\n\n get (key) {\n const value = this.map.get(key)\n if (value === undefined) {\n return undefined\n } else {\n // Remove the key from the map and add it to the end\n this.map.delete(key)\n this.map.set(key, value)\n return value\n }\n }\n\n delete (key) {\n return this.map.delete(key)\n }\n\n set (key, value) {\n const deleted = this.delete(key)\n\n if (!deleted && value !== undefined) {\n // If cache is full, delete the least recently used item\n if (this.map.size >= this.max) {\n const firstKey = this.map.keys().next().value\n this.delete(firstKey)\n }\n\n this.map.set(key, value)\n }\n\n return this\n }\n}\n\nmodule.exports = LRUCache\n","'use strict'\n\nconst SPACE_CHARACTERS = /\\s+/g\n\n// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.formatted = undefined\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range.trim().replace(SPACE_CHARACTERS, ' ')\n\n // First, split on ||\n this.set = this.raw\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.formatted = undefined\n }\n\n get range () {\n if (this.formatted === undefined) {\n this.formatted = ''\n for (let i = 0; i < this.set.length; i++) {\n if (i > 0) {\n this.formatted += '||'\n }\n const comps = this.set[i]\n for (let k = 0; k < comps.length; k++) {\n if (k > 0) {\n this.formatted += ' '\n }\n this.formatted += comps[k].toString().trim()\n }\n }\n }\n return this.formatted\n }\n\n format () {\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n debug('tilde trim', range)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n debug('caret trim', range)\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('../internal/lrucache')\nconst cache = new LRU()\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n safeRe: re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n comp = comp.replace(re[t.BUILD], '')\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceTilde(c, options))\n .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceCaret(c, options))\n .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp\n .split(/\\s+/)\n .map((c) => replaceXRange(c, options))\n .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp\n .trim()\n .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp\n .trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\n// TODO build?\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n","'use strict'\n\nconst ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n","'use strict'\n\nconst Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n","'use strict'\n\nconst Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n","'use strict'\n\nconst Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n","'use strict'\n\n// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n","'use strict'\n\nconst outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n","'use strict'\n\nconst Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n","'use strict'\n\n// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n","'use strict'\n\nconst Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If LT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = minimumVersionWithPreRelease\n } else {\n sub = minimumVersion\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = minimumVersion\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n","'use strict'\n\n// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n RELEASE_TYPES: constants.RELEASE_TYPES,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n"],"names":["require$$0","require$$1","exports","require$$2","require$$3","require$$4","semver","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18","require$$19","require$$20","require$$21","require$$22","require$$23","require$$24","require$$25","require$$26","require$$27","require$$28","require$$29","require$$30","require$$31","require$$32","require$$33","require$$34","require$$35","require$$36","require$$37","require$$38","require$$39","require$$40"],"mappings":";;;;;;;;;AAEA;AACA;AACA,CAAA,MAAM,mBAAmB,GAAG;;AAE5B,CAAA,MAAM,UAAU,GAAG;AACnB,CAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB;4BACrB;;AAE3B;AACA,CAAA,MAAM,yBAAyB,GAAG;;AAElC;AACA;CACA,MAAM,qBAAqB,GAAG,UAAU,GAAG;;AAE3C,CAAA,MAAM,aAAa,GAAG;AACtB,GAAE,OAAO;AACT,GAAE,UAAU;AACZ,GAAE,OAAO;AACT,GAAE,UAAU;AACZ,GAAE,OAAO;AACT,GAAE,UAAU;AACZ,GAAE,YAAY;AACd;;AAEA,CAAA,SAAc,GAAG;AACjB,GAAE,UAAU;AACZ,GAAE,yBAAyB;AAC3B,GAAE,qBAAqB;AACvB,GAAE,gBAAgB;AAClB,GAAE,aAAa;AACf,GAAE,mBAAmB;GACnB,uBAAuB,EAAE,KAAK;GAC9B,UAAU,EAAE,KAAK;AACnB;;;;;;;;;;;AClCA,CAAA,MAAM,KAAK,GAAG;GACZ,OAAO,OAAO,KAAK,QAAQ;GAC3B,OAAO,CAAC,GAAG;AACb,GAAE,OAAO,CAAC,GAAG,CAAC,UAAU;GACtB,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU;KACvC,CAAC,GAAG,IAAI,KAAK,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,IAAI;AAChD,KAAI,MAAM,CAAA;;AAEV,CAAA,OAAc,GAAG;;;;;;;;;;;ECRjB,MAAM;AACN,IAAE,yBAAyB;AAC3B,IAAE,qBAAqB;AACvB,IAAE,UAAU;AACZ,GAAC,GAAGA,gBAAA;AACJ,EAAA,MAAM,KAAK,GAAGC,YAAA;AACd,EAAAC,SAAO,GAAG,MAAA,CAAA,OAAA,GAAiB;;AAE3B;EACA,MAAM,EAAE,GAAGA,SAAA,CAAA,EAAA,GAAa;EACxB,MAAM,MAAM,GAAGA,SAAA,CAAA,MAAA,GAAiB;EAChC,MAAM,GAAG,GAAGA,SAAA,CAAA,GAAA,GAAc;EAC1B,MAAM,OAAO,GAAGA,SAAA,CAAA,OAAA,GAAkB;EAClC,MAAM,CAAC,GAAGA,SAAA,CAAA,CAAA,GAAY;AACtB,EAAA,IAAI,CAAC,GAAG;;AAER,EAAA,MAAM,gBAAgB,GAAG;;AAEzB;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,MAAM,qBAAqB,GAAG;AAC9B,IAAE,CAAC,KAAK,EAAE,CAAC,CAAC;AACZ,IAAE,CAAC,KAAK,EAAE,UAAU,CAAC;AACrB,IAAE,CAAC,gBAAgB,EAAE,qBAAqB,CAAC;AAC3C;;AAEA,EAAA,MAAM,aAAa,GAAG,CAAC,KAAK,KAAK;IAC/B,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,qBAAqB,EAAE;AACpD,MAAI,KAAK,GAAG;SACL,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;SAC5C,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AACnD,IAAA;AACA,IAAE,OAAO;AACT,EAAA;;EAEA,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,KAAK;AAC/C,IAAE,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK;IAChC,MAAM,KAAK,GAAG,CAAC;AACjB,IAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK;AAC1B,IAAE,CAAC,CAAC,IAAI,CAAC,GAAG;AACZ,IAAE,GAAG,CAAC,KAAK,CAAC,GAAG;AACf,IAAE,OAAO,CAAC,KAAK,CAAC,GAAG;AACnB,IAAE,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,GAAG,GAAG,SAAS;AAC1D,IAAE,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,QAAQ,GAAG,GAAG,GAAG,SAAS;AAC7D,EAAA;;AAEA;AACA;;AAEA;AACA;;EAEA,WAAW,CAAC,mBAAmB,EAAE,aAAa;EAC9C,WAAW,CAAC,wBAAwB,EAAE,MAAM;;AAE5C;AACA;AACA;;EAEA,WAAW,CAAC,sBAAsB,EAAE,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC,CAAC;;AAEvE;AACA;;AAEA,EAAA,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC;qBAC1C,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC;qBAClC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;;AAElD,EAAA,WAAW,CAAC,kBAAkB,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC;0BAC/C,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC;0BACvC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;;AAE5D;AACA;AACA;AACA;;EAEA,WAAW,CAAC,sBAAsB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,oBAAoB;GACnE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;;EAE/B,WAAW,CAAC,2BAA2B,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,oBAAoB;GACxE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;;AAEpC;AACA;AACA;;EAEA,WAAW,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,oBAAoB;GAC3D,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC;;EAE1C,WAAW,CAAC,iBAAiB,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,yBAAyB;GACtE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,IAAI,CAAC;;AAE/C;AACA;;EAEA,WAAW,CAAC,iBAAiB,EAAE,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC;;AAErD;AACA;AACA;;EAEA,WAAW,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,eAAe;GACnD,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC;;AAErC;AACA;AACA;;AAEA;AACA;AACA;AACA;;EAEA,WAAW,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW;GAC9C,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;IACpB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;;AAEjB,EAAA,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;;AAE3C;AACA;AACA;EACA,WAAW,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,gBAAgB;GAC1D,EAAE,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;IACzB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;;AAEjB,EAAA,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;;EAE7C,WAAW,CAAC,MAAM,EAAE,cAAc;;AAElC;AACA;AACA;AACA,EAAA,WAAW,CAAC,uBAAuB,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,QAAQ,CAAC;AAC/E,EAAA,WAAW,CAAC,kBAAkB,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC;;AAErE,EAAA,WAAW,CAAC,aAAa,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;qBAC9C,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;qBACpC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;qBACpC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE;uBACxB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;qBACjB,CAAC,IAAI,CAAC;;AAEzB,EAAA,WAAW,CAAC,kBAAkB,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;0BACnD,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;0BACzC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;0BACzC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE;4BAC7B,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;0BACjB,CAAC,IAAI,CAAC;;EAE9B,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;EACjE,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;;AAE3E;AACA;AACA,EAAA,WAAW,CAAC,aAAa,EAAE,CAAC,EAAE,YAAY;AAC1C,gBAAc,SAAS,CAAC,EAAE,yBAAyB,CAAC,EAAE,CAAC;AACvD,gBAAc,CAAC,aAAa,EAAE,yBAAyB,CAAC,IAAI,CAAC;AAC7D,gBAAc,CAAC,aAAa,EAAE,yBAAyB,CAAC,IAAI,CAAC;AAC7D,EAAA,WAAW,CAAC,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC;EACzD,WAAW,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC;gBAC9B,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;gBAC3B,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBACtB,CAAC,YAAY,CAAC;EAC5B,WAAW,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI;EAC5C,WAAW,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,IAAI;;AAEpD;AACA;EACA,WAAW,CAAC,WAAW,EAAE,SAAS;;AAElC,EAAA,WAAW,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI;EAC9DA,SAAA,CAAA,gBAAA,GAA2B;;EAE3B,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;EACjE,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;;AAE3E;AACA;EACA,WAAW,CAAC,WAAW,EAAE,SAAS;;AAElC,EAAA,WAAW,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI;EAC9DA,SAAA,CAAA,gBAAA,GAA2B;;EAE3B,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;EACjE,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;;AAE3E;EACA,WAAW,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC;EAC9E,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC;;AAExE;AACA;EACA,WAAW,CAAC,gBAAgB,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI;GAChD,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI;EACxDA,SAAA,CAAA,qBAAA,GAAgC;;AAEhC;AACA;AACA;AACA;AACA,EAAA,WAAW,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;qBACtC,CAAC,SAAS,CAAC;qBACX,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;qBACzB,CAAC,KAAK,CAAC;;AAE1B,EAAA,WAAW,CAAC,kBAAkB,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;0BAC3C,CAAC,SAAS,CAAC;0BACX,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;0BAC9B,CAAC,KAAK,CAAC;;AAE/B;EACA,WAAW,CAAC,MAAM,EAAE,iBAAiB;AACrC;EACA,WAAW,CAAC,MAAM,EAAE,2BAA2B;EAC/C,WAAW,CAAC,SAAS,EAAE,6BAA6B,EAAA;;;;;;;;;;;;AC5NpD;CACA,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;AACjD,CAAA,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG;CACnC,MAAM,YAAY,GAAG,OAAO,IAAI;GAC9B,IAAI,CAAC,OAAO,EAAE;AAChB,KAAI,OAAO;AACX,GAAA;;AAEA,GAAE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AACnC,KAAI,OAAO;AACX,GAAA;;AAEA,GAAE,OAAO;AACT,CAAA;AACA,CAAA,cAAc,GAAG;;;;;;;;;;;ACdjB,CAAA,MAAM,OAAO,GAAG;AAChB,CAAA,MAAM,kBAAkB,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK;GACnC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AACtD,KAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG;AACtC,GAAA;;AAEA,GAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAC7B,GAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;;AAE7B,GAAE,IAAI,IAAI,IAAI,IAAI,EAAE;KAChB,CAAC,GAAG,CAAC;KACL,CAAC,GAAG,CAAC;AACT,GAAA;;AAEA,GAAE,OAAO,CAAC,KAAK,CAAC,GAAG;AACnB,OAAM,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI;AACxB,OAAM,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI;AACxB,OAAM,CAAC,GAAG,CAAC,GAAG;OACR;AACN,CAAA;;CAEA,MAAM,mBAAmB,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,kBAAkB,CAAC,CAAC,EAAE,CAAC;;AAE7D,CAAA,WAAc,GAAG;AACjB,GAAE,kBAAkB;AACpB,GAAE,mBAAmB;AACrB;;;;;;;;;;;AC1BA,CAAA,MAAM,KAAK,GAAGF,YAAA;AACd,CAAA,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,GAAGC,gBAAA;AACzC,CAAA,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,GAAGE,SAAA;;AAE1B,CAAA,MAAM,YAAY,GAAGC,mBAAA;CACrB,MAAM,EAAE,kBAAkB,EAAE,GAAGC,kBAAA;AAC/B,CAAA,MAAM,MAAM,CAAC;AACb,GAAE,WAAW,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE;AACjC,KAAI,OAAO,GAAG,YAAY,CAAC,OAAO;;AAElC,KAAI,IAAI,OAAO,YAAY,MAAM,EAAE;OAC7B,IAAI,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK;SACnC,OAAO,CAAC,iBAAiB,KAAK,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE;AACnE,SAAQ,OAAO;AACf,OAAA,CAAO,MAAM;SACL,OAAO,GAAG,OAAO,CAAC;AAC1B,OAAA;AACA,KAAA,CAAK,MAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;OACtC,MAAM,IAAI,SAAS,CAAC,CAAC,6CAA6C,EAAE,OAAO,OAAO,CAAC,EAAE,CAAC;AAC5F,KAAA;;AAEA,KAAI,IAAI,OAAO,CAAC,MAAM,GAAG,UAAU,EAAE;OAC/B,MAAM,IAAI,SAAS;AACzB,SAAQ,CAAC,uBAAuB,EAAE,UAAU,CAAC,WAAW;AACxD;AACA,KAAA;;AAEA,KAAI,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO;KAChC,IAAI,CAAC,OAAO,GAAG;AACnB,KAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC;AAC3B;AACA;AACA,KAAI,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,OAAO,CAAC;;KAEnC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;;KAEvE,IAAI,CAAC,CAAC,EAAE;OACN,MAAM,IAAI,SAAS,CAAC,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;AACvD,KAAA;;KAEI,IAAI,CAAC,GAAG,GAAG;;AAEf;AACA,KAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AACrB,KAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AACrB,KAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;;AAErB,KAAI,IAAI,IAAI,CAAC,KAAK,GAAG,gBAAgB,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE;AACzD,OAAM,MAAM,IAAI,SAAS,CAAC,uBAAuB;AACjD,KAAA;;AAEA,KAAI,IAAI,IAAI,CAAC,KAAK,GAAG,gBAAgB,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE;AACzD,OAAM,MAAM,IAAI,SAAS,CAAC,uBAAuB;AACjD,KAAA;;AAEA,KAAI,IAAI,IAAI,CAAC,KAAK,GAAG,gBAAgB,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE;AACzD,OAAM,MAAM,IAAI,SAAS,CAAC,uBAAuB;AACjD,KAAA;;AAEA;AACA,KAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;OACT,IAAI,CAAC,UAAU,GAAG;AACxB,KAAA,CAAK,MAAM;AACX,OAAM,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK;AACpD,SAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;WACvB,MAAM,GAAG,GAAG,CAAC;WACb,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,gBAAgB,EAAE;AAClD,aAAY,OAAO;AACnB,WAAA;AACA,SAAA;AACA,SAAQ,OAAO;OACf,CAAO;AACP,KAAA;;AAEA,KAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG;KACtC,IAAI,CAAC,MAAM;AACf,GAAA;;GAEE,MAAM,CAAC,GAAG;KACR,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC;AAC7D,KAAI,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;AAChC,OAAM,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpD,KAAA;KACI,OAAO,IAAI,CAAC;AAChB,GAAA;;GAEE,QAAQ,CAAC,GAAG;KACV,OAAO,IAAI,CAAC;AAChB,GAAA;;AAEA,GAAE,OAAO,CAAC,CAAC,KAAK,EAAE;AAClB,KAAI,KAAK,CAAC,gBAAgB,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK;AAC7D,KAAI,IAAI,EAAE,KAAK,YAAY,MAAM,CAAC,EAAE;OAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,OAAO,EAAE;AAC/D,SAAQ,OAAO;AACf,OAAA;OACM,KAAK,GAAG,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO;AAC5C,KAAA;;KAEI,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE;AACxC,OAAM,OAAO;AACb,KAAA;;AAEA,KAAI,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK;AAC3D,GAAA;;AAEA,GAAE,WAAW,CAAC,CAAC,KAAK,EAAE;AACtB,KAAI,IAAI,EAAE,KAAK,YAAY,MAAM,CAAC,EAAE;OAC9B,KAAK,GAAG,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO;AAC5C,KAAA;;KAEI,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE;AAClC,OAAM,OAAO;AACb,KAAA;KACI,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE;AAClC,OAAM,OAAO;AACb,KAAA;KACI,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE;AAClC,OAAM,OAAO;AACb,KAAA;KACI,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE;AAClC,OAAM,OAAO;AACb,KAAA;KACI,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE;AAClC,OAAM,OAAO;AACb,KAAA;KACI,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE;AAClC,OAAM,OAAO;AACb,KAAA;AACA,KAAI,OAAO;AACX,GAAA;;AAEA,GAAE,UAAU,CAAC,CAAC,KAAK,EAAE;AACrB,KAAI,IAAI,EAAE,KAAK,YAAY,MAAM,CAAC,EAAE;OAC9B,KAAK,GAAG,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO;AAC5C,KAAA;;AAEA;AACA,KAAI,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE;AAC5D,OAAM,OAAO;AACb,KAAA,CAAK,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE;AACnE,OAAM,OAAO;AACb,KAAA,CAAK,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE;AACpE,OAAM,OAAO;AACb,KAAA;;KAEI,IAAI,CAAC,GAAG;AACZ,KAAI,GAAG;AACP,OAAM,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;AACjC,OAAM,MAAM,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;OAC5B,KAAK,CAAC,oBAAoB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;OACnC,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS,EAAE;AAC9C,SAAQ,OAAO;AACf,OAAA,CAAO,MAAM,IAAI,CAAC,KAAK,SAAS,EAAE;AAClC,SAAQ,OAAO;AACf,OAAA,CAAO,MAAM,IAAI,CAAC,KAAK,SAAS,EAAE;AAClC,SAAQ,OAAO;AACf,OAAA,CAAO,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE;SAClB;AACR,OAAA,CAAO,MAAM;AACb,SAAQ,OAAO,kBAAkB,CAAC,CAAC,EAAE,CAAC;AACtC,OAAA;KACA,CAAK,QAAQ,EAAE,CAAC;AAChB,GAAA;;AAEA,GAAE,YAAY,CAAC,CAAC,KAAK,EAAE;AACvB,KAAI,IAAI,EAAE,KAAK,YAAY,MAAM,CAAC,EAAE;OAC9B,KAAK,GAAG,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO;AAC5C,KAAA;;KAEI,IAAI,CAAC,GAAG;AACZ,KAAI,GAAG;AACP,OAAM,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5B,OAAM,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;OACvB,KAAK,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;OAC9B,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS,EAAE;AAC9C,SAAQ,OAAO;AACf,OAAA,CAAO,MAAM,IAAI,CAAC,KAAK,SAAS,EAAE;AAClC,SAAQ,OAAO;AACf,OAAA,CAAO,MAAM,IAAI,CAAC,KAAK,SAAS,EAAE;AAClC,SAAQ,OAAO;AACf,OAAA,CAAO,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE;SAClB;AACR,OAAA,CAAO,MAAM;AACb,SAAQ,OAAO,kBAAkB,CAAC,CAAC,EAAE,CAAC;AACtC,OAAA;KACA,CAAK,QAAQ,EAAE,CAAC;AAChB,GAAA;;AAEA;AACA;GACE,GAAG,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE;AAC5C,KAAI,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;AACnC,OAAM,IAAI,CAAC,UAAU,IAAI,cAAc,KAAK,KAAK,EAAE;AACnD,SAAQ,MAAM,IAAI,KAAK,CAAC,iDAAiD;AACzE,OAAA;AACA;OACM,IAAI,UAAU,EAAE;AACtB,SAAQ,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;SAClG,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE;WACrC,MAAM,IAAI,KAAK,CAAC,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;AAC7D,SAAA;AACA,OAAA;AACA,KAAA;;AAEA,KAAI,QAAQ,OAAO;AACnB,OAAM,KAAK,UAAU;AACrB,SAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG;SACzB,IAAI,CAAC,KAAK,GAAG;SACb,IAAI,CAAC,KAAK,GAAG;SACb,IAAI,CAAC,KAAK;SACV,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,cAAc;SAC1C;AACR,OAAM,KAAK,UAAU;AACrB,SAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG;SACzB,IAAI,CAAC,KAAK,GAAG;SACb,IAAI,CAAC,KAAK;SACV,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,cAAc;SAC1C;AACR,OAAM,KAAK,UAAU;AACrB;AACA;AACA;AACA,SAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG;SACzB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,cAAc;SAC5C,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,cAAc;SAC1C;AACR;AACA;AACA,OAAM,KAAK,YAAY;SACf,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;WAChC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,cAAc;AACtD,SAAA;SACQ,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,cAAc;SAC1C;AACR,OAAM,KAAK,SAAS;SACZ,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1C,WAAU,MAAM,IAAI,KAAK,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC;AACnE,SAAA;AACA,SAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG;SACzB;;AAER,OAAM,KAAK,OAAO;AAClB;AACA;AACA;AACA;SACQ;AACR,WAAU,IAAI,CAAC,KAAK,KAAK,CAAC;AAC1B,WAAU,IAAI,CAAC,KAAK,KAAK,CAAC;AAC1B,WAAU,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK;WAC3B;WACA,IAAI,CAAC,KAAK;AACpB,SAAA;SACQ,IAAI,CAAC,KAAK,GAAG;SACb,IAAI,CAAC,KAAK,GAAG;SACb,IAAI,CAAC,UAAU,GAAG;SAClB;AACR,OAAM,KAAK,OAAO;AAClB;AACA;AACA;AACA;AACA,SAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;WACpD,IAAI,CAAC,KAAK;AACpB,SAAA;SACQ,IAAI,CAAC,KAAK,GAAG;SACb,IAAI,CAAC,UAAU,GAAG;SAClB;AACR,OAAM,KAAK,OAAO;AAClB;AACA;AACA;AACA;SACQ,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;WAChC,IAAI,CAAC,KAAK;AACpB,SAAA;SACQ,IAAI,CAAC,UAAU,GAAG;SAClB;AACR;AACA;OACM,KAAK,KAAK,EAAE;SACV,MAAM,IAAI,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG;;SAE1C,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AAC1C,WAAU,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI;AACjC,SAAA,CAAS,MAAM;AACf,WAAU,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;AAClC,WAAU,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE;aACf,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AACxD,eAAc,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;eAClB,CAAC,GAAG;AAClB,aAAA;AACA,WAAA;AACA,WAAU,IAAI,CAAC,KAAK,EAAE,EAAE;AACxB;AACA,aAAY,IAAI,UAAU,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,cAAc,KAAK,KAAK,EAAE;AACtF,eAAc,MAAM,IAAI,KAAK,CAAC,uDAAuD;AACrF,aAAA;AACA,aAAY,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI;AACrC,WAAA;AACA,SAAA;SACQ,IAAI,UAAU,EAAE;AACxB;AACA;AACA,WAAU,IAAI,UAAU,GAAG,CAAC,UAAU,EAAE,IAAI;AAC5C,WAAU,IAAI,cAAc,KAAK,KAAK,EAAE;aAC5B,UAAU,GAAG,CAAC,UAAU;AACpC,WAAA;AACA,WAAU,IAAI,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE;aAC5D,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE;eAC7B,IAAI,CAAC,UAAU,GAAG;AAChC,aAAA;AACA,WAAA,CAAW,MAAM;aACL,IAAI,CAAC,UAAU,GAAG;AAC9B,WAAA;AACA,SAAA;SACQ;AACR,OAAA;OACM;SACE,MAAM,IAAI,KAAK,CAAC,CAAC,4BAA4B,EAAE,OAAO,CAAC,CAAC;AAChE;AACA,KAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM;AAC1B,KAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AAC3B,OAAM,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3C,KAAA;AACA,KAAI,OAAO;AACX,GAAA;AACA;;AAEA,CAAAC,QAAc,GAAG;;;;;;;;;;;AC1UjB,CAAA,MAAM,MAAM,GAAGN,eAAA;CACf,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,GAAG,KAAK,KAAK;AACzD,GAAE,IAAI,OAAO,YAAY,MAAM,EAAE;AACjC,KAAI,OAAO;AACX,GAAA;AACA,GAAE,IAAI;AACN,KAAI,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO;GACtC,CAAG,CAAC,OAAO,EAAE,EAAE;KACX,IAAI,CAAC,WAAW,EAAE;AACtB,OAAM,OAAO;AACb,KAAA;AACA,KAAI,MAAM;AACV,GAAA;AACA,CAAA;;AAEA,CAAA,OAAc,GAAG;;;;;;;;;;;ACfjB,CAAA,MAAM,KAAK,GAAGA,YAAA;AACd,CAAA,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK;AACpC,GAAE,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,OAAO;AAClC,GAAE,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG;AACzB,CAAA;AACA,CAAA,OAAc,GAAG;;;;;;;;;;;ACLjB,CAAA,MAAM,KAAK,GAAGA,YAAA;AACd,CAAA,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK;AACpC,GAAE,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,OAAO;AAC/D,GAAE,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG;AACzB,CAAA;AACA,CAAA,OAAc,GAAG;;;;;;;;;;;ACLjB,CAAA,MAAM,MAAM,GAAGA,eAAA;;AAEf,CAAA,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,KAAK;AACvE,GAAE,IAAI,QAAQ,OAAO,CAAC,KAAK,QAAQ,EAAE;AACrC,KAAI,cAAc,GAAG;AACrB,KAAI,UAAU,GAAG;AACjB,KAAI,OAAO,GAAG;AACd,GAAA;;AAEA,GAAE,IAAI;KACF,OAAO,IAAI,MAAM;OACf,OAAO,YAAY,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO;OACrD;MACD,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;GAC/C,CAAG,CAAC,OAAO,EAAE,EAAE;AACf,KAAI,OAAO;AACX,GAAA;AACA,CAAA;AACA,CAAA,KAAc,GAAG;;;;;;;;;;;AClBjB,CAAA,MAAM,KAAK,GAAGA,YAAA;;AAEd,CAAA,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,QAAQ,KAAK;GACnC,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI;GACrC,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI;AACvC,GAAE,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE;;AAElC,GAAE,IAAI,UAAU,KAAK,CAAC,EAAE;AACxB,KAAI,OAAO;AACX,GAAA;;AAEA,GAAE,MAAM,QAAQ,GAAG,UAAU,GAAG;AAChC,GAAE,MAAM,WAAW,GAAG,QAAQ,GAAG,EAAE,GAAG;AACtC,GAAE,MAAM,UAAU,GAAG,QAAQ,GAAG,EAAE,GAAG;GACnC,MAAM,UAAU,GAAG,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC;GAC5C,MAAM,SAAS,GAAG,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;;AAE5C,GAAE,IAAI,SAAS,IAAI,CAAC,UAAU,EAAE;AAChC;;AAEA;AACA;AACA;AACA;AACA;KACI,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AAChD,OAAM,OAAO;AACb,KAAA;;AAEA;KACI,IAAI,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;OAC7C,IAAI,UAAU,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AACjD,SAAQ,OAAO;AACf,OAAA;AACA,OAAM,OAAO;AACb,KAAA;AACA,GAAA;;AAEA;AACA,GAAE,MAAM,MAAM,GAAG,UAAU,GAAG,KAAK,GAAG;;GAEpC,IAAI,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,KAAK,EAAE;KACzB,OAAO,MAAM,GAAG;AACpB,GAAA;;GAEE,IAAI,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,KAAK,EAAE;KACzB,OAAO,MAAM,GAAG;AACpB,GAAA;;GAEE,IAAI,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,KAAK,EAAE;KACzB,OAAO,MAAM,GAAG;AACpB,GAAA;;AAEA;AACA,GAAE,OAAO;AACT,CAAA;;AAEA,CAAA,MAAc,GAAG;;;;;;;;;;;ACzDjB,CAAA,MAAM,MAAM,GAAGA,eAAA;AACf,CAAA,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACjD,CAAA,OAAc,GAAG;;;;;;;;;;;ACFjB,CAAA,MAAM,MAAM,GAAGA,eAAA;AACf,CAAA,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACjD,CAAA,OAAc,GAAG;;;;;;;;;;;ACFjB,CAAA,MAAM,MAAM,GAAGA,eAAA;AACf,CAAA,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACjD,CAAA,OAAc,GAAG;;;;;;;;;;;ACFjB,CAAA,MAAM,KAAK,GAAGA,YAAA;AACd,CAAA,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK;AACzC,GAAE,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,OAAO;AACvC,GAAE,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,GAAG;AACpE,CAAA;AACA,CAAA,YAAc,GAAG;;;;;;;;;;;ACLjB,CAAA,MAAM,MAAM,GAAGA,eAAA;AACf,CAAA,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK;AAC5B,GAAE,IAAI,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC;;AAEnD,CAAA,SAAc,GAAG;;;;;;;;;;;ACJjB,CAAA,MAAM,OAAO,GAAGA,cAAA;AAChB,CAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK;AACrD,CAAA,UAAc,GAAG;;;;;;;;;;;ACFjB,CAAA,MAAM,OAAO,GAAGA,cAAA;AAChB,CAAA,MAAM,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI;AACjD,CAAA,cAAc,GAAG;;;;;;;;;;;ACFjB,CAAA,MAAM,MAAM,GAAGA,eAAA;CACf,MAAM,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,KAAK;GACpC,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE,KAAK;GACpC,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE,KAAK;AACtC,GAAE,OAAO,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,YAAY,CAAC,QAAQ;AACrE,CAAA;AACA,CAAA,cAAc,GAAG;;;;;;;;;;;ACNjB,CAAA,MAAM,YAAY,GAAGA,mBAAA;CACrB,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC;AAC3E,CAAA,MAAc,GAAG;;;;;;;;;;;ACFjB,CAAA,MAAM,YAAY,GAAGA,mBAAA;CACrB,MAAM,KAAK,GAAG,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC;AAC5E,CAAA,OAAc,GAAG;;;;;;;;;;;ACFjB,CAAA,MAAM,OAAO,GAAGA,cAAA;AAChB,CAAA,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG;AACnD,CAAA,IAAc,GAAG;;;;;;;;;;;ACFjB,CAAA,MAAM,OAAO,GAAGA,cAAA;AAChB,CAAA,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG;AACnD,CAAA,IAAc,GAAG;;;;;;;;;;;ACFjB,CAAA,MAAM,OAAO,GAAGA,cAAA;AAChB,CAAA,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK;AACrD,CAAA,IAAc,GAAG;;;;;;;;;;;ACFjB,CAAA,MAAM,OAAO,GAAGA,cAAA;AAChB,CAAA,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK;AACtD,CAAA,KAAc,GAAG;;;;;;;;;;;ACFjB,CAAA,MAAM,OAAO,GAAGA,cAAA;AAChB,CAAA,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI;AACrD,CAAA,KAAc,GAAG;;;;;;;;;;;ACFjB,CAAA,MAAM,OAAO,GAAGA,cAAA;AAChB,CAAA,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI;AACrD,CAAA,KAAc,GAAG;;;;;;;;;;;ACFjB,CAAA,MAAM,EAAE,GAAGA,SAAA;AACX,CAAA,MAAM,GAAG,GAAGC,UAAA;AACZ,CAAA,MAAM,EAAE,GAAGE,SAAA;AACX,CAAA,MAAM,GAAG,GAAGC,UAAA;AACZ,CAAA,MAAM,EAAE,GAAGC,SAAA;AACX,CAAA,MAAM,GAAG,GAAGE,UAAA;;CAEZ,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,KAAK;AACjC,GAAE,QAAQ,EAAE;AACZ,KAAI,KAAK,KAAK;AACd,OAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;SACzB,CAAC,GAAG,CAAC,CAAC;AACd,OAAA;AACA,OAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;SACzB,CAAC,GAAG,CAAC,CAAC;AACd,OAAA;OACM,OAAO,CAAC,KAAK;;AAEnB,KAAI,KAAK,KAAK;AACd,OAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;SACzB,CAAC,GAAG,CAAC,CAAC;AACd,OAAA;AACA,OAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;SACzB,CAAC,GAAG,CAAC,CAAC;AACd,OAAA;OACM,OAAO,CAAC,KAAK;;AAEnB,KAAI,KAAK,EAAE;AACX,KAAI,KAAK,GAAG;AACZ,KAAI,KAAK,IAAI;AACb,OAAM,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK;;AAE3B,KAAI,KAAK,IAAI;AACb,OAAM,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK;;AAE5B,KAAI,KAAK,GAAG;AACZ,OAAM,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK;;AAE3B,KAAI,KAAK,IAAI;AACb,OAAM,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK;;AAE5B,KAAI,KAAK,GAAG;AACZ,OAAM,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK;;AAE3B,KAAI,KAAK,IAAI;AACb,OAAM,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK;;KAExB;OACE,MAAM,IAAI,SAAS,CAAC,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;AACnD;AACA,CAAA;AACA,CAAA,KAAc,GAAG;;;;;;;;;;;ACnDjB,CAAA,MAAM,MAAM,GAAGP,eAAA;AACf,CAAA,MAAM,KAAK,GAAGC,YAAA;AACd,CAAA,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,GAAGE,SAAA;;AAE1B,CAAA,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK;AACrC,GAAE,IAAI,OAAO,YAAY,MAAM,EAAE;AACjC,KAAI,OAAO;AACX,GAAA;;AAEA,GAAE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AACnC,KAAI,OAAO,GAAG,MAAM,CAAC,OAAO;AAC5B,GAAA;;AAEA,GAAE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AACnC,KAAI,OAAO;AACX,GAAA;;GAEE,OAAO,GAAG,OAAO,IAAI;;GAErB,IAAI,KAAK,GAAG;AACd,GAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;KAChB,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,GAAG,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AACrF,GAAA,CAAG,MAAM;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI,MAAM,cAAc,GAAG,OAAO,CAAC,iBAAiB,GAAG,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS;AAC3F,KAAI,IAAI;KACJ,OAAO,CAAC,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;AAC/C,UAAS,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM;OAC7D;OACA,IAAI,CAAC,KAAK;aACJ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AAC3E,SAAQ,KAAK,GAAG;AAChB,OAAA;AACA,OAAM,cAAc,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACvE,KAAA;AACA;AACA,KAAI,cAAc,CAAC,SAAS,GAAG;AAC/B,GAAA;;AAEA,GAAE,IAAI,KAAK,KAAK,IAAI,EAAE;AACtB,KAAI,OAAO;AACX,GAAA;;AAEA,GAAE,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC;AACvB,GAAE,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI;AAC5B,GAAE,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI;GAC1B,MAAM,UAAU,GAAG,OAAO,CAAC,iBAAiB,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;GAC5E,MAAM,KAAK,GAAG,OAAO,CAAC,iBAAiB,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;;GAEvE,OAAO,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,OAAO;AACzE,CAAA;AACA,CAAA,QAAc,GAAG;;;;;;;;;;;AC3DjB,CAAA,MAAM,QAAQ,CAAC;GACb,WAAW,CAAC,GAAG;KACb,IAAI,CAAC,GAAG,GAAG;AACf,KAAI,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG;AACtB,GAAA;;AAEA,GAAE,GAAG,CAAC,CAAC,GAAG,EAAE;KACR,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG;AAClC,KAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AAC7B,OAAM,OAAO;AACb,KAAA,CAAK,MAAM;AACX;AACA,OAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG;OACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK;AAC7B,OAAM,OAAO;AACb,KAAA;AACA,GAAA;;AAEA,GAAE,MAAM,CAAC,CAAC,GAAG,EAAE;AACf,KAAI,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG;AAC9B,GAAA;;AAEA,GAAE,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE;AACnB,KAAI,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG;;AAEnC,KAAI,IAAI,CAAC,OAAO,IAAI,KAAK,KAAK,SAAS,EAAE;AACzC;OACM,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE;AACrC,SAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;AAChD,SAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ;AAC5B,OAAA;;OAEM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK;AAC7B,KAAA;;AAEA,KAAI,OAAO;AACX,GAAA;AACA;;AAEA,CAAA,QAAc,GAAG;;;;;;;;;;;ACvCjB,CAAA,MAAM,gBAAgB,GAAG;;AAEzB;AACA,CAAA,MAAM,KAAK,CAAC;AACZ,GAAE,WAAW,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE;AAC/B,KAAI,OAAO,GAAG,YAAY,CAAC,OAAO;;AAElC,KAAI,IAAI,KAAK,YAAY,KAAK,EAAE;OAC1B;SACE,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK;AACvC,SAAQ,KAAK,CAAC,iBAAiB,KAAK,CAAC,CAAC,OAAO,CAAC;SACtC;AACR,SAAQ,OAAO;AACf,OAAA,CAAO,MAAM;SACL,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO;AAC3C,OAAA;AACA,KAAA;;AAEA,KAAI,IAAI,KAAK,YAAY,UAAU,EAAE;AACrC;AACA,OAAM,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;AACvB,OAAM,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC;OACnB,IAAI,CAAC,SAAS,GAAG;AACvB,OAAM,OAAO;AACb,KAAA;;KAEI,IAAI,CAAC,OAAO,GAAG;AACnB,KAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC;AAC3B,KAAI,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,OAAO,CAAC;;AAEvC;AACA;AACA;AACA,KAAI,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG;;AAEzD;AACA,KAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;QACb,KAAK,CAAC,IAAI;AACjB;AACA,QAAO,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACzC;AACA;AACA;AACA,QAAO,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM;;AAE3B,KAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;OACpB,MAAM,IAAI,SAAS,CAAC,CAAC,sBAAsB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7D,KAAA;;AAEA;KACI,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7B;AACA,OAAM,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9B,OAAM,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;OAChD,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;AACjC,SAAQ,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK;OACzB,CAAO,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;AACtC;AACA,SAAQ,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE;AAClC,WAAU,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC7C,aAAY,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;aACb;AACZ,WAAA;AACA,SAAA;AACA,OAAA;AACA,KAAA;;KAEI,IAAI,CAAC,SAAS,GAAG;AACrB,GAAA;;GAEE,IAAI,KAAK,CAAC,GAAG;AACf,KAAI,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;OAChC,IAAI,CAAC,SAAS,GAAG;AACvB,OAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChD,SAAQ,IAAI,CAAC,GAAG,CAAC,EAAE;WACT,IAAI,CAAC,SAAS,IAAI;AAC5B,SAAA;AACA,SAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC,SAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/C,WAAU,IAAI,CAAC,GAAG,CAAC,EAAE;aACT,IAAI,CAAC,SAAS,IAAI;AAC9B,WAAA;AACA,WAAU,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI;AACpD,SAAA;AACA,OAAA;AACA,KAAA;KACI,OAAO,IAAI,CAAC;AAChB,GAAA;;GAEE,MAAM,CAAC,GAAG;KACR,OAAO,IAAI,CAAC;AAChB,GAAA;;GAEE,QAAQ,CAAC,GAAG;KACV,OAAO,IAAI,CAAC;AAChB,GAAA;;AAEA,GAAE,UAAU,CAAC,CAAC,KAAK,EAAE;AACrB;AACA;AACA,KAAI,MAAM,QAAQ;AAClB,OAAM,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,IAAI,uBAAuB;AAChE,QAAO,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,UAAU;AACvC,KAAI,MAAM,OAAO,GAAG,QAAQ,GAAG,GAAG,GAAG;AACrC,KAAI,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO;KAChC,IAAI,MAAM,EAAE;AAChB,OAAM,OAAO;AACb,KAAA;;AAEA,KAAI,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;AAC/B;AACA,KAAI,MAAM,EAAE,GAAG,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,WAAW;AAChE,KAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;AAC3E,KAAI,KAAK,CAAC,gBAAgB,EAAE,KAAK;;AAEjC;AACA,KAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,qBAAqB;AACrE,KAAI,KAAK,CAAC,iBAAiB,EAAE,KAAK;;AAElC;AACA,KAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,gBAAgB;AAC3D,KAAI,KAAK,CAAC,YAAY,EAAE,KAAK;;AAE7B;AACA,KAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,gBAAgB;AAC3D,KAAI,KAAK,CAAC,YAAY,EAAE,KAAK;;AAE7B;AACA;;KAEI,IAAI,SAAS,GAAG;QACb,KAAK,CAAC,GAAG;QACT,GAAG,CAAC,IAAI,IAAI,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC;QAC/C,IAAI,CAAC,GAAG;QACR,KAAK,CAAC,KAAK;AAClB;QACO,GAAG,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC;;KAE9C,IAAI,KAAK,EAAE;AACf;AACA,OAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI;SACnC,KAAK,CAAC,sBAAsB,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO;AACxD,SAAQ,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC;OACjD,CAAO;AACP,KAAA;AACA,KAAI,KAAK,CAAC,YAAY,EAAE,SAAS;;AAEjC;AACA;AACA;AACA,KAAI,MAAM,QAAQ,GAAG,IAAI,GAAG;AAC5B,KAAI,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC;AAChF,KAAI,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;AACpC,OAAM,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE;SACnB,OAAO,CAAC,IAAI;AACpB,OAAA;OACM,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI;AACnC,KAAA;AACA,KAAI,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AAC/C,OAAM,QAAQ,CAAC,MAAM,CAAC,EAAE;AACxB,KAAA;;KAEI,MAAM,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE;AACxC,KAAI,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM;AAC7B,KAAI,OAAO;AACX,GAAA;;AAEA,GAAE,UAAU,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE;AAC9B,KAAI,IAAI,EAAE,KAAK,YAAY,KAAK,CAAC,EAAE;AACnC,OAAM,MAAM,IAAI,SAAS,CAAC,qBAAqB;AAC/C,KAAA;;KAEI,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,eAAe,KAAK;OACxC;AACN,SAAQ,aAAa,CAAC,eAAe,EAAE,OAAO,CAAC;SACvC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,gBAAgB,KAAK;WACnC;AACV,aAAY,aAAa,CAAC,gBAAgB,EAAE,OAAO,CAAC;AACpD,aAAY,eAAe,CAAC,KAAK,CAAC,CAAC,cAAc,KAAK;AACtD,eAAc,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC,eAAe,KAAK;AACjE,iBAAgB,OAAO,cAAc,CAAC,UAAU,CAAC,eAAe,EAAE,OAAO;eACzE,CAAe;aACf,CAAa;AACb;SACA,CAAS;AACT;KACA,CAAK;AACL,GAAA;;AAEA;AACA,GAAE,IAAI,CAAC,CAAC,OAAO,EAAE;KACb,IAAI,CAAC,OAAO,EAAE;AAClB,OAAM,OAAO;AACb,KAAA;;AAEA,KAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AACrC,OAAM,IAAI;SACF,OAAO,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO;OAClD,CAAO,CAAC,OAAO,EAAE,EAAE;AACnB,SAAQ,OAAO;AACf,OAAA;AACA,KAAA;;AAEA,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9C,OAAM,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;AACvD,SAAQ,OAAO;AACf,OAAA;AACA,KAAA;AACA,KAAI,OAAO;AACX,GAAA;AACA;;AAEA,CAAA,KAAc,GAAG;;AAEjB,CAAA,MAAM,GAAG,GAAGH,eAAA;CACZ,MAAM,KAAK,GAAG,IAAI,GAAG;;AAErB,CAAA,MAAM,YAAY,GAAGC,mBAAA;AACrB,CAAA,MAAM,UAAU,GAAGE,iBAAA;AACnB,CAAA,MAAM,KAAK,GAAGC,YAAA;AACd,CAAA,MAAM,MAAM,GAAGC,eAAA;CACf,MAAM;GACJ,MAAM,EAAE,EAAE;AACZ,GAAE,CAAC;AACH,GAAE,qBAAqB;AACvB,GAAE,gBAAgB;AAClB,GAAE,gBAAgB;AAClB,EAAC,GAAGE,SAAA;AACJ,CAAA,MAAM,EAAE,uBAAuB,EAAE,UAAU,EAAE,GAAGC,gBAAA;;AAEhD,CAAA,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK;AACnC,CAAA,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK;;AAE/B;AACA;AACA,CAAA,MAAM,aAAa,GAAG,CAAC,WAAW,EAAE,OAAO,KAAK;GAC9C,IAAI,MAAM,GAAG;AACf,GAAE,MAAM,oBAAoB,GAAG,WAAW,CAAC,KAAK;AAChD,GAAE,IAAI,cAAc,GAAG,oBAAoB,CAAC,GAAG;;AAE/C,GAAE,OAAO,MAAM,IAAI,oBAAoB,CAAC,MAAM,EAAE;KAC5C,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC,eAAe,KAAK;AAC7D,OAAM,OAAO,cAAc,CAAC,UAAU,CAAC,eAAe,EAAE,OAAO;KAC/D,CAAK;;AAEL,KAAI,cAAc,GAAG,oBAAoB,CAAC,GAAG;AAC7C,GAAA;;AAEA,GAAE,OAAO;AACT,CAAA;;AAEA;AACA;AACA;AACA,CAAA,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK;AAC3C,GAAE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE;AACrC,GAAE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO;AAC7B,GAAE,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE,OAAO;AACpC,GAAE,KAAK,CAAC,OAAO,EAAE,IAAI;AACrB,GAAE,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE,OAAO;AACpC,GAAE,KAAK,CAAC,QAAQ,EAAE,IAAI;AACtB,GAAE,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,OAAO;AACrC,GAAE,KAAK,CAAC,QAAQ,EAAE,IAAI;AACtB,GAAE,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO;AACnC,GAAE,KAAK,CAAC,OAAO,EAAE,IAAI;AACrB,GAAE,OAAO;AACT,CAAA;;AAEA,CAAA,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK;;AAE5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK;AACzC,GAAE,OAAO;AACT,MAAK,IAAI;MACJ,KAAK,CAAC,KAAK;MACX,GAAG,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC;MACnC,IAAI,CAAC,GAAG;AACb,CAAA;;AAEA,CAAA,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK;AACxC,GAAE,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK;AACzD,GAAE,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK;AAC7C,KAAI,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACvC,KAAI,IAAI;;AAER,KAAI,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;AAChB,OAAM,GAAG,GAAG;AACZ,KAAA,CAAK,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;AACvB,OAAM,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM;AACxC,KAAA,CAAK,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;AACvB;OACM,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI;KAC9C,CAAK,MAAM,IAAI,EAAE,EAAE;AACnB,OAAM,KAAK,CAAC,iBAAiB,EAAE,EAAE;AACjC,OAAM,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;QACzB,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI;AAC3B,KAAA,CAAK,MAAM;AACX;AACA,OAAM,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;QACpB,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI;AAC3B,KAAA;;AAEA,KAAI,KAAK,CAAC,cAAc,EAAE,GAAG;AAC7B,KAAI,OAAO;GACX,CAAG;AACH,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK;AACzC,GAAE,OAAO;AACT,MAAK,IAAI;MACJ,KAAK,CAAC,KAAK;MACX,GAAG,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC;MACnC,IAAI,CAAC,GAAG;AACb,CAAA;;AAEA,CAAA,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK;AACxC,GAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO;AAC9B,GAAE,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK;GACvD,MAAM,CAAC,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,GAAG;AAC/C,GAAE,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK;AAC7C,KAAI,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AACvC,KAAI,IAAI;;AAER,KAAI,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;AAChB,OAAM,GAAG,GAAG;AACZ,KAAA,CAAK,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;AACvB,OAAM,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM;AAC5C,KAAA,CAAK,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;AACvB,OAAM,IAAI,CAAC,KAAK,GAAG,EAAE;SACb,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI;AACpD,OAAA,CAAO,MAAM;SACL,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM;AACjD,OAAA;KACA,CAAK,MAAM,IAAI,EAAE,EAAE;AACnB,OAAM,KAAK,CAAC,iBAAiB,EAAE,EAAE;AACjC,OAAM,IAAI,CAAC,KAAK,GAAG,EAAE;AACrB,SAAQ,IAAI,CAAC,KAAK,GAAG,EAAE;AACvB,WAAU,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACpC,YAAW,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AAClC,SAAA,CAAS,MAAM;AACf,WAAU,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;YACzB,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI;AAC/B,SAAA;AACA,OAAA,CAAO,MAAM;AACb,SAAQ,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AAClC,UAAS,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM;AAC1B,OAAA;AACA,KAAA,CAAK,MAAM;OACL,KAAK,CAAC,OAAO;AACnB,OAAM,IAAI,CAAC,KAAK,GAAG,EAAE;AACrB,SAAQ,IAAI,CAAC,KAAK,GAAG,EAAE;AACvB,WAAU,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AAC/B,YAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AACtC,SAAA,CAAS,MAAM;AACf,WAAU,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AAC/B,YAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI;AACnC,SAAA;AACA,OAAA,CAAO,MAAM;AACb,SAAQ,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AAC7B,UAAS,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM;AAC1B,OAAA;AACA,KAAA;;AAEA,KAAI,KAAK,CAAC,cAAc,EAAE,GAAG;AAC7B,KAAI,OAAO;GACX,CAAG;AACH,CAAA;;AAEA,CAAA,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK;AAC1C,GAAE,KAAK,CAAC,gBAAgB,EAAE,IAAI,EAAE,OAAO;AACvC,GAAE,OAAO;MACJ,KAAK,CAAC,KAAK;MACX,GAAG,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC;MACpC,IAAI,CAAC,GAAG;AACb,CAAA;;AAEA,CAAA,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK;AACzC,GAAE,IAAI,GAAG,IAAI,CAAC,IAAI;AAClB,GAAE,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM;AAC3D,GAAE,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK;AACrD,KAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;AAChD,KAAI,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;AACpB,KAAI,MAAM,EAAE,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC;AAC1B,KAAI,MAAM,EAAE,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC;KACtB,MAAM,IAAI,GAAG;;AAEjB,KAAI,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,EAAE;AAC9B,OAAM,IAAI,GAAG;AACb,KAAA;;AAEA;AACA;AACA,KAAI,EAAE,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,GAAG;;KAExC,IAAI,EAAE,EAAE;OACN,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE;AACxC;AACA,SAAQ,GAAG,GAAG;AACd,OAAA,CAAO,MAAM;AACb;AACA,SAAQ,GAAG,GAAG;AACd,OAAA;AACA,KAAA,CAAK,MAAM,IAAI,IAAI,IAAI,IAAI,EAAE;AAC7B;AACA;OACM,IAAI,EAAE,EAAE;AACd,SAAQ,CAAC,GAAG;AACZ,OAAA;AACA,OAAM,CAAC,GAAG;;AAEV,OAAM,IAAI,IAAI,KAAK,GAAG,EAAE;AACxB;AACA;AACA,SAAQ,IAAI,GAAG;SACP,IAAI,EAAE,EAAE;AAChB,WAAU,CAAC,GAAG,CAAC,CAAC,GAAG;AACnB,WAAU,CAAC,GAAG;AACd,WAAU,CAAC,GAAG;AACd,SAAA,CAAS,MAAM;AACf,WAAU,CAAC,GAAG,CAAC,CAAC,GAAG;AACnB,WAAU,CAAC,GAAG;AACd,SAAA;AACA,OAAA,CAAO,MAAM,IAAI,IAAI,KAAK,IAAI,EAAE;AAChC;AACA;AACA,SAAQ,IAAI,GAAG;SACP,IAAI,EAAE,EAAE;AAChB,WAAU,CAAC,GAAG,CAAC,CAAC,GAAG;AACnB,SAAA,CAAS,MAAM;AACf,WAAU,CAAC,GAAG,CAAC,CAAC,GAAG;AACnB,SAAA;AACA,OAAA;;AAEA,OAAM,IAAI,IAAI,KAAK,GAAG,EAAE;AACxB,SAAQ,EAAE,GAAG;AACb,OAAA;;AAEA,OAAM,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;KACvC,CAAK,MAAM,IAAI,EAAE,EAAE;AACnB,OAAM,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM;KAC7C,CAAK,MAAM,IAAI,EAAE,EAAE;AACnB,OAAM,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;QACrB,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI;AAC3B,KAAA;;AAEA,KAAI,KAAK,CAAC,eAAe,EAAE,GAAG;;AAE9B,KAAI,OAAO;GACX,CAAG;AACH,CAAA;;AAEA;AACA;AACA,CAAA,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK;AACxC,GAAE,KAAK,CAAC,cAAc,EAAE,IAAI,EAAE,OAAO;AACrC;AACA,GAAE,OAAO;AACT,MAAK,IAAI;MACJ,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE;AAC3B,CAAA;;AAEA,CAAA,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK;AACvC,GAAE,KAAK,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO;AACpC,GAAE,OAAO;AACT,MAAK,IAAI;AACT,MAAK,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,iBAAiB,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE;AACnE,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,MAAM,aAAa,GAAG,KAAK,IAAI,CAAC,EAAE;GAChC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE;GACzB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,KAAK;AAC1B,GAAE,IAAI,GAAG,CAAC,EAAE,CAAC,EAAE;AACf,KAAI,IAAI,GAAG;AACX,GAAA,CAAG,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,EAAE;AACtB,KAAI,IAAI,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;AAC3C,GAAA,CAAG,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,EAAE;AACtB,KAAI,IAAI,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;GAC/C,CAAG,MAAM,IAAI,GAAG,EAAE;AAClB,KAAI,IAAI,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC;AACrB,GAAA,CAAG,MAAM;AACT,KAAI,IAAI,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;AACzC,GAAA;;AAEA,GAAE,IAAI,GAAG,CAAC,EAAE,CAAC,EAAE;AACf,KAAI,EAAE,GAAG;AACT,GAAA,CAAG,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,EAAE;KAClB,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,MAAM;AAC3B,GAAA,CAAG,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,EAAE;AACtB,KAAI,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI;GAC/B,CAAG,MAAM,IAAI,GAAG,EAAE;AAClB,KAAI,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;GACpC,CAAG,MAAM,IAAI,KAAK,EAAE;AACpB,KAAI,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;AACnC,GAAA,CAAG,MAAM;AACT,KAAI,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;AACjB,GAAA;;GAEE,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI;AAC7B,CAAA;;CAEA,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,KAAK;AAC3C,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;KACnC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AAC/B,OAAM,OAAO;AACb,KAAA;AACA,GAAA;;GAEE,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE;AAC/D;AACA;AACA;AACA;AACA;AACA,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,OAAM,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM;OACnB,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,GAAG,EAAE;SACpC;AACR,OAAA;;AAEA,OAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/C,SAAQ,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/B,SAAQ,IAAI,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK;AAC3C,aAAY,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK;AAC3C,aAAY,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,EAAE;AAC7C,WAAU,OAAO;AACjB,SAAA;AACA,OAAA;AACA,KAAA;;AAEA;AACA,KAAI,OAAO;AACX,GAAA;;AAEA,GAAE,OAAO;AACT,CAAA;;;;;;;;;;;AC1iBA,CAAA,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY;AAC/B;AACA,CAAA,MAAM,UAAU,CAAC;GACf,WAAW,GAAG,CAAC,GAAG;AACpB,KAAI,OAAO;AACX,GAAA;;AAEA,GAAE,WAAW,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE;AAC9B,KAAI,OAAO,GAAG,YAAY,CAAC,OAAO;;AAElC,KAAI,IAAI,IAAI,YAAY,UAAU,EAAE;OAC9B,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE;AAC1C,SAAQ,OAAO;AACf,OAAA,CAAO,MAAM;SACL,IAAI,GAAG,IAAI,CAAC;AACpB,OAAA;AACA,KAAA;;AAEA,KAAI,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG;AAC5C,KAAI,KAAK,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO;KACjC,IAAI,CAAC,OAAO,GAAG;AACnB,KAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC;AAC3B,KAAI,IAAI,CAAC,KAAK,CAAC,IAAI;;AAEnB,KAAI,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,EAAE;OACvB,IAAI,CAAC,KAAK,GAAG;AACnB,KAAA,CAAK,MAAM;OACL,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;AAC/C,KAAA;;AAEA,KAAI,KAAK,CAAC,MAAM,EAAE,IAAI;AACtB,GAAA;;AAEA,GAAE,KAAK,CAAC,CAAC,IAAI,EAAE;KACX,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,UAAU;AAC1E,KAAI,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;;KAEtB,IAAI,CAAC,CAAC,EAAE;OACN,MAAM,IAAI,SAAS,CAAC,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;AACvD,KAAA;;AAEA,KAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG;AAChD,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG,EAAE;OACzB,IAAI,CAAC,QAAQ,GAAG;AACtB,KAAA;;AAEA;AACA,KAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;OACT,IAAI,CAAC,MAAM,GAAG;AACpB,KAAA,CAAK,MAAM;AACX,OAAM,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AACvD,KAAA;AACA,GAAA;;GAEE,QAAQ,CAAC,GAAG;KACV,OAAO,IAAI,CAAC;AAChB,GAAA;;AAEA,GAAE,IAAI,CAAC,CAAC,OAAO,EAAE;KACb,KAAK,CAAC,iBAAiB,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;;KAEpD,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,IAAI,OAAO,KAAK,GAAG,EAAE;AAChD,OAAM,OAAO;AACb,KAAA;;AAEA,KAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AACrC,OAAM,IAAI;SACF,OAAO,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO;OAClD,CAAO,CAAC,OAAO,EAAE,EAAE;AACnB,SAAQ,OAAO;AACf,OAAA;AACA,KAAA;;AAEA,KAAI,OAAO,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO;AAChE,GAAA;;AAEA,GAAE,UAAU,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE;AAC7B,KAAI,IAAI,EAAE,IAAI,YAAY,UAAU,CAAC,EAAE;AACvC,OAAM,MAAM,IAAI,SAAS,CAAC,0BAA0B;AACpD,KAAA;;AAEA,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,EAAE,EAAE;AAC9B,OAAM,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE,EAAE;AAC7B,SAAQ,OAAO;AACf,OAAA;AACA,OAAM,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;AAC3D,KAAA,CAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,EAAE,EAAE;AACrC,OAAM,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE,EAAE;AAC7B,SAAQ,OAAO;AACf,OAAA;AACA,OAAM,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;AAC5D,KAAA;;AAEA,KAAI,OAAO,GAAG,YAAY,CAAC,OAAO;;AAElC;KACI,IAAI,OAAO,CAAC,iBAAiB;AACjC,QAAO,IAAI,CAAC,KAAK,KAAK,UAAU,IAAI,IAAI,CAAC,KAAK,KAAK,UAAU,CAAC,EAAE;AAChE,OAAM,OAAO;AACb,KAAA;AACA,KAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB;AAClC,QAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC5E,OAAM,OAAO;AACb,KAAA;;AAEA;AACA,KAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AACxE,OAAM,OAAO;AACb,KAAA;AACA;AACA,KAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AACxE,OAAM,OAAO;AACb,KAAA;AACA;KACI;OACE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO;AAClD,OAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAClE,OAAM,OAAO;AACb,KAAA;AACA;AACA,KAAI,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;AACnD,OAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AACtE,OAAM,OAAO;AACb,KAAA;AACA;AACA,KAAI,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;AACnD,OAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AACtE,OAAM,OAAO;AACb,KAAA;AACA,KAAI,OAAO;AACX,GAAA;AACA;;AAEA,CAAA,UAAc,GAAG;;AAEjB,CAAA,MAAM,YAAY,GAAGR,mBAAA;AACrB,CAAA,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,GAAGC,SAAA;AAC1B,CAAA,MAAM,GAAG,GAAGE,UAAA;AACZ,CAAA,MAAM,KAAK,GAAGC,YAAA;AACd,CAAA,MAAM,MAAM,GAAGC,eAAA;AACf,CAAA,MAAM,KAAK,GAAGE,YAAA;;;;;;;;;;;AC5Id,CAAA,MAAM,KAAK,GAAGP,YAAA;CACd,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,KAAK;AAC/C,GAAE,IAAI;AACN,KAAI,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO;GACpC,CAAG,CAAC,OAAO,EAAE,EAAE;AACf,KAAI,OAAO;AACX,GAAA;AACA,GAAE,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO;AAC3B,CAAA;AACA,CAAA,WAAc,GAAG;;;;;;;;;;;ACTjB,CAAA,MAAM,KAAK,GAAGA,YAAA;;AAEd;AACA,CAAA,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,OAAO;AACrC,GAAE,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;MACvB,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;;AAEnE,CAAA,eAAc,GAAG;;;;;;;;;;;ACPjB,CAAA,MAAM,MAAM,GAAGA,eAAA;AACf,CAAA,MAAM,KAAK,GAAGC,YAAA;;CAEd,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,KAAK;GAClD,IAAI,GAAG,GAAG;GACV,IAAI,KAAK,GAAG;GACZ,IAAI,QAAQ,GAAG;AACjB,GAAE,IAAI;AACN,KAAI,QAAQ,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO;GACvC,CAAG,CAAC,OAAO,EAAE,EAAE;AACf,KAAI,OAAO;AACX,GAAA;AACA,GAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;AAC1B,KAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AAC1B;AACA,OAAM,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;AAC3C;AACA,SAAQ,GAAG,GAAG;AACd,SAAQ,KAAK,GAAG,IAAI,MAAM,CAAC,GAAG,EAAE,OAAO;AACvC,OAAA;AACA,KAAA;GACA,CAAG;AACH,GAAE,OAAO;AACT,CAAA;AACA,CAAA,eAAc,GAAG;;;;;;;;;;;ACxBjB,CAAA,MAAM,MAAM,GAAGD,eAAA;AACf,CAAA,MAAM,KAAK,GAAGC,YAAA;CACd,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,KAAK;GAClD,IAAI,GAAG,GAAG;GACV,IAAI,KAAK,GAAG;GACZ,IAAI,QAAQ,GAAG;AACjB,GAAE,IAAI;AACN,KAAI,QAAQ,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO;GACvC,CAAG,CAAC,OAAO,EAAE,EAAE;AACf,KAAI,OAAO;AACX,GAAA;AACA,GAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;AAC1B,KAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AAC1B;AACA,OAAM,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AAC1C;AACA,SAAQ,GAAG,GAAG;AACd,SAAQ,KAAK,GAAG,IAAI,MAAM,CAAC,GAAG,EAAE,OAAO;AACvC,OAAA;AACA,KAAA;GACA,CAAG;AACH,GAAE,OAAO;AACT,CAAA;AACA,CAAA,eAAc,GAAG;;;;;;;;;;;ACvBjB,CAAA,MAAM,MAAM,GAAGD,eAAA;AACf,CAAA,MAAM,KAAK,GAAGC,YAAA;AACd,CAAA,MAAM,EAAE,GAAGE,SAAA;;AAEX,CAAA,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK;AACrC,GAAE,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,KAAK;;AAEhC,GAAE,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO;AACjC,GAAE,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAC1B,KAAI,OAAO;AACX,GAAA;;AAEA,GAAE,MAAM,GAAG,IAAI,MAAM,CAAC,SAAS;AAC/B,GAAE,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAC1B,KAAI,OAAO;AACX,GAAA;;AAEA,GAAE,MAAM,GAAG;AACX,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAC7C,KAAI,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;;KAE/B,IAAI,MAAM,GAAG;AACjB,KAAI,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,KAAK;AACxC;OACM,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO;OACpD,QAAQ,UAAU,CAAC,QAAQ;AACjC,SAAQ,KAAK,GAAG;WACN,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;aACnC,OAAO,CAAC,KAAK;AACzB,WAAA,CAAW,MAAM;AACjB,aAAY,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACrC,WAAA;AACA,WAAU,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,MAAM;AACtC;AACA,SAAQ,KAAK,EAAE;AACf,SAAQ,KAAK,IAAI;WACP,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE;AAC9C,aAAY,MAAM,GAAG;AACrB,WAAA;WACU;AACV,SAAQ,KAAK,GAAG;AAChB,SAAQ,KAAK,IAAI;AACjB;WACU;AACV;SACQ;WACE,MAAM,IAAI,KAAK,CAAC,CAAC,sBAAsB,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;AACxE;KACA,CAAK;AACL,KAAI,IAAI,MAAM,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE;AACnD,OAAM,MAAM,GAAG;AACf,KAAA;AACA,GAAA;;GAEE,IAAI,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACpC,KAAI,OAAO;AACX,GAAA;;AAEA,GAAE,OAAO;AACT,CAAA;AACA,CAAA,YAAc,GAAG;;;;;;;;;;;AC5DjB,CAAA,MAAM,KAAK,GAAGH,YAAA;AACd,CAAA,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK;AACvC,GAAE,IAAI;AACN;AACA;KACI,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,KAAK,IAAI;GAC9C,CAAG,CAAC,OAAO,EAAE,EAAE;AACf,KAAI,OAAO;AACX,GAAA;AACA,CAAA;AACA,CAAA,KAAc,GAAG;;;;;;;;;;;ACVjB,CAAA,MAAM,MAAM,GAAGA,eAAA;AACf,CAAA,MAAM,UAAU,GAAGC,iBAAA;CACnB,MAAM,EAAE,GAAG,EAAE,GAAG;AAChB,CAAA,MAAM,KAAK,GAAGE,YAAA;AACd,CAAA,MAAM,SAAS,GAAGC,gBAAA;AAClB,CAAA,MAAM,EAAE,GAAGC,SAAA;AACX,CAAA,MAAM,EAAE,GAAGE,SAAA;AACX,CAAA,MAAM,GAAG,GAAGC,UAAA;AACZ,CAAA,MAAM,GAAG,GAAGC,UAAA;;CAEZ,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,KAAK;AACnD,GAAE,OAAO,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO;AACvC,GAAE,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO;;GAEhC,IAAI,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE;AAC/B,GAAE,QAAQ,IAAI;AACd,KAAI,KAAK,GAAG;AACZ,OAAM,IAAI,GAAG;AACb,OAAM,KAAK,GAAG;AACd,OAAM,IAAI,GAAG;AACb,OAAM,IAAI,GAAG;AACb,OAAM,KAAK,GAAG;OACR;AACN,KAAI,KAAK,GAAG;AACZ,OAAM,IAAI,GAAG;AACb,OAAM,KAAK,GAAG;AACd,OAAM,IAAI,GAAG;AACb,OAAM,IAAI,GAAG;AACb,OAAM,KAAK,GAAG;OACR;KACF;AACJ,OAAM,MAAM,IAAI,SAAS,CAAC,uCAAuC;AACjE;;AAEA;GACE,IAAI,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE;AAC1C,KAAI,OAAO;AACX,GAAA;;AAEA;AACA;;AAEA,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAC7C,KAAI,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;;KAE/B,IAAI,IAAI,GAAG;KACX,IAAI,GAAG,GAAG;;AAEd,KAAI,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,KAAK;AACxC,OAAM,IAAI,UAAU,CAAC,MAAM,KAAK,GAAG,EAAE;AACrC,SAAQ,UAAU,GAAG,IAAI,UAAU,CAAC,SAAS;AAC7C,OAAA;OACM,IAAI,GAAG,IAAI,IAAI;OACf,GAAG,GAAG,GAAG,IAAI;AACnB,OAAM,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;AACzD,SAAQ,IAAI,GAAG;AACf,OAAA,CAAO,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;AAC/D,SAAQ,GAAG,GAAG;AACd,OAAA;KACA,CAAK;;AAEL;AACA;AACA,KAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;AAC3D,OAAM,OAAO;AACb,KAAA;;AAEA;AACA;KACI,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI;SACvC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE;AACpC,OAAM,OAAO;AACb,KAAA,CAAK,MAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE;AACpE,OAAM,OAAO;AACb,KAAA;AACA,GAAA;AACA,GAAE,OAAO;AACT,CAAA;;AAEA,CAAA,SAAc,GAAG;;;;;;;;;;;AC/EjB;AACA,CAAA,MAAM,OAAO,GAAGT,cAAA;AAChB,CAAA,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO;AAC7E,CAAA,KAAc,GAAG;;;;;;;;;;;ACHjB,CAAA,MAAM,OAAO,GAAGA,cAAA;AAChB;AACA,CAAA,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO;AAC7E,CAAA,KAAc,GAAG;;;;;;;;;;;ACHjB,CAAA,MAAM,KAAK,GAAGA,YAAA;CACd,MAAM,UAAU,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,KAAK;AACxC,GAAE,EAAE,GAAG,IAAI,KAAK,CAAC,EAAE,EAAE,OAAO;AAC5B,GAAE,EAAE,GAAG,IAAI,KAAK,CAAC,EAAE,EAAE,OAAO;AAC5B,GAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO;AAClC,CAAA;AACA,CAAA,YAAc,GAAG;;;;;;;;;;;ACNjB;AACA;AACA;AACA,CAAA,MAAM,SAAS,GAAGA,gBAAA;AAClB,CAAA,MAAM,OAAO,GAAGC,cAAA;AAChB,CAAA,QAAc,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,KAAK;GAC7C,MAAM,GAAG,GAAG;GACZ,IAAI,KAAK,GAAG;GACZ,IAAI,IAAI,GAAG;AACb,GAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC;AAC1D,GAAE,KAAK,MAAM,OAAO,IAAI,CAAC,EAAE;KACvB,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO;KAClD,IAAI,QAAQ,EAAE;AAClB,OAAM,IAAI,GAAG;OACP,IAAI,CAAC,KAAK,EAAE;AAClB,SAAQ,KAAK,GAAG;AAChB,OAAA;AACA,KAAA,CAAK,MAAM;OACL,IAAI,IAAI,EAAE;SACR,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC;AAC9B,OAAA;AACA,OAAM,IAAI,GAAG;AACb,OAAM,KAAK,GAAG;AACd,KAAA;AACA,GAAA;GACE,IAAI,KAAK,EAAE;KACT,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC;AAC1B,GAAA;;GAEE,MAAM,MAAM,GAAG;GACf,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,GAAG,EAAE;AAChC,KAAI,IAAI,GAAG,KAAK,GAAG,EAAE;AACrB,OAAM,MAAM,CAAC,IAAI,CAAC,GAAG;KACrB,CAAK,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACrC,OAAM,MAAM,CAAC,IAAI,CAAC,GAAG;AACrB,KAAA,CAAK,MAAM,IAAI,CAAC,GAAG,EAAE;OACf,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;KAC5B,CAAK,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;OACvB,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAC5B,KAAA,CAAK,MAAM;AACX,OAAM,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACnC,KAAA;AACA,GAAA;AACA,GAAE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM;AACvC,GAAE,MAAM,QAAQ,GAAG,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,GAAG,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK;GACzE,OAAO,UAAU,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,UAAU,GAAG;AAC5D,CAAA;;;;;;;;;;;AC9CA,CAAA,MAAM,KAAK,GAAGD,YAAA;AACd,CAAA,MAAM,UAAU,GAAGC,iBAAA;CACnB,MAAM,EAAE,GAAG,EAAE,GAAG;AAChB,CAAA,MAAM,SAAS,GAAGE,gBAAA;AAClB,CAAA,MAAM,OAAO,GAAGC,cAAA;;AAEhB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;CAEA,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,GAAG,EAAE,KAAK;AAC3C,GAAE,IAAI,GAAG,KAAK,GAAG,EAAE;AACnB,KAAI,OAAO;AACX,GAAA;;AAEA,GAAE,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,OAAO;AAC9B,GAAE,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,OAAO;GAC5B,IAAI,UAAU,GAAG;;GAEjB,KAAK,EAAE,KAAK,MAAM,SAAS,IAAI,GAAG,CAAC,GAAG,EAAE;AAC1C,KAAI,KAAK,MAAM,SAAS,IAAI,GAAG,CAAC,GAAG,EAAE;OAC/B,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO;AAC9D,OAAM,UAAU,GAAG,UAAU,IAAI,KAAK,KAAK;OACrC,IAAI,KAAK,EAAE;AACjB,SAAQ,SAAS;AACjB,OAAA;AACA,KAAA;AACA;AACA;AACA;AACA;KACI,IAAI,UAAU,EAAE;AACpB,OAAM,OAAO;AACb,KAAA;AACA,GAAA;AACA,GAAE,OAAO;AACT,CAAA;;AAEA,CAAA,MAAM,4BAA4B,GAAG,CAAC,IAAI,UAAU,CAAC,WAAW,CAAC;AACjE,CAAA,MAAM,cAAc,GAAG,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC;;CAEjD,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,KAAK;AAC5C,GAAE,IAAI,GAAG,KAAK,GAAG,EAAE;AACnB,KAAI,OAAO;AACX,GAAA;;AAEA,GAAE,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,EAAE;AACjD,KAAI,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,EAAE;AACnD,OAAM,OAAO;AACb,KAAA,CAAK,MAAM,IAAI,OAAO,CAAC,iBAAiB,EAAE;AAC1C,OAAM,GAAG,GAAG;AACZ,KAAA,CAAK,MAAM;AACX,OAAM,GAAG,GAAG;AACZ,KAAA;AACA,GAAA;;AAEA,GAAE,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,EAAE;AACjD,KAAI,IAAI,OAAO,CAAC,iBAAiB,EAAE;AACnC,OAAM,OAAO;AACb,KAAA,CAAK,MAAM;AACX,OAAM,GAAG,GAAG;AACZ,KAAA;AACA,GAAA;;AAEA,GAAE,MAAM,KAAK,GAAG,IAAI,GAAG;GACrB,IAAI,EAAE,EAAE;AACV,GAAE,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE;AACvB,KAAI,IAAI,CAAC,CAAC,QAAQ,KAAK,GAAG,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,EAAE;OAC7C,EAAE,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,EAAE,OAAO;AAClC,KAAA,CAAK,MAAM,IAAI,CAAC,CAAC,QAAQ,KAAK,GAAG,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,EAAE;OACpD,EAAE,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,OAAO;AACjC,KAAA,CAAK,MAAM;AACX,OAAM,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;AACxB,KAAA;AACA,GAAA;;AAEA,GAAE,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE;AACtB,KAAI,OAAO;AACX,GAAA;;AAEA,GAAE,IAAI;AACN,GAAE,IAAI,EAAE,IAAI,EAAE,EAAE;AAChB,KAAI,QAAQ,GAAG,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO;AACpD,KAAI,IAAI,QAAQ,GAAG,CAAC,EAAE;AACtB,OAAM,OAAO;AACb,KAAA,CAAK,MAAM,IAAI,QAAQ,KAAK,CAAC,KAAK,EAAE,CAAC,QAAQ,KAAK,IAAI,IAAI,EAAE,CAAC,QAAQ,KAAK,IAAI,CAAC,EAAE;AACjF,OAAM,OAAO;AACb,KAAA;AACA,GAAA;;AAEA;AACA,GAAE,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE;AAC1B,KAAI,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE;AACnD,OAAM,OAAO;AACb,KAAA;;AAEA,KAAI,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE;AACnD,OAAM,OAAO;AACb,KAAA;;AAEA,KAAI,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE;AACzB,OAAM,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE;AAC9C,SAAQ,OAAO;AACf,OAAA;AACA,KAAA;;AAEA,KAAI,OAAO;AACX,GAAA;;GAEE,IAAI,MAAM,EAAE;GACZ,IAAI,QAAQ,EAAE;AAChB;AACA;GACE,IAAI,YAAY,GAAG,EAAE;KACnB,CAAC,OAAO,CAAC,iBAAiB;KAC1B,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,GAAG;GAC5C,IAAI,YAAY,GAAG,EAAE;KACnB,CAAC,OAAO,CAAC,iBAAiB;KAC1B,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,GAAG;AAC9C;GACE,IAAI,YAAY,IAAI,YAAY,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;AAC1D,OAAM,EAAE,CAAC,QAAQ,KAAK,GAAG,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AAC/D,KAAI,YAAY,GAAG;AACnB,GAAA;;AAEA,GAAE,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE;AACvB,KAAI,QAAQ,GAAG,QAAQ,IAAI,CAAC,CAAC,QAAQ,KAAK,GAAG,IAAI,CAAC,CAAC,QAAQ,KAAK;AAChE,KAAI,QAAQ,GAAG,QAAQ,IAAI,CAAC,CAAC,QAAQ,KAAK,GAAG,IAAI,CAAC,CAAC,QAAQ,KAAK;KAC5D,IAAI,EAAE,EAAE;OACN,IAAI,YAAY,EAAE;AACxB,SAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM;aACjD,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK;aACrC,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK;aACrC,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK,EAAE;AACnD,WAAU,YAAY,GAAG;AACzB,SAAA;AACA,OAAA;AACA,OAAM,IAAI,CAAC,CAAC,QAAQ,KAAK,GAAG,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,EAAE;SAC7C,MAAM,GAAG,QAAQ,CAAC,EAAE,EAAE,CAAC,EAAE,OAAO;SAChC,IAAI,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,EAAE,EAAE;AAC3C,WAAU,OAAO;AACjB,SAAA;OACA,CAAO,MAAM,IAAI,EAAE,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE;AACpF,SAAQ,OAAO;AACf,OAAA;AACA,KAAA;KACI,IAAI,EAAE,EAAE;OACN,IAAI,YAAY,EAAE;AACxB,SAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM;aACjD,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK;aACrC,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK;aACrC,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK,EAAE;AACnD,WAAU,YAAY,GAAG;AACzB,SAAA;AACA,OAAA;AACA,OAAM,IAAI,CAAC,CAAC,QAAQ,KAAK,GAAG,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,EAAE;SAC7C,KAAK,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,OAAO;SAC9B,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,EAAE;AACzC,WAAU,OAAO;AACjB,SAAA;OACA,CAAO,MAAM,IAAI,EAAE,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE;AACpF,SAAQ,OAAO;AACf,OAAA;AACA,KAAA;AACA,KAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,KAAK,EAAE,IAAI,EAAE,CAAC,IAAI,QAAQ,KAAK,CAAC,EAAE;AACrD,OAAM,OAAO;AACb,KAAA;AACA,GAAA;;AAEA;AACA;AACA;GACE,IAAI,EAAE,IAAI,QAAQ,IAAI,CAAC,EAAE,IAAI,QAAQ,KAAK,CAAC,EAAE;AAC/C,KAAI,OAAO;AACX,GAAA;;GAEE,IAAI,EAAE,IAAI,QAAQ,IAAI,CAAC,EAAE,IAAI,QAAQ,KAAK,CAAC,EAAE;AAC/C,KAAI,OAAO;AACX,GAAA;;AAEA;AACA;AACA;AACA,GAAE,IAAI,YAAY,IAAI,YAAY,EAAE;AACpC,KAAI,OAAO;AACX,GAAA;;AAEA,GAAE,OAAO;AACT,CAAA;;AAEA;CACA,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,KAAK;GAClC,IAAI,CAAC,CAAC,EAAE;AACV,KAAI,OAAO;AACX,GAAA;AACA,GAAE,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO;AAClD,GAAE,OAAO,IAAI,GAAG,CAAC,GAAG;OACd,IAAI,GAAG,CAAC,GAAG;OACX,CAAC,CAAC,QAAQ,KAAK,GAAG,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,GAAG;OAC5C;AACN,CAAA;;AAEA;CACA,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,KAAK;GACjC,IAAI,CAAC,CAAC,EAAE;AACV,KAAI,OAAO;AACX,GAAA;AACA,GAAE,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO;AAClD,GAAE,OAAO,IAAI,GAAG,CAAC,GAAG;OACd,IAAI,GAAG,CAAC,GAAG;OACX,CAAC,CAAC,QAAQ,KAAK,GAAG,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,GAAG;OAC5C;AACN,CAAA;;AAEA,CAAA,QAAc,GAAG;;;;;;;;;;;ACtPjB;AACA,CAAA,MAAM,UAAU,GAAGJ,SAAA;AACnB,CAAA,MAAM,SAAS,GAAGC,gBAAA;AAClB,CAAA,MAAM,MAAM,GAAGE,eAAA;AACf,CAAA,MAAM,WAAW,GAAGC,kBAAA;AACpB,CAAA,MAAM,KAAK,GAAGC,YAAA;AACd,CAAA,MAAM,KAAK,GAAGE,cAAA;AACd,CAAA,MAAM,KAAK,GAAGC,YAAA;AACd,CAAA,MAAM,GAAG,GAAGC,UAAA;AACZ,CAAA,MAAM,IAAI,GAAGC,WAAA;AACb,CAAA,MAAM,KAAK,GAAGC,YAAA;AACd,CAAA,MAAM,KAAK,GAAGC,YAAA;AACd,CAAA,MAAM,KAAK,GAAGC,YAAA;AACd,CAAA,MAAM,UAAU,GAAGC,iBAAA;AACnB,CAAA,MAAM,OAAO,GAAGC,cAAA;AAChB,CAAA,MAAM,QAAQ,GAAGC,eAAA;AACjB,CAAA,MAAM,YAAY,GAAGC,mBAAA;AACrB,CAAA,MAAM,YAAY,GAAGC,mBAAA;AACrB,CAAA,MAAM,IAAI,GAAGC,WAAA;AACb,CAAA,MAAM,KAAK,GAAGC,YAAA;AACd,CAAA,MAAM,EAAE,GAAGC,SAAA;AACX,CAAA,MAAM,EAAE,GAAGC,SAAA;AACX,CAAA,MAAM,EAAE,GAAGC,SAAA;AACX,CAAA,MAAM,GAAG,GAAGC,UAAA;AACZ,CAAA,MAAM,GAAG,GAAGC,UAAA;AACZ,CAAA,MAAM,GAAG,GAAGC,UAAA;AACZ,CAAA,MAAM,GAAG,GAAGC,UAAA;AACZ,CAAA,MAAM,MAAM,GAAGC,aAAA;AACf,CAAA,MAAM,UAAU,GAAGC,iBAAA;AACnB,CAAA,MAAM,KAAK,GAAGC,YAAA;AACd,CAAA,MAAM,SAAS,GAAGC,gBAAA;AAClB,CAAA,MAAM,aAAa,GAAGC,oBAAA;AACtB,CAAA,MAAM,aAAa,GAAGC,oBAAA;AACtB,CAAA,MAAM,aAAa,GAAGC,oBAAA;AACtB,CAAA,MAAM,UAAU,GAAGC,iBAAA;AACnB,CAAA,MAAM,UAAU,GAAGC,YAAA;AACnB,CAAA,MAAM,OAAO,GAAGC,cAAA;AAChB,CAAA,MAAM,GAAG,GAAGC,UAAA;AACZ,CAAA,MAAM,GAAG,GAAGC,UAAA;AACZ,CAAA,MAAM,UAAU,GAAGC,iBAAA;AACnB,CAAA,MAAM,aAAa,GAAGC,eAAA;AACtB,CAAA,MAAM,MAAM,GAAGC,aAAA;AACf,CAAA,MAAc,GAAG;AACjB,GAAE,KAAK;AACP,GAAE,KAAK;AACP,GAAE,KAAK;AACP,GAAE,GAAG;AACL,GAAE,IAAI;AACN,GAAE,KAAK;AACP,GAAE,KAAK;AACP,GAAE,KAAK;AACP,GAAE,UAAU;AACZ,GAAE,OAAO;AACT,GAAE,QAAQ;AACV,GAAE,YAAY;AACd,GAAE,YAAY;AACd,GAAE,IAAI;AACN,GAAE,KAAK;AACP,GAAE,EAAE;AACJ,GAAE,EAAE;AACJ,GAAE,EAAE;AACJ,GAAE,GAAG;AACL,GAAE,GAAG;AACL,GAAE,GAAG;AACL,GAAE,GAAG;AACL,GAAE,MAAM;AACR,GAAE,UAAU;AACZ,GAAE,KAAK;AACP,GAAE,SAAS;AACX,GAAE,aAAa;AACf,GAAE,aAAa;AACf,GAAE,aAAa;AACf,GAAE,UAAU;AACZ,GAAE,UAAU;AACZ,GAAE,OAAO;AACT,GAAE,GAAG;AACL,GAAE,GAAG;AACL,GAAE,UAAU;AACZ,GAAE,aAAa;AACf,GAAE,MAAM;AACR,GAAE,MAAM;AACR,GAAE,EAAE,EAAE,UAAU,CAAC,EAAE;AACnB,GAAE,GAAG,EAAE,UAAU,CAAC,GAAG;AACrB,GAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AACtB,GAAE,mBAAmB,EAAE,SAAS,CAAC,mBAAmB;AACpD,GAAE,aAAa,EAAE,SAAS,CAAC,aAAa;AACxC,GAAE,kBAAkB,EAAE,WAAW,CAAC,kBAAkB;AACpD,GAAE,mBAAmB,EAAE,WAAW,CAAC,mBAAmB;AACtD;;;;;;;;","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44]} \ No newline at end of file +{"version":3,"file":"semver.mjs","names":[],"sources":["../../../node_modules/semver/internal/constants.js","../../../node_modules/semver/internal/debug.js","../../../node_modules/semver/internal/re.js","../../../node_modules/semver/internal/parse-options.js","../../../node_modules/semver/internal/identifiers.js","../../../node_modules/semver/classes/semver.js","../../../node_modules/semver/functions/parse.js","../../../node_modules/semver/functions/valid.js","../../../node_modules/semver/functions/clean.js","../../../node_modules/semver/functions/inc.js","../../../node_modules/semver/functions/diff.js","../../../node_modules/semver/functions/major.js","../../../node_modules/semver/functions/minor.js","../../../node_modules/semver/functions/patch.js","../../../node_modules/semver/functions/prerelease.js","../../../node_modules/semver/functions/compare.js","../../../node_modules/semver/functions/rcompare.js","../../../node_modules/semver/functions/compare-loose.js","../../../node_modules/semver/functions/compare-build.js","../../../node_modules/semver/functions/sort.js","../../../node_modules/semver/functions/rsort.js","../../../node_modules/semver/functions/gt.js","../../../node_modules/semver/functions/lt.js","../../../node_modules/semver/functions/eq.js","../../../node_modules/semver/functions/neq.js","../../../node_modules/semver/functions/gte.js","../../../node_modules/semver/functions/lte.js","../../../node_modules/semver/functions/cmp.js","../../../node_modules/semver/functions/coerce.js","../../../node_modules/semver/internal/lrucache.js","../../../node_modules/semver/classes/range.js","../../../node_modules/semver/classes/comparator.js","../../../node_modules/semver/functions/satisfies.js","../../../node_modules/semver/ranges/to-comparators.js","../../../node_modules/semver/ranges/max-satisfying.js","../../../node_modules/semver/ranges/min-satisfying.js","../../../node_modules/semver/ranges/min-version.js","../../../node_modules/semver/ranges/valid.js","../../../node_modules/semver/ranges/outside.js","../../../node_modules/semver/ranges/gtr.js","../../../node_modules/semver/ranges/ltr.js","../../../node_modules/semver/ranges/intersects.js","../../../node_modules/semver/ranges/simplify.js","../../../node_modules/semver/ranges/subset.js","../../../node_modules/semver/index.js"],"sourcesContent":["'use strict'\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n","'use strict'\n\nconst debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n","'use strict'\n\nconst {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst safeSrc = exports.safeSrc = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value\n .split(`${token}*`).join(`${token}{0,${max}}`)\n .split(`${token}+`).join(`${token}{1,${max}}`)\n }\n return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value)\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n safeSrc[index] = safe\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n// Non-numeric identifiers include numeric identifiers but can be longer.\n// Therefore non-numeric identifiers must go first.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCEPLAIN', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)\ncreateToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`)\ncreateToken('COERCEFULL', src[t.COERCEPLAIN] +\n `(?:${src[t.PRERELEASE]})?` +\n `(?:${src[t.BUILD]})?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\ncreateToken('COERCERTLFULL', src[t.COERCEFULL], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n","'use strict'\n\n// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n","'use strict'\n\nconst numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n if (typeof a === 'number' && typeof b === 'number') {\n return a === b ? 0 : a < b ? -1 : 1\n }\n\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n","'use strict'\n\nconst debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n if (this.major < other.major) {\n return -1\n }\n if (this.major > other.major) {\n return 1\n }\n if (this.minor < other.minor) {\n return -1\n }\n if (this.minor > other.minor) {\n return 1\n }\n if (this.patch < other.patch) {\n return -1\n }\n if (this.patch > other.patch) {\n return 1\n }\n return 0\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('build compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n if (release.startsWith('pre')) {\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n // Avoid an invalid semver results\n if (identifier) {\n const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE])\n if (!match || match[1] !== identifier) {\n throw new Error(`invalid identifier: ${identifier}`)\n }\n }\n }\n\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n case 'release':\n if (this.prerelease.length === 0) {\n throw new Error(`version ${this.raw} is not a prerelease`)\n }\n this.prerelease.length = 0\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version\n }\n try {\n return new SemVer(version, options)\n } catch (er) {\n if (!throwErrors) {\n return null\n }\n throw er\n }\n}\n\nmodule.exports = parse\n","'use strict'\n\nconst parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n","'use strict'\n\nconst parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n","'use strict'\n\nconst SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n","'use strict'\n\nconst parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n const v1 = parse(version1, null, true)\n const v2 = parse(version2, null, true)\n const comparison = v1.compare(v2)\n\n if (comparison === 0) {\n return null\n }\n\n const v1Higher = comparison > 0\n const highVersion = v1Higher ? v1 : v2\n const lowVersion = v1Higher ? v2 : v1\n const highHasPre = !!highVersion.prerelease.length\n const lowHasPre = !!lowVersion.prerelease.length\n\n if (lowHasPre && !highHasPre) {\n // Going from prerelease -> no prerelease requires some special casing\n\n // If the low version has only a major, then it will always be a major\n // Some examples:\n // 1.0.0-1 -> 1.0.0\n // 1.0.0-1 -> 1.1.1\n // 1.0.0-1 -> 2.0.0\n if (!lowVersion.patch && !lowVersion.minor) {\n return 'major'\n }\n\n // If the main part has no difference\n if (lowVersion.compareMain(highVersion) === 0) {\n if (lowVersion.minor && !lowVersion.patch) {\n return 'minor'\n }\n return 'patch'\n }\n }\n\n // add the `pre` prefix if we are going to a prerelease version\n const prefix = highHasPre ? 'pre' : ''\n\n if (v1.major !== v2.major) {\n return prefix + 'major'\n }\n\n if (v1.minor !== v2.minor) {\n return prefix + 'minor'\n }\n\n if (v1.patch !== v2.patch) {\n return prefix + 'patch'\n }\n\n // high and low are prereleases\n return 'prerelease'\n}\n\nmodule.exports = diff\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n","'use strict'\n\nconst parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","'use strict'\n\nconst compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n","'use strict'\n\nconst compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n","'use strict'\n\nconst compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n","'use strict'\n\nconst compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n","'use strict'\n\nconst compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n","'use strict'\n\nconst compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n","'use strict'\n\nconst compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n","'use strict'\n\nconst compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n","'use strict'\n\nconst compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n","'use strict'\n\nconst compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","'use strict'\n\nconst eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]\n let next\n while ((next = coerceRtlRegex.exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n coerceRtlRegex.lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n const major = match[2]\n const minor = match[3] || '0'\n const patch = match[4] || '0'\n const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ''\n const build = options.includePrerelease && match[6] ? `+${match[6]}` : ''\n\n return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options)\n}\nmodule.exports = coerce\n","'use strict'\n\nclass LRUCache {\n constructor () {\n this.max = 1000\n this.map = new Map()\n }\n\n get (key) {\n const value = this.map.get(key)\n if (value === undefined) {\n return undefined\n } else {\n // Remove the key from the map and add it to the end\n this.map.delete(key)\n this.map.set(key, value)\n return value\n }\n }\n\n delete (key) {\n return this.map.delete(key)\n }\n\n set (key, value) {\n const deleted = this.delete(key)\n\n if (!deleted && value !== undefined) {\n // If cache is full, delete the least recently used item\n if (this.map.size >= this.max) {\n const firstKey = this.map.keys().next().value\n this.delete(firstKey)\n }\n\n this.map.set(key, value)\n }\n\n return this\n }\n}\n\nmodule.exports = LRUCache\n","'use strict'\n\nconst SPACE_CHARACTERS = /\\s+/g\n\n// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.formatted = undefined\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range.trim().replace(SPACE_CHARACTERS, ' ')\n\n // First, split on ||\n this.set = this.raw\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.formatted = undefined\n }\n\n get range () {\n if (this.formatted === undefined) {\n this.formatted = ''\n for (let i = 0; i < this.set.length; i++) {\n if (i > 0) {\n this.formatted += '||'\n }\n const comps = this.set[i]\n for (let k = 0; k < comps.length; k++) {\n if (k > 0) {\n this.formatted += ' '\n }\n this.formatted += comps[k].toString().trim()\n }\n }\n }\n return this.formatted\n }\n\n format () {\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n debug('tilde trim', range)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n debug('caret trim', range)\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('../internal/lrucache')\nconst cache = new LRU()\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n safeRe: re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n comp = comp.replace(re[t.BUILD], '')\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceTilde(c, options))\n .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceCaret(c, options))\n .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp\n .split(/\\s+/)\n .map((c) => replaceXRange(c, options))\n .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp\n .trim()\n .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp\n .trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\n// TODO build?\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n","'use strict'\n\nconst ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n","'use strict'\n\nconst Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n","'use strict'\n\nconst Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n","'use strict'\n\nconst Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n","'use strict'\n\n// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n","'use strict'\n\nconst outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n","'use strict'\n\nconst Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n","'use strict'\n\n// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n","'use strict'\n\nconst Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If LT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = minimumVersionWithPreRelease\n } else {\n sub = minimumVersion\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = minimumVersion\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n","'use strict'\n\n// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n RELEASE_TYPES: constants.RELEASE_TYPES,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],"mappings":"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"} \ No newline at end of file diff --git a/dist/tools/libs/tools.mjs b/dist/tools/libs/tools.mjs index e1e254d3b..e421117f2 100644 --- a/dist/tools/libs/tools.mjs +++ b/dist/tools/libs/tools.mjs @@ -1,466 +1,396 @@ -import * as crypto from 'node:crypto'; -import * as fs from 'node:fs/promises'; -import * as os from 'node:os'; -import * as path from 'node:path'; -import { s as semverExports } from './semver.mjs'; +import { n as __toESM } from "../../rolldown-runtime.mjs"; +import { t as require_semver } from "./semver.mjs"; +import * as path from "node:path"; +import * as fs from "node:fs/promises"; +import * as crypto from "node:crypto"; +import * as os from "node:os"; +//#region src/tools/common/arguments-builder.ts +var ArgumentsBuilder = class { + args = []; + isWindows = os.platform() === "win32"; + /** + * Adds a simple argument without a key + * @param value The argument value + */ + addArgument(value) { + if (value) this.args.push(this.escapeArgument(value)); + return this; + } + /** + * Adds multiple arguments + * @param values The argument values + */ + addArguments(values) { + for (const value of values) this.addArgument(value); + return this; + } + /** + * Adds a flag argument (--flag) + * @param key The flag name + */ + addFlag(key) { + if (key) this.args.push(`--${key}`); + return this; + } + /** + * Adds a key-value argument (--key value) + * @param key The argument key + * @param value The argument value + */ + addKeyValue(key, value) { + if (key && value !== void 0 && value !== null) { + this.args.push(`--${key}`); + this.args.push(this.escapeArgument(value)); + } + return this; + } + /** + * Adds an equals-style argument (--key=value) + * @param key The argument key + * @param value The argument value + */ + addKeyValueEquals(key, value) { + if (key && value !== void 0 && value !== null) this.args.push(`--${key}=${this.escapeArgument(value)}`); + return this; + } + /** + * Adds a comma-separated list (--key value1,value2,value3) + * @param key The argument key + * @param values The list of values + */ + addCommaList(key, values) { + if (key && values && values.length > 0) { + const escapedValues = values.map((v) => this.escapeArgument(v)); + this.args.push(`--${key}`); + this.args.push(escapedValues.join(",")); + } + return this; + } + /** + * Escapes an argument value based on the current OS + * @param value The argument value to escape + * @returns The escaped argument value + */ + escapeArgument(value) { + if (!value) return value; + if (!this.needsEscaping(value)) return value; + if (this.isWindows) return `"${value.replace(/\\/g, "\\\\").replace(/"/g, "\\\"")}"`; + else return `'${value.replace(/'/g, "'\\''")}'`; + } + /** + * Determines if a value needs to be escaped + * @param value The value to check + * @returns True if the value needs escaping + */ + needsEscaping(value) { + const windowsNeedsEscaping = /[\s&|<>^(){}[\]"']/; + const unixNeedsEscaping = /[\s$\\`&|<>(){}[\]"']/; + if (this.isWindows) return windowsNeedsEscaping.test(value); + return unixNeedsEscaping.test(value); + } + /** + * Returns the built argument array + */ + build() { + return [...this.args]; + } + /** + * Parses an argument string into an array + * @param argString The argument string to parse + * @returns Array of parsed arguments + */ + static parseArgumentString(argString) { + const args = []; + let inQuotes = false; + let escaped = false; + let lastCharWasSpace = true; + let arg = ""; + const append = (c) => { + if (escaped && c !== "\"" && c !== "\\") arg += "\\"; + arg += c; + escaped = false; + }; + for (let i = 0; i < argString.length; i++) { + const c = argString.charAt(i); + if (c === " " && !inQuotes) { + if (!lastCharWasSpace) { + args.push(arg); + arg = ""; + } + lastCharWasSpace = true; + continue; + } else lastCharWasSpace = false; + if (c === "\"") { + if (!escaped) inQuotes = !inQuotes; + else append(c); + continue; + } + if (c === "\\" && escaped) { + arg += "\\"; + escaped = false; + continue; + } + if (c === "\\" && inQuotes) { + escaped = true; + continue; + } + append(c); + lastCharWasSpace = false; + } + if (!lastCharWasSpace) args.push(arg.trim()); + return args; + } +}; +//#endregion +//#region src/tools/common/dotnet-tool.ts +var import_semver = /* @__PURE__ */ __toESM(require_semver(), 1); +var DotnetTool = class DotnetTool { + static nugetRoot = "https://azuresearch-usnc.nuget.org/query"; + constructor(buildAgent) { + this.buildAgent = buildAgent; + } + disableTelemetry() { + this.buildAgent.info("Disable Telemetry"); + this.buildAgent.setVariable("DOTNET_CLI_TELEMETRY_OPTOUT", "true"); + this.buildAgent.setVariable("DOTNET_NOLOGO", "true"); + } + async install() { + const dotnetExePath = await this.buildAgent.which("dotnet", true); + this.buildAgent.debug(`whichPath: ${dotnetExePath}`); + await this.setDotnetRoot(); + const setupSettings = this.settingsProvider.getSetupSettings(); + let version = import_semver.clean(setupSettings.versionSpec) || setupSettings.versionSpec; + this.buildAgent.info("--------------------------"); + this.buildAgent.info(`Acquiring ${this.packageName} for version spec: ${version}`); + this.buildAgent.info("--------------------------"); + if (!this.isExplicitVersion(version)) { + version = await this.queryLatestMatch(this.packageName, version, setupSettings.includePrerelease); + if (!version) throw new Error(`Unable to find ${this.packageName} version '${version}'.`); + } + if (this.versionRange && !import_semver.satisfies(version, this.versionRange, { includePrerelease: setupSettings.includePrerelease })) throw new Error(`Version spec '${setupSettings.versionSpec}' resolved as '${version}' does not satisfy the range '${this.versionRange}'.See https://github.com/GitTools/actions/blob/main/docs/versions.md for more information.`); + let toolPath = null; + if (!setupSettings.preferLatestVersion) { + toolPath = await this.buildAgent.findLocalTool(this.packageName, version); + if (toolPath) { + this.buildAgent.info("--------------------------"); + this.buildAgent.info(`${this.packageName} version: ${version} found in local cache at ${toolPath}.`); + this.buildAgent.info("--------------------------"); + } + } + if (!toolPath) { + toolPath = await this.installTool(this.packageName, version, setupSettings.ignoreFailedSources, setupSettings.nugetConfigPath); + this.buildAgent.info("--------------------------"); + this.buildAgent.info(`${this.packageName} version: ${version} installed.`); + this.buildAgent.info("--------------------------"); + } + this.buildAgent.info(`Prepending ${toolPath} to PATH`); + this.buildAgent.addPath(toolPath); + const pathVariable = this.toolPathVariable; + this.buildAgent.info(`Set ${pathVariable} to ${toolPath}`); + this.buildAgent.setVariable(pathVariable, toolPath); + this.buildAgent.setSucceeded(`${this.toolName} installed successfully`, true); + return toolPath; + } + async execute(cmd, args) { + this.buildAgent.info(`Command: ${cmd} ${args.join(" ")}`); + return await this.buildAgent.exec(cmd, args); + } + async findToolExecutable(toolBasePath) { + const toolName = os.platform() === "win32" ? `${this.toolName}.exe` : this.toolName; + const toolPath = path.join(toolBasePath, toolName); + if (await this.buildAgent.fileExists(toolPath)) return toolPath; + const arch = os.arch(); + this.buildAgent.debug(`Current system architecture: ${arch}`); + const archPaths = []; + if (arch === "x64") archPaths.push(path.join(toolBasePath, "x64", toolName)); + else if (arch === "arm64") archPaths.push(path.join(toolBasePath, "arm64", toolName)); + if (os.platform() === "darwin" && arch === "arm64") archPaths.push(path.join(toolBasePath, "osx-arm64", toolName)); + else if (os.platform() === "darwin" && arch === "x64") archPaths.push(path.join(toolBasePath, "osx-x64", toolName)); + for (const archPath of archPaths) if (await this.buildAgent.fileExists(archPath)) { + this.buildAgent.debug(`Found tool in architecture-specific directory: ${archPath}`); + return archPath; + } + try { + const entries = await fs.readdir(toolBasePath, { withFileTypes: true }); + for (const entry of entries) if (entry.isDirectory()) { + const nestedPath = path.join(toolBasePath, entry.name, toolName); + if (await this.buildAgent.fileExists(nestedPath)) { + this.buildAgent.debug(`Found tool in subdirectory: ${entry.name}`); + return nestedPath; + } + } + } catch (error) { + if (error instanceof Error) this.buildAgent.debug(`Error reading subdirectories: ${error.message}`); + } + return null; + } + async setDotnetRoot() { + if (os.platform() !== "win32" && !this.buildAgent.getVariable("DOTNET_ROOT")) { + let dotnetPath = await this.buildAgent.which("dotnet", true); + if ((await fs.lstat(dotnetPath)).isSymbolicLink()) dotnetPath = await fs.readlink(dotnetPath) || dotnetPath; + const dotnetRoot = path.dirname(dotnetPath); + this.buildAgent.setVariable("DOTNET_ROOT", dotnetRoot); + } + } + async executeTool(args) { + const variablePath = this.buildAgent.getVariableAsPath(this.toolPathVariable); + let toolPath; + if (variablePath) { + const foundExecutable = await this.findToolExecutable(variablePath); + if (foundExecutable) { + toolPath = foundExecutable; + this.buildAgent.debug(`Found tool executable at: ${toolPath}`); + } else { + toolPath = path.join(variablePath, os.platform() === "win32" ? `${this.toolName}.exe` : this.toolName); + this.buildAgent.debug(`Defaulting to expected tool path: ${toolPath}`); + } + } + if (!toolPath) toolPath = await this.buildAgent.which(this.toolName, true); + args = ["--roll-forward Major", ...args]; + return await this.execute(toolPath, args); + } + async isValidInputFile(workDir, file) { + if (!file) { + this.buildAgent.debug("No file path supplied"); + return false; + } + if (path.isAbsolute(file)) { + this.buildAgent.debug("File path is absolute"); + return await this.buildAgent.fileExists(file); + } + const filePath = path.resolve(workDir, file); + this.buildAgent.debug(`Resolved file path: ${filePath}`); + return await this.buildAgent.fileExists(filePath); + } + async getRepoPath(targetPath) { + const srcDir = this.buildAgent.sourceDir || "."; + let workDir; + if (!targetPath) workDir = srcDir; + else { + if (!path.isAbsolute(targetPath)) targetPath = path.resolve(targetPath); + if (await this.buildAgent.directoryExists(targetPath)) workDir = targetPath; + else throw new Error(`Directory not found at ${targetPath}`); + } + return path.normalize(workDir); + } + async queryLatestMatch(toolName, versionSpec, includePrerelease) { + this.buildAgent.info(`Querying tool versions for ${toolName}${versionSpec ? `@${versionSpec}` : ""} ${includePrerelease ? "including pre-releases" : ""}`); + const toolNameParam = encodeURIComponent(toolName.toLowerCase()); + const prereleaseParam = includePrerelease ? "true" : "false"; + const downloadPath = `${DotnetTool.nugetRoot}?q=${toolNameParam}&prerelease=${prereleaseParam}&semVerLevel=2.0.0&take=1`; + const response = await fetch(downloadPath); + if (!response?.ok) { + this.buildAgent.info(`failed to query latest version for ${toolName} from ${downloadPath}. Status code: ${response ? response.status : "unknown"}`); + return null; + } + const { data } = await response.json(); + const versions = data[0].versions.map((x) => x.version); + if (!versions?.length) return null; + this.buildAgent.debug(`got versions: ${versions.join(", ")}`); + const version = import_semver.maxSatisfying(versions, versionSpec, { includePrerelease }); + if (version) this.buildAgent.info(`Found matching version: ${version}`); + else this.buildAgent.info("match not found"); + return version; + } + async installTool(toolName, version, ignoreFailedSources, nugetConfigPath) { + const semverVersion = import_semver.clean(version); + if (!semverVersion) throw new Error(`Invalid version spec: ${version}`); + const tempDirectory = await this.createTempDirectory(); + if (!tempDirectory) throw new Error("Unable to create temp directory"); + const builder = new ArgumentsBuilder().addArgument("tool").addArgument("install").addArgument(toolName).addKeyValue("tool-path", tempDirectory).addKeyValue("version", semverVersion); + if (ignoreFailedSources) builder.addFlag("ignore-failed-sources"); + if (nugetConfigPath) builder.addKeyValue("configfile", nugetConfigPath); + const result = await this.execute("dotnet", builder.build()); + const status = result.code === 0 ? "success" : "failure"; + const message = result.code === 0 ? result.stdout : result.stderr; + this.buildAgent.debug(`Tool install result: ${status} ${message}`); + if (result.code !== 0) throw new Error(message); + const toolPath = await this.buildAgent.cacheToolDirectory(tempDirectory, toolName, semverVersion); + this.buildAgent.debug(`Cached tool path: ${toolPath}`); + this.buildAgent.debug(`Cleaning up temp directory: ${tempDirectory}`); + await this.buildAgent.removeDirectory(tempDirectory); + return toolPath; + } + async createTempDirectory() { + const tempRootDir = this.buildAgent.tempDir; + if (!tempRootDir) throw new Error("Temp directory not set"); + const uuid = crypto.randomUUID(); + const tempPath = path.join(tempRootDir, uuid); + this.buildAgent.debug(`Creating temp directory ${tempPath}`); + await fs.mkdir(tempPath, { recursive: true }); + return tempPath; + } + isExplicitVersion(versionSpec) { + const cleanedVersionSpec = import_semver.clean(versionSpec); + const valid = import_semver.valid(cleanedVersionSpec) != null; + this.buildAgent.debug(`Is version explicit? ${valid}`); + return valid; + } +}; +//#endregion +//#region src/tools/common/settings.ts +var SettingsProvider = class { + constructor(buildAgent) { + this.buildAgent = buildAgent; + } + getSetupSettings() { + return { + versionSpec: this.buildAgent.getInput("versionSpec"), + includePrerelease: this.buildAgent.getBooleanInput("includePrerelease"), + ignoreFailedSources: this.buildAgent.getBooleanInput("ignoreFailedSources"), + preferLatestVersion: this.buildAgent.getBooleanInput("preferLatestVersion"), + nugetConfigPath: this.buildAgent.getInput("nugetConfigPath", false) + }; + } +}; +//#endregion +//#region src/tools/common/index.ts +var keysOf = Object.keys; +//#endregion +//#region src/tools/common/runner.ts +var RunnerBase = class { + constructor(buildAgent) { + this.buildAgent = buildAgent; + } + disableTelemetry() { + this.buildAgent.info(`Running on: '${this.buildAgent.agentName}'`); + this.buildAgent.debug("Disabling telemetry"); + this.tool.disableTelemetry(); + } + async safeExecute(action, successMessage) { + try { + this.disableTelemetry(); + const result = await action(); + if (result.stdout) { + this.buildAgent.info(`${this.tool.toolName} Output:`); + this.buildAgent.info("-------------------"); + this.buildAgent.info(result.stdout); + this.buildAgent.info("-------------------"); + } + if (result.code === 0) { + this.buildAgent.debug(`${this.tool.toolName} succeeded`); + this.buildAgent.setSucceeded(successMessage, true); + return result; + } else { + this.buildAgent.debug(`${this.tool.toolName} failed`); + this.buildAgent.error(result.stderr); + this.buildAgent.setFailed(result.stderr, true); + return result; + } + } catch (error) { + if (error instanceof Error) { + this.buildAgent.debug(`${this.tool.toolName} failed`); + this.buildAgent.error(error.message); + this.buildAgent.setFailed(error.message, true); + } + return { + code: -1, + error + }; + } + } +}; +//#endregion +export { ArgumentsBuilder as a, DotnetTool as i, keysOf as n, SettingsProvider as r, RunnerBase as t }; -class ArgumentsBuilder { - args = []; - isWindows = os.platform() === "win32"; - /** - * Adds a simple argument without a key - * @param value The argument value - */ - addArgument(value) { - if (value) { - this.args.push(this.escapeArgument(value)); - } - return this; - } - /** - * Adds multiple arguments - * @param values The argument values - */ - addArguments(values) { - for (const value of values) { - this.addArgument(value); - } - return this; - } - /** - * Adds a flag argument (--flag) - * @param key The flag name - */ - addFlag(key) { - if (key) { - this.args.push(`--${key}`); - } - return this; - } - /** - * Adds a key-value argument (--key value) - * @param key The argument key - * @param value The argument value - */ - addKeyValue(key, value) { - if (key && value !== void 0 && value !== null) { - this.args.push(`--${key}`); - this.args.push(this.escapeArgument(value)); - } - return this; - } - /** - * Adds an equals-style argument (--key=value) - * @param key The argument key - * @param value The argument value - */ - addKeyValueEquals(key, value) { - if (key && value !== void 0 && value !== null) { - this.args.push(`--${key}=${this.escapeArgument(value)}`); - } - return this; - } - /** - * Adds a comma-separated list (--key value1,value2,value3) - * @param key The argument key - * @param values The list of values - */ - addCommaList(key, values) { - if (key && values && values.length > 0) { - const escapedValues = values.map((v) => this.escapeArgument(v)); - this.args.push(`--${key}`); - this.args.push(escapedValues.join(",")); - } - return this; - } - /** - * Escapes an argument value based on the current OS - * @param value The argument value to escape - * @returns The escaped argument value - */ - escapeArgument(value) { - if (!value) return value; - if (!this.needsEscaping(value)) return value; - if (this.isWindows) { - return `"${value.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"`; - } else { - return `'${value.replace(/'/g, "'\\''")}'`; - } - } - /** - * Determines if a value needs to be escaped - * @param value The value to check - * @returns True if the value needs escaping - */ - needsEscaping(value) { - const windowsNeedsEscaping = /[\s&|<>^(){}[\]"']/; - const unixNeedsEscaping = /[\s$\\`&|<>(){}[\]"']/; - if (this.isWindows) { - return windowsNeedsEscaping.test(value); - } - return unixNeedsEscaping.test(value); - } - /** - * Returns the built argument array - */ - build() { - return [...this.args]; - } - /** - * Parses an argument string into an array - * @param argString The argument string to parse - * @returns Array of parsed arguments - */ - static parseArgumentString(argString) { - const args = []; - let inQuotes = false; - let escaped = false; - let lastCharWasSpace = true; - let arg = ""; - const append = (c) => { - if (escaped && c !== '"' && c !== "\\") { - arg += "\\"; - } - arg += c; - escaped = false; - }; - for (let i = 0; i < argString.length; i++) { - const c = argString.charAt(i); - if (c === " " && !inQuotes) { - if (!lastCharWasSpace) { - args.push(arg); - arg = ""; - } - lastCharWasSpace = true; - continue; - } else { - lastCharWasSpace = false; - } - if (c === '"') { - if (!escaped) { - inQuotes = !inQuotes; - } else { - append(c); - } - continue; - } - if (c === "\\" && escaped) { - arg += "\\"; - escaped = false; - continue; - } - if (c === "\\" && inQuotes) { - escaped = true; - continue; - } - append(c); - lastCharWasSpace = false; - } - if (!lastCharWasSpace) { - args.push(arg.trim()); - } - return args; - } -} - -class DotnetTool { - constructor(buildAgent) { - this.buildAgent = buildAgent; - } - static nugetRoot = "https://azuresearch-usnc.nuget.org/query"; - disableTelemetry() { - this.buildAgent.info("Disable Telemetry"); - this.buildAgent.setVariable("DOTNET_CLI_TELEMETRY_OPTOUT", "true"); - this.buildAgent.setVariable("DOTNET_NOLOGO", "true"); - } - async install() { - const dotnetExePath = await this.buildAgent.which("dotnet", true); - this.buildAgent.debug(`whichPath: ${dotnetExePath}`); - await this.setDotnetRoot(); - const setupSettings = this.settingsProvider.getSetupSettings(); - let version = semverExports.clean(setupSettings.versionSpec) || setupSettings.versionSpec; - this.buildAgent.info("--------------------------"); - this.buildAgent.info(`Acquiring ${this.packageName} for version spec: ${version}`); - this.buildAgent.info("--------------------------"); - if (!this.isExplicitVersion(version)) { - version = await this.queryLatestMatch(this.packageName, version, setupSettings.includePrerelease); - if (!version) { - throw new Error(`Unable to find ${this.packageName} version '${version}'.`); - } - } - if (this.versionRange && !semverExports.satisfies(version, this.versionRange, { includePrerelease: setupSettings.includePrerelease })) { - throw new Error( - `Version spec '${setupSettings.versionSpec}' resolved as '${version}' does not satisfy the range '${this.versionRange}'.See https://github.com/GitTools/actions/blob/main/docs/versions.md for more information.` - ); - } - let toolPath = null; - if (!setupSettings.preferLatestVersion) { - toolPath = await this.buildAgent.findLocalTool(this.packageName, version); - if (toolPath) { - this.buildAgent.info("--------------------------"); - this.buildAgent.info(`${this.packageName} version: ${version} found in local cache at ${toolPath}.`); - this.buildAgent.info("--------------------------"); - } - } - if (!toolPath) { - toolPath = await this.installTool(this.packageName, version, setupSettings.ignoreFailedSources, setupSettings.nugetConfigPath); - this.buildAgent.info("--------------------------"); - this.buildAgent.info(`${this.packageName} version: ${version} installed.`); - this.buildAgent.info("--------------------------"); - } - this.buildAgent.info(`Prepending ${toolPath} to PATH`); - this.buildAgent.addPath(toolPath); - const pathVariable = this.toolPathVariable; - this.buildAgent.info(`Set ${pathVariable} to ${toolPath}`); - this.buildAgent.setVariable(pathVariable, toolPath); - this.buildAgent.setSucceeded(`${this.toolName} installed successfully`, true); - return toolPath; - } - async execute(cmd, args) { - this.buildAgent.info(`Command: ${cmd} ${args.join(" ")}`); - return await this.buildAgent.exec(cmd, args); - } - async findToolExecutable(toolBasePath) { - const toolName = os.platform() === "win32" ? `${this.toolName}.exe` : this.toolName; - const toolPath = path.join(toolBasePath, toolName); - if (await this.buildAgent.fileExists(toolPath)) { - return toolPath; - } - const arch = os.arch(); - this.buildAgent.debug(`Current system architecture: ${arch}`); - const archPaths = []; - if (arch === "x64") { - archPaths.push(path.join(toolBasePath, "x64", toolName)); - } else if (arch === "arm64") { - archPaths.push(path.join(toolBasePath, "arm64", toolName)); - } - if (os.platform() === "darwin" && arch === "arm64") { - archPaths.push(path.join(toolBasePath, "osx-arm64", toolName)); - } else if (os.platform() === "darwin" && arch === "x64") { - archPaths.push(path.join(toolBasePath, "osx-x64", toolName)); - } - for (const archPath of archPaths) { - if (await this.buildAgent.fileExists(archPath)) { - this.buildAgent.debug(`Found tool in architecture-specific directory: ${archPath}`); - return archPath; - } - } - try { - const entries = await fs.readdir(toolBasePath, { withFileTypes: true }); - for (const entry of entries) { - if (entry.isDirectory()) { - const nestedPath = path.join(toolBasePath, entry.name, toolName); - if (await this.buildAgent.fileExists(nestedPath)) { - this.buildAgent.debug(`Found tool in subdirectory: ${entry.name}`); - return nestedPath; - } - } - } - } catch (error) { - if (error instanceof Error) { - this.buildAgent.debug(`Error reading subdirectories: ${error.message}`); - } - } - return null; - } - async setDotnetRoot() { - if (os.platform() !== "win32" && !this.buildAgent.getVariable("DOTNET_ROOT")) { - let dotnetPath = await this.buildAgent.which("dotnet", true); - const stats = await fs.lstat(dotnetPath); - if (stats.isSymbolicLink()) { - dotnetPath = await fs.readlink(dotnetPath) || dotnetPath; - } - const dotnetRoot = path.dirname(dotnetPath); - this.buildAgent.setVariable("DOTNET_ROOT", dotnetRoot); - } - } - async executeTool(args) { - const variablePath = this.buildAgent.getVariableAsPath(this.toolPathVariable); - let toolPath; - if (variablePath) { - const foundExecutable = await this.findToolExecutable(variablePath); - if (foundExecutable) { - toolPath = foundExecutable; - this.buildAgent.debug(`Found tool executable at: ${toolPath}`); - } else { - toolPath = path.join(variablePath, os.platform() === "win32" ? `${this.toolName}.exe` : this.toolName); - this.buildAgent.debug(`Defaulting to expected tool path: ${toolPath}`); - } - } - if (!toolPath) { - toolPath = await this.buildAgent.which(this.toolName, true); - } - args = ["--roll-forward Major", ...args]; - return await this.execute(toolPath, args); - } - async isValidInputFile(workDir, file) { - if (!file) { - this.buildAgent.debug("No file path supplied"); - return false; - } - if (path.isAbsolute(file)) { - this.buildAgent.debug("File path is absolute"); - return await this.buildAgent.fileExists(file); - } - const filePath = path.resolve(workDir, file); - this.buildAgent.debug(`Resolved file path: ${filePath}`); - return await this.buildAgent.fileExists(filePath); - } - async getRepoPath(targetPath) { - const srcDir = this.buildAgent.sourceDir || "."; - let workDir; - if (!targetPath) { - workDir = srcDir; - } else { - if (!path.isAbsolute(targetPath)) { - targetPath = path.resolve(targetPath); - } - if (await this.buildAgent.directoryExists(targetPath)) { - workDir = targetPath; - } else { - throw new Error(`Directory not found at ${targetPath}`); - } - } - return path.normalize(workDir); - } - async queryLatestMatch(toolName, versionSpec, includePrerelease) { - this.buildAgent.info( - `Querying tool versions for ${toolName}${versionSpec ? `@${versionSpec}` : ""} ${includePrerelease ? "including pre-releases" : ""}` - ); - const toolNameParam = encodeURIComponent(toolName.toLowerCase()); - const prereleaseParam = includePrerelease ? "true" : "false"; - const downloadPath = `${DotnetTool.nugetRoot}?q=${toolNameParam}&prerelease=${prereleaseParam}&semVerLevel=2.0.0&take=1`; - const response = await fetch(downloadPath); - if (!response?.ok) { - this.buildAgent.info(`failed to query latest version for ${toolName} from ${downloadPath}. Status code: ${response ? response.status : "unknown"}`); - return null; - } - const { data } = await response.json(); - const versions = data[0].versions.map((x) => x.version); - if (!versions?.length) { - return null; - } - this.buildAgent.debug(`got versions: ${versions.join(", ")}`); - const version = semverExports.maxSatisfying(versions, versionSpec, { includePrerelease }); - if (version) { - this.buildAgent.info(`Found matching version: ${version}`); - } else { - this.buildAgent.info("match not found"); - } - return version; - } - async installTool(toolName, version, ignoreFailedSources, nugetConfigPath) { - const semverVersion = semverExports.clean(version); - if (!semverVersion) { - throw new Error(`Invalid version spec: ${version}`); - } - const tempDirectory = await this.createTempDirectory(); - if (!tempDirectory) { - throw new Error("Unable to create temp directory"); - } - const builder = new ArgumentsBuilder().addArgument("tool").addArgument("install").addArgument(toolName).addKeyValue("tool-path", tempDirectory).addKeyValue("version", semverVersion); - if (ignoreFailedSources) { - builder.addFlag("ignore-failed-sources"); - } - if (nugetConfigPath) { - builder.addKeyValue("configfile", nugetConfigPath); - } - const result = await this.execute("dotnet", builder.build()); - const status = result.code === 0 ? "success" : "failure"; - const message = result.code === 0 ? result.stdout : result.stderr; - this.buildAgent.debug(`Tool install result: ${status} ${message}`); - if (result.code !== 0) { - throw new Error(message); - } - const toolPath = await this.buildAgent.cacheToolDirectory(tempDirectory, toolName, semverVersion); - this.buildAgent.debug(`Cached tool path: ${toolPath}`); - this.buildAgent.debug(`Cleaning up temp directory: ${tempDirectory}`); - await this.buildAgent.removeDirectory(tempDirectory); - return toolPath; - } - async createTempDirectory() { - const tempRootDir = this.buildAgent.tempDir; - if (!tempRootDir) { - throw new Error("Temp directory not set"); - } - const uuid = crypto.randomUUID(); - const tempPath = path.join(tempRootDir, uuid); - this.buildAgent.debug(`Creating temp directory ${tempPath}`); - await fs.mkdir(tempPath, { recursive: true }); - return tempPath; - } - isExplicitVersion(versionSpec) { - const cleanedVersionSpec = semverExports.clean(versionSpec); - const valid = semverExports.valid(cleanedVersionSpec) != null; - this.buildAgent.debug(`Is version explicit? ${valid}`); - return valid; - } -} - -class SettingsProvider { - constructor(buildAgent) { - this.buildAgent = buildAgent; - } - getSetupSettings() { - const versionSpec = this.buildAgent.getInput("versionSpec"); - const includePrerelease = this.buildAgent.getBooleanInput("includePrerelease"); - const ignoreFailedSources = this.buildAgent.getBooleanInput("ignoreFailedSources"); - const preferLatestVersion = this.buildAgent.getBooleanInput("preferLatestVersion"); - const nugetConfigPath = this.buildAgent.getInput("nugetConfigPath", false); - return { - versionSpec, - includePrerelease, - ignoreFailedSources, - preferLatestVersion, - nugetConfigPath - }; - } -} - -const keysOf = Object.keys; - -class RunnerBase { - constructor(buildAgent) { - this.buildAgent = buildAgent; - } - disableTelemetry() { - this.buildAgent.info(`Running on: '${this.buildAgent.agentName}'`); - this.buildAgent.debug("Disabling telemetry"); - this.tool.disableTelemetry(); - } - async safeExecute(action, successMessage) { - try { - this.disableTelemetry(); - const result = await action(); - if (result.stdout) { - this.buildAgent.info(`${this.tool.toolName} Output:`); - this.buildAgent.info("-------------------"); - this.buildAgent.info(result.stdout); - this.buildAgent.info("-------------------"); - } - if (result.code === 0) { - this.buildAgent.debug(`${this.tool.toolName} succeeded`); - this.buildAgent.setSucceeded(successMessage, true); - return result; - } else { - this.buildAgent.debug(`${this.tool.toolName} failed`); - this.buildAgent.error(result.stderr); - this.buildAgent.setFailed(result.stderr, true); - return result; - } - } catch (error) { - if (error instanceof Error) { - this.buildAgent.debug(`${this.tool.toolName} failed`); - this.buildAgent.error(error.message); - this.buildAgent.setFailed(error.message, true); - } - return { - code: -1, - error - }; - } - } -} - -export { ArgumentsBuilder as A, DotnetTool as D, RunnerBase as R, SettingsProvider as S, keysOf as k }; -//# sourceMappingURL=tools.mjs.map +//# sourceMappingURL=tools.mjs.map \ No newline at end of file diff --git a/dist/tools/libs/tools.mjs.map b/dist/tools/libs/tools.mjs.map index b30f34a67..c5c33f69f 100644 --- a/dist/tools/libs/tools.mjs.map +++ b/dist/tools/libs/tools.mjs.map @@ -1 +1 @@ -{"version":3,"file":"tools.mjs","sources":["../../../src/tools/common/arguments-builder.ts","../../../src/tools/common/dotnet-tool.ts","../../../src/tools/common/settings.ts","../../../src/tools/common/index.ts","../../../src/tools/common/runner.ts"],"sourcesContent":["import * as os from 'node:os'\n\nexport class ArgumentsBuilder {\n private readonly args: string[] = []\n private readonly isWindows: boolean = os.platform() === 'win32'\n\n /**\n * Adds a simple argument without a key\n * @param value The argument value\n */\n addArgument(value: string): this {\n if (value) {\n this.args.push(this.escapeArgument(value))\n }\n return this\n }\n\n /**\n * Adds multiple arguments\n * @param values The argument values\n */\n addArguments(values: string[]): this {\n for (const value of values) {\n this.addArgument(value)\n }\n return this\n }\n\n /**\n * Adds a flag argument (--flag)\n * @param key The flag name\n */\n addFlag(key: string): this {\n if (key) {\n this.args.push(`--${key}`)\n }\n return this\n }\n\n /**\n * Adds a key-value argument (--key value)\n * @param key The argument key\n * @param value The argument value\n */\n addKeyValue(key: string, value?: string | null): this {\n if (key && value !== undefined && value !== null) {\n this.args.push(`--${key}`)\n this.args.push(this.escapeArgument(value))\n }\n return this\n }\n\n /**\n * Adds an equals-style argument (--key=value)\n * @param key The argument key\n * @param value The argument value\n */\n addKeyValueEquals(key: string, value?: string | null): this {\n if (key && value !== undefined && value !== null) {\n this.args.push(`--${key}=${this.escapeArgument(value)}`)\n }\n return this\n }\n\n /**\n * Adds a comma-separated list (--key value1,value2,value3)\n * @param key The argument key\n * @param values The list of values\n */\n addCommaList(key: string, values?: string[]): this {\n if (key && values && values.length > 0) {\n const escapedValues = values.map(v => this.escapeArgument(v))\n this.args.push(`--${key}`)\n this.args.push(escapedValues.join(','))\n }\n return this\n }\n\n /**\n * Escapes an argument value based on the current OS\n * @param value The argument value to escape\n * @returns The escaped argument value\n */\n private escapeArgument(value: string): string {\n if (!value) return value\n\n // No need to escape if it doesn't contain spaces or special chars\n if (!this.needsEscaping(value)) return value\n\n if (this.isWindows) {\n // On Windows, wrap in double quotes and escape inner double quotes with backslash\n return `\"${value.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"')}\"`\n } else {\n // On Unix, wrap in single quotes and escape inner single quotes\n // Escaping single quotes in bash requires closing the quote, adding an escaped quote, and reopening\n return `'${value.replace(/'/g, \"'\\\\''\")}'`\n }\n }\n\n /**\n * Determines if a value needs to be escaped\n * @param value The value to check\n * @returns True if the value needs escaping\n */\n private needsEscaping(value: string): boolean {\n const windowsNeedsEscaping = /[\\s&|<>^(){}[\\]\"']/\n const unixNeedsEscaping = /[\\s$\\\\`&|<>(){}[\\]\"']/\n if (this.isWindows) {\n return windowsNeedsEscaping.test(value)\n }\n return unixNeedsEscaping.test(value)\n }\n\n /**\n * Returns the built argument array\n */\n build(): string[] {\n return [...this.args]\n }\n\n /**\n * Parses an argument string into an array\n * @param argString The argument string to parse\n * @returns Array of parsed arguments\n */\n static parseArgumentString(argString: string): string[] {\n const args: string[] = []\n\n let inQuotes = false\n let escaped = false\n let lastCharWasSpace = true\n let arg = ''\n\n const append = (c: string): void => {\n // Only add a backslash for escaped characters other than quotes or backslashes\n if (escaped && c !== '\"' && c !== '\\\\') {\n arg += '\\\\'\n }\n\n arg += c\n escaped = false\n }\n\n for (let i = 0; i < argString.length; i++) {\n const c = argString.charAt(i)\n\n if (c === ' ' && !inQuotes) {\n if (!lastCharWasSpace) {\n args.push(arg)\n arg = ''\n }\n lastCharWasSpace = true\n continue\n } else {\n lastCharWasSpace = false\n }\n\n if (c === '\"') {\n if (!escaped) {\n inQuotes = !inQuotes\n } else {\n append(c)\n }\n continue\n }\n\n if (c === '\\\\' && escaped) {\n // Double backslash becomes a single backslash\n arg += '\\\\'\n escaped = false\n continue\n }\n\n if (c === '\\\\' && inQuotes) {\n escaped = true\n continue\n }\n\n append(c)\n lastCharWasSpace = false\n }\n\n if (!lastCharWasSpace) {\n args.push(arg.trim())\n }\n\n return args\n }\n}\n","import * as crypto from 'node:crypto'\nimport * as fs from 'node:fs/promises'\nimport * as os from 'node:os'\nimport * as path from 'node:path'\n\nimport * as semver from 'semver'\nimport { type IBuildAgent, type ExecResult } from '@agents/common'\nimport { ISettingsProvider } from './settings'\nimport { NugetVersions } from './models'\nimport { ArgumentsBuilder } from './arguments-builder'\n\nexport interface IDotnetTool {\n toolName: string\n\n disableTelemetry(): void\n\n install(): Promise\n}\n\nexport abstract class DotnetTool implements IDotnetTool {\n private static readonly nugetRoot: string = 'https://azuresearch-usnc.nuget.org/query'\n\n constructor(protected buildAgent: IBuildAgent) {}\n\n abstract get packageName(): string\n\n abstract get toolName(): string\n\n abstract get toolPathVariable(): string\n\n abstract get versionRange(): string | null\n\n abstract get settingsProvider(): ISettingsProvider\n\n disableTelemetry(): void {\n this.buildAgent.info('Disable Telemetry')\n this.buildAgent.setVariable('DOTNET_CLI_TELEMETRY_OPTOUT', 'true')\n this.buildAgent.setVariable('DOTNET_NOLOGO', 'true')\n }\n\n async install(): Promise {\n const dotnetExePath = await this.buildAgent.which('dotnet', true)\n this.buildAgent.debug(`whichPath: ${dotnetExePath}`)\n await this.setDotnetRoot()\n\n const setupSettings = this.settingsProvider.getSetupSettings()\n\n let version: string | null = semver.clean(setupSettings.versionSpec) || setupSettings.versionSpec\n this.buildAgent.info('--------------------------')\n this.buildAgent.info(`Acquiring ${this.packageName} for version spec: ${version}`)\n this.buildAgent.info('--------------------------')\n\n if (!this.isExplicitVersion(version)) {\n version = await this.queryLatestMatch(this.packageName, version, setupSettings.includePrerelease)\n if (!version) {\n throw new Error(`Unable to find ${this.packageName} version '${version}'.`)\n }\n }\n\n if (this.versionRange && !semver.satisfies(version, this.versionRange, { includePrerelease: setupSettings.includePrerelease })) {\n throw new Error(\n `Version spec '${setupSettings.versionSpec}' resolved as '${version}' does not satisfy the range '${this.versionRange}'.` +\n 'See https://github.com/GitTools/actions/blob/main/docs/versions.md for more information.'\n )\n }\n\n let toolPath: string | null = null\n if (!setupSettings.preferLatestVersion) {\n // Let's try and resolve the version locally first\n toolPath = await this.buildAgent.findLocalTool(this.packageName, version)\n if (toolPath) {\n this.buildAgent.info('--------------------------')\n this.buildAgent.info(`${this.packageName} version: ${version} found in local cache at ${toolPath}.`)\n this.buildAgent.info('--------------------------')\n }\n }\n\n if (!toolPath) {\n // Download, extract, cache\n toolPath = await this.installTool(this.packageName, version, setupSettings.ignoreFailedSources, setupSettings.nugetConfigPath)\n this.buildAgent.info('--------------------------')\n this.buildAgent.info(`${this.packageName} version: ${version} installed.`)\n this.buildAgent.info('--------------------------')\n }\n\n // Prepend the tool's path. This prepends the PATH for the current process and\n // instructs the agent to prepend for each task that follows.\n this.buildAgent.info(`Prepending ${toolPath} to PATH`)\n this.buildAgent.addPath(toolPath)\n\n const pathVariable = this.toolPathVariable\n this.buildAgent.info(`Set ${pathVariable} to ${toolPath}`)\n this.buildAgent.setVariable(pathVariable, toolPath)\n this.buildAgent.setSucceeded(`${this.toolName} installed successfully`, true)\n\n return toolPath\n }\n\n protected async execute(cmd: string, args: string[]): Promise {\n this.buildAgent.info(`Command: ${cmd} ${args.join(' ')}`)\n return await this.buildAgent.exec(cmd, args)\n }\n\n protected async findToolExecutable(toolBasePath: string): Promise {\n const toolName = os.platform() === 'win32' ? `${this.toolName}.exe` : this.toolName\n\n // Check in the base path first\n const toolPath = path.join(toolBasePath, toolName)\n if (await this.buildAgent.fileExists(toolPath)) {\n return toolPath\n }\n\n // Get current system architecture\n const arch = os.arch()\n this.buildAgent.debug(`Current system architecture: ${arch}`)\n\n // Map node's architecture names to .NET's architecture folders\n const archPaths = []\n\n // Add primary architecture path based on current architecture\n if (arch === 'x64') {\n archPaths.push(path.join(toolBasePath, 'x64', toolName))\n } else if (arch === 'arm64') {\n archPaths.push(path.join(toolBasePath, 'arm64', toolName))\n }\n\n // Add platform-specific architecture paths\n if (os.platform() === 'darwin' && arch === 'arm64') {\n archPaths.push(path.join(toolBasePath, 'osx-arm64', toolName))\n } else if (os.platform() === 'darwin' && arch === 'x64') {\n archPaths.push(path.join(toolBasePath, 'osx-x64', toolName))\n }\n\n // Try each architecture-specific path\n for (const archPath of archPaths) {\n if (await this.buildAgent.fileExists(archPath)) {\n this.buildAgent.debug(`Found tool in architecture-specific directory: ${archPath}`)\n return archPath\n }\n }\n\n // Check in any other subdirectory as a fallback\n try {\n const entries = await fs.readdir(toolBasePath, { withFileTypes: true })\n for (const entry of entries) {\n if (entry.isDirectory()) {\n const nestedPath = path.join(toolBasePath, entry.name, toolName)\n if (await this.buildAgent.fileExists(nestedPath)) {\n this.buildAgent.debug(`Found tool in subdirectory: ${entry.name}`)\n return nestedPath\n }\n }\n }\n } catch (error) {\n if (error instanceof Error) {\n this.buildAgent.debug(`Error reading subdirectories: ${error.message}`)\n }\n }\n\n return null\n }\n\n protected async setDotnetRoot(): Promise {\n if (os.platform() !== 'win32' && !this.buildAgent.getVariable('DOTNET_ROOT')) {\n let dotnetPath = await this.buildAgent.which('dotnet', true)\n\n const stats = await fs.lstat(dotnetPath)\n if (stats.isSymbolicLink()) {\n dotnetPath = (await fs.readlink(dotnetPath)) || dotnetPath\n }\n const dotnetRoot = path.dirname(dotnetPath)\n this.buildAgent.setVariable('DOTNET_ROOT', dotnetRoot)\n }\n }\n\n protected async executeTool(args: string[]): Promise {\n // First, check if we have a path variable set\n const variablePath = this.buildAgent.getVariableAsPath(this.toolPathVariable)\n let toolPath: string | undefined\n\n if (variablePath) {\n // Try to find the executable in the path or its subdirectories\n const foundExecutable = await this.findToolExecutable(variablePath)\n if (foundExecutable) {\n toolPath = foundExecutable\n this.buildAgent.debug(`Found tool executable at: ${toolPath}`)\n } else {\n // Fallback to old behavior if executable not found\n toolPath = path.join(variablePath, os.platform() === 'win32' ? `${this.toolName}.exe` : this.toolName)\n this.buildAgent.debug(`Defaulting to expected tool path: ${toolPath}`)\n }\n }\n\n // If we still don't have a path, try to find it in PATH\n if (!toolPath) {\n toolPath = await this.buildAgent.which(this.toolName, true)\n }\n\n args = ['--roll-forward Major', ...args]\n return await this.execute(toolPath, args)\n }\n\n protected async isValidInputFile(workDir: string, file: string): Promise {\n if (!file) {\n this.buildAgent.debug('No file path supplied')\n return false\n }\n if (path.isAbsolute(file)) {\n this.buildAgent.debug('File path is absolute')\n return await this.buildAgent.fileExists(file)\n }\n const filePath = path.resolve(workDir, file)\n this.buildAgent.debug(`Resolved file path: ${filePath}`)\n return await this.buildAgent.fileExists(filePath)\n }\n\n protected async getRepoPath(targetPath: string): Promise {\n const srcDir = this.buildAgent.sourceDir || '.'\n let workDir: string\n if (!targetPath) {\n workDir = srcDir\n } else {\n if (!path.isAbsolute(targetPath)) {\n targetPath = path.resolve(targetPath)\n }\n if (await this.buildAgent.directoryExists(targetPath)) {\n workDir = targetPath\n } else {\n throw new Error(`Directory not found at ${targetPath}`)\n }\n }\n return path.normalize(workDir)\n }\n\n private async queryLatestMatch(toolName: string, versionSpec: string, includePrerelease: boolean): Promise {\n this.buildAgent.info(\n `Querying tool versions for ${toolName}${versionSpec ? `@${versionSpec}` : ''} ${includePrerelease ? 'including pre-releases' : ''}`\n )\n\n const toolNameParam = encodeURIComponent(toolName.toLowerCase())\n const prereleaseParam = includePrerelease ? 'true' : 'false'\n const downloadPath = `${DotnetTool.nugetRoot}?q=${toolNameParam}&prerelease=${prereleaseParam}&semVerLevel=2.0.0&take=1`\n\n const response = await fetch(downloadPath)\n\n if (!response?.ok) {\n this.buildAgent.info(`failed to query latest version for ${toolName} from ${downloadPath}. Status code: ${response ? response.status : 'unknown'}`)\n return null\n }\n\n const { data } = (await response.json()) as NugetVersions\n\n const versions = data[0].versions.map(x => x.version)\n if (!versions?.length) {\n return null\n }\n\n this.buildAgent.debug(`got versions: ${versions.join(', ')}`)\n\n const version = semver.maxSatisfying(versions, versionSpec, { includePrerelease })\n if (version) {\n this.buildAgent.info(`Found matching version: ${version}`)\n } else {\n this.buildAgent.info('match not found')\n }\n\n return version\n }\n\n private async installTool(toolName: string, version: string, ignoreFailedSources: boolean, nugetConfigPath?: string): Promise {\n const semverVersion = semver.clean(version)\n if (!semverVersion) {\n throw new Error(`Invalid version spec: ${version}`)\n }\n\n const tempDirectory = await this.createTempDirectory()\n\n if (!tempDirectory) {\n throw new Error('Unable to create temp directory')\n }\n\n const builder = new ArgumentsBuilder()\n .addArgument('tool')\n .addArgument('install')\n .addArgument(toolName)\n .addKeyValue('tool-path', tempDirectory)\n .addKeyValue('version', semverVersion)\n\n if (ignoreFailedSources) {\n builder.addFlag('ignore-failed-sources')\n }\n\n if (nugetConfigPath) {\n builder.addKeyValue('configfile', nugetConfigPath)\n }\n\n const result = await this.execute('dotnet', builder.build())\n const status = result.code === 0 ? 'success' : 'failure'\n const message = result.code === 0 ? result.stdout : result.stderr\n\n this.buildAgent.debug(`Tool install result: ${status} ${message}`)\n\n if (result.code !== 0) {\n throw new Error(message)\n }\n\n const toolPath = await this.buildAgent.cacheToolDirectory(tempDirectory, toolName, semverVersion)\n this.buildAgent.debug(`Cached tool path: ${toolPath}`)\n this.buildAgent.debug(`Cleaning up temp directory: ${tempDirectory}`)\n await this.buildAgent.removeDirectory(tempDirectory)\n\n return toolPath\n }\n\n async createTempDirectory(): Promise {\n const tempRootDir = this.buildAgent.tempDir\n if (!tempRootDir) {\n throw new Error('Temp directory not set')\n }\n\n const uuid = crypto.randomUUID()\n const tempPath = path.join(tempRootDir, uuid)\n this.buildAgent.debug(`Creating temp directory ${tempPath}`)\n await fs.mkdir(tempPath, { recursive: true })\n return tempPath\n }\n\n private isExplicitVersion(versionSpec: string): boolean {\n const cleanedVersionSpec = semver.clean(versionSpec)\n const valid = semver.valid(cleanedVersionSpec) != null\n this.buildAgent.debug(`Is version explicit? ${valid}`)\n\n return valid\n }\n}\n","import { type IBuildAgent } from '@agents/common'\nimport { type SetupSettings } from './models'\n\nexport interface ISettingsProvider {\n getSetupSettings(): SetupSettings\n}\n\nexport class SettingsProvider implements ISettingsProvider {\n constructor(protected buildAgent: IBuildAgent) {}\n\n getSetupSettings(): SetupSettings {\n const versionSpec = this.buildAgent.getInput('versionSpec')\n const includePrerelease = this.buildAgent.getBooleanInput('includePrerelease')\n const ignoreFailedSources = this.buildAgent.getBooleanInput('ignoreFailedSources')\n const preferLatestVersion = this.buildAgent.getBooleanInput('preferLatestVersion')\n const nugetConfigPath = this.buildAgent.getInput('nugetConfigPath', false)\n\n return {\n versionSpec,\n includePrerelease,\n ignoreFailedSources,\n preferLatestVersion,\n nugetConfigPath\n }\n }\n}\n","export * from './models'\nexport * from './dotnet-tool'\nexport * from './settings'\nexport * from './arguments-builder'\n\nexport const keysOf = Object.keys as (obj: T) => (keyof T)[]\n","import type { IRunner } from './models.ts'\nimport { ExecResult, IBuildAgent } from '@agents/common'\nimport { IDotnetTool } from './dotnet-tool.ts'\n\nexport abstract class RunnerBase implements IRunner {\n protected abstract tool: IDotnetTool\n\n abstract run(command: string): Promise\n\n protected constructor(protected readonly buildAgent: IBuildAgent) {}\n\n protected disableTelemetry(): void {\n this.buildAgent.info(`Running on: '${this.buildAgent.agentName}'`)\n this.buildAgent.debug('Disabling telemetry')\n this.tool.disableTelemetry()\n }\n\n protected async safeExecute(action: () => Promise, successMessage: string): Promise {\n try {\n this.disableTelemetry()\n const result = await action()\n\n if (result.stdout) {\n this.buildAgent.info(`${this.tool.toolName} Output:`)\n this.buildAgent.info('-------------------')\n this.buildAgent.info(result.stdout)\n this.buildAgent.info('-------------------')\n }\n if (result.code === 0) {\n this.buildAgent.debug(`${this.tool.toolName} succeeded`)\n this.buildAgent.setSucceeded(successMessage, true)\n return result\n } else {\n this.buildAgent.debug(`${this.tool.toolName} failed`)\n this.buildAgent.error(result.stderr as string)\n this.buildAgent.setFailed(result.stderr as string, true)\n return result\n }\n } catch (error) {\n if (error instanceof Error) {\n this.buildAgent.debug(`${this.tool.toolName} failed`)\n this.buildAgent.error(error.message)\n this.buildAgent.setFailed(error.message, true)\n }\n return {\n code: -1,\n error: error as Error\n }\n }\n }\n}\n"],"names":["semver.clean","semver.satisfies","semver.maxSatisfying","semver.valid"],"mappings":";;;;;;AAEO,MAAM,gBAAA,CAAiB;AAAA,EACT,OAAiB,EAAC;AAAA,EAClB,SAAA,GAAqB,EAAA,CAAG,QAAA,EAAS,KAAM,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMxD,YAAY,KAAA,EAAqB;AAC7B,IAAA,IAAI,KAAA,EAAO;AACP,MAAA,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,cAAA,CAAe,KAAK,CAAC,CAAA;AAAA,IAC7C;AACA,IAAA,OAAO,IAAA;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,aAAa,MAAA,EAAwB;AACjC,IAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AACxB,MAAA,IAAA,CAAK,YAAY,KAAK,CAAA;AAAA,IAC1B;AACA,IAAA,OAAO,IAAA;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,QAAQ,GAAA,EAAmB;AACvB,IAAA,IAAI,GAAA,EAAK;AACL,MAAA,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,CAAA,EAAA,EAAK,GAAG,CAAA,CAAE,CAAA;AAAA,IAC7B;AACA,IAAA,OAAO,IAAA;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,WAAA,CAAY,KAAa,KAAA,EAA6B;AAClD,IAAA,IAAI,GAAA,IAAO,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAA,EAAM;AAC9C,MAAA,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,CAAA,EAAA,EAAK,GAAG,CAAA,CAAE,CAAA;AACzB,MAAA,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,cAAA,CAAe,KAAK,CAAC,CAAA;AAAA,IAC7C;AACA,IAAA,OAAO,IAAA;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,iBAAA,CAAkB,KAAa,KAAA,EAA6B;AACxD,IAAA,IAAI,GAAA,IAAO,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAA,EAAM;AAC9C,MAAA,IAAA,CAAK,IAAA,CAAK,KAAK,CAAA,EAAA,EAAK,GAAG,IAAI,IAAA,CAAK,cAAA,CAAe,KAAK,CAAC,CAAA,CAAE,CAAA;AAAA,IAC3D;AACA,IAAA,OAAO,IAAA;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,YAAA,CAAa,KAAa,MAAA,EAAyB;AAC/C,IAAA,IAAI,GAAA,IAAO,MAAA,IAAU,MAAA,CAAO,MAAA,GAAS,CAAA,EAAG;AACpC,MAAA,MAAM,gBAAgB,MAAA,CAAO,GAAA,CAAI,OAAK,IAAA,CAAK,cAAA,CAAe,CAAC,CAAC,CAAA;AAC5D,MAAA,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,CAAA,EAAA,EAAK,GAAG,CAAA,CAAE,CAAA;AACzB,MAAA,IAAA,CAAK,IAAA,CAAK,IAAA,CAAK,aAAA,CAAc,IAAA,CAAK,GAAG,CAAC,CAAA;AAAA,IAC1C;AACA,IAAA,OAAO,IAAA;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,eAAe,KAAA,EAAuB;AAC1C,IAAA,IAAI,CAAC,OAAO,OAAO,KAAA;AAGnB,IAAA,IAAI,CAAC,IAAA,CAAK,aAAA,CAAc,KAAK,GAAG,OAAO,KAAA;AAEvC,IAAA,IAAI,KAAK,SAAA,EAAW;AAEhB,MAAA,OAAO,CAAA,CAAA,EAAI,MAAM,OAAA,CAAQ,KAAA,EAAO,MAAM,CAAA,CAAE,OAAA,CAAQ,IAAA,EAAM,KAAK,CAAC,CAAA,CAAA,CAAA;AAAA,IAChE,CAAA,MAAO;AAGH,MAAA,OAAO,CAAA,CAAA,EAAI,KAAA,CAAM,OAAA,CAAQ,IAAA,EAAM,OAAO,CAAC,CAAA,CAAA,CAAA;AAAA,IAC3C;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,cAAc,KAAA,EAAwB;AAC1C,IAAA,MAAM,oBAAA,GAAuB,oBAAA;AAC7B,IAAA,MAAM,iBAAA,GAAoB,uBAAA;AAC1B,IAAA,IAAI,KAAK,SAAA,EAAW;AAChB,MAAA,OAAO,oBAAA,CAAqB,KAAK,KAAK,CAAA;AAAA,IAC1C;AACA,IAAA,OAAO,iBAAA,CAAkB,KAAK,KAAK,CAAA;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA,EAKA,KAAA,GAAkB;AACd,IAAA,OAAO,CAAC,GAAG,IAAA,CAAK,IAAI,CAAA;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,oBAAoB,SAAA,EAA6B;AACpD,IAAA,MAAM,OAAiB,EAAC;AAExB,IAAA,IAAI,QAAA,GAAW,KAAA;AACf,IAAA,IAAI,OAAA,GAAU,KAAA;AACd,IAAA,IAAI,gBAAA,GAAmB,IAAA;AACvB,IAAA,IAAI,GAAA,GAAM,EAAA;AAEV,IAAA,MAAM,MAAA,GAAS,CAAC,CAAA,KAAoB;AAEhC,MAAA,IAAI,OAAA,IAAW,CAAA,KAAM,GAAA,IAAO,CAAA,KAAM,IAAA,EAAM;AACpC,QAAA,GAAA,IAAO,IAAA;AAAA,MACX;AAEA,MAAA,GAAA,IAAO,CAAA;AACP,MAAA,OAAA,GAAU,KAAA;AAAA,IACd,CAAA;AAEA,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,SAAA,CAAU,QAAQ,CAAA,EAAA,EAAK;AACvC,MAAA,MAAM,CAAA,GAAI,SAAA,CAAU,MAAA,CAAO,CAAC,CAAA;AAE5B,MAAA,IAAI,CAAA,KAAM,GAAA,IAAO,CAAC,QAAA,EAAU;AACxB,QAAA,IAAI,CAAC,gBAAA,EAAkB;AACnB,UAAA,IAAA,CAAK,KAAK,GAAG,CAAA;AACb,UAAA,GAAA,GAAM,EAAA;AAAA,QACV;AACA,QAAA,gBAAA,GAAmB,IAAA;AACnB,QAAA;AAAA,MACJ,CAAA,MAAO;AACH,QAAA,gBAAA,GAAmB,KAAA;AAAA,MACvB;AAEA,MAAA,IAAI,MAAM,GAAA,EAAK;AACX,QAAA,IAAI,CAAC,OAAA,EAAS;AACV,UAAA,QAAA,GAAW,CAAC,QAAA;AAAA,QAChB,CAAA,MAAO;AACH,UAAA,MAAA,CAAO,CAAC,CAAA;AAAA,QACZ;AACA,QAAA;AAAA,MACJ;AAEA,MAAA,IAAI,CAAA,KAAM,QAAQ,OAAA,EAAS;AAEvB,QAAA,GAAA,IAAO,IAAA;AACP,QAAA,OAAA,GAAU,KAAA;AACV,QAAA;AAAA,MACJ;AAEA,MAAA,IAAI,CAAA,KAAM,QAAQ,QAAA,EAAU;AACxB,QAAA,OAAA,GAAU,IAAA;AACV,QAAA;AAAA,MACJ;AAEA,MAAA,MAAA,CAAO,CAAC,CAAA;AACR,MAAA,gBAAA,GAAmB,KAAA;AAAA,IACvB;AAEA,IAAA,IAAI,CAAC,gBAAA,EAAkB;AACnB,MAAA,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,IAAA,EAAM,CAAA;AAAA,IACxB;AAEA,IAAA,OAAO,IAAA;AAAA,EACX;AACJ;;ACzKO,MAAe,UAAA,CAAkC;AAAA,EAGpD,YAAsB,UAAA,EAAyB;AAAzB,IAAA,IAAA,CAAA,UAAA,GAAA,UAAA;AAAA,EAA0B;AAAA,EAFhD,OAAwB,SAAA,GAAoB,0CAAA;AAAA,EAc5C,gBAAA,GAAyB;AACrB,IAAA,IAAA,CAAK,UAAA,CAAW,KAAK,mBAAmB,CAAA;AACxC,IAAA,IAAA,CAAK,UAAA,CAAW,WAAA,CAAY,6BAAA,EAA+B,MAAM,CAAA;AACjE,IAAA,IAAA,CAAK,UAAA,CAAW,WAAA,CAAY,eAAA,EAAiB,MAAM,CAAA;AAAA,EACvD;AAAA,EAEA,MAAM,OAAA,GAA2B;AAC7B,IAAA,MAAM,gBAAgB,MAAM,IAAA,CAAK,UAAA,CAAW,KAAA,CAAM,UAAU,IAAI,CAAA;AAChE,IAAA,IAAA,CAAK,UAAA,CAAW,KAAA,CAAM,CAAA,WAAA,EAAc,aAAa,CAAA,CAAE,CAAA;AACnD,IAAA,MAAM,KAAK,aAAA,EAAc;AAEzB,IAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,gBAAA,CAAiB,gBAAA,EAAiB;AAE7D,IAAA,IAAI,UAAyBA,mBAAO,CAAM,aAAA,CAAc,WAAW,KAAK,aAAA,CAAc,WAAA;AACtF,IAAA,IAAA,CAAK,UAAA,CAAW,KAAK,4BAA4B,CAAA;AACjD,IAAA,IAAA,CAAK,WAAW,IAAA,CAAK,CAAA,UAAA,EAAa,KAAK,WAAW,CAAA,mBAAA,EAAsB,OAAO,CAAA,CAAE,CAAA;AACjF,IAAA,IAAA,CAAK,UAAA,CAAW,KAAK,4BAA4B,CAAA;AAEjD,IAAA,IAAI,CAAC,IAAA,CAAK,iBAAA,CAAkB,OAAO,CAAA,EAAG;AAClC,MAAA,OAAA,GAAU,MAAM,IAAA,CAAK,gBAAA,CAAiB,KAAK,WAAA,EAAa,OAAA,EAAS,cAAc,iBAAiB,CAAA;AAChG,MAAA,IAAI,CAAC,OAAA,EAAS;AACV,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,eAAA,EAAkB,KAAK,WAAW,CAAA,UAAA,EAAa,OAAO,CAAA,EAAA,CAAI,CAAA;AAAA,MAC9E;AAAA,IACJ;AAEA,IAAA,IAAI,IAAA,CAAK,YAAA,IAAgB,CAACC,uBAAO,CAAU,OAAA,EAAS,IAAA,CAAK,YAAA,EAAc,EAAE,iBAAA,EAAmB,aAAA,CAAc,iBAAA,EAAmB,CAAA,EAAG;AAC5H,MAAA,MAAM,IAAI,KAAA;AAAA,QACN,iBAAiB,aAAA,CAAc,WAAW,kBAAkB,OAAO,CAAA,8BAAA,EAAiC,KAAK,YAAY,CAAA,0FAAA;AAAA,OAEzH;AAAA,IACJ;AAEA,IAAA,IAAI,QAAA,GAA0B,IAAA;AAC9B,IAAA,IAAI,CAAC,cAAc,mBAAA,EAAqB;AAEpC,MAAA,QAAA,GAAW,MAAM,IAAA,CAAK,UAAA,CAAW,aAAA,CAAc,IAAA,CAAK,aAAa,OAAO,CAAA;AACxE,MAAA,IAAI,QAAA,EAAU;AACV,QAAA,IAAA,CAAK,UAAA,CAAW,KAAK,4BAA4B,CAAA;AACjD,QAAA,IAAA,CAAK,UAAA,CAAW,KAAK,CAAA,EAAG,IAAA,CAAK,WAAW,CAAA,UAAA,EAAa,OAAO,CAAA,yBAAA,EAA4B,QAAQ,CAAA,CAAA,CAAG,CAAA;AACnG,QAAA,IAAA,CAAK,UAAA,CAAW,KAAK,4BAA4B,CAAA;AAAA,MACrD;AAAA,IACJ;AAEA,IAAA,IAAI,CAAC,QAAA,EAAU;AAEX,MAAA,QAAA,GAAW,MAAM,KAAK,WAAA,CAAY,IAAA,CAAK,aAAa,OAAA,EAAS,aAAA,CAAc,mBAAA,EAAqB,aAAA,CAAc,eAAe,CAAA;AAC7H,MAAA,IAAA,CAAK,UAAA,CAAW,KAAK,4BAA4B,CAAA;AACjD,MAAA,IAAA,CAAK,WAAW,IAAA,CAAK,CAAA,EAAG,KAAK,WAAW,CAAA,UAAA,EAAa,OAAO,CAAA,WAAA,CAAa,CAAA;AACzE,MAAA,IAAA,CAAK,UAAA,CAAW,KAAK,4BAA4B,CAAA;AAAA,IACrD;AAIA,IAAA,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,CAAA,WAAA,EAAc,QAAQ,CAAA,QAAA,CAAU,CAAA;AACrD,IAAA,IAAA,CAAK,UAAA,CAAW,QAAQ,QAAQ,CAAA;AAEhC,IAAA,MAAM,eAAe,IAAA,CAAK,gBAAA;AAC1B,IAAA,IAAA,CAAK,WAAW,IAAA,CAAK,CAAA,IAAA,EAAO,YAAY,CAAA,IAAA,EAAO,QAAQ,CAAA,CAAE,CAAA;AACzD,IAAA,IAAA,CAAK,UAAA,CAAW,WAAA,CAAY,YAAA,EAAc,QAAQ,CAAA;AAClD,IAAA,IAAA,CAAK,WAAW,YAAA,CAAa,CAAA,EAAG,IAAA,CAAK,QAAQ,2BAA2B,IAAI,CAAA;AAE5E,IAAA,OAAO,QAAA;AAAA,EACX;AAAA,EAEA,MAAgB,OAAA,CAAQ,GAAA,EAAa,IAAA,EAAqC;AACtE,IAAA,IAAA,CAAK,UAAA,CAAW,KAAK,CAAA,SAAA,EAAY,GAAG,IAAI,IAAA,CAAK,IAAA,CAAK,GAAG,CAAC,CAAA,CAAE,CAAA;AACxD,IAAA,OAAO,MAAM,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,KAAK,IAAI,CAAA;AAAA,EAC/C;AAAA,EAEA,MAAgB,mBAAmB,YAAA,EAA8C;AAC7E,IAAA,MAAM,QAAA,GAAW,GAAG,QAAA,EAAS,KAAM,UAAU,CAAA,EAAG,IAAA,CAAK,QAAQ,CAAA,IAAA,CAAA,GAAS,IAAA,CAAK,QAAA;AAG3E,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,IAAA,CAAK,YAAA,EAAc,QAAQ,CAAA;AACjD,IAAA,IAAI,MAAM,IAAA,CAAK,UAAA,CAAW,UAAA,CAAW,QAAQ,CAAA,EAAG;AAC5C,MAAA,OAAO,QAAA;AAAA,IACX;AAGA,IAAA,MAAM,IAAA,GAAO,GAAG,IAAA,EAAK;AACrB,IAAA,IAAA,CAAK,UAAA,CAAW,KAAA,CAAM,CAAA,6BAAA,EAAgC,IAAI,CAAA,CAAE,CAAA;AAG5D,IAAA,MAAM,YAAY,EAAC;AAGnB,IAAA,IAAI,SAAS,KAAA,EAAO;AAChB,MAAA,SAAA,CAAU,KAAK,IAAA,CAAK,IAAA,CAAK,YAAA,EAAc,KAAA,EAAO,QAAQ,CAAC,CAAA;AAAA,IAC3D,CAAA,MAAA,IAAW,SAAS,OAAA,EAAS;AACzB,MAAA,SAAA,CAAU,KAAK,IAAA,CAAK,IAAA,CAAK,YAAA,EAAc,OAAA,EAAS,QAAQ,CAAC,CAAA;AAAA,IAC7D;AAGA,IAAA,IAAI,EAAA,CAAG,QAAA,EAAS,KAAM,QAAA,IAAY,SAAS,OAAA,EAAS;AAChD,MAAA,SAAA,CAAU,KAAK,IAAA,CAAK,IAAA,CAAK,YAAA,EAAc,WAAA,EAAa,QAAQ,CAAC,CAAA;AAAA,IACjE,WAAW,EAAA,CAAG,QAAA,EAAS,KAAM,QAAA,IAAY,SAAS,KAAA,EAAO;AACrD,MAAA,SAAA,CAAU,KAAK,IAAA,CAAK,IAAA,CAAK,YAAA,EAAc,SAAA,EAAW,QAAQ,CAAC,CAAA;AAAA,IAC/D;AAGA,IAAA,KAAA,MAAW,YAAY,SAAA,EAAW;AAC9B,MAAA,IAAI,MAAM,IAAA,CAAK,UAAA,CAAW,UAAA,CAAW,QAAQ,CAAA,EAAG;AAC5C,QAAA,IAAA,CAAK,UAAA,CAAW,KAAA,CAAM,CAAA,+CAAA,EAAkD,QAAQ,CAAA,CAAE,CAAA;AAClF,QAAA,OAAO,QAAA;AAAA,MACX;AAAA,IACJ;AAGA,IAAA,IAAI;AACA,MAAA,MAAM,OAAA,GAAU,MAAM,EAAA,CAAG,OAAA,CAAQ,cAAc,EAAE,aAAA,EAAe,MAAM,CAAA;AACtE,MAAA,KAAA,MAAW,SAAS,OAAA,EAAS;AACzB,QAAA,IAAI,KAAA,CAAM,aAAY,EAAG;AACrB,UAAA,MAAM,aAAa,IAAA,CAAK,IAAA,CAAK,YAAA,EAAc,KAAA,CAAM,MAAM,QAAQ,CAAA;AAC/D,UAAA,IAAI,MAAM,IAAA,CAAK,UAAA,CAAW,UAAA,CAAW,UAAU,CAAA,EAAG;AAC9C,YAAA,IAAA,CAAK,UAAA,CAAW,KAAA,CAAM,CAAA,4BAAA,EAA+B,KAAA,CAAM,IAAI,CAAA,CAAE,CAAA;AACjE,YAAA,OAAO,UAAA;AAAA,UACX;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ,SAAS,KAAA,EAAO;AACZ,MAAA,IAAI,iBAAiB,KAAA,EAAO;AACxB,QAAA,IAAA,CAAK,UAAA,CAAW,KAAA,CAAM,CAAA,8BAAA,EAAiC,KAAA,CAAM,OAAO,CAAA,CAAE,CAAA;AAAA,MAC1E;AAAA,IACJ;AAEA,IAAA,OAAO,IAAA;AAAA,EACX;AAAA,EAEA,MAAgB,aAAA,GAA+B;AAC3C,IAAA,IAAI,EAAA,CAAG,UAAS,KAAM,OAAA,IAAW,CAAC,IAAA,CAAK,UAAA,CAAW,WAAA,CAAY,aAAa,CAAA,EAAG;AAC1E,MAAA,IAAI,aAAa,MAAM,IAAA,CAAK,UAAA,CAAW,KAAA,CAAM,UAAU,IAAI,CAAA;AAE3D,MAAA,MAAM,KAAA,GAAQ,MAAM,EAAA,CAAG,KAAA,CAAM,UAAU,CAAA;AACvC,MAAA,IAAI,KAAA,CAAM,gBAAe,EAAG;AACxB,QAAA,UAAA,GAAc,MAAM,EAAA,CAAG,QAAA,CAAS,UAAU,CAAA,IAAM,UAAA;AAAA,MACpD;AACA,MAAA,MAAM,UAAA,GAAa,IAAA,CAAK,OAAA,CAAQ,UAAU,CAAA;AAC1C,MAAA,IAAA,CAAK,UAAA,CAAW,WAAA,CAAY,aAAA,EAAe,UAAU,CAAA;AAAA,IACzD;AAAA,EACJ;AAAA,EAEA,MAAgB,YAAY,IAAA,EAAqC;AAE7D,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,UAAA,CAAW,iBAAA,CAAkB,KAAK,gBAAgB,CAAA;AAC5E,IAAA,IAAI,QAAA;AAEJ,IAAA,IAAI,YAAA,EAAc;AAEd,MAAA,MAAM,eAAA,GAAkB,MAAM,IAAA,CAAK,kBAAA,CAAmB,YAAY,CAAA;AAClE,MAAA,IAAI,eAAA,EAAiB;AACjB,QAAA,QAAA,GAAW,eAAA;AACX,QAAA,IAAA,CAAK,UAAA,CAAW,KAAA,CAAM,CAAA,0BAAA,EAA6B,QAAQ,CAAA,CAAE,CAAA;AAAA,MACjE,CAAA,MAAO;AAEH,QAAA,QAAA,GAAW,IAAA,CAAK,IAAA,CAAK,YAAA,EAAc,EAAA,CAAG,QAAA,EAAS,KAAM,OAAA,GAAU,CAAA,EAAG,IAAA,CAAK,QAAQ,CAAA,IAAA,CAAA,GAAS,IAAA,CAAK,QAAQ,CAAA;AACrG,QAAA,IAAA,CAAK,UAAA,CAAW,KAAA,CAAM,CAAA,kCAAA,EAAqC,QAAQ,CAAA,CAAE,CAAA;AAAA,MACzE;AAAA,IACJ;AAGA,IAAA,IAAI,CAAC,QAAA,EAAU;AACX,MAAA,QAAA,GAAW,MAAM,IAAA,CAAK,UAAA,CAAW,KAAA,CAAM,IAAA,CAAK,UAAU,IAAI,CAAA;AAAA,IAC9D;AAEA,IAAA,IAAA,GAAO,CAAC,sBAAA,EAAwB,GAAG,IAAI,CAAA;AACvC,IAAA,OAAO,MAAM,IAAA,CAAK,OAAA,CAAQ,QAAA,EAAU,IAAI,CAAA;AAAA,EAC5C;AAAA,EAEA,MAAgB,gBAAA,CAAiB,OAAA,EAAiB,IAAA,EAAgC;AAC9E,IAAA,IAAI,CAAC,IAAA,EAAM;AACP,MAAA,IAAA,CAAK,UAAA,CAAW,MAAM,uBAAuB,CAAA;AAC7C,MAAA,OAAO,KAAA;AAAA,IACX;AACA,IAAA,IAAI,IAAA,CAAK,UAAA,CAAW,IAAI,CAAA,EAAG;AACvB,MAAA,IAAA,CAAK,UAAA,CAAW,MAAM,uBAAuB,CAAA;AAC7C,MAAA,OAAO,MAAM,IAAA,CAAK,UAAA,CAAW,UAAA,CAAW,IAAI,CAAA;AAAA,IAChD;AACA,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,OAAA,CAAQ,OAAA,EAAS,IAAI,CAAA;AAC3C,IAAA,IAAA,CAAK,UAAA,CAAW,KAAA,CAAM,CAAA,oBAAA,EAAuB,QAAQ,CAAA,CAAE,CAAA;AACvD,IAAA,OAAO,MAAM,IAAA,CAAK,UAAA,CAAW,UAAA,CAAW,QAAQ,CAAA;AAAA,EACpD;AAAA,EAEA,MAAgB,YAAY,UAAA,EAAqC;AAC7D,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,UAAA,CAAW,SAAA,IAAa,GAAA;AAC5C,IAAA,IAAI,OAAA;AACJ,IAAA,IAAI,CAAC,UAAA,EAAY;AACb,MAAA,OAAA,GAAU,MAAA;AAAA,IACd,CAAA,MAAO;AACH,MAAA,IAAI,CAAC,IAAA,CAAK,UAAA,CAAW,UAAU,CAAA,EAAG;AAC9B,QAAA,UAAA,GAAa,IAAA,CAAK,QAAQ,UAAU,CAAA;AAAA,MACxC;AACA,MAAA,IAAI,MAAM,IAAA,CAAK,UAAA,CAAW,eAAA,CAAgB,UAAU,CAAA,EAAG;AACnD,QAAA,OAAA,GAAU,UAAA;AAAA,MACd,CAAA,MAAO;AACH,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,uBAAA,EAA0B,UAAU,CAAA,CAAE,CAAA;AAAA,MAC1D;AAAA,IACJ;AACA,IAAA,OAAO,IAAA,CAAK,UAAU,OAAO,CAAA;AAAA,EACjC;AAAA,EAEA,MAAc,gBAAA,CAAiB,QAAA,EAAkB,WAAA,EAAqB,iBAAA,EAAoD;AACtH,IAAA,IAAA,CAAK,UAAA,CAAW,IAAA;AAAA,MACZ,CAAA,2BAAA,EAA8B,QAAQ,CAAA,EAAG,WAAA,GAAc,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA,GAAK,EAAE,CAAA,CAAA,EAAI,iBAAA,GAAoB,wBAAA,GAA2B,EAAE,CAAA;AAAA,KACtI;AAEA,IAAA,MAAM,aAAA,GAAgB,kBAAA,CAAmB,QAAA,CAAS,WAAA,EAAa,CAAA;AAC/D,IAAA,MAAM,eAAA,GAAkB,oBAAoB,MAAA,GAAS,OAAA;AACrD,IAAA,MAAM,eAAe,CAAA,EAAG,UAAA,CAAW,SAAS,CAAA,GAAA,EAAM,aAAa,eAAe,eAAe,CAAA,yBAAA,CAAA;AAE7F,IAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,YAAY,CAAA;AAEzC,IAAA,IAAI,CAAC,UAAU,EAAA,EAAI;AACf,MAAA,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,CAAA,mCAAA,EAAsC,QAAQ,CAAA,MAAA,EAAS,YAAY,CAAA,eAAA,EAAkB,QAAA,GAAW,QAAA,CAAS,MAAA,GAAS,SAAS,CAAA,CAAE,CAAA;AAClJ,MAAA,OAAO,IAAA;AAAA,IACX;AAEA,IAAA,MAAM,EAAE,IAAA,EAAK,GAAK,MAAM,SAAS,IAAA,EAAK;AAEtC,IAAA,MAAM,QAAA,GAAW,KAAK,CAAC,CAAA,CAAE,SAAS,GAAA,CAAI,CAAA,CAAA,KAAK,EAAE,OAAO,CAAA;AACpD,IAAA,IAAI,CAAC,UAAU,MAAA,EAAQ;AACnB,MAAA,OAAO,IAAA;AAAA,IACX;AAEA,IAAA,IAAA,CAAK,WAAW,KAAA,CAAM,CAAA,cAAA,EAAiB,SAAS,IAAA,CAAK,IAAI,CAAC,CAAA,CAAE,CAAA;AAE5D,IAAA,MAAM,UAAUC,2BAAO,CAAc,UAAU,WAAA,EAAa,EAAE,mBAAmB,CAAA;AACjF,IAAA,IAAI,OAAA,EAAS;AACT,MAAA,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,CAAA,wBAAA,EAA2B,OAAO,CAAA,CAAE,CAAA;AAAA,IAC7D,CAAA,MAAO;AACH,MAAA,IAAA,CAAK,UAAA,CAAW,KAAK,iBAAiB,CAAA;AAAA,IAC1C;AAEA,IAAA,OAAO,OAAA;AAAA,EACX;AAAA,EAEA,MAAc,WAAA,CAAY,QAAA,EAAkB,OAAA,EAAiB,qBAA8B,eAAA,EAA2C;AAClI,IAAA,MAAM,aAAA,GAAgBF,mBAAO,CAAM,OAAO,CAAA;AAC1C,IAAA,IAAI,CAAC,aAAA,EAAe;AAChB,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,sBAAA,EAAyB,OAAO,CAAA,CAAE,CAAA;AAAA,IACtD;AAEA,IAAA,MAAM,aAAA,GAAgB,MAAM,IAAA,CAAK,mBAAA,EAAoB;AAErD,IAAA,IAAI,CAAC,aAAA,EAAe;AAChB,MAAA,MAAM,IAAI,MAAM,iCAAiC,CAAA;AAAA,IACrD;AAEA,IAAA,MAAM,UAAU,IAAI,gBAAA,GACf,WAAA,CAAY,MAAM,EAClB,WAAA,CAAY,SAAS,EACrB,WAAA,CAAY,QAAQ,EACpB,WAAA,CAAY,WAAA,EAAa,aAAa,CAAA,CACtC,WAAA,CAAY,WAAW,aAAa,CAAA;AAEzC,IAAA,IAAI,mBAAA,EAAqB;AACrB,MAAA,OAAA,CAAQ,QAAQ,uBAAuB,CAAA;AAAA,IAC3C;AAEA,IAAA,IAAI,eAAA,EAAiB;AACjB,MAAA,OAAA,CAAQ,WAAA,CAAY,cAAc,eAAe,CAAA;AAAA,IACrD;AAEA,IAAA,MAAM,SAAS,MAAM,IAAA,CAAK,QAAQ,QAAA,EAAU,OAAA,CAAQ,OAAO,CAAA;AAC3D,IAAA,MAAM,MAAA,GAAS,MAAA,CAAO,IAAA,KAAS,CAAA,GAAI,SAAA,GAAY,SAAA;AAC/C,IAAA,MAAM,UAAU,MAAA,CAAO,IAAA,KAAS,CAAA,GAAI,MAAA,CAAO,SAAS,MAAA,CAAO,MAAA;AAE3D,IAAA,IAAA,CAAK,WAAW,KAAA,CAAM,CAAA,qBAAA,EAAwB,MAAM,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE,CAAA;AAEjE,IAAA,IAAI,MAAA,CAAO,SAAS,CAAA,EAAG;AACnB,MAAA,MAAM,IAAI,MAAM,OAAO,CAAA;AAAA,IAC3B;AAEA,IAAA,MAAM,WAAW,MAAM,IAAA,CAAK,WAAW,kBAAA,CAAmB,aAAA,EAAe,UAAU,aAAa,CAAA;AAChG,IAAA,IAAA,CAAK,UAAA,CAAW,KAAA,CAAM,CAAA,kBAAA,EAAqB,QAAQ,CAAA,CAAE,CAAA;AACrD,IAAA,IAAA,CAAK,UAAA,CAAW,KAAA,CAAM,CAAA,4BAAA,EAA+B,aAAa,CAAA,CAAE,CAAA;AACpE,IAAA,MAAM,IAAA,CAAK,UAAA,CAAW,eAAA,CAAgB,aAAa,CAAA;AAEnD,IAAA,OAAO,QAAA;AAAA,EACX;AAAA,EAEA,MAAM,mBAAA,GAAuC;AACzC,IAAA,MAAM,WAAA,GAAc,KAAK,UAAA,CAAW,OAAA;AACpC,IAAA,IAAI,CAAC,WAAA,EAAa;AACd,MAAA,MAAM,IAAI,MAAM,wBAAwB,CAAA;AAAA,IAC5C;AAEA,IAAA,MAAM,IAAA,GAAO,OAAO,UAAA,EAAW;AAC/B,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,IAAA,CAAK,WAAA,EAAa,IAAI,CAAA;AAC5C,IAAA,IAAA,CAAK,UAAA,CAAW,KAAA,CAAM,CAAA,wBAAA,EAA2B,QAAQ,CAAA,CAAE,CAAA;AAC3D,IAAA,MAAM,GAAG,KAAA,CAAM,QAAA,EAAU,EAAE,SAAA,EAAW,MAAM,CAAA;AAC5C,IAAA,OAAO,QAAA;AAAA,EACX;AAAA,EAEQ,kBAAkB,WAAA,EAA8B;AACpD,IAAA,MAAM,kBAAA,GAAqBA,mBAAO,CAAM,WAAW,CAAA;AACnD,IAAA,MAAM,KAAA,GAAQG,mBAAO,CAAM,kBAAkB,CAAA,IAAK,IAAA;AAClD,IAAA,IAAA,CAAK,UAAA,CAAW,KAAA,CAAM,CAAA,qBAAA,EAAwB,KAAK,CAAA,CAAE,CAAA;AAErD,IAAA,OAAO,KAAA;AAAA,EACX;AACJ;;ACvUO,MAAM,gBAAA,CAA8C;AAAA,EACvD,YAAsB,UAAA,EAAyB;AAAzB,IAAA,IAAA,CAAA,UAAA,GAAA,UAAA;AAAA,EAA0B;AAAA,EAEhD,gBAAA,GAAkC;AAC9B,IAAA,MAAM,WAAA,GAAc,IAAA,CAAK,UAAA,CAAW,QAAA,CAAwB,aAAa,CAAA;AACzE,IAAA,MAAM,iBAAA,GAAoB,IAAA,CAAK,UAAA,CAAW,eAAA,CAA+B,mBAAmB,CAAA;AAC5F,IAAA,MAAM,mBAAA,GAAsB,IAAA,CAAK,UAAA,CAAW,eAAA,CAA+B,qBAAqB,CAAA;AAChG,IAAA,MAAM,mBAAA,GAAsB,IAAA,CAAK,UAAA,CAAW,eAAA,CAA+B,qBAAqB,CAAA;AAChG,IAAA,MAAM,eAAA,GAAkB,IAAA,CAAK,UAAA,CAAW,QAAA,CAAwB,mBAAmB,KAAK,CAAA;AAExF,IAAA,OAAO;AAAA,MACH,WAAA;AAAA,MACA,iBAAA;AAAA,MACA,mBAAA;AAAA,MACA,mBAAA;AAAA,MACA;AAAA,KACJ;AAAA,EACJ;AACJ;;ACpBO,MAAM,SAAS,MAAA,CAAO;;ACDtB,MAAe,UAAA,CAA8B;AAAA,EAKtC,YAA+B,UAAA,EAAyB;AAAzB,IAAA,IAAA,CAAA,UAAA,GAAA,UAAA;AAAA,EAA0B;AAAA,EAEzD,gBAAA,GAAyB;AAC/B,IAAA,IAAA,CAAK,WAAW,IAAA,CAAK,CAAA,aAAA,EAAgB,IAAA,CAAK,UAAA,CAAW,SAAS,CAAA,CAAA,CAAG,CAAA;AACjE,IAAA,IAAA,CAAK,UAAA,CAAW,MAAM,qBAAqB,CAAA;AAC3C,IAAA,IAAA,CAAK,KAAK,gBAAA,EAAiB;AAAA,EAC/B;AAAA,EAEA,MAAgB,WAAA,CAAY,MAAA,EAAmC,cAAA,EAA6C;AACxG,IAAA,IAAI;AACA,MAAA,IAAA,CAAK,gBAAA,EAAiB;AACtB,MAAA,MAAM,MAAA,GAAS,MAAM,MAAA,EAAO;AAE5B,MAAA,IAAI,OAAO,MAAA,EAAQ;AACf,QAAA,IAAA,CAAK,WAAW,IAAA,CAAK,CAAA,EAAG,IAAA,CAAK,IAAA,CAAK,QAAQ,CAAA,QAAA,CAAU,CAAA;AACpD,QAAA,IAAA,CAAK,UAAA,CAAW,KAAK,qBAAqB,CAAA;AAC1C,QAAA,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,MAAA,CAAO,MAAM,CAAA;AAClC,QAAA,IAAA,CAAK,UAAA,CAAW,KAAK,qBAAqB,CAAA;AAAA,MAC9C;AACA,MAAA,IAAI,MAAA,CAAO,SAAS,CAAA,EAAG;AACnB,QAAA,IAAA,CAAK,WAAW,KAAA,CAAM,CAAA,EAAG,IAAA,CAAK,IAAA,CAAK,QAAQ,CAAA,UAAA,CAAY,CAAA;AACvD,QAAA,IAAA,CAAK,UAAA,CAAW,YAAA,CAAa,cAAA,EAAgB,IAAI,CAAA;AACjD,QAAA,OAAO,MAAA;AAAA,MACX,CAAA,MAAO;AACH,QAAA,IAAA,CAAK,WAAW,KAAA,CAAM,CAAA,EAAG,IAAA,CAAK,IAAA,CAAK,QAAQ,CAAA,OAAA,CAAS,CAAA;AACpD,QAAA,IAAA,CAAK,UAAA,CAAW,KAAA,CAAM,MAAA,CAAO,MAAgB,CAAA;AAC7C,QAAA,IAAA,CAAK,UAAA,CAAW,SAAA,CAAU,MAAA,CAAO,MAAA,EAAkB,IAAI,CAAA;AACvD,QAAA,OAAO,MAAA;AAAA,MACX;AAAA,IACJ,SAAS,KAAA,EAAO;AACZ,MAAA,IAAI,iBAAiB,KAAA,EAAO;AACxB,QAAA,IAAA,CAAK,WAAW,KAAA,CAAM,CAAA,EAAG,IAAA,CAAK,IAAA,CAAK,QAAQ,CAAA,OAAA,CAAS,CAAA;AACpD,QAAA,IAAA,CAAK,UAAA,CAAW,KAAA,CAAM,KAAA,CAAM,OAAO,CAAA;AACnC,QAAA,IAAA,CAAK,UAAA,CAAW,SAAA,CAAU,KAAA,CAAM,OAAA,EAAS,IAAI,CAAA;AAAA,MACjD;AACA,MAAA,OAAO;AAAA,QACH,IAAA,EAAM,EAAA;AAAA,QACN;AAAA,OACJ;AAAA,IACJ;AAAA,EACJ;AACJ;;;;"} \ No newline at end of file +{"version":3,"file":"tools.mjs","names":[],"sources":["../../../src/tools/common/arguments-builder.ts","../../../src/tools/common/dotnet-tool.ts","../../../src/tools/common/settings.ts","../../../src/tools/common/index.ts","../../../src/tools/common/runner.ts"],"sourcesContent":["import * as os from 'node:os'\n\nexport class ArgumentsBuilder {\n private readonly args: string[] = []\n private readonly isWindows: boolean = os.platform() === 'win32'\n\n /**\n * Adds a simple argument without a key\n * @param value The argument value\n */\n addArgument(value: string): this {\n if (value) {\n this.args.push(this.escapeArgument(value))\n }\n return this\n }\n\n /**\n * Adds multiple arguments\n * @param values The argument values\n */\n addArguments(values: string[]): this {\n for (const value of values) {\n this.addArgument(value)\n }\n return this\n }\n\n /**\n * Adds a flag argument (--flag)\n * @param key The flag name\n */\n addFlag(key: string): this {\n if (key) {\n this.args.push(`--${key}`)\n }\n return this\n }\n\n /**\n * Adds a key-value argument (--key value)\n * @param key The argument key\n * @param value The argument value\n */\n addKeyValue(key: string, value?: string | null): this {\n if (key && value !== undefined && value !== null) {\n this.args.push(`--${key}`)\n this.args.push(this.escapeArgument(value))\n }\n return this\n }\n\n /**\n * Adds an equals-style argument (--key=value)\n * @param key The argument key\n * @param value The argument value\n */\n addKeyValueEquals(key: string, value?: string | null): this {\n if (key && value !== undefined && value !== null) {\n this.args.push(`--${key}=${this.escapeArgument(value)}`)\n }\n return this\n }\n\n /**\n * Adds a comma-separated list (--key value1,value2,value3)\n * @param key The argument key\n * @param values The list of values\n */\n addCommaList(key: string, values?: string[]): this {\n if (key && values && values.length > 0) {\n const escapedValues = values.map(v => this.escapeArgument(v))\n this.args.push(`--${key}`)\n this.args.push(escapedValues.join(','))\n }\n return this\n }\n\n /**\n * Escapes an argument value based on the current OS\n * @param value The argument value to escape\n * @returns The escaped argument value\n */\n private escapeArgument(value: string): string {\n if (!value) return value\n\n // No need to escape if it doesn't contain spaces or special chars\n if (!this.needsEscaping(value)) return value\n\n if (this.isWindows) {\n // On Windows, wrap in double quotes and escape inner double quotes with backslash\n return `\"${value.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"')}\"`\n } else {\n // On Unix, wrap in single quotes and escape inner single quotes\n // Escaping single quotes in bash requires closing the quote, adding an escaped quote, and reopening\n return `'${value.replace(/'/g, \"'\\\\''\")}'`\n }\n }\n\n /**\n * Determines if a value needs to be escaped\n * @param value The value to check\n * @returns True if the value needs escaping\n */\n private needsEscaping(value: string): boolean {\n const windowsNeedsEscaping = /[\\s&|<>^(){}[\\]\"']/\n const unixNeedsEscaping = /[\\s$\\\\`&|<>(){}[\\]\"']/\n if (this.isWindows) {\n return windowsNeedsEscaping.test(value)\n }\n return unixNeedsEscaping.test(value)\n }\n\n /**\n * Returns the built argument array\n */\n build(): string[] {\n return [...this.args]\n }\n\n /**\n * Parses an argument string into an array\n * @param argString The argument string to parse\n * @returns Array of parsed arguments\n */\n static parseArgumentString(argString: string): string[] {\n const args: string[] = []\n\n let inQuotes = false\n let escaped = false\n let lastCharWasSpace = true\n let arg = ''\n\n const append = (c: string): void => {\n // Only add a backslash for escaped characters other than quotes or backslashes\n if (escaped && c !== '\"' && c !== '\\\\') {\n arg += '\\\\'\n }\n\n arg += c\n escaped = false\n }\n\n for (let i = 0; i < argString.length; i++) {\n const c = argString.charAt(i)\n\n if (c === ' ' && !inQuotes) {\n if (!lastCharWasSpace) {\n args.push(arg)\n arg = ''\n }\n lastCharWasSpace = true\n continue\n } else {\n lastCharWasSpace = false\n }\n\n if (c === '\"') {\n if (!escaped) {\n inQuotes = !inQuotes\n } else {\n append(c)\n }\n continue\n }\n\n if (c === '\\\\' && escaped) {\n // Double backslash becomes a single backslash\n arg += '\\\\'\n escaped = false\n continue\n }\n\n if (c === '\\\\' && inQuotes) {\n escaped = true\n continue\n }\n\n append(c)\n lastCharWasSpace = false\n }\n\n if (!lastCharWasSpace) {\n args.push(arg.trim())\n }\n\n return args\n }\n}\n","import * as crypto from 'node:crypto'\nimport * as fs from 'node:fs/promises'\nimport * as os from 'node:os'\nimport * as path from 'node:path'\n\nimport * as semver from 'semver'\nimport { type IBuildAgent, type ExecResult } from '@agents/common'\nimport { ISettingsProvider } from './settings'\nimport { NugetVersions } from './models'\nimport { ArgumentsBuilder } from './arguments-builder'\n\nexport interface IDotnetTool {\n toolName: string\n\n disableTelemetry(): void\n\n install(): Promise\n}\n\nexport abstract class DotnetTool implements IDotnetTool {\n private static readonly nugetRoot: string = 'https://azuresearch-usnc.nuget.org/query'\n\n constructor(protected buildAgent: IBuildAgent) {}\n\n abstract get packageName(): string\n\n abstract get toolName(): string\n\n abstract get toolPathVariable(): string\n\n abstract get versionRange(): string | null\n\n abstract get settingsProvider(): ISettingsProvider\n\n disableTelemetry(): void {\n this.buildAgent.info('Disable Telemetry')\n this.buildAgent.setVariable('DOTNET_CLI_TELEMETRY_OPTOUT', 'true')\n this.buildAgent.setVariable('DOTNET_NOLOGO', 'true')\n }\n\n async install(): Promise {\n const dotnetExePath = await this.buildAgent.which('dotnet', true)\n this.buildAgent.debug(`whichPath: ${dotnetExePath}`)\n await this.setDotnetRoot()\n\n const setupSettings = this.settingsProvider.getSetupSettings()\n\n let version: string | null = semver.clean(setupSettings.versionSpec) || setupSettings.versionSpec\n this.buildAgent.info('--------------------------')\n this.buildAgent.info(`Acquiring ${this.packageName} for version spec: ${version}`)\n this.buildAgent.info('--------------------------')\n\n if (!this.isExplicitVersion(version)) {\n version = await this.queryLatestMatch(this.packageName, version, setupSettings.includePrerelease)\n if (!version) {\n throw new Error(`Unable to find ${this.packageName} version '${version}'.`)\n }\n }\n\n if (this.versionRange && !semver.satisfies(version, this.versionRange, { includePrerelease: setupSettings.includePrerelease })) {\n throw new Error(\n `Version spec '${setupSettings.versionSpec}' resolved as '${version}' does not satisfy the range '${this.versionRange}'.` +\n 'See https://github.com/GitTools/actions/blob/main/docs/versions.md for more information.'\n )\n }\n\n let toolPath: string | null = null\n if (!setupSettings.preferLatestVersion) {\n // Let's try and resolve the version locally first\n toolPath = await this.buildAgent.findLocalTool(this.packageName, version)\n if (toolPath) {\n this.buildAgent.info('--------------------------')\n this.buildAgent.info(`${this.packageName} version: ${version} found in local cache at ${toolPath}.`)\n this.buildAgent.info('--------------------------')\n }\n }\n\n if (!toolPath) {\n // Download, extract, cache\n toolPath = await this.installTool(this.packageName, version, setupSettings.ignoreFailedSources, setupSettings.nugetConfigPath)\n this.buildAgent.info('--------------------------')\n this.buildAgent.info(`${this.packageName} version: ${version} installed.`)\n this.buildAgent.info('--------------------------')\n }\n\n // Prepend the tool's path. This prepends the PATH for the current process and\n // instructs the agent to prepend for each task that follows.\n this.buildAgent.info(`Prepending ${toolPath} to PATH`)\n this.buildAgent.addPath(toolPath)\n\n const pathVariable = this.toolPathVariable\n this.buildAgent.info(`Set ${pathVariable} to ${toolPath}`)\n this.buildAgent.setVariable(pathVariable, toolPath)\n this.buildAgent.setSucceeded(`${this.toolName} installed successfully`, true)\n\n return toolPath\n }\n\n protected async execute(cmd: string, args: string[]): Promise {\n this.buildAgent.info(`Command: ${cmd} ${args.join(' ')}`)\n return await this.buildAgent.exec(cmd, args)\n }\n\n protected async findToolExecutable(toolBasePath: string): Promise {\n const toolName = os.platform() === 'win32' ? `${this.toolName}.exe` : this.toolName\n\n // Check in the base path first\n const toolPath = path.join(toolBasePath, toolName)\n if (await this.buildAgent.fileExists(toolPath)) {\n return toolPath\n }\n\n // Get current system architecture\n const arch = os.arch()\n this.buildAgent.debug(`Current system architecture: ${arch}`)\n\n // Map node's architecture names to .NET's architecture folders\n const archPaths = []\n\n // Add primary architecture path based on current architecture\n if (arch === 'x64') {\n archPaths.push(path.join(toolBasePath, 'x64', toolName))\n } else if (arch === 'arm64') {\n archPaths.push(path.join(toolBasePath, 'arm64', toolName))\n }\n\n // Add platform-specific architecture paths\n if (os.platform() === 'darwin' && arch === 'arm64') {\n archPaths.push(path.join(toolBasePath, 'osx-arm64', toolName))\n } else if (os.platform() === 'darwin' && arch === 'x64') {\n archPaths.push(path.join(toolBasePath, 'osx-x64', toolName))\n }\n\n // Try each architecture-specific path\n for (const archPath of archPaths) {\n if (await this.buildAgent.fileExists(archPath)) {\n this.buildAgent.debug(`Found tool in architecture-specific directory: ${archPath}`)\n return archPath\n }\n }\n\n // Check in any other subdirectory as a fallback\n try {\n const entries = await fs.readdir(toolBasePath, { withFileTypes: true })\n for (const entry of entries) {\n if (entry.isDirectory()) {\n const nestedPath = path.join(toolBasePath, entry.name, toolName)\n if (await this.buildAgent.fileExists(nestedPath)) {\n this.buildAgent.debug(`Found tool in subdirectory: ${entry.name}`)\n return nestedPath\n }\n }\n }\n } catch (error) {\n if (error instanceof Error) {\n this.buildAgent.debug(`Error reading subdirectories: ${error.message}`)\n }\n }\n\n return null\n }\n\n protected async setDotnetRoot(): Promise {\n if (os.platform() !== 'win32' && !this.buildAgent.getVariable('DOTNET_ROOT')) {\n let dotnetPath = await this.buildAgent.which('dotnet', true)\n\n const stats = await fs.lstat(dotnetPath)\n if (stats.isSymbolicLink()) {\n dotnetPath = (await fs.readlink(dotnetPath)) || dotnetPath\n }\n const dotnetRoot = path.dirname(dotnetPath)\n this.buildAgent.setVariable('DOTNET_ROOT', dotnetRoot)\n }\n }\n\n protected async executeTool(args: string[]): Promise {\n // First, check if we have a path variable set\n const variablePath = this.buildAgent.getVariableAsPath(this.toolPathVariable)\n let toolPath: string | undefined\n\n if (variablePath) {\n // Try to find the executable in the path or its subdirectories\n const foundExecutable = await this.findToolExecutable(variablePath)\n if (foundExecutable) {\n toolPath = foundExecutable\n this.buildAgent.debug(`Found tool executable at: ${toolPath}`)\n } else {\n // Fallback to old behavior if executable not found\n toolPath = path.join(variablePath, os.platform() === 'win32' ? `${this.toolName}.exe` : this.toolName)\n this.buildAgent.debug(`Defaulting to expected tool path: ${toolPath}`)\n }\n }\n\n // If we still don't have a path, try to find it in PATH\n if (!toolPath) {\n toolPath = await this.buildAgent.which(this.toolName, true)\n }\n\n args = ['--roll-forward Major', ...args]\n return await this.execute(toolPath, args)\n }\n\n protected async isValidInputFile(workDir: string, file: string): Promise {\n if (!file) {\n this.buildAgent.debug('No file path supplied')\n return false\n }\n if (path.isAbsolute(file)) {\n this.buildAgent.debug('File path is absolute')\n return await this.buildAgent.fileExists(file)\n }\n const filePath = path.resolve(workDir, file)\n this.buildAgent.debug(`Resolved file path: ${filePath}`)\n return await this.buildAgent.fileExists(filePath)\n }\n\n protected async getRepoPath(targetPath: string): Promise {\n const srcDir = this.buildAgent.sourceDir || '.'\n let workDir: string\n if (!targetPath) {\n workDir = srcDir\n } else {\n if (!path.isAbsolute(targetPath)) {\n targetPath = path.resolve(targetPath)\n }\n if (await this.buildAgent.directoryExists(targetPath)) {\n workDir = targetPath\n } else {\n throw new Error(`Directory not found at ${targetPath}`)\n }\n }\n return path.normalize(workDir)\n }\n\n private async queryLatestMatch(toolName: string, versionSpec: string, includePrerelease: boolean): Promise {\n this.buildAgent.info(\n `Querying tool versions for ${toolName}${versionSpec ? `@${versionSpec}` : ''} ${includePrerelease ? 'including pre-releases' : ''}`\n )\n\n const toolNameParam = encodeURIComponent(toolName.toLowerCase())\n const prereleaseParam = includePrerelease ? 'true' : 'false'\n const downloadPath = `${DotnetTool.nugetRoot}?q=${toolNameParam}&prerelease=${prereleaseParam}&semVerLevel=2.0.0&take=1`\n\n const response = await fetch(downloadPath)\n\n if (!response?.ok) {\n this.buildAgent.info(`failed to query latest version for ${toolName} from ${downloadPath}. Status code: ${response ? response.status : 'unknown'}`)\n return null\n }\n\n const { data } = (await response.json()) as NugetVersions\n\n const versions = data[0].versions.map(x => x.version)\n if (!versions?.length) {\n return null\n }\n\n this.buildAgent.debug(`got versions: ${versions.join(', ')}`)\n\n const version = semver.maxSatisfying(versions, versionSpec, { includePrerelease })\n if (version) {\n this.buildAgent.info(`Found matching version: ${version}`)\n } else {\n this.buildAgent.info('match not found')\n }\n\n return version\n }\n\n private async installTool(toolName: string, version: string, ignoreFailedSources: boolean, nugetConfigPath?: string): Promise {\n const semverVersion = semver.clean(version)\n if (!semverVersion) {\n throw new Error(`Invalid version spec: ${version}`)\n }\n\n const tempDirectory = await this.createTempDirectory()\n\n if (!tempDirectory) {\n throw new Error('Unable to create temp directory')\n }\n\n const builder = new ArgumentsBuilder()\n .addArgument('tool')\n .addArgument('install')\n .addArgument(toolName)\n .addKeyValue('tool-path', tempDirectory)\n .addKeyValue('version', semverVersion)\n\n if (ignoreFailedSources) {\n builder.addFlag('ignore-failed-sources')\n }\n\n if (nugetConfigPath) {\n builder.addKeyValue('configfile', nugetConfigPath)\n }\n\n const result = await this.execute('dotnet', builder.build())\n const status = result.code === 0 ? 'success' : 'failure'\n const message = result.code === 0 ? result.stdout : result.stderr\n\n this.buildAgent.debug(`Tool install result: ${status} ${message}`)\n\n if (result.code !== 0) {\n throw new Error(message)\n }\n\n const toolPath = await this.buildAgent.cacheToolDirectory(tempDirectory, toolName, semverVersion)\n this.buildAgent.debug(`Cached tool path: ${toolPath}`)\n this.buildAgent.debug(`Cleaning up temp directory: ${tempDirectory}`)\n await this.buildAgent.removeDirectory(tempDirectory)\n\n return toolPath\n }\n\n async createTempDirectory(): Promise {\n const tempRootDir = this.buildAgent.tempDir\n if (!tempRootDir) {\n throw new Error('Temp directory not set')\n }\n\n const uuid = crypto.randomUUID()\n const tempPath = path.join(tempRootDir, uuid)\n this.buildAgent.debug(`Creating temp directory ${tempPath}`)\n await fs.mkdir(tempPath, { recursive: true })\n return tempPath\n }\n\n private isExplicitVersion(versionSpec: string): boolean {\n const cleanedVersionSpec = semver.clean(versionSpec)\n const valid = semver.valid(cleanedVersionSpec) != null\n this.buildAgent.debug(`Is version explicit? ${valid}`)\n\n return valid\n }\n}\n","import { type IBuildAgent } from '@agents/common'\nimport { type SetupSettings } from './models'\n\nexport interface ISettingsProvider {\n getSetupSettings(): SetupSettings\n}\n\nexport class SettingsProvider implements ISettingsProvider {\n constructor(protected buildAgent: IBuildAgent) {}\n\n getSetupSettings(): SetupSettings {\n const versionSpec = this.buildAgent.getInput('versionSpec')\n const includePrerelease = this.buildAgent.getBooleanInput('includePrerelease')\n const ignoreFailedSources = this.buildAgent.getBooleanInput('ignoreFailedSources')\n const preferLatestVersion = this.buildAgent.getBooleanInput('preferLatestVersion')\n const nugetConfigPath = this.buildAgent.getInput('nugetConfigPath', false)\n\n return {\n versionSpec,\n includePrerelease,\n ignoreFailedSources,\n preferLatestVersion,\n nugetConfigPath\n }\n }\n}\n","export * from './models'\nexport * from './dotnet-tool'\nexport * from './settings'\nexport * from './arguments-builder'\n\nexport const keysOf = Object.keys as (obj: T) => (keyof T)[]\n","import type { IRunner } from './models.ts'\nimport { ExecResult, IBuildAgent } from '@agents/common'\nimport { IDotnetTool } from './dotnet-tool.ts'\n\nexport abstract class RunnerBase implements IRunner {\n protected abstract tool: IDotnetTool\n\n abstract run(command: string): Promise\n\n protected constructor(protected readonly buildAgent: IBuildAgent) {}\n\n protected disableTelemetry(): void {\n this.buildAgent.info(`Running on: '${this.buildAgent.agentName}'`)\n this.buildAgent.debug('Disabling telemetry')\n this.tool.disableTelemetry()\n }\n\n protected async safeExecute(action: () => Promise, successMessage: string): Promise {\n try {\n this.disableTelemetry()\n const result = await action()\n\n if (result.stdout) {\n this.buildAgent.info(`${this.tool.toolName} Output:`)\n this.buildAgent.info('-------------------')\n this.buildAgent.info(result.stdout)\n this.buildAgent.info('-------------------')\n }\n if (result.code === 0) {\n this.buildAgent.debug(`${this.tool.toolName} succeeded`)\n this.buildAgent.setSucceeded(successMessage, true)\n return result\n } else {\n this.buildAgent.debug(`${this.tool.toolName} failed`)\n this.buildAgent.error(result.stderr as string)\n this.buildAgent.setFailed(result.stderr as string, true)\n return result\n }\n } catch (error) {\n if (error instanceof Error) {\n this.buildAgent.debug(`${this.tool.toolName} failed`)\n this.buildAgent.error(error.message)\n this.buildAgent.setFailed(error.message, true)\n }\n return {\n code: -1,\n error: error as Error\n }\n }\n }\n}\n"],"mappings":"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"} \ No newline at end of file From 67415954a505a36fbdc4193941237aa1f641e48b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 13 Mar 2026 21:36:41 +0000 Subject: [PATCH 4/6] feat: migrate from vite-tsconfig-paths plugin to native Vite 8 resolve.tsconfigPaths Co-authored-by: arturcic <1760506+arturcic@users.noreply.github.com> --- dist/tools/azure/agent.mjs | 219 ++-- dist/tools/azure/agent.mjs.map | 2 +- dist/tools/github/agent.mjs | 239 ++--- dist/tools/github/agent.mjs.map | 2 +- dist/tools/libs/agents.mjs | 1758 +++++++++++++++++++++++++++---- dist/tools/libs/agents.mjs.map | 2 +- dist/tools/local/agent.mjs | 65 +- dist/tools/local/agent.mjs.map | 2 +- package-lock.json | 42 - package.json | 17 +- src/__tests__/vitest.config.ts | 9 +- src/vite.common.config.mts | 9 +- 12 files changed, 1826 insertions(+), 540 deletions(-) diff --git a/dist/tools/azure/agent.mjs b/dist/tools/azure/agent.mjs index fe7eb05e5..3c6aa3b9b 100644 --- a/dist/tools/azure/agent.mjs +++ b/dist/tools/azure/agent.mjs @@ -1,123 +1,114 @@ -import * as os from 'node:os'; -import * as process from 'node:process'; -import { B as BuildAgentBase } from '../libs/agents.mjs'; - -const CMD_PREFIX = "##vso["; -var TaskResult = /* @__PURE__ */ ((TaskResult2) => { - TaskResult2[TaskResult2["Succeeded"] = 0] = "Succeeded"; - TaskResult2[TaskResult2["SucceededWithIssues"] = 1] = "SucceededWithIssues"; - TaskResult2[TaskResult2["Failed"] = 2] = "Failed"; - TaskResult2[TaskResult2["Cancelled"] = 3] = "Cancelled"; - TaskResult2[TaskResult2["Skipped"] = 4] = "Skipped"; - return TaskResult2; -})(TaskResult || {}); +import { t as BuildAgentBase } from "../libs/agents.mjs"; +import * as os from "node:os"; +import * as process from "node:process"; +//#region src/agents/azure/command.ts +var CMD_PREFIX = "##vso["; +var TaskResult = /* @__PURE__ */ function(TaskResult) { + TaskResult[TaskResult["Succeeded"] = 0] = "Succeeded"; + TaskResult[TaskResult["SucceededWithIssues"] = 1] = "SucceededWithIssues"; + TaskResult[TaskResult["Failed"] = 2] = "Failed"; + TaskResult[TaskResult["Cancelled"] = 3] = "Cancelled"; + TaskResult[TaskResult["Skipped"] = 4] = "Skipped"; + return TaskResult; +}({}); +/** +* Command Format: +* ##vso[artifact.command key=value;key=value]user message +* +* Examples: +* ##vso[task.progress value=58] +* ##vso[task.issue type=warning;]This is the user warning message +**/ function issueCommand(command, properties, message) { - const cmd = new Command(command, properties, message); - process.stdout.write(`${cmd.toString()}${os.EOL}`); -} -class Command { - command; - message; - properties; - constructor(command, properties, message) { - if (!command) { - command = "missing.command"; - } - this.command = command; - this.properties = properties; - this.message = message; - } - toString() { - let cmdStr = CMD_PREFIX + this.command; - if (this.properties && Object.keys(this.properties).length > 0) { - cmdStr += " "; - for (const key in this.properties) { - if (Object.prototype.hasOwnProperty.call(this.properties, key)) { - const val = this.properties[key]; - if (val) { - cmdStr += `${key}=${escapeProperty(`${val || ""}`)};`; - } - } - } - } - cmdStr += "]"; - const message = `${this.message || ""}`; - cmdStr += escapeData(message); - return cmdStr; - } + const cmd = new Command(command, properties, message); + process.stdout.write(`${cmd.toString()}${os.EOL}`); } +var Command = class { + command; + message; + properties; + constructor(command, properties, message) { + if (!command) command = "missing.command"; + this.command = command; + this.properties = properties; + this.message = message; + } + toString() { + let cmdStr = CMD_PREFIX + this.command; + if (this.properties && Object.keys(this.properties).length > 0) { + cmdStr += " "; + for (const key in this.properties) if (Object.prototype.hasOwnProperty.call(this.properties, key)) { + const val = this.properties[key]; + if (val) cmdStr += `${key}=${escapeProperty(`${val || ""}`)};`; + } + } + cmdStr += "]"; + const message = `${this.message || ""}`; + cmdStr += escapeData(message); + return cmdStr; + } +}; function escapeData(s) { - return toCommandValue(s).replace(/%/g, "%AZP25").replace(/\r/g, "%0D").replace(/\n/g, "%0A"); + return toCommandValue(s).replace(/%/g, "%AZP25").replace(/\r/g, "%0D").replace(/\n/g, "%0A"); } function escapeProperty(s) { - return toCommandValue(s).replace(/%/g, "%AZP25").replace(/\r/g, "%0D").replace(/\n/g, "%0A").replace(/]/g, "%5D").replace(/;/g, "%3B"); + return toCommandValue(s).replace(/%/g, "%AZP25").replace(/\r/g, "%0D").replace(/\n/g, "%0A").replace(/]/g, "%5D").replace(/;/g, "%3B"); } function toCommandValue(input) { - if (input === null || input === void 0) { - return ""; - } else if (typeof input === "string" || input instanceof String) { - return input; - } - return JSON.stringify(input); -} - -class BuildAgent extends BuildAgentBase { - agentName = "Azure Pipelines"; - sourceDirVariable = "BUILD_SOURCESDIRECTORY"; - tempDirVariable = "AGENT_TEMPDIRECTORY"; - cacheDirVariable = "AGENT_TOOLSDIRECTORY"; - addPath(inputPath) { - super.addPath(inputPath); - issueCommand("task.prependpath", {}, inputPath); - } - info = (message) => { - process.stdout.write(`${message}${os.EOL}`); - }; - debug = (message) => issueCommand("task.debug", {}, message); - warn = (message) => issueCommand("task.issue", { type: "warning" }, message); - error = (message) => issueCommand("task.issue", { type: "error" }, message); - setSucceeded = (message, done) => this._setResult(TaskResult.Succeeded, message, done); - setFailed = (message, done) => this._setResult(TaskResult.Failed, message, done); - setOutput = (name, value) => this._setVariable(name, value, true); - setVariable = (name, value) => this._setVariable(name, value); - updateBuildNumber = (version) => this._updateBuildNumber(version); - _updateBuildNumber(version) { - this.debug(`build number: ${version}`); - issueCommand("build.updatebuildnumber", {}, version); - } - _setResult(result, message, done) { - this.debug(`task result: ${TaskResult[result]}`); - if (result === TaskResult.Failed && message) { - this.error(message); - } else if (result === TaskResult.SucceededWithIssues && message) { - this.warn(message); - } else { - this.info(message); - } - const properties = { result: TaskResult[result] }; - if (done) { - properties["done"] = "true"; - } - issueCommand("task.complete", properties, message); - } - _setVariable(name, val, isOutput = false) { - const key = this._getVariableKey(name); - const varValue = val || ""; - process.env[key] = varValue; - issueCommand( - "task.setvariable", - { - variable: name || "", - isOutput: (isOutput || false).toString(), - issecret: "false" - }, - varValue - ); - } - _getVariableKey(name) { - return name.replace(/\./g, "_").replace(/ /g, "_").toUpperCase(); - } + if (input === null || input === void 0) return ""; + else if (typeof input === "string" || input instanceof String) return input; + return JSON.stringify(input); } - +//#endregion +//#region src/agents/azure/build-agent.ts +var BuildAgent = class extends BuildAgentBase { + agentName = "Azure Pipelines"; + sourceDirVariable = "BUILD_SOURCESDIRECTORY"; + tempDirVariable = "AGENT_TEMPDIRECTORY"; + cacheDirVariable = "AGENT_TOOLSDIRECTORY"; + addPath(inputPath) { + super.addPath(inputPath); + issueCommand("task.prependpath", {}, inputPath); + } + info = (message) => { + process.stdout.write(`${message}${os.EOL}`); + }; + debug = (message) => issueCommand("task.debug", {}, message); + warn = (message) => issueCommand("task.issue", { type: "warning" }, message); + error = (message) => issueCommand("task.issue", { type: "error" }, message); + setSucceeded = (message, done) => this._setResult(TaskResult.Succeeded, message, done); + setFailed = (message, done) => this._setResult(TaskResult.Failed, message, done); + setOutput = (name, value) => this._setVariable(name, value, true); + setVariable = (name, value) => this._setVariable(name, value); + updateBuildNumber = (version) => this._updateBuildNumber(version); + _updateBuildNumber(version) { + this.debug(`build number: ${version}`); + issueCommand("build.updatebuildnumber", {}, version); + } + _setResult(result, message, done) { + this.debug(`task result: ${TaskResult[result]}`); + if (result === TaskResult.Failed && message) this.error(message); + else if (result === TaskResult.SucceededWithIssues && message) this.warn(message); + else this.info(message); + const properties = { result: TaskResult[result] }; + if (done) properties["done"] = "true"; + issueCommand("task.complete", properties, message); + } + _setVariable(name, val, isOutput = false) { + const key = this._getVariableKey(name); + const varValue = val || ""; + process.env[key] = varValue; + issueCommand("task.setvariable", { + variable: name || "", + isOutput: (isOutput || false).toString(), + issecret: "false" + }, varValue); + } + _getVariableKey(name) { + return name.replace(/\./g, "_").replace(/ /g, "_").toUpperCase(); + } +}; +//#endregion export { BuildAgent }; -//# sourceMappingURL=agent.mjs.map + +//# sourceMappingURL=agent.mjs.map \ No newline at end of file diff --git a/dist/tools/azure/agent.mjs.map b/dist/tools/azure/agent.mjs.map index a2edda07d..7436f612b 100644 --- a/dist/tools/azure/agent.mjs.map +++ b/dist/tools/azure/agent.mjs.map @@ -1 +1 @@ -{"version":3,"file":"agent.mjs","sources":["../../../src/agents/azure/command.ts","../../../src/agents/azure/build-agent.ts"],"sourcesContent":["import * as os from 'node:os'\nimport * as process from 'node:process'\n\nconst CMD_PREFIX = '##vso['\n\nexport type CommandProperties = Record\n\nexport enum TaskResult {\n Succeeded = 0,\n SucceededWithIssues = 1,\n Failed = 2,\n Cancelled = 3,\n Skipped = 4\n}\n\n/**\n * Command Format:\n * ##vso[artifact.command key=value;key=value]user message\n *\n * Examples:\n * ##vso[task.progress value=58]\n * ##vso[task.issue type=warning;]This is the user warning message\n **/\nexport function issueCommand(command: string, properties: CommandProperties, message: string): void {\n const cmd = new Command(command, properties, message)\n process.stdout.write(`${cmd.toString()}${os.EOL}`)\n}\n\nclass Command {\n private readonly command: string\n private readonly message: string\n private readonly properties: CommandProperties\n\n constructor(command: string, properties: CommandProperties, message: string) {\n if (!command) {\n command = 'missing.command'\n }\n\n this.command = command\n this.properties = properties\n this.message = message\n }\n\n toString(): string {\n let cmdStr = CMD_PREFIX + this.command\n\n if (this.properties && Object.keys(this.properties).length > 0) {\n cmdStr += ' '\n for (const key in this.properties) {\n if (Object.prototype.hasOwnProperty.call(this.properties, key)) {\n const val = this.properties[key] as string\n if (val) {\n // safely append the val - avoid blowing up when attempting to\n // call .replace() if message is not a string for some reason\n cmdStr += `${key}=${escapeProperty(`${val || ''}`)};`\n }\n }\n }\n }\n\n cmdStr += ']'\n\n // safely append the message - avoid blowing up when attempting to\n // call .replace() if message is not a string for some reason\n const message = `${this.message || ''}`\n cmdStr += escapeData(message)\n\n return cmdStr\n }\n}\n\nfunction escapeData(s: string | object): string {\n return toCommandValue(s).replace(/%/g, '%AZP25').replace(/\\r/g, '%0D').replace(/\\n/g, '%0A')\n}\n\nfunction escapeProperty(s: string | object): string {\n return toCommandValue(s).replace(/%/g, '%AZP25').replace(/\\r/g, '%0D').replace(/\\n/g, '%0A').replace(/]/g, '%5D').replace(/;/g, '%3B')\n}\n\nfunction toCommandValue(input: string | object): string {\n if (input === null || input === undefined) {\n return ''\n } else if (typeof input === 'string' || input instanceof String) {\n return input as string\n }\n return JSON.stringify(input)\n}\n","import * as os from 'node:os'\nimport * as process from 'node:process'\nimport { BuildAgentBase, type IBuildAgent } from '@agents/common'\nimport { issueCommand, TaskResult } from './command'\n\nexport class BuildAgent extends BuildAgentBase implements IBuildAgent {\n agentName = 'Azure Pipelines'\n\n sourceDirVariable = 'BUILD_SOURCESDIRECTORY'\n tempDirVariable = 'AGENT_TEMPDIRECTORY'\n cacheDirVariable = 'AGENT_TOOLSDIRECTORY'\n\n addPath(inputPath: string): void {\n super.addPath(inputPath)\n issueCommand('task.prependpath', {}, inputPath)\n }\n\n info = (message: string): void => {\n process.stdout.write(`${message}${os.EOL}`)\n }\n\n debug = (message: string): void => issueCommand('task.debug', {}, message)\n\n warn = (message: string): void => issueCommand('task.issue', { type: 'warning' }, message)\n\n error = (message: string): void => issueCommand('task.issue', { type: 'error' }, message)\n\n setSucceeded = (message: string, done?: boolean): void => this._setResult(TaskResult.Succeeded, message, done)\n\n setFailed = (message: string, done?: boolean): void => this._setResult(TaskResult.Failed, message, done)\n\n setOutput = (name: string, value: string | undefined): void => this._setVariable(name, value, true)\n\n setVariable = (name: string, value: string | undefined): void => this._setVariable(name, value)\n\n updateBuildNumber = (version: string): void => this._updateBuildNumber(version)\n\n private _updateBuildNumber(version: string): void {\n this.debug(`build number: ${version}`)\n issueCommand('build.updatebuildnumber', {}, version)\n }\n\n private _setResult(result: TaskResult, message: string, done?: boolean): void {\n this.debug(`task result: ${TaskResult[result]}`)\n // add an error issue\n if (result === TaskResult.Failed && message) {\n this.error(message)\n } else if (result === TaskResult.SucceededWithIssues && message) {\n this.warn(message)\n } else {\n this.info(message)\n }\n // task.complete\n const properties: Record = { result: TaskResult[result] }\n if (done) {\n properties['done'] = 'true'\n }\n issueCommand('task.complete', properties, message)\n }\n\n private _setVariable(name: string, val: string | undefined, isOutput = false): void {\n const key: string = this._getVariableKey(name)\n const varValue = val || ''\n process.env[key] = varValue\n\n issueCommand(\n 'task.setvariable',\n {\n variable: name || '',\n isOutput: (isOutput || false).toString(),\n issecret: 'false'\n },\n varValue\n )\n }\n\n private _getVariableKey(name: string): string {\n return name.replace(/\\./g, '_').replace(/ /g, '_').toUpperCase()\n }\n}\n"],"names":["TaskResult"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"agent.mjs","names":[],"sources":["../../../src/agents/azure/command.ts","../../../src/agents/azure/build-agent.ts"],"sourcesContent":["import * as os from 'node:os'\nimport * as process from 'node:process'\n\nconst CMD_PREFIX = '##vso['\n\nexport type CommandProperties = Record\n\nexport enum TaskResult {\n Succeeded = 0,\n SucceededWithIssues = 1,\n Failed = 2,\n Cancelled = 3,\n Skipped = 4\n}\n\n/**\n * Command Format:\n * ##vso[artifact.command key=value;key=value]user message\n *\n * Examples:\n * ##vso[task.progress value=58]\n * ##vso[task.issue type=warning;]This is the user warning message\n **/\nexport function issueCommand(command: string, properties: CommandProperties, message: string): void {\n const cmd = new Command(command, properties, message)\n process.stdout.write(`${cmd.toString()}${os.EOL}`)\n}\n\nclass Command {\n private readonly command: string\n private readonly message: string\n private readonly properties: CommandProperties\n\n constructor(command: string, properties: CommandProperties, message: string) {\n if (!command) {\n command = 'missing.command'\n }\n\n this.command = command\n this.properties = properties\n this.message = message\n }\n\n toString(): string {\n let cmdStr = CMD_PREFIX + this.command\n\n if (this.properties && Object.keys(this.properties).length > 0) {\n cmdStr += ' '\n for (const key in this.properties) {\n if (Object.prototype.hasOwnProperty.call(this.properties, key)) {\n const val = this.properties[key] as string\n if (val) {\n // safely append the val - avoid blowing up when attempting to\n // call .replace() if message is not a string for some reason\n cmdStr += `${key}=${escapeProperty(`${val || ''}`)};`\n }\n }\n }\n }\n\n cmdStr += ']'\n\n // safely append the message - avoid blowing up when attempting to\n // call .replace() if message is not a string for some reason\n const message = `${this.message || ''}`\n cmdStr += escapeData(message)\n\n return cmdStr\n }\n}\n\nfunction escapeData(s: string | object): string {\n return toCommandValue(s).replace(/%/g, '%AZP25').replace(/\\r/g, '%0D').replace(/\\n/g, '%0A')\n}\n\nfunction escapeProperty(s: string | object): string {\n return toCommandValue(s).replace(/%/g, '%AZP25').replace(/\\r/g, '%0D').replace(/\\n/g, '%0A').replace(/]/g, '%5D').replace(/;/g, '%3B')\n}\n\nfunction toCommandValue(input: string | object): string {\n if (input === null || input === undefined) {\n return ''\n } else if (typeof input === 'string' || input instanceof String) {\n return input as string\n }\n return JSON.stringify(input)\n}\n","import * as os from 'node:os'\nimport * as process from 'node:process'\nimport { BuildAgentBase, type IBuildAgent } from '@agents/common'\nimport { issueCommand, TaskResult } from './command'\n\nexport class BuildAgent extends BuildAgentBase implements IBuildAgent {\n agentName = 'Azure Pipelines'\n\n sourceDirVariable = 'BUILD_SOURCESDIRECTORY'\n tempDirVariable = 'AGENT_TEMPDIRECTORY'\n cacheDirVariable = 'AGENT_TOOLSDIRECTORY'\n\n addPath(inputPath: string): void {\n super.addPath(inputPath)\n issueCommand('task.prependpath', {}, inputPath)\n }\n\n info = (message: string): void => {\n process.stdout.write(`${message}${os.EOL}`)\n }\n\n debug = (message: string): void => issueCommand('task.debug', {}, message)\n\n warn = (message: string): void => issueCommand('task.issue', { type: 'warning' }, message)\n\n error = (message: string): void => issueCommand('task.issue', { type: 'error' }, message)\n\n setSucceeded = (message: string, done?: boolean): void => this._setResult(TaskResult.Succeeded, message, done)\n\n setFailed = (message: string, done?: boolean): void => this._setResult(TaskResult.Failed, message, done)\n\n setOutput = (name: string, value: string | undefined): void => this._setVariable(name, value, true)\n\n setVariable = (name: string, value: string | undefined): void => this._setVariable(name, value)\n\n updateBuildNumber = (version: string): void => this._updateBuildNumber(version)\n\n private _updateBuildNumber(version: string): void {\n this.debug(`build number: ${version}`)\n issueCommand('build.updatebuildnumber', {}, version)\n }\n\n private _setResult(result: TaskResult, message: string, done?: boolean): void {\n this.debug(`task result: ${TaskResult[result]}`)\n // add an error issue\n if (result === TaskResult.Failed && message) {\n this.error(message)\n } else if (result === TaskResult.SucceededWithIssues && message) {\n this.warn(message)\n } else {\n this.info(message)\n }\n // task.complete\n const properties: Record = { result: TaskResult[result] }\n if (done) {\n properties['done'] = 'true'\n }\n issueCommand('task.complete', properties, message)\n }\n\n private _setVariable(name: string, val: string | undefined, isOutput = false): void {\n const key: string = this._getVariableKey(name)\n const varValue = val || ''\n process.env[key] = varValue\n\n issueCommand(\n 'task.setvariable',\n {\n variable: name || '',\n isOutput: (isOutput || false).toString(),\n issecret: 'false'\n },\n varValue\n )\n }\n\n private _getVariableKey(name: string): string {\n return name.replace(/\\./g, '_').replace(/ /g, '_').toUpperCase()\n }\n}\n"],"mappings":"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"} \ No newline at end of file diff --git a/dist/tools/github/agent.mjs b/dist/tools/github/agent.mjs index cfda5d435..e237de783 100644 --- a/dist/tools/github/agent.mjs +++ b/dist/tools/github/agent.mjs @@ -1,139 +1,126 @@ -import * as os from 'node:os'; -import process__default from 'node:process'; -import { B as BuildAgentBase } from '../libs/agents.mjs'; -import * as crypto from 'node:crypto'; -import * as fs from 'node:fs'; - -const CMD_STRING = "::"; +import { t as BuildAgentBase } from "../libs/agents.mjs"; +import * as os from "node:os"; +import process$1 from "node:process"; +import * as crypto from "node:crypto"; +import * as fs from "node:fs"; +//#region src/agents/github/command.ts +var CMD_STRING = "::"; +/** +* Commands +* +* Command Format: +* ::name key=value,key=value::message +* +* Examples: +* ::warning::This is the message +* ::set-env name=MY_VAR::some value +*/ function issueCommand(command, properties, message) { - const cmd = new Command(command, properties, message); - process.stdout.write(`${cmd.toString()}${os.EOL}`); + const cmd = new Command(command, properties, message); + process.stdout.write(`${cmd.toString()}${os.EOL}`); } function issueFileCommand(command, message) { - const filePath = process.env[`GITHUB_${command}`]; - if (!filePath) { - throw new Error(`Unable to find environment variable for file command ${command}`); - } - if (!fs.existsSync(filePath)) { - throw new Error(`Missing file at path: ${filePath}`); - } - fs.appendFileSync(filePath, `${toCommandValue(message)}${os.EOL}`, { - encoding: "utf8" - }); -} -var ExitCode = /* @__PURE__ */ ((ExitCode2) => { - ExitCode2[ExitCode2["Success"] = 0] = "Success"; - ExitCode2[ExitCode2["Failure"] = 1] = "Failure"; - return ExitCode2; -})(ExitCode || {}); -class Command { - command; - message; - properties; - constructor(command, properties, message) { - if (!command) { - command = "missing.command"; - } - this.command = command; - this.properties = properties; - this.message = message; - } - toString() { - let cmdStr = CMD_STRING + this.command; - if (this.properties && Object.keys(this.properties).length > 0) { - cmdStr += " "; - let first = true; - for (const key in this.properties) { - if (Object.prototype.hasOwnProperty.call(this.properties, key)) { - const val = this.properties[key]; - if (val) { - if (first) { - first = false; - } else { - cmdStr += ","; - } - cmdStr += `${key}=${escapeProperty(val)}`; - } - } - } - } - cmdStr += `${CMD_STRING}${escapeData(this.message)}`; - return cmdStr; - } + const filePath = process.env[`GITHUB_${command}`]; + if (!filePath) throw new Error(`Unable to find environment variable for file command ${command}`); + if (!fs.existsSync(filePath)) throw new Error(`Missing file at path: ${filePath}`); + fs.appendFileSync(filePath, `${toCommandValue(message)}${os.EOL}`, { encoding: "utf8" }); } +var ExitCode = /* @__PURE__ */ function(ExitCode) { + /** + * A code indicating that the action was successful + */ + ExitCode[ExitCode["Success"] = 0] = "Success"; + /** + * A code indicating that the action was a failure + */ + ExitCode[ExitCode["Failure"] = 1] = "Failure"; + return ExitCode; +}({}); +var Command = class { + command; + message; + properties; + constructor(command, properties, message) { + if (!command) command = "missing.command"; + this.command = command; + this.properties = properties; + this.message = message; + } + toString() { + let cmdStr = CMD_STRING + this.command; + if (this.properties && Object.keys(this.properties).length > 0) { + cmdStr += " "; + let first = true; + for (const key in this.properties) if (Object.prototype.hasOwnProperty.call(this.properties, key)) { + const val = this.properties[key]; + if (val) { + if (first) first = false; + else cmdStr += ","; + cmdStr += `${key}=${escapeProperty(val)}`; + } + } + } + cmdStr += `${CMD_STRING}${escapeData(this.message)}`; + return cmdStr; + } +}; function escapeData(s) { - return toCommandValue(s).replace(/%/g, "%25").replace(/\r/g, "%0D").replace(/\n/g, "%0A"); + return toCommandValue(s).replace(/%/g, "%25").replace(/\r/g, "%0D").replace(/\n/g, "%0A"); } function escapeProperty(s) { - return toCommandValue(s).replace(/%/g, "%25").replace(/\r/g, "%0D").replace(/\n/g, "%0A").replace(/:/g, "%3A").replace(/,/g, "%2C"); + return toCommandValue(s).replace(/%/g, "%25").replace(/\r/g, "%0D").replace(/\n/g, "%0A").replace(/:/g, "%3A").replace(/,/g, "%2C"); } function toCommandValue(input) { - if (input === null || input === void 0) { - return ""; - } else if (typeof input === "string" || input instanceof String) { - return input; - } - return JSON.stringify(input); + if (input === null || input === void 0) return ""; + else if (typeof input === "string" || input instanceof String) return input; + return JSON.stringify(input); } function prepareKeyValueMessage(key, value) { - const uuid = crypto.randomUUID(); - const delimiter = `ghadelimiter_${uuid}`; - const convertedValue = toCommandValue(value); - if (key.includes(delimiter)) { - throw new Error(`Unexpected input: name should not contain the delimiter "${delimiter}"`); - } - if (convertedValue.includes(delimiter)) { - throw new Error(`Unexpected input: value should not contain the delimiter "${delimiter}"`); - } - return `${key}<<${delimiter}${os.EOL}${convertedValue}${os.EOL}${delimiter}`; -} - -class BuildAgent extends BuildAgentBase { - agentName = "GitHub Actions"; - sourceDirVariable = "GITHUB_WORKSPACE"; - tempDirVariable = "RUNNER_TEMP"; - cacheDirVariable = "RUNNER_TOOL_CACHE"; - addPath(inputPath) { - super.addPath(inputPath); - const filePath = process__default.env["GITHUB_PATH"] || ""; - if (filePath) { - issueFileCommand("PATH", inputPath); - } else { - issueCommand("add-path", {}, inputPath); - } - } - debug = (message) => issueCommand("debug", {}, message); - info = (message) => { - process__default.stdout.write(`${message}${os.EOL}`); - }; - warn = (message) => issueCommand("warning", {}, message); - error = (message) => issueCommand("error", {}, message); - setSucceeded(_message, _done) { - process__default.exitCode = ExitCode.Success; - } - setFailed = (message, _done) => { - process__default.exitCode = ExitCode.Failure; - this.error(message); - }; - setOutput = (name, value) => { - const filePath = process__default.env["GITHUB_OUTPUT"] || ""; - if (filePath) { - return issueFileCommand("OUTPUT", prepareKeyValueMessage(name, value)); - } - process__default.stdout.write(os.EOL); - issueCommand("set-output", { name }, toCommandValue(value)); - }; - setVariable = (name, value) => { - const convertedVal = toCommandValue(value); - process__default.env[name] = convertedVal; - const filePath = process__default.env["GITHUB_ENV"] || ""; - if (filePath) { - return issueFileCommand("ENV", prepareKeyValueMessage(name, value)); - } - issueCommand("set-env", { name }, convertedVal); - }; - updateBuildNumber = (version) => this.debug(`updateBuildNumber - ${version}`); + const delimiter = `ghadelimiter_${crypto.randomUUID()}`; + const convertedValue = toCommandValue(value); + if (key.includes(delimiter)) throw new Error(`Unexpected input: name should not contain the delimiter "${delimiter}"`); + if (convertedValue.includes(delimiter)) throw new Error(`Unexpected input: value should not contain the delimiter "${delimiter}"`); + return `${key}<<${delimiter}${os.EOL}${convertedValue}${os.EOL}${delimiter}`; } - +//#endregion +//#region src/agents/github/build-agent.ts +var BuildAgent = class extends BuildAgentBase { + agentName = "GitHub Actions"; + sourceDirVariable = "GITHUB_WORKSPACE"; + tempDirVariable = "RUNNER_TEMP"; + cacheDirVariable = "RUNNER_TOOL_CACHE"; + addPath(inputPath) { + super.addPath(inputPath); + if (process$1.env["GITHUB_PATH"] || "") issueFileCommand("PATH", inputPath); + else issueCommand("add-path", {}, inputPath); + } + debug = (message) => issueCommand("debug", {}, message); + info = (message) => { + process$1.stdout.write(`${message}${os.EOL}`); + }; + warn = (message) => issueCommand("warning", {}, message); + error = (message) => issueCommand("error", {}, message); + setSucceeded(_message, _done) { + process$1.exitCode = ExitCode.Success; + } + setFailed = (message, _done) => { + process$1.exitCode = ExitCode.Failure; + this.error(message); + }; + setOutput = (name, value) => { + if (process$1.env["GITHUB_OUTPUT"] || "") return issueFileCommand("OUTPUT", prepareKeyValueMessage(name, value)); + process$1.stdout.write(os.EOL); + issueCommand("set-output", { name }, toCommandValue(value)); + }; + setVariable = (name, value) => { + const convertedVal = toCommandValue(value); + process$1.env[name] = convertedVal; + if (process$1.env["GITHUB_ENV"] || "") return issueFileCommand("ENV", prepareKeyValueMessage(name, value)); + issueCommand("set-env", { name }, convertedVal); + }; + updateBuildNumber = (version) => this.debug(`updateBuildNumber - ${version}`); +}; +//#endregion export { BuildAgent }; -//# sourceMappingURL=agent.mjs.map + +//# sourceMappingURL=agent.mjs.map \ No newline at end of file diff --git a/dist/tools/github/agent.mjs.map b/dist/tools/github/agent.mjs.map index b70b3f73e..b94d0270c 100644 --- a/dist/tools/github/agent.mjs.map +++ b/dist/tools/github/agent.mjs.map @@ -1 +1 @@ -{"version":3,"file":"agent.mjs","sources":["../../../src/agents/github/command.ts","../../../src/agents/github/build-agent.ts"],"sourcesContent":["import * as crypto from 'node:crypto'\nimport * as os from 'node:os'\nimport * as fs from 'node:fs'\n\nconst CMD_STRING = '::'\n\nexport type CommandProperties = Record\n\n/**\n * Commands\n *\n * Command Format:\n * ::name key=value,key=value::message\n *\n * Examples:\n * ::warning::This is the message\n * ::set-env name=MY_VAR::some value\n */\nexport function issueCommand(command: string, properties: CommandProperties, message: string): void {\n const cmd = new Command(command, properties, message)\n process.stdout.write(`${cmd.toString()}${os.EOL}`)\n}\n\nexport function issueFileCommand(command: string, message: string | object): void {\n const filePath = process.env[`GITHUB_${command}`]\n if (!filePath) {\n throw new Error(`Unable to find environment variable for file command ${command}`)\n }\n if (!fs.existsSync(filePath)) {\n throw new Error(`Missing file at path: ${filePath}`)\n }\n\n fs.appendFileSync(filePath, `${toCommandValue(message)}${os.EOL}`, {\n encoding: 'utf8'\n })\n}\n\nexport enum ExitCode {\n /**\n * A code indicating that the action was successful\n */\n Success = 0,\n\n /**\n * A code indicating that the action was a failure\n */\n Failure = 1\n}\n\nclass Command {\n private readonly command: string\n private readonly message: string\n private readonly properties: CommandProperties\n\n constructor(command: string, properties: CommandProperties, message: string) {\n if (!command) {\n command = 'missing.command'\n }\n\n this.command = command\n this.properties = properties\n this.message = message\n }\n\n toString(): string {\n let cmdStr = CMD_STRING + this.command\n\n if (this.properties && Object.keys(this.properties).length > 0) {\n cmdStr += ' '\n let first = true\n for (const key in this.properties) {\n if (Object.prototype.hasOwnProperty.call(this.properties, key)) {\n const val = this.properties[key]\n if (val) {\n if (first) {\n first = false\n } else {\n cmdStr += ','\n }\n\n cmdStr += `${key}=${escapeProperty(val)}`\n }\n }\n }\n }\n\n cmdStr += `${CMD_STRING}${escapeData(this.message)}`\n return cmdStr\n }\n}\n\nfunction escapeData(s: string | object): string {\n return toCommandValue(s).replace(/%/g, '%25').replace(/\\r/g, '%0D').replace(/\\n/g, '%0A')\n}\n\nfunction escapeProperty(s: string | object): string {\n return toCommandValue(s).replace(/%/g, '%25').replace(/\\r/g, '%0D').replace(/\\n/g, '%0A').replace(/:/g, '%3A').replace(/,/g, '%2C')\n}\n\nexport function toCommandValue(input: string | object | undefined): string {\n if (input === null || input === undefined) {\n return ''\n } else if (typeof input === 'string' || input instanceof String) {\n return input as string\n }\n return JSON.stringify(input)\n}\n\nexport function prepareKeyValueMessage(key: string, value: string | object | undefined): string {\n const uuid = crypto.randomUUID()\n const delimiter = `ghadelimiter_${uuid}`\n const convertedValue = toCommandValue(value)\n\n // These should realistically never happen, but just in case someone finds a\n // way to exploit uuid generation, let's not allow keys or values that contain\n // the delimiter.\n if (key.includes(delimiter)) {\n throw new Error(`Unexpected input: name should not contain the delimiter \"${delimiter}\"`)\n }\n\n if (convertedValue.includes(delimiter)) {\n throw new Error(`Unexpected input: value should not contain the delimiter \"${delimiter}\"`)\n }\n\n return `${key}<<${delimiter}${os.EOL}${convertedValue}${os.EOL}${delimiter}`\n}\n","import * as os from 'node:os'\nimport process from 'node:process'\nimport { BuildAgentBase, type IBuildAgent } from '@agents/common'\nimport { ExitCode, issueCommand, issueFileCommand, prepareKeyValueMessage, toCommandValue } from './command'\n\nexport class BuildAgent extends BuildAgentBase implements IBuildAgent {\n agentName = 'GitHub Actions'\n\n sourceDirVariable = 'GITHUB_WORKSPACE'\n tempDirVariable = 'RUNNER_TEMP'\n cacheDirVariable = 'RUNNER_TOOL_CACHE'\n\n addPath(inputPath: string): void {\n super.addPath(inputPath)\n const filePath = process.env['GITHUB_PATH'] || ''\n if (filePath) {\n issueFileCommand('PATH', inputPath)\n } else {\n issueCommand('add-path', {}, inputPath)\n }\n }\n\n debug = (message: string): void => issueCommand('debug', {}, message)\n\n info = (message: string): void => {\n process.stdout.write(`${message}${os.EOL}`)\n }\n\n warn = (message: string): void => issueCommand('warning', {}, message)\n\n error = (message: string): void => issueCommand('error', {}, message)\n\n setSucceeded(_message: string, _done?: boolean): void {\n process.exitCode = ExitCode.Success\n }\n\n setFailed = (message: string, _done?: boolean): void => {\n process.exitCode = ExitCode.Failure\n this.error(message)\n }\n\n setOutput = (name: string, value: string | undefined): void => {\n const filePath = process.env['GITHUB_OUTPUT'] || ''\n if (filePath) {\n return issueFileCommand('OUTPUT', prepareKeyValueMessage(name, value))\n }\n\n process.stdout.write(os.EOL)\n issueCommand('set-output', { name }, toCommandValue(value))\n }\n\n setVariable = (name: string, value: string | undefined): void => {\n const convertedVal = toCommandValue(value)\n process.env[name] = convertedVal\n\n const filePath = process.env['GITHUB_ENV'] || ''\n if (filePath) {\n return issueFileCommand('ENV', prepareKeyValueMessage(name, value))\n }\n\n issueCommand('set-env', { name }, convertedVal)\n }\n\n updateBuildNumber = (version: string): void => this.debug(`updateBuildNumber - ${version}`)\n}\n"],"names":["ExitCode","process"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"agent.mjs","names":[],"sources":["../../../src/agents/github/command.ts","../../../src/agents/github/build-agent.ts"],"sourcesContent":["import * as crypto from 'node:crypto'\nimport * as os from 'node:os'\nimport * as fs from 'node:fs'\n\nconst CMD_STRING = '::'\n\nexport type CommandProperties = Record\n\n/**\n * Commands\n *\n * Command Format:\n * ::name key=value,key=value::message\n *\n * Examples:\n * ::warning::This is the message\n * ::set-env name=MY_VAR::some value\n */\nexport function issueCommand(command: string, properties: CommandProperties, message: string): void {\n const cmd = new Command(command, properties, message)\n process.stdout.write(`${cmd.toString()}${os.EOL}`)\n}\n\nexport function issueFileCommand(command: string, message: string | object): void {\n const filePath = process.env[`GITHUB_${command}`]\n if (!filePath) {\n throw new Error(`Unable to find environment variable for file command ${command}`)\n }\n if (!fs.existsSync(filePath)) {\n throw new Error(`Missing file at path: ${filePath}`)\n }\n\n fs.appendFileSync(filePath, `${toCommandValue(message)}${os.EOL}`, {\n encoding: 'utf8'\n })\n}\n\nexport enum ExitCode {\n /**\n * A code indicating that the action was successful\n */\n Success = 0,\n\n /**\n * A code indicating that the action was a failure\n */\n Failure = 1\n}\n\nclass Command {\n private readonly command: string\n private readonly message: string\n private readonly properties: CommandProperties\n\n constructor(command: string, properties: CommandProperties, message: string) {\n if (!command) {\n command = 'missing.command'\n }\n\n this.command = command\n this.properties = properties\n this.message = message\n }\n\n toString(): string {\n let cmdStr = CMD_STRING + this.command\n\n if (this.properties && Object.keys(this.properties).length > 0) {\n cmdStr += ' '\n let first = true\n for (const key in this.properties) {\n if (Object.prototype.hasOwnProperty.call(this.properties, key)) {\n const val = this.properties[key]\n if (val) {\n if (first) {\n first = false\n } else {\n cmdStr += ','\n }\n\n cmdStr += `${key}=${escapeProperty(val)}`\n }\n }\n }\n }\n\n cmdStr += `${CMD_STRING}${escapeData(this.message)}`\n return cmdStr\n }\n}\n\nfunction escapeData(s: string | object): string {\n return toCommandValue(s).replace(/%/g, '%25').replace(/\\r/g, '%0D').replace(/\\n/g, '%0A')\n}\n\nfunction escapeProperty(s: string | object): string {\n return toCommandValue(s).replace(/%/g, '%25').replace(/\\r/g, '%0D').replace(/\\n/g, '%0A').replace(/:/g, '%3A').replace(/,/g, '%2C')\n}\n\nexport function toCommandValue(input: string | object | undefined): string {\n if (input === null || input === undefined) {\n return ''\n } else if (typeof input === 'string' || input instanceof String) {\n return input as string\n }\n return JSON.stringify(input)\n}\n\nexport function prepareKeyValueMessage(key: string, value: string | object | undefined): string {\n const uuid = crypto.randomUUID()\n const delimiter = `ghadelimiter_${uuid}`\n const convertedValue = toCommandValue(value)\n\n // These should realistically never happen, but just in case someone finds a\n // way to exploit uuid generation, let's not allow keys or values that contain\n // the delimiter.\n if (key.includes(delimiter)) {\n throw new Error(`Unexpected input: name should not contain the delimiter \"${delimiter}\"`)\n }\n\n if (convertedValue.includes(delimiter)) {\n throw new Error(`Unexpected input: value should not contain the delimiter \"${delimiter}\"`)\n }\n\n return `${key}<<${delimiter}${os.EOL}${convertedValue}${os.EOL}${delimiter}`\n}\n","import * as os from 'node:os'\nimport process from 'node:process'\nimport { BuildAgentBase, type IBuildAgent } from '@agents/common'\nimport { ExitCode, issueCommand, issueFileCommand, prepareKeyValueMessage, toCommandValue } from './command'\n\nexport class BuildAgent extends BuildAgentBase implements IBuildAgent {\n agentName = 'GitHub Actions'\n\n sourceDirVariable = 'GITHUB_WORKSPACE'\n tempDirVariable = 'RUNNER_TEMP'\n cacheDirVariable = 'RUNNER_TOOL_CACHE'\n\n addPath(inputPath: string): void {\n super.addPath(inputPath)\n const filePath = process.env['GITHUB_PATH'] || ''\n if (filePath) {\n issueFileCommand('PATH', inputPath)\n } else {\n issueCommand('add-path', {}, inputPath)\n }\n }\n\n debug = (message: string): void => issueCommand('debug', {}, message)\n\n info = (message: string): void => {\n process.stdout.write(`${message}${os.EOL}`)\n }\n\n warn = (message: string): void => issueCommand('warning', {}, message)\n\n error = (message: string): void => issueCommand('error', {}, message)\n\n setSucceeded(_message: string, _done?: boolean): void {\n process.exitCode = ExitCode.Success\n }\n\n setFailed = (message: string, _done?: boolean): void => {\n process.exitCode = ExitCode.Failure\n this.error(message)\n }\n\n setOutput = (name: string, value: string | undefined): void => {\n const filePath = process.env['GITHUB_OUTPUT'] || ''\n if (filePath) {\n return issueFileCommand('OUTPUT', prepareKeyValueMessage(name, value))\n }\n\n process.stdout.write(os.EOL)\n issueCommand('set-output', { name }, toCommandValue(value))\n }\n\n setVariable = (name: string, value: string | undefined): void => {\n const convertedVal = toCommandValue(value)\n process.env[name] = convertedVal\n\n const filePath = process.env['GITHUB_ENV'] || ''\n if (filePath) {\n return issueFileCommand('ENV', prepareKeyValueMessage(name, value))\n }\n\n issueCommand('set-env', { name }, convertedVal)\n }\n\n updateBuildNumber = (version: string): void => this.debug(`updateBuildNumber - ${version}`)\n}\n"],"mappings":"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"} \ No newline at end of file diff --git a/dist/tools/libs/agents.mjs b/dist/tools/libs/agents.mjs index ce0beb4ec..0e2136fe9 100644 --- a/dist/tools/libs/agents.mjs +++ b/dist/tools/libs/agents.mjs @@ -1,207 +1,1565 @@ -import { exec } from 'node:child_process'; -import * as fs from 'node:fs/promises'; -import * as process from 'node:process'; -import * as path from 'node:path'; -import * as util from 'node:util'; -import { s as semverExports } from './semver.mjs'; - -const isFilePath = (cmd) => { - return cmd.includes(path.sep) ? path.resolve(cmd) : void 0; +import { n as __toESM, t as __commonJSMin } from "../../rolldown-runtime.mjs"; +import * as process$1 from "node:process"; +import { exec } from "node:child_process"; +import * as fs from "node:fs/promises"; +import * as path from "node:path"; +import * as util from "node:util"; +//#region node_modules/semver/internal/constants.js +var require_constants = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var SEMVER_SPEC_VERSION = "2.0.0"; + var MAX_LENGTH = 256; + var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; + module.exports = { + MAX_LENGTH, + MAX_SAFE_COMPONENT_LENGTH: 16, + MAX_SAFE_BUILD_LENGTH: MAX_LENGTH - 6, + MAX_SAFE_INTEGER, + RELEASE_TYPES: [ + "major", + "premajor", + "minor", + "preminor", + "patch", + "prepatch", + "prerelease" + ], + SEMVER_SPEC_VERSION, + FLAG_INCLUDE_PRERELEASE: 1, + FLAG_LOOSE: 2 + }; +})); +//#endregion +//#region node_modules/semver/internal/debug.js +var require_debug = /* @__PURE__ */ __commonJSMin(((exports, module) => { + module.exports = typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error("SEMVER", ...args) : () => {}; +})); +//#endregion +//#region node_modules/semver/internal/re.js +var require_re = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var { MAX_SAFE_COMPONENT_LENGTH, MAX_SAFE_BUILD_LENGTH, MAX_LENGTH } = require_constants(); + var debug = require_debug(); + exports = module.exports = {}; + var re = exports.re = []; + var safeRe = exports.safeRe = []; + var src = exports.src = []; + var safeSrc = exports.safeSrc = []; + var t = exports.t = {}; + var R = 0; + var LETTERDASHNUMBER = "[a-zA-Z0-9-]"; + var safeRegexReplacements = [ + ["\\s", 1], + ["\\d", MAX_LENGTH], + [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH] + ]; + var makeSafeRegex = (value) => { + for (const [token, max] of safeRegexReplacements) value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`); + return value; + }; + var createToken = (name, value, isGlobal) => { + const safe = makeSafeRegex(value); + const index = R++; + debug(name, index, value); + t[name] = index; + src[index] = value; + safeSrc[index] = safe; + re[index] = new RegExp(value, isGlobal ? "g" : void 0); + safeRe[index] = new RegExp(safe, isGlobal ? "g" : void 0); + }; + createToken("NUMERICIDENTIFIER", "0|[1-9]\\d*"); + createToken("NUMERICIDENTIFIERLOOSE", "\\d+"); + createToken("NONNUMERICIDENTIFIER", `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`); + createToken("MAINVERSION", `(${src[t.NUMERICIDENTIFIER]})\\.(${src[t.NUMERICIDENTIFIER]})\\.(${src[t.NUMERICIDENTIFIER]})`); + createToken("MAINVERSIONLOOSE", `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.(${src[t.NUMERICIDENTIFIERLOOSE]})\\.(${src[t.NUMERICIDENTIFIERLOOSE]})`); + createToken("PRERELEASEIDENTIFIER", `(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIER]})`); + createToken("PRERELEASEIDENTIFIERLOOSE", `(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIERLOOSE]})`); + createToken("PRERELEASE", `(?:-(${src[t.PRERELEASEIDENTIFIER]}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`); + createToken("PRERELEASELOOSE", `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`); + createToken("BUILDIDENTIFIER", `${LETTERDASHNUMBER}+`); + createToken("BUILD", `(?:\\+(${src[t.BUILDIDENTIFIER]}(?:\\.${src[t.BUILDIDENTIFIER]})*))`); + createToken("FULLPLAIN", `v?${src[t.MAINVERSION]}${src[t.PRERELEASE]}?${src[t.BUILD]}?`); + createToken("FULL", `^${src[t.FULLPLAIN]}$`); + createToken("LOOSEPLAIN", `[v=\\s]*${src[t.MAINVERSIONLOOSE]}${src[t.PRERELEASELOOSE]}?${src[t.BUILD]}?`); + createToken("LOOSE", `^${src[t.LOOSEPLAIN]}$`); + createToken("GTLT", "((?:<|>)?=?)"); + createToken("XRANGEIDENTIFIERLOOSE", `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`); + createToken("XRANGEIDENTIFIER", `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`); + createToken("XRANGEPLAIN", `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})(?:\\.(${src[t.XRANGEIDENTIFIER]})(?:\\.(${src[t.XRANGEIDENTIFIER]})(?:${src[t.PRERELEASE]})?${src[t.BUILD]}?)?)?`); + createToken("XRANGEPLAINLOOSE", `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:${src[t.PRERELEASELOOSE]})?${src[t.BUILD]}?)?)?`); + createToken("XRANGE", `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`); + createToken("XRANGELOOSE", `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`); + createToken("COERCEPLAIN", `(^|[^\\d])(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}})(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`); + createToken("COERCE", `${src[t.COERCEPLAIN]}(?:$|[^\\d])`); + createToken("COERCEFULL", src[t.COERCEPLAIN] + `(?:${src[t.PRERELEASE]})?(?:${src[t.BUILD]})?(?:$|[^\\d])`); + createToken("COERCERTL", src[t.COERCE], true); + createToken("COERCERTLFULL", src[t.COERCEFULL], true); + createToken("LONETILDE", "(?:~>?)"); + createToken("TILDETRIM", `(\\s*)${src[t.LONETILDE]}\\s+`, true); + exports.tildeTrimReplace = "$1~"; + createToken("TILDE", `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`); + createToken("TILDELOOSE", `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`); + createToken("LONECARET", "(?:\\^)"); + createToken("CARETTRIM", `(\\s*)${src[t.LONECARET]}\\s+`, true); + exports.caretTrimReplace = "$1^"; + createToken("CARET", `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`); + createToken("CARETLOOSE", `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`); + createToken("COMPARATORLOOSE", `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`); + createToken("COMPARATOR", `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`); + createToken("COMPARATORTRIM", `(\\s*)${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true); + exports.comparatorTrimReplace = "$1$2$3"; + createToken("HYPHENRANGE", `^\\s*(${src[t.XRANGEPLAIN]})\\s+-\\s+(${src[t.XRANGEPLAIN]})\\s*$`); + createToken("HYPHENRANGELOOSE", `^\\s*(${src[t.XRANGEPLAINLOOSE]})\\s+-\\s+(${src[t.XRANGEPLAINLOOSE]})\\s*$`); + createToken("STAR", "(<|>)?=?\\s*\\*"); + createToken("GTE0", "^\\s*>=\\s*0\\.0\\.0\\s*$"); + createToken("GTE0PRE", "^\\s*>=\\s*0\\.0\\.0-0\\s*$"); +})); +//#endregion +//#region node_modules/semver/internal/parse-options.js +var require_parse_options = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var looseOption = Object.freeze({ loose: true }); + var emptyOpts = Object.freeze({}); + var parseOptions = (options) => { + if (!options) return emptyOpts; + if (typeof options !== "object") return looseOption; + return options; + }; + module.exports = parseOptions; +})); +//#endregion +//#region node_modules/semver/internal/identifiers.js +var require_identifiers = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var numeric = /^[0-9]+$/; + var compareIdentifiers = (a, b) => { + if (typeof a === "number" && typeof b === "number") return a === b ? 0 : a < b ? -1 : 1; + const anum = numeric.test(a); + const bnum = numeric.test(b); + if (anum && bnum) { + a = +a; + b = +b; + } + return a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1; + }; + var rcompareIdentifiers = (a, b) => compareIdentifiers(b, a); + module.exports = { + compareIdentifiers, + rcompareIdentifiers + }; +})); +//#endregion +//#region node_modules/semver/classes/semver.js +var require_semver$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var debug = require_debug(); + var { MAX_LENGTH, MAX_SAFE_INTEGER } = require_constants(); + var { safeRe: re, t } = require_re(); + var parseOptions = require_parse_options(); + var { compareIdentifiers } = require_identifiers(); + module.exports = class SemVer { + constructor(version, options) { + options = parseOptions(options); + if (version instanceof SemVer) if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) return version; + else version = version.version; + else if (typeof version !== "string") throw new TypeError(`Invalid version. Must be a string. Got type "${typeof version}".`); + if (version.length > MAX_LENGTH) throw new TypeError(`version is longer than ${MAX_LENGTH} characters`); + debug("SemVer", version, options); + this.options = options; + this.loose = !!options.loose; + this.includePrerelease = !!options.includePrerelease; + const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]); + if (!m) throw new TypeError(`Invalid Version: ${version}`); + this.raw = version; + this.major = +m[1]; + this.minor = +m[2]; + this.patch = +m[3]; + if (this.major > MAX_SAFE_INTEGER || this.major < 0) throw new TypeError("Invalid major version"); + if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) throw new TypeError("Invalid minor version"); + if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) throw new TypeError("Invalid patch version"); + if (!m[4]) this.prerelease = []; + else this.prerelease = m[4].split(".").map((id) => { + if (/^[0-9]+$/.test(id)) { + const num = +id; + if (num >= 0 && num < MAX_SAFE_INTEGER) return num; + } + return id; + }); + this.build = m[5] ? m[5].split(".") : []; + this.format(); + } + format() { + this.version = `${this.major}.${this.minor}.${this.patch}`; + if (this.prerelease.length) this.version += `-${this.prerelease.join(".")}`; + return this.version; + } + toString() { + return this.version; + } + compare(other) { + debug("SemVer.compare", this.version, this.options, other); + if (!(other instanceof SemVer)) { + if (typeof other === "string" && other === this.version) return 0; + other = new SemVer(other, this.options); + } + if (other.version === this.version) return 0; + return this.compareMain(other) || this.comparePre(other); + } + compareMain(other) { + if (!(other instanceof SemVer)) other = new SemVer(other, this.options); + if (this.major < other.major) return -1; + if (this.major > other.major) return 1; + if (this.minor < other.minor) return -1; + if (this.minor > other.minor) return 1; + if (this.patch < other.patch) return -1; + if (this.patch > other.patch) return 1; + return 0; + } + comparePre(other) { + if (!(other instanceof SemVer)) other = new SemVer(other, this.options); + if (this.prerelease.length && !other.prerelease.length) return -1; + else if (!this.prerelease.length && other.prerelease.length) return 1; + else if (!this.prerelease.length && !other.prerelease.length) return 0; + let i = 0; + do { + const a = this.prerelease[i]; + const b = other.prerelease[i]; + debug("prerelease compare", i, a, b); + if (a === void 0 && b === void 0) return 0; + else if (b === void 0) return 1; + else if (a === void 0) return -1; + else if (a === b) continue; + else return compareIdentifiers(a, b); + } while (++i); + } + compareBuild(other) { + if (!(other instanceof SemVer)) other = new SemVer(other, this.options); + let i = 0; + do { + const a = this.build[i]; + const b = other.build[i]; + debug("build compare", i, a, b); + if (a === void 0 && b === void 0) return 0; + else if (b === void 0) return 1; + else if (a === void 0) return -1; + else if (a === b) continue; + else return compareIdentifiers(a, b); + } while (++i); + } + inc(release, identifier, identifierBase) { + if (release.startsWith("pre")) { + if (!identifier && identifierBase === false) throw new Error("invalid increment argument: identifier is empty"); + if (identifier) { + const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE]); + if (!match || match[1] !== identifier) throw new Error(`invalid identifier: ${identifier}`); + } + } + switch (release) { + case "premajor": + this.prerelease.length = 0; + this.patch = 0; + this.minor = 0; + this.major++; + this.inc("pre", identifier, identifierBase); + break; + case "preminor": + this.prerelease.length = 0; + this.patch = 0; + this.minor++; + this.inc("pre", identifier, identifierBase); + break; + case "prepatch": + this.prerelease.length = 0; + this.inc("patch", identifier, identifierBase); + this.inc("pre", identifier, identifierBase); + break; + case "prerelease": + if (this.prerelease.length === 0) this.inc("patch", identifier, identifierBase); + this.inc("pre", identifier, identifierBase); + break; + case "release": + if (this.prerelease.length === 0) throw new Error(`version ${this.raw} is not a prerelease`); + this.prerelease.length = 0; + break; + case "major": + if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) this.major++; + this.minor = 0; + this.patch = 0; + this.prerelease = []; + break; + case "minor": + if (this.patch !== 0 || this.prerelease.length === 0) this.minor++; + this.patch = 0; + this.prerelease = []; + break; + case "patch": + if (this.prerelease.length === 0) this.patch++; + this.prerelease = []; + break; + case "pre": { + const base = Number(identifierBase) ? 1 : 0; + if (this.prerelease.length === 0) this.prerelease = [base]; + else { + let i = this.prerelease.length; + while (--i >= 0) if (typeof this.prerelease[i] === "number") { + this.prerelease[i]++; + i = -2; + } + if (i === -1) { + if (identifier === this.prerelease.join(".") && identifierBase === false) throw new Error("invalid increment argument: identifier already exists"); + this.prerelease.push(base); + } + } + if (identifier) { + let prerelease = [identifier, base]; + if (identifierBase === false) prerelease = [identifier]; + if (compareIdentifiers(this.prerelease[0], identifier) === 0) { + if (isNaN(this.prerelease[1])) this.prerelease = prerelease; + } else this.prerelease = prerelease; + } + break; + } + default: throw new Error(`invalid increment argument: ${release}`); + } + this.raw = this.format(); + if (this.build.length) this.raw += `+${this.build.join(".")}`; + return this; + } + }; +})); +//#endregion +//#region node_modules/semver/functions/parse.js +var require_parse = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var SemVer = require_semver$1(); + var parse = (version, options, throwErrors = false) => { + if (version instanceof SemVer) return version; + try { + return new SemVer(version, options); + } catch (er) { + if (!throwErrors) return null; + throw er; + } + }; + module.exports = parse; +})); +//#endregion +//#region node_modules/semver/functions/valid.js +var require_valid$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var parse = require_parse(); + var valid = (version, options) => { + const v = parse(version, options); + return v ? v.version : null; + }; + module.exports = valid; +})); +//#endregion +//#region node_modules/semver/functions/clean.js +var require_clean = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var parse = require_parse(); + var clean = (version, options) => { + const s = parse(version.trim().replace(/^[=v]+/, ""), options); + return s ? s.version : null; + }; + module.exports = clean; +})); +//#endregion +//#region node_modules/semver/functions/inc.js +var require_inc = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var SemVer = require_semver$1(); + var inc = (version, release, options, identifier, identifierBase) => { + if (typeof options === "string") { + identifierBase = identifier; + identifier = options; + options = void 0; + } + try { + return new SemVer(version instanceof SemVer ? version.version : version, options).inc(release, identifier, identifierBase).version; + } catch (er) { + return null; + } + }; + module.exports = inc; +})); +//#endregion +//#region node_modules/semver/functions/diff.js +var require_diff = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var parse = require_parse(); + var diff = (version1, version2) => { + const v1 = parse(version1, null, true); + const v2 = parse(version2, null, true); + const comparison = v1.compare(v2); + if (comparison === 0) return null; + const v1Higher = comparison > 0; + const highVersion = v1Higher ? v1 : v2; + const lowVersion = v1Higher ? v2 : v1; + const highHasPre = !!highVersion.prerelease.length; + if (!!lowVersion.prerelease.length && !highHasPre) { + if (!lowVersion.patch && !lowVersion.minor) return "major"; + if (lowVersion.compareMain(highVersion) === 0) { + if (lowVersion.minor && !lowVersion.patch) return "minor"; + return "patch"; + } + } + const prefix = highHasPre ? "pre" : ""; + if (v1.major !== v2.major) return prefix + "major"; + if (v1.minor !== v2.minor) return prefix + "minor"; + if (v1.patch !== v2.patch) return prefix + "patch"; + return "prerelease"; + }; + module.exports = diff; +})); +//#endregion +//#region node_modules/semver/functions/major.js +var require_major = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var SemVer = require_semver$1(); + var major = (a, loose) => new SemVer(a, loose).major; + module.exports = major; +})); +//#endregion +//#region node_modules/semver/functions/minor.js +var require_minor = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var SemVer = require_semver$1(); + var minor = (a, loose) => new SemVer(a, loose).minor; + module.exports = minor; +})); +//#endregion +//#region node_modules/semver/functions/patch.js +var require_patch = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var SemVer = require_semver$1(); + var patch = (a, loose) => new SemVer(a, loose).patch; + module.exports = patch; +})); +//#endregion +//#region node_modules/semver/functions/prerelease.js +var require_prerelease = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var parse = require_parse(); + var prerelease = (version, options) => { + const parsed = parse(version, options); + return parsed && parsed.prerelease.length ? parsed.prerelease : null; + }; + module.exports = prerelease; +})); +//#endregion +//#region node_modules/semver/functions/compare.js +var require_compare = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var SemVer = require_semver$1(); + var compare = (a, b, loose) => new SemVer(a, loose).compare(new SemVer(b, loose)); + module.exports = compare; +})); +//#endregion +//#region node_modules/semver/functions/rcompare.js +var require_rcompare = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var compare = require_compare(); + var rcompare = (a, b, loose) => compare(b, a, loose); + module.exports = rcompare; +})); +//#endregion +//#region node_modules/semver/functions/compare-loose.js +var require_compare_loose = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var compare = require_compare(); + var compareLoose = (a, b) => compare(a, b, true); + module.exports = compareLoose; +})); +//#endregion +//#region node_modules/semver/functions/compare-build.js +var require_compare_build = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var SemVer = require_semver$1(); + var compareBuild = (a, b, loose) => { + const versionA = new SemVer(a, loose); + const versionB = new SemVer(b, loose); + return versionA.compare(versionB) || versionA.compareBuild(versionB); + }; + module.exports = compareBuild; +})); +//#endregion +//#region node_modules/semver/functions/sort.js +var require_sort = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var compareBuild = require_compare_build(); + var sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose)); + module.exports = sort; +})); +//#endregion +//#region node_modules/semver/functions/rsort.js +var require_rsort = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var compareBuild = require_compare_build(); + var rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose)); + module.exports = rsort; +})); +//#endregion +//#region node_modules/semver/functions/gt.js +var require_gt = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var compare = require_compare(); + var gt = (a, b, loose) => compare(a, b, loose) > 0; + module.exports = gt; +})); +//#endregion +//#region node_modules/semver/functions/lt.js +var require_lt = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var compare = require_compare(); + var lt = (a, b, loose) => compare(a, b, loose) < 0; + module.exports = lt; +})); +//#endregion +//#region node_modules/semver/functions/eq.js +var require_eq = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var compare = require_compare(); + var eq = (a, b, loose) => compare(a, b, loose) === 0; + module.exports = eq; +})); +//#endregion +//#region node_modules/semver/functions/neq.js +var require_neq = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var compare = require_compare(); + var neq = (a, b, loose) => compare(a, b, loose) !== 0; + module.exports = neq; +})); +//#endregion +//#region node_modules/semver/functions/gte.js +var require_gte = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var compare = require_compare(); + var gte = (a, b, loose) => compare(a, b, loose) >= 0; + module.exports = gte; +})); +//#endregion +//#region node_modules/semver/functions/lte.js +var require_lte = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var compare = require_compare(); + var lte = (a, b, loose) => compare(a, b, loose) <= 0; + module.exports = lte; +})); +//#endregion +//#region node_modules/semver/functions/cmp.js +var require_cmp = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var eq = require_eq(); + var neq = require_neq(); + var gt = require_gt(); + var gte = require_gte(); + var lt = require_lt(); + var lte = require_lte(); + var cmp = (a, op, b, loose) => { + switch (op) { + case "===": + if (typeof a === "object") a = a.version; + if (typeof b === "object") b = b.version; + return a === b; + case "!==": + if (typeof a === "object") a = a.version; + if (typeof b === "object") b = b.version; + return a !== b; + case "": + case "=": + case "==": return eq(a, b, loose); + case "!=": return neq(a, b, loose); + case ">": return gt(a, b, loose); + case ">=": return gte(a, b, loose); + case "<": return lt(a, b, loose); + case "<=": return lte(a, b, loose); + default: throw new TypeError(`Invalid operator: ${op}`); + } + }; + module.exports = cmp; +})); +//#endregion +//#region node_modules/semver/functions/coerce.js +var require_coerce = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var SemVer = require_semver$1(); + var parse = require_parse(); + var { safeRe: re, t } = require_re(); + var coerce = (version, options) => { + if (version instanceof SemVer) return version; + if (typeof version === "number") version = String(version); + if (typeof version !== "string") return null; + options = options || {}; + let match = null; + if (!options.rtl) match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE]); + else { + const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]; + let next; + while ((next = coerceRtlRegex.exec(version)) && (!match || match.index + match[0].length !== version.length)) { + if (!match || next.index + next[0].length !== match.index + match[0].length) match = next; + coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length; + } + coerceRtlRegex.lastIndex = -1; + } + if (match === null) return null; + const major = match[2]; + return parse(`${major}.${match[3] || "0"}.${match[4] || "0"}${options.includePrerelease && match[5] ? `-${match[5]}` : ""}${options.includePrerelease && match[6] ? `+${match[6]}` : ""}`, options); + }; + module.exports = coerce; +})); +//#endregion +//#region node_modules/semver/internal/lrucache.js +var require_lrucache = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var LRUCache = class { + constructor() { + this.max = 1e3; + this.map = /* @__PURE__ */ new Map(); + } + get(key) { + const value = this.map.get(key); + if (value === void 0) return; + else { + this.map.delete(key); + this.map.set(key, value); + return value; + } + } + delete(key) { + return this.map.delete(key); + } + set(key, value) { + if (!this.delete(key) && value !== void 0) { + if (this.map.size >= this.max) { + const firstKey = this.map.keys().next().value; + this.delete(firstKey); + } + this.map.set(key, value); + } + return this; + } + }; + module.exports = LRUCache; +})); +//#endregion +//#region node_modules/semver/classes/range.js +var require_range = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var SPACE_CHARACTERS = /\s+/g; + module.exports = class Range { + constructor(range, options) { + options = parseOptions(options); + if (range instanceof Range) if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) return range; + else return new Range(range.raw, options); + if (range instanceof Comparator) { + this.raw = range.value; + this.set = [[range]]; + this.formatted = void 0; + return this; + } + this.options = options; + this.loose = !!options.loose; + this.includePrerelease = !!options.includePrerelease; + this.raw = range.trim().replace(SPACE_CHARACTERS, " "); + this.set = this.raw.split("||").map((r) => this.parseRange(r.trim())).filter((c) => c.length); + if (!this.set.length) throw new TypeError(`Invalid SemVer Range: ${this.raw}`); + if (this.set.length > 1) { + const first = this.set[0]; + this.set = this.set.filter((c) => !isNullSet(c[0])); + if (this.set.length === 0) this.set = [first]; + else if (this.set.length > 1) { + for (const c of this.set) if (c.length === 1 && isAny(c[0])) { + this.set = [c]; + break; + } + } + } + this.formatted = void 0; + } + get range() { + if (this.formatted === void 0) { + this.formatted = ""; + for (let i = 0; i < this.set.length; i++) { + if (i > 0) this.formatted += "||"; + const comps = this.set[i]; + for (let k = 0; k < comps.length; k++) { + if (k > 0) this.formatted += " "; + this.formatted += comps[k].toString().trim(); + } + } + } + return this.formatted; + } + format() { + return this.range; + } + toString() { + return this.range; + } + parseRange(range) { + const memoKey = ((this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | (this.options.loose && FLAG_LOOSE)) + ":" + range; + const cached = cache.get(memoKey); + if (cached) return cached; + const loose = this.options.loose; + const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]; + range = range.replace(hr, hyphenReplace(this.options.includePrerelease)); + debug("hyphen replace", range); + range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace); + debug("comparator trim", range); + range = range.replace(re[t.TILDETRIM], tildeTrimReplace); + debug("tilde trim", range); + range = range.replace(re[t.CARETTRIM], caretTrimReplace); + debug("caret trim", range); + let rangeList = range.split(" ").map((comp) => parseComparator(comp, this.options)).join(" ").split(/\s+/).map((comp) => replaceGTE0(comp, this.options)); + if (loose) rangeList = rangeList.filter((comp) => { + debug("loose invalid filter", comp, this.options); + return !!comp.match(re[t.COMPARATORLOOSE]); + }); + debug("range list", rangeList); + const rangeMap = /* @__PURE__ */ new Map(); + const comparators = rangeList.map((comp) => new Comparator(comp, this.options)); + for (const comp of comparators) { + if (isNullSet(comp)) return [comp]; + rangeMap.set(comp.value, comp); + } + if (rangeMap.size > 1 && rangeMap.has("")) rangeMap.delete(""); + const result = [...rangeMap.values()]; + cache.set(memoKey, result); + return result; + } + intersects(range, options) { + if (!(range instanceof Range)) throw new TypeError("a Range is required"); + return this.set.some((thisComparators) => { + return isSatisfiable(thisComparators, options) && range.set.some((rangeComparators) => { + return isSatisfiable(rangeComparators, options) && thisComparators.every((thisComparator) => { + return rangeComparators.every((rangeComparator) => { + return thisComparator.intersects(rangeComparator, options); + }); + }); + }); + }); + } + test(version) { + if (!version) return false; + if (typeof version === "string") try { + version = new SemVer(version, this.options); + } catch (er) { + return false; + } + for (let i = 0; i < this.set.length; i++) if (testSet(this.set[i], version, this.options)) return true; + return false; + } + }; + var cache = new (require_lrucache())(); + var parseOptions = require_parse_options(); + var Comparator = require_comparator(); + var debug = require_debug(); + var SemVer = require_semver$1(); + var { safeRe: re, t, comparatorTrimReplace, tildeTrimReplace, caretTrimReplace } = require_re(); + var { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require_constants(); + var isNullSet = (c) => c.value === "<0.0.0-0"; + var isAny = (c) => c.value === ""; + var isSatisfiable = (comparators, options) => { + let result = true; + const remainingComparators = comparators.slice(); + let testComparator = remainingComparators.pop(); + while (result && remainingComparators.length) { + result = remainingComparators.every((otherComparator) => { + return testComparator.intersects(otherComparator, options); + }); + testComparator = remainingComparators.pop(); + } + return result; + }; + var parseComparator = (comp, options) => { + comp = comp.replace(re[t.BUILD], ""); + debug("comp", comp, options); + comp = replaceCarets(comp, options); + debug("caret", comp); + comp = replaceTildes(comp, options); + debug("tildes", comp); + comp = replaceXRanges(comp, options); + debug("xrange", comp); + comp = replaceStars(comp, options); + debug("stars", comp); + return comp; + }; + var isX = (id) => !id || id.toLowerCase() === "x" || id === "*"; + var replaceTildes = (comp, options) => { + return comp.trim().split(/\s+/).map((c) => replaceTilde(c, options)).join(" "); + }; + var replaceTilde = (comp, options) => { + const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]; + return comp.replace(r, (_, M, m, p, pr) => { + debug("tilde", comp, _, M, m, p, pr); + let ret; + if (isX(M)) ret = ""; + else if (isX(m)) ret = `>=${M}.0.0 <${+M + 1}.0.0-0`; + else if (isX(p)) ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`; + else if (pr) { + debug("replaceTilde pr", pr); + ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`; + } else ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`; + debug("tilde return", ret); + return ret; + }); + }; + var replaceCarets = (comp, options) => { + return comp.trim().split(/\s+/).map((c) => replaceCaret(c, options)).join(" "); + }; + var replaceCaret = (comp, options) => { + debug("caret", comp, options); + const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]; + const z = options.includePrerelease ? "-0" : ""; + return comp.replace(r, (_, M, m, p, pr) => { + debug("caret", comp, _, M, m, p, pr); + let ret; + if (isX(M)) ret = ""; + else if (isX(m)) ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`; + else if (isX(p)) if (M === "0") ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`; + else ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`; + else if (pr) { + debug("replaceCaret pr", pr); + if (M === "0") if (m === "0") ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`; + else ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`; + else ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`; + } else { + debug("no pr"); + if (M === "0") if (m === "0") ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`; + else ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`; + else ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`; + } + debug("caret return", ret); + return ret; + }); + }; + var replaceXRanges = (comp, options) => { + debug("replaceXRanges", comp, options); + return comp.split(/\s+/).map((c) => replaceXRange(c, options)).join(" "); + }; + var replaceXRange = (comp, options) => { + comp = comp.trim(); + const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]; + return comp.replace(r, (ret, gtlt, M, m, p, pr) => { + debug("xRange", comp, ret, gtlt, M, m, p, pr); + const xM = isX(M); + const xm = xM || isX(m); + const xp = xm || isX(p); + const anyX = xp; + if (gtlt === "=" && anyX) gtlt = ""; + pr = options.includePrerelease ? "-0" : ""; + if (xM) if (gtlt === ">" || gtlt === "<") ret = "<0.0.0-0"; + else ret = "*"; + else if (gtlt && anyX) { + if (xm) m = 0; + p = 0; + if (gtlt === ">") { + gtlt = ">="; + if (xm) { + M = +M + 1; + m = 0; + p = 0; + } else { + m = +m + 1; + p = 0; + } + } else if (gtlt === "<=") { + gtlt = "<"; + if (xm) M = +M + 1; + else m = +m + 1; + } + if (gtlt === "<") pr = "-0"; + ret = `${gtlt + M}.${m}.${p}${pr}`; + } else if (xm) ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`; + else if (xp) ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`; + debug("xRange return", ret); + return ret; + }); + }; + var replaceStars = (comp, options) => { + debug("replaceStars", comp, options); + return comp.trim().replace(re[t.STAR], ""); + }; + var replaceGTE0 = (comp, options) => { + debug("replaceGTE0", comp, options); + return comp.trim().replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], ""); + }; + var hyphenReplace = (incPr) => ($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => { + if (isX(fM)) from = ""; + else if (isX(fm)) from = `>=${fM}.0.0${incPr ? "-0" : ""}`; + else if (isX(fp)) from = `>=${fM}.${fm}.0${incPr ? "-0" : ""}`; + else if (fpr) from = `>=${from}`; + else from = `>=${from}${incPr ? "-0" : ""}`; + if (isX(tM)) to = ""; + else if (isX(tm)) to = `<${+tM + 1}.0.0-0`; + else if (isX(tp)) to = `<${tM}.${+tm + 1}.0-0`; + else if (tpr) to = `<=${tM}.${tm}.${tp}-${tpr}`; + else if (incPr) to = `<${tM}.${tm}.${+tp + 1}-0`; + else to = `<=${to}`; + return `${from} ${to}`.trim(); + }; + var testSet = (set, version, options) => { + for (let i = 0; i < set.length; i++) if (!set[i].test(version)) return false; + if (version.prerelease.length && !options.includePrerelease) { + for (let i = 0; i < set.length; i++) { + debug(set[i].semver); + if (set[i].semver === Comparator.ANY) continue; + if (set[i].semver.prerelease.length > 0) { + const allowed = set[i].semver; + if (allowed.major === version.major && allowed.minor === version.minor && allowed.patch === version.patch) return true; + } + } + return false; + } + return true; + }; +})); +//#endregion +//#region node_modules/semver/classes/comparator.js +var require_comparator = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var ANY = Symbol("SemVer ANY"); + module.exports = class Comparator { + static get ANY() { + return ANY; + } + constructor(comp, options) { + options = parseOptions(options); + if (comp instanceof Comparator) if (comp.loose === !!options.loose) return comp; + else comp = comp.value; + comp = comp.trim().split(/\s+/).join(" "); + debug("comparator", comp, options); + this.options = options; + this.loose = !!options.loose; + this.parse(comp); + if (this.semver === ANY) this.value = ""; + else this.value = this.operator + this.semver.version; + debug("comp", this); + } + parse(comp) { + const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]; + const m = comp.match(r); + if (!m) throw new TypeError(`Invalid comparator: ${comp}`); + this.operator = m[1] !== void 0 ? m[1] : ""; + if (this.operator === "=") this.operator = ""; + if (!m[2]) this.semver = ANY; + else this.semver = new SemVer(m[2], this.options.loose); + } + toString() { + return this.value; + } + test(version) { + debug("Comparator.test", version, this.options.loose); + if (this.semver === ANY || version === ANY) return true; + if (typeof version === "string") try { + version = new SemVer(version, this.options); + } catch (er) { + return false; + } + return cmp(version, this.operator, this.semver, this.options); + } + intersects(comp, options) { + if (!(comp instanceof Comparator)) throw new TypeError("a Comparator is required"); + if (this.operator === "") { + if (this.value === "") return true; + return new Range(comp.value, options).test(this.value); + } else if (comp.operator === "") { + if (comp.value === "") return true; + return new Range(this.value, options).test(comp.semver); + } + options = parseOptions(options); + if (options.includePrerelease && (this.value === "<0.0.0-0" || comp.value === "<0.0.0-0")) return false; + if (!options.includePrerelease && (this.value.startsWith("<0.0.0") || comp.value.startsWith("<0.0.0"))) return false; + if (this.operator.startsWith(">") && comp.operator.startsWith(">")) return true; + if (this.operator.startsWith("<") && comp.operator.startsWith("<")) return true; + if (this.semver.version === comp.semver.version && this.operator.includes("=") && comp.operator.includes("=")) return true; + if (cmp(this.semver, "<", comp.semver, options) && this.operator.startsWith(">") && comp.operator.startsWith("<")) return true; + if (cmp(this.semver, ">", comp.semver, options) && this.operator.startsWith("<") && comp.operator.startsWith(">")) return true; + return false; + } + }; + var parseOptions = require_parse_options(); + var { safeRe: re, t } = require_re(); + var cmp = require_cmp(); + var debug = require_debug(); + var SemVer = require_semver$1(); + var Range = require_range(); +})); +//#endregion +//#region node_modules/semver/functions/satisfies.js +var require_satisfies = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var Range = require_range(); + var satisfies = (version, range, options) => { + try { + range = new Range(range, options); + } catch (er) { + return false; + } + return range.test(version); + }; + module.exports = satisfies; +})); +//#endregion +//#region node_modules/semver/ranges/to-comparators.js +var require_to_comparators = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var Range = require_range(); + var toComparators = (range, options) => new Range(range, options).set.map((comp) => comp.map((c) => c.value).join(" ").trim().split(" ")); + module.exports = toComparators; +})); +//#endregion +//#region node_modules/semver/ranges/max-satisfying.js +var require_max_satisfying = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var SemVer = require_semver$1(); + var Range = require_range(); + var maxSatisfying = (versions, range, options) => { + let max = null; + let maxSV = null; + let rangeObj = null; + try { + rangeObj = new Range(range, options); + } catch (er) { + return null; + } + versions.forEach((v) => { + if (rangeObj.test(v)) { + if (!max || maxSV.compare(v) === -1) { + max = v; + maxSV = new SemVer(max, options); + } + } + }); + return max; + }; + module.exports = maxSatisfying; +})); +//#endregion +//#region node_modules/semver/ranges/min-satisfying.js +var require_min_satisfying = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var SemVer = require_semver$1(); + var Range = require_range(); + var minSatisfying = (versions, range, options) => { + let min = null; + let minSV = null; + let rangeObj = null; + try { + rangeObj = new Range(range, options); + } catch (er) { + return null; + } + versions.forEach((v) => { + if (rangeObj.test(v)) { + if (!min || minSV.compare(v) === 1) { + min = v; + minSV = new SemVer(min, options); + } + } + }); + return min; + }; + module.exports = minSatisfying; +})); +//#endregion +//#region node_modules/semver/ranges/min-version.js +var require_min_version = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var SemVer = require_semver$1(); + var Range = require_range(); + var gt = require_gt(); + var minVersion = (range, loose) => { + range = new Range(range, loose); + let minver = new SemVer("0.0.0"); + if (range.test(minver)) return minver; + minver = new SemVer("0.0.0-0"); + if (range.test(minver)) return minver; + minver = null; + for (let i = 0; i < range.set.length; ++i) { + const comparators = range.set[i]; + let setMin = null; + comparators.forEach((comparator) => { + const compver = new SemVer(comparator.semver.version); + switch (comparator.operator) { + case ">": + if (compver.prerelease.length === 0) compver.patch++; + else compver.prerelease.push(0); + compver.raw = compver.format(); + case "": + case ">=": + if (!setMin || gt(compver, setMin)) setMin = compver; + break; + case "<": + case "<=": break; + default: throw new Error(`Unexpected operation: ${comparator.operator}`); + } + }); + if (setMin && (!minver || gt(minver, setMin))) minver = setMin; + } + if (minver && range.test(minver)) return minver; + return null; + }; + module.exports = minVersion; +})); +//#endregion +//#region node_modules/semver/ranges/valid.js +var require_valid = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var Range = require_range(); + var validRange = (range, options) => { + try { + return new Range(range, options).range || "*"; + } catch (er) { + return null; + } + }; + module.exports = validRange; +})); +//#endregion +//#region node_modules/semver/ranges/outside.js +var require_outside = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var SemVer = require_semver$1(); + var Comparator = require_comparator(); + var { ANY } = Comparator; + var Range = require_range(); + var satisfies = require_satisfies(); + var gt = require_gt(); + var lt = require_lt(); + var lte = require_lte(); + var gte = require_gte(); + var outside = (version, range, hilo, options) => { + version = new SemVer(version, options); + range = new Range(range, options); + let gtfn, ltefn, ltfn, comp, ecomp; + switch (hilo) { + case ">": + gtfn = gt; + ltefn = lte; + ltfn = lt; + comp = ">"; + ecomp = ">="; + break; + case "<": + gtfn = lt; + ltefn = gte; + ltfn = gt; + comp = "<"; + ecomp = "<="; + break; + default: throw new TypeError("Must provide a hilo val of \"<\" or \">\""); + } + if (satisfies(version, range, options)) return false; + for (let i = 0; i < range.set.length; ++i) { + const comparators = range.set[i]; + let high = null; + let low = null; + comparators.forEach((comparator) => { + if (comparator.semver === ANY) comparator = new Comparator(">=0.0.0"); + high = high || comparator; + low = low || comparator; + if (gtfn(comparator.semver, high.semver, options)) high = comparator; + else if (ltfn(comparator.semver, low.semver, options)) low = comparator; + }); + if (high.operator === comp || high.operator === ecomp) return false; + if ((!low.operator || low.operator === comp) && ltefn(version, low.semver)) return false; + else if (low.operator === ecomp && ltfn(version, low.semver)) return false; + } + return true; + }; + module.exports = outside; +})); +//#endregion +//#region node_modules/semver/ranges/gtr.js +var require_gtr = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var outside = require_outside(); + var gtr = (version, range, options) => outside(version, range, ">", options); + module.exports = gtr; +})); +//#endregion +//#region node_modules/semver/ranges/ltr.js +var require_ltr = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var outside = require_outside(); + var ltr = (version, range, options) => outside(version, range, "<", options); + module.exports = ltr; +})); +//#endregion +//#region node_modules/semver/ranges/intersects.js +var require_intersects = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var Range = require_range(); + var intersects = (r1, r2, options) => { + r1 = new Range(r1, options); + r2 = new Range(r2, options); + return r1.intersects(r2, options); + }; + module.exports = intersects; +})); +//#endregion +//#region node_modules/semver/ranges/simplify.js +var require_simplify = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var satisfies = require_satisfies(); + var compare = require_compare(); + module.exports = (versions, range, options) => { + const set = []; + let first = null; + let prev = null; + const v = versions.sort((a, b) => compare(a, b, options)); + for (const version of v) if (satisfies(version, range, options)) { + prev = version; + if (!first) first = version; + } else { + if (prev) set.push([first, prev]); + prev = null; + first = null; + } + if (first) set.push([first, null]); + const ranges = []; + for (const [min, max] of set) if (min === max) ranges.push(min); + else if (!max && min === v[0]) ranges.push("*"); + else if (!max) ranges.push(`>=${min}`); + else if (min === v[0]) ranges.push(`<=${max}`); + else ranges.push(`${min} - ${max}`); + const simplified = ranges.join(" || "); + const original = typeof range.raw === "string" ? range.raw : String(range); + return simplified.length < original.length ? simplified : range; + }; +})); +//#endregion +//#region node_modules/semver/ranges/subset.js +var require_subset = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var Range = require_range(); + var Comparator = require_comparator(); + var { ANY } = Comparator; + var satisfies = require_satisfies(); + var compare = require_compare(); + var subset = (sub, dom, options = {}) => { + if (sub === dom) return true; + sub = new Range(sub, options); + dom = new Range(dom, options); + let sawNonNull = false; + OUTER: for (const simpleSub of sub.set) { + for (const simpleDom of dom.set) { + const isSub = simpleSubset(simpleSub, simpleDom, options); + sawNonNull = sawNonNull || isSub !== null; + if (isSub) continue OUTER; + } + if (sawNonNull) return false; + } + return true; + }; + var minimumVersionWithPreRelease = [new Comparator(">=0.0.0-0")]; + var minimumVersion = [new Comparator(">=0.0.0")]; + var simpleSubset = (sub, dom, options) => { + if (sub === dom) return true; + if (sub.length === 1 && sub[0].semver === ANY) if (dom.length === 1 && dom[0].semver === ANY) return true; + else if (options.includePrerelease) sub = minimumVersionWithPreRelease; + else sub = minimumVersion; + if (dom.length === 1 && dom[0].semver === ANY) if (options.includePrerelease) return true; + else dom = minimumVersion; + const eqSet = /* @__PURE__ */ new Set(); + let gt, lt; + for (const c of sub) if (c.operator === ">" || c.operator === ">=") gt = higherGT(gt, c, options); + else if (c.operator === "<" || c.operator === "<=") lt = lowerLT(lt, c, options); + else eqSet.add(c.semver); + if (eqSet.size > 1) return null; + let gtltComp; + if (gt && lt) { + gtltComp = compare(gt.semver, lt.semver, options); + if (gtltComp > 0) return null; + else if (gtltComp === 0 && (gt.operator !== ">=" || lt.operator !== "<=")) return null; + } + for (const eq of eqSet) { + if (gt && !satisfies(eq, String(gt), options)) return null; + if (lt && !satisfies(eq, String(lt), options)) return null; + for (const c of dom) if (!satisfies(eq, String(c), options)) return false; + return true; + } + let higher, lower; + let hasDomLT, hasDomGT; + let needDomLTPre = lt && !options.includePrerelease && lt.semver.prerelease.length ? lt.semver : false; + let needDomGTPre = gt && !options.includePrerelease && gt.semver.prerelease.length ? gt.semver : false; + if (needDomLTPre && needDomLTPre.prerelease.length === 1 && lt.operator === "<" && needDomLTPre.prerelease[0] === 0) needDomLTPre = false; + for (const c of dom) { + hasDomGT = hasDomGT || c.operator === ">" || c.operator === ">="; + hasDomLT = hasDomLT || c.operator === "<" || c.operator === "<="; + if (gt) { + if (needDomGTPre) { + if (c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomGTPre.major && c.semver.minor === needDomGTPre.minor && c.semver.patch === needDomGTPre.patch) needDomGTPre = false; + } + if (c.operator === ">" || c.operator === ">=") { + higher = higherGT(gt, c, options); + if (higher === c && higher !== gt) return false; + } else if (gt.operator === ">=" && !satisfies(gt.semver, String(c), options)) return false; + } + if (lt) { + if (needDomLTPre) { + if (c.semver.prerelease && c.semver.prerelease.length && c.semver.major === needDomLTPre.major && c.semver.minor === needDomLTPre.minor && c.semver.patch === needDomLTPre.patch) needDomLTPre = false; + } + if (c.operator === "<" || c.operator === "<=") { + lower = lowerLT(lt, c, options); + if (lower === c && lower !== lt) return false; + } else if (lt.operator === "<=" && !satisfies(lt.semver, String(c), options)) return false; + } + if (!c.operator && (lt || gt) && gtltComp !== 0) return false; + } + if (gt && hasDomLT && !lt && gtltComp !== 0) return false; + if (lt && hasDomGT && !gt && gtltComp !== 0) return false; + if (needDomGTPre || needDomLTPre) return false; + return true; + }; + var higherGT = (a, b, options) => { + if (!a) return b; + const comp = compare(a.semver, b.semver, options); + return comp > 0 ? a : comp < 0 ? b : b.operator === ">" && a.operator === ">=" ? b : a; + }; + var lowerLT = (a, b, options) => { + if (!a) return b; + const comp = compare(a.semver, b.semver, options); + return comp < 0 ? a : comp > 0 ? b : b.operator === "<" && a.operator === "<=" ? b : a; + }; + module.exports = subset; +})); +//#endregion +//#region node_modules/semver/index.js +var require_semver = /* @__PURE__ */ __commonJSMin(((exports, module) => { + var internalRe = require_re(); + var constants = require_constants(); + var SemVer = require_semver$1(); + var identifiers = require_identifiers(); + module.exports = { + parse: require_parse(), + valid: require_valid$1(), + clean: require_clean(), + inc: require_inc(), + diff: require_diff(), + major: require_major(), + minor: require_minor(), + patch: require_patch(), + prerelease: require_prerelease(), + compare: require_compare(), + rcompare: require_rcompare(), + compareLoose: require_compare_loose(), + compareBuild: require_compare_build(), + sort: require_sort(), + rsort: require_rsort(), + gt: require_gt(), + lt: require_lt(), + eq: require_eq(), + neq: require_neq(), + gte: require_gte(), + lte: require_lte(), + cmp: require_cmp(), + coerce: require_coerce(), + Comparator: require_comparator(), + Range: require_range(), + satisfies: require_satisfies(), + toComparators: require_to_comparators(), + maxSatisfying: require_max_satisfying(), + minSatisfying: require_min_satisfying(), + minVersion: require_min_version(), + validRange: require_valid(), + outside: require_outside(), + gtr: require_gtr(), + ltr: require_ltr(), + intersects: require_intersects(), + simplifyRange: require_simplify(), + subset: require_subset(), + SemVer, + re: internalRe.re, + src: internalRe.src, + tokens: internalRe.t, + SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION, + RELEASE_TYPES: constants.RELEASE_TYPES, + compareIdentifiers: identifiers.compareIdentifiers, + rcompareIdentifiers: identifiers.rcompareIdentifiers + }; +})); +//#endregion +//#region src/agents/common/lookPath.ts +/** +* Sometimes, people want to look for local executable files +* which are specified with either relative or absolute file path. +* @private +* @param cmd +* @return {string} An absolute path of given command, or undefined. +*/ +var isFilePath = (cmd) => { + return cmd.includes(path.sep) ? path.resolve(cmd) : void 0; }; -const access = async (filePath) => { - try { - await fs.access(filePath); - return filePath; - } catch (_error) { - return void 0; - } +/** +* Just promisifies "fs.access" +* @private +* @param {string} filePath An absolute file path with an applicable extension appended. +* @return {Promise} Resolves absolute path or empty string. +*/ +var access = async (filePath) => { + try { + await fs.access(filePath); + return filePath; + } catch (_error) { + return; + } }; -const isExecutable = async (absPath, options = {}) => { - const envVars = options.env || process.env; - const extension = (envVars.PATHEXT || "").split(path.delimiter).concat(""); - const bins = await Promise.all(extension.map(async (ext) => access(absPath + ext.toLowerCase()))); - return bins.find((bin) => !!bin); +/** +* Resolves if the given file is executable or not, regarding "PATHEXT" to be applied. +* @private +* @param {string} absPath A file path to be checked. +* @param {LookPathOption} options Options for lookPath. +* @return {Promise} Resolves the absolute file path just checked, or undefined. +*/ +var isExecutable = async (absPath, options = {}) => { + const extension = ((options.env || process$1.env).PATHEXT || "").split(path.delimiter).concat(""); + return (await Promise.all(extension.map(async (ext) => access(absPath + ext.toLowerCase())))).find((bin) => !!bin); }; -const getDirsToWalkThrough = (options) => { - const envVars = options.env || process.env; - const envName = process.platform === "win32" ? "Path" : "PATH"; - const envPath = envVars[envName] || ""; - return envPath.split(path.delimiter).concat(options.include || []).filter((p) => !(options.exclude || []).includes(p)); +/** +* Returns a list of directories on which the target command should be looked for. +* @private +* @param {string[]} options.include Will be added to "PATH" env. +* @param {string[]} options.exclude Will be filtered from "PATH" env. +* @return {string[]} Directories to dig into. +*/ +var getDirsToWalkThrough = (options) => { + return ((options.env || process$1.env)[process$1.platform === "win32" ? "Path" : "PATH"] || "").split(path.delimiter).concat(options.include || []).filter((p) => !(options.exclude || []).includes(p)); }; +/** +* Returns async promise with absolute file path of given command, +* and resolves with undefined if the command not found. +* @param {string} command Command name to look for. +* @param {LookPathOption} opt Options for lookPath. +* @return {Promise} Resolves absolute file path, or undefined if not found. +*/ async function lookPath(command, opt = {}) { - const directPath = isFilePath(command); - if (directPath) return isExecutable(directPath, opt); - const dirs = getDirsToWalkThrough(opt); - const bins = await Promise.all(dirs.map(async (dir) => isExecutable(path.join(dir, command), opt))); - return bins.find((bin) => !!bin); -} - -class BuildAgentBase { - get sourceDir() { - return this.getVariableAsPath(this.sourceDirVariable)?.replace(/\\/g, "/"); - } - get tempDir() { - return this.getVariableAsPath(this.tempDirVariable); - } - get cacheDir() { - return this.getVariableAsPath(this.cacheDirVariable); - } - addPath(inputPath) { - const envName = process.platform === "win32" ? "Path" : "PATH"; - const newPath = inputPath + path.delimiter + process.env[envName]; - this.debug(`new Path: ${newPath}`); - process.env[envName] = newPath; - process.env.Path = newPath; - this.info(`Updated PATH: ${process.env[envName]}`); - } - getInput(input, required) { - const inputProp = input.replace(/ /g, "_").toUpperCase(); - const val = this.getVariable(`INPUT_${inputProp}`); - if (required && !val) { - throw new Error(`Input required and not supplied: ${inputProp}`); - } - return val.trim(); - } - getBooleanInput(input, required) { - const inputValue = this.getInput(input, required); - return (inputValue || "false").toLowerCase() === "true"; - } - getDelimitedInput(input, delimiter, required) { - return this.getInput(input, required).split(delimiter).filter((x) => { - if (x) { - return x.trim(); - } - }); - } - getListInput(input, required) { - return this.getDelimitedInput(input, "\n", required); - } - getVariable(name) { - const value = (process.env[name] || "").trim(); - this.debug(`getVariable - ${name}: ${value}`); - return value.trim(); - } - getVariableAsPath(name) { - return path.resolve(path.normalize(this.getVariable(name))); - } - /** - * Replaces environment variable references in a string with their values. - * Supports both $VAR and ${VAR} formats. - * Ignores invalid patterns like ${} or non-existing variables (replaced with empty string). - * - * @param pattern - The input string containing env variable placeholders. - * @returns The string with env variables expanded. - */ - getExpandedString(pattern) { - const expanded = pattern.replace(/\$([a-zA-Z_][a-zA-Z0-9_]*|{([a-zA-Z_][a-zA-Z0-9_]*)})/g, (_, whole, braced) => { - const name = braced ?? whole; - const value = process.env[name.toUpperCase()]; - return value !== void 0 ? value : ""; - }); - this.debug(`getExpandedString - ${pattern}: ${expanded}`); - return expanded; - } - async directoryExists(dir) { - try { - await fs.access(dir); - return (await fs.stat(dir)).isDirectory(); - } catch (_error) { - return false; - } - } - async removeDirectory(dir) { - await fs.rm(dir, { recursive: true, force: true, maxRetries: 3, retryDelay: 1e3 }); - } - async fileExists(file) { - try { - await fs.access(file); - return (await fs.stat(file)).isFile(); - } catch (_error) { - return false; - } - } - async cacheToolDirectory(sourceDir, tool, version) { - if (!tool) { - throw new Error("tool is a required parameter"); - } - if (!version) { - throw new Error("version is a required parameter"); - } - if (!sourceDir) { - throw new Error("sourceDir is a required parameter"); - } - const cacheRoot = this.cacheDir; - if (!cacheRoot) { - this.debug("cache root not set"); - return ""; - } - version = semverExports.clean(version) || version; - const destPath = path.join(cacheRoot, tool, version); - if (await this.directoryExists(destPath)) { - this.debug(`Destination directory ${destPath} already exists, removing`); - await this.removeDirectory(destPath); - } - this.debug(`Copying ${sourceDir} to ${destPath}`); - await fs.mkdir(destPath, { recursive: true }); - await fs.cp(sourceDir, destPath, { recursive: true, force: true }); - this.debug(`Caching ${tool}@${version} from ${sourceDir}`); - return destPath; - } - async findLocalTool(toolName, versionSpec) { - if (!toolName) { - throw new Error("toolName is a required parameter"); - } - if (!versionSpec) { - throw new Error("versionSpec is a required parameter"); - } - const cacheRoot = this.cacheDir; - if (!cacheRoot) { - this.debug("cache root not set"); - return null; - } - versionSpec = semverExports.clean(versionSpec) || versionSpec; - this.info(`Looking for local tool ${toolName}@${versionSpec}`); - const toolPath = path.join(cacheRoot, toolName, versionSpec); - if (!await this.directoryExists(toolPath)) { - this.info(`Directory ${toolPath} not found`); - return null; - } else { - this.info(`Found tool ${toolName}@${versionSpec} at ${toolPath}`); - } - return toolPath; - } - async exec(cmd, args) { - const exec$1 = util.promisify(exec); - try { - const commandOptions = { maxBuffer: 1024 * 1024 * 10 }; - const { stdout, stderr } = await exec$1(`${cmd} ${args.join(" ")}`, commandOptions); - return { - code: 0, - error: null, - stderr, - stdout - }; - } catch (e) { - const error = e; - return { - code: error.code, - error, - stderr: error.stderr, - stdout: error.stdout - }; - } - } - async which(tool, _check) { - this.debug(`looking for tool '${tool}' in PATH`); - let toolPath = await lookPath(tool); - if (toolPath) { - toolPath = path.resolve(toolPath); - this.debug(`found tool '${tool}' in PATH: ${toolPath}`); - return toolPath; - } - throw new Error(`Unable to locate executable file: ${tool}`); - } + const directPath = isFilePath(command); + if (directPath) return isExecutable(directPath, opt); + const dirs = getDirsToWalkThrough(opt); + return (await Promise.all(dirs.map(async (dir) => isExecutable(path.join(dir, command), opt)))).find((bin) => !!bin); } +//#endregion +//#region src/agents/common/build-agent.ts +var import_semver = /* @__PURE__ */ __toESM(require_semver(), 1); +var BuildAgentBase = class { + get sourceDir() { + return this.getVariableAsPath(this.sourceDirVariable)?.replace(/\\/g, "/"); + } + get tempDir() { + return this.getVariableAsPath(this.tempDirVariable); + } + get cacheDir() { + return this.getVariableAsPath(this.cacheDirVariable); + } + addPath(inputPath) { + const envName = process$1.platform === "win32" ? "Path" : "PATH"; + const newPath = inputPath + path.delimiter + process$1.env[envName]; + this.debug(`new Path: ${newPath}`); + process$1.env[envName] = newPath; + process$1.env.Path = newPath; + this.info(`Updated PATH: ${process$1.env[envName]}`); + } + getInput(input, required) { + const inputProp = input.replace(/ /g, "_").toUpperCase(); + const val = this.getVariable(`INPUT_${inputProp}`); + if (required && !val) throw new Error(`Input required and not supplied: ${inputProp}`); + return val.trim(); + } + getBooleanInput(input, required) { + return (this.getInput(input, required) || "false").toLowerCase() === "true"; + } + getDelimitedInput(input, delimiter, required) { + return this.getInput(input, required).split(delimiter).filter((x) => { + if (x) return x.trim(); + }); + } + getListInput(input, required) { + return this.getDelimitedInput(input, "\n", required); + } + getVariable(name) { + const value = (process$1.env[name] || "").trim(); + this.debug(`getVariable - ${name}: ${value}`); + return value.trim(); + } + getVariableAsPath(name) { + return path.resolve(path.normalize(this.getVariable(name))); + } + /** + * Replaces environment variable references in a string with their values. + * Supports both $VAR and ${VAR} formats. + * Ignores invalid patterns like ${} or non-existing variables (replaced with empty string). + * + * @param pattern - The input string containing env variable placeholders. + * @returns The string with env variables expanded. + */ + getExpandedString(pattern) { + const expanded = pattern.replace(/\$([a-zA-Z_][a-zA-Z0-9_]*|{([a-zA-Z_][a-zA-Z0-9_]*)})/g, (_, whole, braced) => { + const name = braced ?? whole; + const value = process$1.env[name.toUpperCase()]; + return value !== void 0 ? value : ""; + }); + this.debug(`getExpandedString - ${pattern}: ${expanded}`); + return expanded; + } + async directoryExists(dir) { + try { + await fs.access(dir); + return (await fs.stat(dir)).isDirectory(); + } catch (_error) { + return false; + } + } + async removeDirectory(dir) { + await fs.rm(dir, { + recursive: true, + force: true, + maxRetries: 3, + retryDelay: 1e3 + }); + } + async fileExists(file) { + try { + await fs.access(file); + return (await fs.stat(file)).isFile(); + } catch (_error) { + return false; + } + } + async cacheToolDirectory(sourceDir, tool, version) { + if (!tool) throw new Error("tool is a required parameter"); + if (!version) throw new Error("version is a required parameter"); + if (!sourceDir) throw new Error("sourceDir is a required parameter"); + const cacheRoot = this.cacheDir; + if (!cacheRoot) { + this.debug("cache root not set"); + return ""; + } + version = import_semver.clean(version) || version; + const destPath = path.join(cacheRoot, tool, version); + if (await this.directoryExists(destPath)) { + this.debug(`Destination directory ${destPath} already exists, removing`); + await this.removeDirectory(destPath); + } + this.debug(`Copying ${sourceDir} to ${destPath}`); + await fs.mkdir(destPath, { recursive: true }); + await fs.cp(sourceDir, destPath, { + recursive: true, + force: true + }); + this.debug(`Caching ${tool}@${version} from ${sourceDir}`); + return destPath; + } + async findLocalTool(toolName, versionSpec) { + if (!toolName) throw new Error("toolName is a required parameter"); + if (!versionSpec) throw new Error("versionSpec is a required parameter"); + const cacheRoot = this.cacheDir; + if (!cacheRoot) { + this.debug("cache root not set"); + return null; + } + versionSpec = import_semver.clean(versionSpec) || versionSpec; + this.info(`Looking for local tool ${toolName}@${versionSpec}`); + const toolPath = path.join(cacheRoot, toolName, versionSpec); + if (!await this.directoryExists(toolPath)) { + this.info(`Directory ${toolPath} not found`); + return null; + } else this.info(`Found tool ${toolName}@${versionSpec} at ${toolPath}`); + return toolPath; + } + async exec(cmd, args) { + const exec$1 = util.promisify(exec); + try { + const { stdout, stderr } = await exec$1(`${cmd} ${args.join(" ")}`, { maxBuffer: 1024 * 1024 * 10 }); + return { + code: 0, + error: null, + stderr, + stdout + }; + } catch (e) { + const error = e; + return { + code: error.code, + error, + stderr: error.stderr, + stdout: error.stdout + }; + } + } + async which(tool, _check) { + this.debug(`looking for tool '${tool}' in PATH`); + let toolPath = await lookPath(tool); + if (toolPath) { + toolPath = path.resolve(toolPath); + this.debug(`found tool '${tool}' in PATH: ${toolPath}`); + return toolPath; + } + throw new Error(`Unable to locate executable file: ${tool}`); + } +}; +//#endregion +export { BuildAgentBase as t }; -export { BuildAgentBase as B }; -//# sourceMappingURL=agents.mjs.map +//# sourceMappingURL=agents.mjs.map \ No newline at end of file diff --git a/dist/tools/libs/agents.mjs.map b/dist/tools/libs/agents.mjs.map index b06736a01..61a058d8e 100644 --- a/dist/tools/libs/agents.mjs.map +++ b/dist/tools/libs/agents.mjs.map @@ -1 +1 @@ -{"version":3,"file":"agents.mjs","sources":["../../../src/agents/common/lookPath.ts","../../../src/agents/common/build-agent.ts"],"sourcesContent":["import * as fs from 'node:fs/promises'\nimport * as path from 'node:path'\nimport * as process from 'node:process'\n\n/**\n * Sometimes, people want to look for local executable files\n * which are specified with either relative or absolute file path.\n * @private\n * @param cmd\n * @return {string} An absolute path of given command, or undefined.\n */\nconst isFilePath = (cmd: string): string | undefined => {\n return cmd.includes(path.sep) ? path.resolve(cmd) : undefined\n}\n\n/**\n * Just promisifies \"fs.access\"\n * @private\n * @param {string} filePath An absolute file path with an applicable extension appended.\n * @return {Promise} Resolves absolute path or empty string.\n */\nconst access = async (filePath: string): Promise => {\n try {\n await fs.access(filePath)\n return filePath\n } catch (_error) {\n return undefined\n }\n}\n\n/**\n * Resolves if the given file is executable or not, regarding \"PATHEXT\" to be applied.\n * @private\n * @param {string} absPath A file path to be checked.\n * @param {LookPathOption} options Options for lookPath.\n * @return {Promise} Resolves the absolute file path just checked, or undefined.\n */\nconst isExecutable = async (absPath: string, options: LookPathOption = {}): Promise => {\n const envVars = options.env || process.env\n const extension = (envVars.PATHEXT || '').split(path.delimiter).concat('')\n const bins = await Promise.all(extension.map(async ext => access(absPath + ext.toLowerCase())))\n return bins.find(bin => !!bin)\n}\n\n/**\n * Returns a list of directories on which the target command should be looked for.\n * @private\n * @param {string[]} options.include Will be added to \"PATH\" env.\n * @param {string[]} options.exclude Will be filtered from \"PATH\" env.\n * @return {string[]} Directories to dig into.\n */\nconst getDirsToWalkThrough = (options: LookPathOption): string[] => {\n const envVars = options.env || process.env\n const envName = process.platform === 'win32' ? 'Path' : 'PATH'\n const envPath = envVars[envName] || ''\n return envPath\n .split(path.delimiter)\n .concat(options.include || [])\n .filter(p => !(options.exclude || []).includes(p))\n}\n\n/**\n * Returns async promise with absolute file path of given command,\n * and resolves with undefined if the command not found.\n * @param {string} command Command name to look for.\n * @param {LookPathOption} opt Options for lookPath.\n * @return {Promise} Resolves absolute file path, or undefined if not found.\n */\nexport async function lookPath(command: string, opt: LookPathOption = {}): Promise {\n const directPath = isFilePath(command)\n if (directPath) return isExecutable(directPath, opt)\n\n const dirs = getDirsToWalkThrough(opt)\n const bins = await Promise.all(dirs.map(async dir => isExecutable(path.join(dir, command), opt)))\n return bins.find(bin => !!bin)\n}\n\n/**\n * Options for lookPath.\n */\nexport interface LookPathOption {\n /**\n * Additional paths to look for, would be dealt same as PATH env.\n * Example: ['/tmp/bin', 'usr/local/bin']\n */\n include?: string[]\n /**\n * Paths to exclude to look for.\n * Example: ['/mnt']\n */\n exclude?: string[]\n /**\n * Set of env var to be used ON BEHALF OF the existing env of your runtime.\n * If `include` or `exclude` are given, they will be applied to this env set.\n */\n env?: NodeJS.ProcessEnv\n}\n","import { exec as execNonPromise, ExecOptions } from 'node:child_process'\nimport * as fs from 'node:fs/promises'\nimport * as process from 'node:process'\nimport * as path from 'node:path'\nimport * as util from 'node:util'\nimport * as semver from 'semver'\nimport { lookPath } from './lookPath'\nimport { type ExecResult } from './models'\n\nexport interface IBuildAgent {\n agentName: string\n sourceDirVariable: string\n tempDirVariable: string\n cacheDirVariable: string\n\n sourceDir: string\n tempDir: string\n cacheDir: string\n\n addPath(inputPath: string): void\n\n debug(message: string): void\n\n info(message: string): void\n\n warn(message: string): void\n\n error(message: string): void\n\n exec(exec: string, args: string[]): Promise\n\n cacheToolDirectory(sourceDir: string, tool: string, version: string): Promise\n\n directoryExists(dir: string): Promise\n\n removeDirectory(dir: string): Promise\n\n fileExists(file: string): Promise\n\n findLocalTool(toolName: string, versionSpec: string): Promise\n\n getInput(input: string, required?: boolean): string\n\n getInput(input: Extract, required?: boolean): string\n\n getBooleanInput(input: Extract, required?: boolean): boolean\n\n getDelimitedInput(input: Extract, delimiter: string, required?: boolean): string[]\n\n getListInput(input: Extract, required?: boolean): string[]\n\n setSucceeded(message: string, done?: boolean): void\n\n setFailed(message: string, done?: boolean): void\n\n setOutput(name: string, value: string | undefined): void\n\n getVariable(name: string): string | undefined\n\n getVariableAsPath(name: string): string\n\n getExpandedString(pattern: string): string\n\n setVariable(name: string, value: string | undefined): void\n\n updateBuildNumber: (version: string) => void\n\n which(tool: string, check?: boolean): Promise\n}\n\nexport abstract class BuildAgentBase implements IBuildAgent {\n abstract agentName: string\n abstract sourceDirVariable: string\n abstract tempDirVariable: string\n abstract cacheDirVariable: string\n\n abstract debug(message: string): void\n\n abstract info(message: string): void\n\n abstract warn(message: string): void\n\n abstract error(message: string): void\n\n abstract setSucceeded(message: string, done?: boolean): void\n\n abstract setFailed(message: string, done?: boolean): void\n\n abstract setOutput(name: string, value: string | undefined): void\n\n abstract setVariable(name: string, value: string | undefined): void\n\n abstract updateBuildNumber: (version: string) => void\n\n get sourceDir(): string {\n return this.getVariableAsPath(this.sourceDirVariable)?.replace(/\\\\/g, '/')\n }\n\n get tempDir(): string {\n return this.getVariableAsPath(this.tempDirVariable)\n }\n\n get cacheDir(): string {\n return this.getVariableAsPath(this.cacheDirVariable)\n }\n\n addPath(inputPath: string): void {\n const envName = process.platform === 'win32' ? 'Path' : 'PATH'\n const newPath = inputPath + path.delimiter + process.env[envName]\n this.debug(`new Path: ${newPath}`)\n process.env[envName] = newPath\n process.env.Path = newPath\n this.info(`Updated PATH: ${process.env[envName]}`)\n }\n\n getInput(input: Extract, required?: boolean): string {\n const inputProp = input.replace(/ /g, '_').toUpperCase()\n const val = this.getVariable(`INPUT_${inputProp}`)\n if (required && !val) {\n throw new Error(`Input required and not supplied: ${inputProp}`)\n }\n return val.trim()\n }\n\n getBooleanInput(input: Extract, required?: boolean): boolean {\n const inputValue = this.getInput(input, required)\n return (inputValue || 'false').toLowerCase() === 'true'\n }\n\n getDelimitedInput(input: Extract, delimiter: string, required?: boolean): string[] {\n return this.getInput(input, required)\n .split(delimiter)\n .filter(x => {\n if (x) {\n return x.trim()\n }\n })\n }\n\n getListInput(input: Extract, required?: boolean): string[] {\n return this.getDelimitedInput(input, '\\n', required)\n }\n\n getVariable(name: string): string {\n const value = (process.env[name] || '').trim()\n this.debug(`getVariable - ${name}: ${value}`)\n return value.trim()\n }\n\n getVariableAsPath(name: string): string {\n return path.resolve(path.normalize(this.getVariable(name)))\n }\n\n /**\n * Replaces environment variable references in a string with their values.\n * Supports both $VAR and ${VAR} formats.\n * Ignores invalid patterns like ${} or non-existing variables (replaced with empty string).\n *\n * @param pattern - The input string containing env variable placeholders.\n * @returns The string with env variables expanded.\n */\n getExpandedString(pattern: string): string {\n const expanded = pattern.replace(/\\$([a-zA-Z_][a-zA-Z0-9_]*|{([a-zA-Z_][a-zA-Z0-9_]*)})/g, (_, whole: string, braced?: string) => {\n const name = braced ?? whole\n const value = process.env[name.toUpperCase()]\n return value !== undefined ? value : ''\n })\n this.debug(`getExpandedString - ${pattern}: ${expanded}`)\n return expanded\n }\n\n async directoryExists(dir: string): Promise {\n try {\n await fs.access(dir)\n return (await fs.stat(dir)).isDirectory()\n } catch (_error) {\n return false\n }\n }\n\n async removeDirectory(dir: string): Promise {\n await fs.rm(dir, { recursive: true, force: true, maxRetries: 3, retryDelay: 1000 })\n }\n\n async fileExists(file: string): Promise {\n try {\n await fs.access(file)\n return (await fs.stat(file)).isFile()\n } catch (_error) {\n return false\n }\n }\n\n async cacheToolDirectory(sourceDir: string, tool: string, version: string): Promise {\n if (!tool) {\n throw new Error('tool is a required parameter')\n }\n if (!version) {\n throw new Error('version is a required parameter')\n }\n if (!sourceDir) {\n throw new Error('sourceDir is a required parameter')\n }\n\n const cacheRoot = this.cacheDir\n if (!cacheRoot) {\n this.debug('cache root not set')\n return ''\n }\n\n version = semver.clean(version) || version\n const destPath = path.join(cacheRoot, tool, version)\n if (await this.directoryExists(destPath)) {\n this.debug(`Destination directory ${destPath} already exists, removing`)\n await this.removeDirectory(destPath)\n }\n\n this.debug(`Copying ${sourceDir} to ${destPath}`)\n await fs.mkdir(destPath, { recursive: true })\n await fs.cp(sourceDir, destPath, { recursive: true, force: true })\n\n this.debug(`Caching ${tool}@${version} from ${sourceDir}`)\n return destPath\n }\n\n async findLocalTool(toolName: string, versionSpec: string): Promise {\n if (!toolName) {\n throw new Error('toolName is a required parameter')\n }\n if (!versionSpec) {\n throw new Error('versionSpec is a required parameter')\n }\n\n const cacheRoot = this.cacheDir\n if (!cacheRoot) {\n this.debug('cache root not set')\n return null\n }\n\n versionSpec = semver.clean(versionSpec) || versionSpec\n this.info(`Looking for local tool ${toolName}@${versionSpec}`)\n const toolPath = path.join(cacheRoot, toolName, versionSpec)\n if (!(await this.directoryExists(toolPath))) {\n this.info(`Directory ${toolPath} not found`)\n return null\n } else {\n this.info(`Found tool ${toolName}@${versionSpec} at ${toolPath}`)\n }\n\n return toolPath\n }\n\n async exec(cmd: string, args: string[]): Promise {\n const exec = util.promisify(execNonPromise)\n\n try {\n const commandOptions: ExecOptions = { maxBuffer: 1024 * 1024 * 10 } // 10MB\n const { stdout, stderr } = await exec(`${cmd} ${args.join(' ')}`, commandOptions)\n return {\n code: 0,\n error: null,\n stderr,\n stdout\n }\n } catch (e) {\n const error = e as Error & { code: number; stderr: string; stdout: string }\n return {\n code: error.code,\n error,\n stderr: error.stderr,\n stdout: error.stdout\n }\n }\n }\n\n async which(tool: string, _check?: boolean): Promise {\n this.debug(`looking for tool '${tool}' in PATH`)\n let toolPath = await lookPath(tool)\n if (toolPath) {\n toolPath = path.resolve(toolPath)\n this.debug(`found tool '${tool}' in PATH: ${toolPath}`)\n return toolPath\n }\n throw new Error(`Unable to locate executable file: ${tool}`)\n }\n}\n"],"names":["semver.clean","exec","execNonPromise"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"agents.mjs","names":[],"sources":["../../../node_modules/semver/internal/constants.js","../../../node_modules/semver/internal/debug.js","../../../node_modules/semver/internal/re.js","../../../node_modules/semver/internal/parse-options.js","../../../node_modules/semver/internal/identifiers.js","../../../node_modules/semver/classes/semver.js","../../../node_modules/semver/functions/parse.js","../../../node_modules/semver/functions/valid.js","../../../node_modules/semver/functions/clean.js","../../../node_modules/semver/functions/inc.js","../../../node_modules/semver/functions/diff.js","../../../node_modules/semver/functions/major.js","../../../node_modules/semver/functions/minor.js","../../../node_modules/semver/functions/patch.js","../../../node_modules/semver/functions/prerelease.js","../../../node_modules/semver/functions/compare.js","../../../node_modules/semver/functions/rcompare.js","../../../node_modules/semver/functions/compare-loose.js","../../../node_modules/semver/functions/compare-build.js","../../../node_modules/semver/functions/sort.js","../../../node_modules/semver/functions/rsort.js","../../../node_modules/semver/functions/gt.js","../../../node_modules/semver/functions/lt.js","../../../node_modules/semver/functions/eq.js","../../../node_modules/semver/functions/neq.js","../../../node_modules/semver/functions/gte.js","../../../node_modules/semver/functions/lte.js","../../../node_modules/semver/functions/cmp.js","../../../node_modules/semver/functions/coerce.js","../../../node_modules/semver/internal/lrucache.js","../../../node_modules/semver/classes/range.js","../../../node_modules/semver/classes/comparator.js","../../../node_modules/semver/functions/satisfies.js","../../../node_modules/semver/ranges/to-comparators.js","../../../node_modules/semver/ranges/max-satisfying.js","../../../node_modules/semver/ranges/min-satisfying.js","../../../node_modules/semver/ranges/min-version.js","../../../node_modules/semver/ranges/valid.js","../../../node_modules/semver/ranges/outside.js","../../../node_modules/semver/ranges/gtr.js","../../../node_modules/semver/ranges/ltr.js","../../../node_modules/semver/ranges/intersects.js","../../../node_modules/semver/ranges/simplify.js","../../../node_modules/semver/ranges/subset.js","../../../node_modules/semver/index.js","../../../src/agents/common/lookPath.ts","../../../src/agents/common/build-agent.ts"],"sourcesContent":["'use strict'\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n","'use strict'\n\nconst debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n","'use strict'\n\nconst {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst safeSrc = exports.safeSrc = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value\n .split(`${token}*`).join(`${token}{0,${max}}`)\n .split(`${token}+`).join(`${token}{1,${max}}`)\n }\n return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value)\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n safeSrc[index] = safe\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n// Non-numeric identifiers include numeric identifiers but can be longer.\n// Therefore non-numeric identifiers must go first.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCEPLAIN', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)\ncreateToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`)\ncreateToken('COERCEFULL', src[t.COERCEPLAIN] +\n `(?:${src[t.PRERELEASE]})?` +\n `(?:${src[t.BUILD]})?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\ncreateToken('COERCERTLFULL', src[t.COERCEFULL], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n","'use strict'\n\n// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n","'use strict'\n\nconst numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n if (typeof a === 'number' && typeof b === 'number') {\n return a === b ? 0 : a < b ? -1 : 1\n }\n\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n","'use strict'\n\nconst debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n if (this.major < other.major) {\n return -1\n }\n if (this.major > other.major) {\n return 1\n }\n if (this.minor < other.minor) {\n return -1\n }\n if (this.minor > other.minor) {\n return 1\n }\n if (this.patch < other.patch) {\n return -1\n }\n if (this.patch > other.patch) {\n return 1\n }\n return 0\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('build compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n if (release.startsWith('pre')) {\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n // Avoid an invalid semver results\n if (identifier) {\n const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE])\n if (!match || match[1] !== identifier) {\n throw new Error(`invalid identifier: ${identifier}`)\n }\n }\n }\n\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n case 'release':\n if (this.prerelease.length === 0) {\n throw new Error(`version ${this.raw} is not a prerelease`)\n }\n this.prerelease.length = 0\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version\n }\n try {\n return new SemVer(version, options)\n } catch (er) {\n if (!throwErrors) {\n return null\n }\n throw er\n }\n}\n\nmodule.exports = parse\n","'use strict'\n\nconst parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n","'use strict'\n\nconst parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n","'use strict'\n\nconst SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n","'use strict'\n\nconst parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n const v1 = parse(version1, null, true)\n const v2 = parse(version2, null, true)\n const comparison = v1.compare(v2)\n\n if (comparison === 0) {\n return null\n }\n\n const v1Higher = comparison > 0\n const highVersion = v1Higher ? v1 : v2\n const lowVersion = v1Higher ? v2 : v1\n const highHasPre = !!highVersion.prerelease.length\n const lowHasPre = !!lowVersion.prerelease.length\n\n if (lowHasPre && !highHasPre) {\n // Going from prerelease -> no prerelease requires some special casing\n\n // If the low version has only a major, then it will always be a major\n // Some examples:\n // 1.0.0-1 -> 1.0.0\n // 1.0.0-1 -> 1.1.1\n // 1.0.0-1 -> 2.0.0\n if (!lowVersion.patch && !lowVersion.minor) {\n return 'major'\n }\n\n // If the main part has no difference\n if (lowVersion.compareMain(highVersion) === 0) {\n if (lowVersion.minor && !lowVersion.patch) {\n return 'minor'\n }\n return 'patch'\n }\n }\n\n // add the `pre` prefix if we are going to a prerelease version\n const prefix = highHasPre ? 'pre' : ''\n\n if (v1.major !== v2.major) {\n return prefix + 'major'\n }\n\n if (v1.minor !== v2.minor) {\n return prefix + 'minor'\n }\n\n if (v1.patch !== v2.patch) {\n return prefix + 'patch'\n }\n\n // high and low are prereleases\n return 'prerelease'\n}\n\nmodule.exports = diff\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n","'use strict'\n\nconst parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","'use strict'\n\nconst compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n","'use strict'\n\nconst compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n","'use strict'\n\nconst compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n","'use strict'\n\nconst compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n","'use strict'\n\nconst compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n","'use strict'\n\nconst compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n","'use strict'\n\nconst compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n","'use strict'\n\nconst compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n","'use strict'\n\nconst compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n","'use strict'\n\nconst compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","'use strict'\n\nconst eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]\n let next\n while ((next = coerceRtlRegex.exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n coerceRtlRegex.lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n const major = match[2]\n const minor = match[3] || '0'\n const patch = match[4] || '0'\n const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ''\n const build = options.includePrerelease && match[6] ? `+${match[6]}` : ''\n\n return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options)\n}\nmodule.exports = coerce\n","'use strict'\n\nclass LRUCache {\n constructor () {\n this.max = 1000\n this.map = new Map()\n }\n\n get (key) {\n const value = this.map.get(key)\n if (value === undefined) {\n return undefined\n } else {\n // Remove the key from the map and add it to the end\n this.map.delete(key)\n this.map.set(key, value)\n return value\n }\n }\n\n delete (key) {\n return this.map.delete(key)\n }\n\n set (key, value) {\n const deleted = this.delete(key)\n\n if (!deleted && value !== undefined) {\n // If cache is full, delete the least recently used item\n if (this.map.size >= this.max) {\n const firstKey = this.map.keys().next().value\n this.delete(firstKey)\n }\n\n this.map.set(key, value)\n }\n\n return this\n }\n}\n\nmodule.exports = LRUCache\n","'use strict'\n\nconst SPACE_CHARACTERS = /\\s+/g\n\n// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.formatted = undefined\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range.trim().replace(SPACE_CHARACTERS, ' ')\n\n // First, split on ||\n this.set = this.raw\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.formatted = undefined\n }\n\n get range () {\n if (this.formatted === undefined) {\n this.formatted = ''\n for (let i = 0; i < this.set.length; i++) {\n if (i > 0) {\n this.formatted += '||'\n }\n const comps = this.set[i]\n for (let k = 0; k < comps.length; k++) {\n if (k > 0) {\n this.formatted += ' '\n }\n this.formatted += comps[k].toString().trim()\n }\n }\n }\n return this.formatted\n }\n\n format () {\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n debug('tilde trim', range)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n debug('caret trim', range)\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('../internal/lrucache')\nconst cache = new LRU()\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n safeRe: re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n comp = comp.replace(re[t.BUILD], '')\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceTilde(c, options))\n .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceCaret(c, options))\n .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp\n .split(/\\s+/)\n .map((c) => replaceXRange(c, options))\n .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp\n .trim()\n .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp\n .trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\n// TODO build?\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n","'use strict'\n\nconst ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n","'use strict'\n\nconst Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n","'use strict'\n\nconst Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n","'use strict'\n\nconst Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n","'use strict'\n\n// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n","'use strict'\n\nconst outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n","'use strict'\n\nconst Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n","'use strict'\n\n// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n","'use strict'\n\nconst Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If LT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = minimumVersionWithPreRelease\n } else {\n sub = minimumVersion\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = minimumVersion\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n","'use strict'\n\n// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n RELEASE_TYPES: constants.RELEASE_TYPES,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n","import * as fs from 'node:fs/promises'\nimport * as path from 'node:path'\nimport * as process from 'node:process'\n\n/**\n * Sometimes, people want to look for local executable files\n * which are specified with either relative or absolute file path.\n * @private\n * @param cmd\n * @return {string} An absolute path of given command, or undefined.\n */\nconst isFilePath = (cmd: string): string | undefined => {\n return cmd.includes(path.sep) ? path.resolve(cmd) : undefined\n}\n\n/**\n * Just promisifies \"fs.access\"\n * @private\n * @param {string} filePath An absolute file path with an applicable extension appended.\n * @return {Promise} Resolves absolute path or empty string.\n */\nconst access = async (filePath: string): Promise => {\n try {\n await fs.access(filePath)\n return filePath\n } catch (_error) {\n return undefined\n }\n}\n\n/**\n * Resolves if the given file is executable or not, regarding \"PATHEXT\" to be applied.\n * @private\n * @param {string} absPath A file path to be checked.\n * @param {LookPathOption} options Options for lookPath.\n * @return {Promise} Resolves the absolute file path just checked, or undefined.\n */\nconst isExecutable = async (absPath: string, options: LookPathOption = {}): Promise => {\n const envVars = options.env || process.env\n const extension = (envVars.PATHEXT || '').split(path.delimiter).concat('')\n const bins = await Promise.all(extension.map(async ext => access(absPath + ext.toLowerCase())))\n return bins.find(bin => !!bin)\n}\n\n/**\n * Returns a list of directories on which the target command should be looked for.\n * @private\n * @param {string[]} options.include Will be added to \"PATH\" env.\n * @param {string[]} options.exclude Will be filtered from \"PATH\" env.\n * @return {string[]} Directories to dig into.\n */\nconst getDirsToWalkThrough = (options: LookPathOption): string[] => {\n const envVars = options.env || process.env\n const envName = process.platform === 'win32' ? 'Path' : 'PATH'\n const envPath = envVars[envName] || ''\n return envPath\n .split(path.delimiter)\n .concat(options.include || [])\n .filter(p => !(options.exclude || []).includes(p))\n}\n\n/**\n * Returns async promise with absolute file path of given command,\n * and resolves with undefined if the command not found.\n * @param {string} command Command name to look for.\n * @param {LookPathOption} opt Options for lookPath.\n * @return {Promise} Resolves absolute file path, or undefined if not found.\n */\nexport async function lookPath(command: string, opt: LookPathOption = {}): Promise {\n const directPath = isFilePath(command)\n if (directPath) return isExecutable(directPath, opt)\n\n const dirs = getDirsToWalkThrough(opt)\n const bins = await Promise.all(dirs.map(async dir => isExecutable(path.join(dir, command), opt)))\n return bins.find(bin => !!bin)\n}\n\n/**\n * Options for lookPath.\n */\nexport interface LookPathOption {\n /**\n * Additional paths to look for, would be dealt same as PATH env.\n * Example: ['/tmp/bin', 'usr/local/bin']\n */\n include?: string[]\n /**\n * Paths to exclude to look for.\n * Example: ['/mnt']\n */\n exclude?: string[]\n /**\n * Set of env var to be used ON BEHALF OF the existing env of your runtime.\n * If `include` or `exclude` are given, they will be applied to this env set.\n */\n env?: NodeJS.ProcessEnv\n}\n","import { exec as execNonPromise, ExecOptions } from 'node:child_process'\nimport * as fs from 'node:fs/promises'\nimport * as process from 'node:process'\nimport * as path from 'node:path'\nimport * as util from 'node:util'\nimport * as semver from 'semver'\nimport { lookPath } from './lookPath'\nimport { type ExecResult } from './models'\n\nexport interface IBuildAgent {\n agentName: string\n sourceDirVariable: string\n tempDirVariable: string\n cacheDirVariable: string\n\n sourceDir: string\n tempDir: string\n cacheDir: string\n\n addPath(inputPath: string): void\n\n debug(message: string): void\n\n info(message: string): void\n\n warn(message: string): void\n\n error(message: string): void\n\n exec(exec: string, args: string[]): Promise\n\n cacheToolDirectory(sourceDir: string, tool: string, version: string): Promise\n\n directoryExists(dir: string): Promise\n\n removeDirectory(dir: string): Promise\n\n fileExists(file: string): Promise\n\n findLocalTool(toolName: string, versionSpec: string): Promise\n\n getInput(input: string, required?: boolean): string\n\n getInput(input: Extract, required?: boolean): string\n\n getBooleanInput(input: Extract, required?: boolean): boolean\n\n getDelimitedInput(input: Extract, delimiter: string, required?: boolean): string[]\n\n getListInput(input: Extract, required?: boolean): string[]\n\n setSucceeded(message: string, done?: boolean): void\n\n setFailed(message: string, done?: boolean): void\n\n setOutput(name: string, value: string | undefined): void\n\n getVariable(name: string): string | undefined\n\n getVariableAsPath(name: string): string\n\n getExpandedString(pattern: string): string\n\n setVariable(name: string, value: string | undefined): void\n\n updateBuildNumber: (version: string) => void\n\n which(tool: string, check?: boolean): Promise\n}\n\nexport abstract class BuildAgentBase implements IBuildAgent {\n abstract agentName: string\n abstract sourceDirVariable: string\n abstract tempDirVariable: string\n abstract cacheDirVariable: string\n\n abstract debug(message: string): void\n\n abstract info(message: string): void\n\n abstract warn(message: string): void\n\n abstract error(message: string): void\n\n abstract setSucceeded(message: string, done?: boolean): void\n\n abstract setFailed(message: string, done?: boolean): void\n\n abstract setOutput(name: string, value: string | undefined): void\n\n abstract setVariable(name: string, value: string | undefined): void\n\n abstract updateBuildNumber: (version: string) => void\n\n get sourceDir(): string {\n return this.getVariableAsPath(this.sourceDirVariable)?.replace(/\\\\/g, '/')\n }\n\n get tempDir(): string {\n return this.getVariableAsPath(this.tempDirVariable)\n }\n\n get cacheDir(): string {\n return this.getVariableAsPath(this.cacheDirVariable)\n }\n\n addPath(inputPath: string): void {\n const envName = process.platform === 'win32' ? 'Path' : 'PATH'\n const newPath = inputPath + path.delimiter + process.env[envName]\n this.debug(`new Path: ${newPath}`)\n process.env[envName] = newPath\n process.env.Path = newPath\n this.info(`Updated PATH: ${process.env[envName]}`)\n }\n\n getInput(input: Extract, required?: boolean): string {\n const inputProp = input.replace(/ /g, '_').toUpperCase()\n const val = this.getVariable(`INPUT_${inputProp}`)\n if (required && !val) {\n throw new Error(`Input required and not supplied: ${inputProp}`)\n }\n return val.trim()\n }\n\n getBooleanInput(input: Extract, required?: boolean): boolean {\n const inputValue = this.getInput(input, required)\n return (inputValue || 'false').toLowerCase() === 'true'\n }\n\n getDelimitedInput(input: Extract, delimiter: string, required?: boolean): string[] {\n return this.getInput(input, required)\n .split(delimiter)\n .filter(x => {\n if (x) {\n return x.trim()\n }\n })\n }\n\n getListInput(input: Extract, required?: boolean): string[] {\n return this.getDelimitedInput(input, '\\n', required)\n }\n\n getVariable(name: string): string {\n const value = (process.env[name] || '').trim()\n this.debug(`getVariable - ${name}: ${value}`)\n return value.trim()\n }\n\n getVariableAsPath(name: string): string {\n return path.resolve(path.normalize(this.getVariable(name)))\n }\n\n /**\n * Replaces environment variable references in a string with their values.\n * Supports both $VAR and ${VAR} formats.\n * Ignores invalid patterns like ${} or non-existing variables (replaced with empty string).\n *\n * @param pattern - The input string containing env variable placeholders.\n * @returns The string with env variables expanded.\n */\n getExpandedString(pattern: string): string {\n const expanded = pattern.replace(/\\$([a-zA-Z_][a-zA-Z0-9_]*|{([a-zA-Z_][a-zA-Z0-9_]*)})/g, (_, whole: string, braced?: string) => {\n const name = braced ?? whole\n const value = process.env[name.toUpperCase()]\n return value !== undefined ? value : ''\n })\n this.debug(`getExpandedString - ${pattern}: ${expanded}`)\n return expanded\n }\n\n async directoryExists(dir: string): Promise {\n try {\n await fs.access(dir)\n return (await fs.stat(dir)).isDirectory()\n } catch (_error) {\n return false\n }\n }\n\n async removeDirectory(dir: string): Promise {\n await fs.rm(dir, { recursive: true, force: true, maxRetries: 3, retryDelay: 1000 })\n }\n\n async fileExists(file: string): Promise {\n try {\n await fs.access(file)\n return (await fs.stat(file)).isFile()\n } catch (_error) {\n return false\n }\n }\n\n async cacheToolDirectory(sourceDir: string, tool: string, version: string): Promise {\n if (!tool) {\n throw new Error('tool is a required parameter')\n }\n if (!version) {\n throw new Error('version is a required parameter')\n }\n if (!sourceDir) {\n throw new Error('sourceDir is a required parameter')\n }\n\n const cacheRoot = this.cacheDir\n if (!cacheRoot) {\n this.debug('cache root not set')\n return ''\n }\n\n version = semver.clean(version) || version\n const destPath = path.join(cacheRoot, tool, version)\n if (await this.directoryExists(destPath)) {\n this.debug(`Destination directory ${destPath} already exists, removing`)\n await this.removeDirectory(destPath)\n }\n\n this.debug(`Copying ${sourceDir} to ${destPath}`)\n await fs.mkdir(destPath, { recursive: true })\n await fs.cp(sourceDir, destPath, { recursive: true, force: true })\n\n this.debug(`Caching ${tool}@${version} from ${sourceDir}`)\n return destPath\n }\n\n async findLocalTool(toolName: string, versionSpec: string): Promise {\n if (!toolName) {\n throw new Error('toolName is a required parameter')\n }\n if (!versionSpec) {\n throw new Error('versionSpec is a required parameter')\n }\n\n const cacheRoot = this.cacheDir\n if (!cacheRoot) {\n this.debug('cache root not set')\n return null\n }\n\n versionSpec = semver.clean(versionSpec) || versionSpec\n this.info(`Looking for local tool ${toolName}@${versionSpec}`)\n const toolPath = path.join(cacheRoot, toolName, versionSpec)\n if (!(await this.directoryExists(toolPath))) {\n this.info(`Directory ${toolPath} not found`)\n return null\n } else {\n this.info(`Found tool ${toolName}@${versionSpec} at ${toolPath}`)\n }\n\n return toolPath\n }\n\n async exec(cmd: string, args: string[]): Promise {\n const exec = util.promisify(execNonPromise)\n\n try {\n const commandOptions: ExecOptions = { maxBuffer: 1024 * 1024 * 10 } // 10MB\n const { stdout, stderr } = await exec(`${cmd} ${args.join(' ')}`, commandOptions)\n return {\n code: 0,\n error: null,\n stderr,\n stdout\n }\n } catch (e) {\n const error = e as Error & { code: number; stderr: string; stdout: string }\n return {\n code: error.code,\n error,\n stderr: error.stderr,\n stdout: error.stdout\n }\n }\n }\n\n async which(tool: string, _check?: boolean): Promise {\n this.debug(`looking for tool '${tool}' in PATH`)\n let toolPath = await lookPath(tool)\n if (toolPath) {\n toolPath = path.resolve(toolPath)\n this.debug(`found tool '${tool}' in PATH: ${toolPath}`)\n return toolPath\n }\n throw new Error(`Unable to locate executable file: ${tool}`)\n }\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],"mappings":"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"} \ No newline at end of file diff --git a/dist/tools/local/agent.mjs b/dist/tools/local/agent.mjs index 8eff52bf6..27ee0254e 100644 --- a/dist/tools/local/agent.mjs +++ b/dist/tools/local/agent.mjs @@ -1,33 +1,34 @@ -import * as process from 'node:process'; -import os from 'node:os'; -import { B as BuildAgentBase } from '../libs/agents.mjs'; - -class BuildAgent extends BuildAgentBase { - agentName = "Local"; - sourceDirVariable = "AGENT_SOURCE_DIR"; - tempDirVariable = "AGENT_TEMP_DIR"; - cacheDirVariable = "AGENT_TOOLS_DIR"; - debug = (message) => { - process.stdout.write(`[debug] ${message}${os.EOL}`); - }; - info = (message) => { - process.stdout.write(`[info] - ${message}${os.EOL}`); - }; - warn = (message) => { - process.stderr.write(`[warn] - ${message}${os.EOL}`); - }; - error = (message) => { - process.stderr.write(`[error] - ${message}${os.EOL}`); - }; - setSucceeded = (message, done) => this.info(`setSucceeded - ${message} - ${done}`); - setFailed = (message, done) => this.error(`setFailed - ${message} - ${done}`); - setOutput = (name, value) => this.debug(`setOutput - ${name} - ${value}`); - setVariable(name, value) { - this.debug(`setVariable - ${name} - ${value}`); - process.env[name] = value; - } - updateBuildNumber = (version) => this.debug(`updateBuildNumber - ${version}`); -} - +import { t as BuildAgentBase } from "../libs/agents.mjs"; +import * as process from "node:process"; +import os from "node:os"; +//#region src/agents/local/build-agent.ts +var BuildAgent = class extends BuildAgentBase { + agentName = "Local"; + sourceDirVariable = "AGENT_SOURCE_DIR"; + tempDirVariable = "AGENT_TEMP_DIR"; + cacheDirVariable = "AGENT_TOOLS_DIR"; + debug = (message) => { + process.stdout.write(`[debug] ${message}${os.EOL}`); + }; + info = (message) => { + process.stdout.write(`[info] - ${message}${os.EOL}`); + }; + warn = (message) => { + process.stderr.write(`[warn] - ${message}${os.EOL}`); + }; + error = (message) => { + process.stderr.write(`[error] - ${message}${os.EOL}`); + }; + setSucceeded = (message, done) => this.info(`setSucceeded - ${message} - ${done}`); + setFailed = (message, done) => this.error(`setFailed - ${message} - ${done}`); + setOutput = (name, value) => this.debug(`setOutput - ${name} - ${value}`); + setVariable(name, value) { + this.debug(`setVariable - ${name} - ${value}`); + process.env[name] = value; + } + updateBuildNumber = (version) => this.debug(`updateBuildNumber - ${version}`); +}; +//#endregion export { BuildAgent }; -//# sourceMappingURL=agent.mjs.map + +//# sourceMappingURL=agent.mjs.map \ No newline at end of file diff --git a/dist/tools/local/agent.mjs.map b/dist/tools/local/agent.mjs.map index b0b9c2120..649406189 100644 --- a/dist/tools/local/agent.mjs.map +++ b/dist/tools/local/agent.mjs.map @@ -1 +1 @@ -{"version":3,"file":"agent.mjs","sources":["../../../src/agents/local/build-agent.ts"],"sourcesContent":["import * as process from 'node:process'\nimport os from 'node:os'\n\nimport { BuildAgentBase, type IBuildAgent } from '@agents/common'\n\nexport class BuildAgent extends BuildAgentBase implements IBuildAgent {\n agentName = 'Local'\n\n sourceDirVariable = 'AGENT_SOURCE_DIR'\n tempDirVariable = 'AGENT_TEMP_DIR'\n cacheDirVariable = 'AGENT_TOOLS_DIR'\n\n debug = (message: string): void => {\n process.stdout.write(`[debug] ${message}${os.EOL}`)\n }\n\n info = (message: string): void => {\n process.stdout.write(`[info] - ${message}${os.EOL}`)\n }\n\n warn = (message: string): void => {\n process.stderr.write(`[warn] - ${message}${os.EOL}`)\n }\n\n error = (message: string): void => {\n process.stderr.write(`[error] - ${message}${os.EOL}`)\n }\n\n setSucceeded = (message: string, done?: boolean): void => this.info(`setSucceeded - ${message} - ${done}`)\n\n setFailed = (message: string, done?: boolean): void => this.error(`setFailed - ${message} - ${done}`)\n\n setOutput = (name: string, value: string | undefined): void => this.debug(`setOutput - ${name} - ${value}`)\n\n setVariable(name: string, value: string | undefined): void {\n this.debug(`setVariable - ${name} - ${value}`)\n process.env[name] = value\n }\n\n updateBuildNumber = (version: string): void => this.debug(`updateBuildNumber - ${version}`)\n}\n"],"names":[],"mappings":";;;;AAKO,MAAM,mBAAmB,cAAA,CAAsC;AAAA,EAClE,SAAA,GAAY,OAAA;AAAA,EAEZ,iBAAA,GAAoB,kBAAA;AAAA,EACpB,eAAA,GAAkB,gBAAA;AAAA,EAClB,gBAAA,GAAmB,iBAAA;AAAA,EAEnB,KAAA,GAAQ,CAAC,OAAA,KAA0B;AAC/B,IAAA,OAAA,CAAQ,OAAO,KAAA,CAAM,CAAA,QAAA,EAAW,OAAO,CAAA,EAAG,EAAA,CAAG,GAAG,CAAA,CAAE,CAAA;AAAA,EACtD,CAAA;AAAA,EAEA,IAAA,GAAO,CAAC,OAAA,KAA0B;AAC9B,IAAA,OAAA,CAAQ,OAAO,KAAA,CAAM,CAAA,SAAA,EAAY,OAAO,CAAA,EAAG,EAAA,CAAG,GAAG,CAAA,CAAE,CAAA;AAAA,EACvD,CAAA;AAAA,EAEA,IAAA,GAAO,CAAC,OAAA,KAA0B;AAC9B,IAAA,OAAA,CAAQ,OAAO,KAAA,CAAM,CAAA,SAAA,EAAY,OAAO,CAAA,EAAG,EAAA,CAAG,GAAG,CAAA,CAAE,CAAA;AAAA,EACvD,CAAA;AAAA,EAEA,KAAA,GAAQ,CAAC,OAAA,KAA0B;AAC/B,IAAA,OAAA,CAAQ,OAAO,KAAA,CAAM,CAAA,UAAA,EAAa,OAAO,CAAA,EAAG,EAAA,CAAG,GAAG,CAAA,CAAE,CAAA;AAAA,EACxD,CAAA;AAAA,EAEA,YAAA,GAAe,CAAC,OAAA,EAAiB,IAAA,KAAyB,IAAA,CAAK,KAAK,CAAA,eAAA,EAAkB,OAAO,CAAA,GAAA,EAAM,IAAI,CAAA,CAAE,CAAA;AAAA,EAEzG,SAAA,GAAY,CAAC,OAAA,EAAiB,IAAA,KAAyB,IAAA,CAAK,MAAM,CAAA,YAAA,EAAe,OAAO,CAAA,GAAA,EAAM,IAAI,CAAA,CAAE,CAAA;AAAA,EAEpG,SAAA,GAAY,CAAC,IAAA,EAAc,KAAA,KAAoC,IAAA,CAAK,MAAM,CAAA,YAAA,EAAe,IAAI,CAAA,GAAA,EAAM,KAAK,CAAA,CAAE,CAAA;AAAA,EAE1G,WAAA,CAAY,MAAc,KAAA,EAAiC;AACvD,IAAA,IAAA,CAAK,KAAA,CAAM,CAAA,cAAA,EAAiB,IAAI,CAAA,GAAA,EAAM,KAAK,CAAA,CAAE,CAAA;AAC7C,IAAA,OAAA,CAAQ,GAAA,CAAI,IAAI,CAAA,GAAI,KAAA;AAAA,EACxB;AAAA,EAEA,oBAAoB,CAAC,OAAA,KAA0B,KAAK,KAAA,CAAM,CAAA,oBAAA,EAAuB,OAAO,CAAA,CAAE,CAAA;AAC9F;;;;"} \ No newline at end of file +{"version":3,"file":"agent.mjs","names":[],"sources":["../../../src/agents/local/build-agent.ts"],"sourcesContent":["import * as process from 'node:process'\nimport os from 'node:os'\n\nimport { BuildAgentBase, type IBuildAgent } from '@agents/common'\n\nexport class BuildAgent extends BuildAgentBase implements IBuildAgent {\n agentName = 'Local'\n\n sourceDirVariable = 'AGENT_SOURCE_DIR'\n tempDirVariable = 'AGENT_TEMP_DIR'\n cacheDirVariable = 'AGENT_TOOLS_DIR'\n\n debug = (message: string): void => {\n process.stdout.write(`[debug] ${message}${os.EOL}`)\n }\n\n info = (message: string): void => {\n process.stdout.write(`[info] - ${message}${os.EOL}`)\n }\n\n warn = (message: string): void => {\n process.stderr.write(`[warn] - ${message}${os.EOL}`)\n }\n\n error = (message: string): void => {\n process.stderr.write(`[error] - ${message}${os.EOL}`)\n }\n\n setSucceeded = (message: string, done?: boolean): void => this.info(`setSucceeded - ${message} - ${done}`)\n\n setFailed = (message: string, done?: boolean): void => this.error(`setFailed - ${message} - ${done}`)\n\n setOutput = (name: string, value: string | undefined): void => this.debug(`setOutput - ${name} - ${value}`)\n\n setVariable(name: string, value: string | undefined): void {\n this.debug(`setVariable - ${name} - ${value}`)\n process.env[name] = value\n }\n\n updateBuildNumber = (version: string): void => this.debug(`updateBuildNumber - ${version}`)\n}\n"],"mappings":";;;;AAKA,IAAa,aAAb,cAAgC,eAAsC;CAClE,YAAY;CAEZ,oBAAoB;CACpB,kBAAkB;CAClB,mBAAmB;CAEnB,SAAS,YAA0B;AAC/B,UAAQ,OAAO,MAAM,WAAW,UAAU,GAAG,MAAM;;CAGvD,QAAQ,YAA0B;AAC9B,UAAQ,OAAO,MAAM,YAAY,UAAU,GAAG,MAAM;;CAGxD,QAAQ,YAA0B;AAC9B,UAAQ,OAAO,MAAM,YAAY,UAAU,GAAG,MAAM;;CAGxD,SAAS,YAA0B;AAC/B,UAAQ,OAAO,MAAM,aAAa,UAAU,GAAG,MAAM;;CAGzD,gBAAgB,SAAiB,SAAyB,KAAK,KAAK,kBAAkB,QAAQ,KAAK,OAAO;CAE1G,aAAa,SAAiB,SAAyB,KAAK,MAAM,eAAe,QAAQ,KAAK,OAAO;CAErG,aAAa,MAAc,UAAoC,KAAK,MAAM,eAAe,KAAK,KAAK,QAAQ;CAE3G,YAAY,MAAc,OAAiC;AACvD,OAAK,MAAM,iBAAiB,KAAK,KAAK,QAAQ;AAC9C,UAAQ,IAAI,QAAQ;;CAGxB,qBAAqB,YAA0B,KAAK,MAAM,uBAAuB,UAAU"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 0191ce859..5248bbb92 100644 --- a/package-lock.json +++ b/package-lock.json @@ -35,7 +35,6 @@ "typescript-eslint": "8.57.0", "vite": "8.0.0", "vite-node": "6.0.0", - "vite-tsconfig-paths": "6.1.1", "vitest": "4.1.0" }, "engines": { @@ -3280,12 +3279,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/globrex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", - "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", - "dev": true - }, "node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", @@ -7028,26 +7021,6 @@ "typescript": ">=4.8.4" } }, - "node_modules/tsconfck": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.1.tgz", - "integrity": "sha512-00eoI6WY57SvZEVjm13stEVE90VkEdJAFGgpFLTsZbJyW/LwFQ7uQxJHWpZ2hzSWgCPKc9AnBnNP+0X7o3hAmQ==", - "dev": true, - "bin": { - "tsconfck": "bin/tsconfck.js" - }, - "engines": { - "node": "^18 || >=20" - }, - "peerDependencies": { - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", @@ -7402,21 +7375,6 @@ "url": "https://opencollective.com/antfu" } }, - "node_modules/vite-tsconfig-paths": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-6.1.1.tgz", - "integrity": "sha512-2cihq7zliibCCZ8P9cKJrQBkfgdvcFkOOc3Y02o3GWUDLgqjWsZudaoiuOwO/gzTzy17cS5F7ZPo4bsnS4DGkg==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.1.1", - "globrex": "^0.1.2", - "tsconfck": "^3.0.3" - }, - "peerDependencies": { - "vite": "*" - } - }, "node_modules/vite/node_modules/picomatch": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", diff --git a/package.json b/package.json index 79b0eb6a8..488a4d974 100644 --- a/package.json +++ b/package.json @@ -20,30 +20,23 @@ "format:fix": "prettier --write \"src/**/*.ts\"", "mdlint:check": "markdownlint docs dist", "mdlint:fix": "markdownlint --fix docs dist", - "build:tools": "vite build --config src/tools/vite.config.mts", "build:agents": "run-p build:agent:local build:agent:azure build:agent:github", - "build:agent:local": "vite build --config src/agents/vite.config.mts --mode local-agent", "build:agent:azure": "vite build --config src/agents/vite.config.mts --mode azure", "build:agent:github": "vite build --config src/agents/vite.config.mts --mode github", - "run:local:gitversion": "node dist/tools/cli.mjs --tool gitversion --agent local", "run:azure:gitversion": "node dist/tools/cli.mjs --tool gitversion --agent azure", "run:github:gitversion": "node dist/tools/cli.mjs --tool gitversion --agent github", - "run:local:gitreleasemanager": "node dist/tools/cli.mjs --tool gitreleasemanager --agent local", "run:azure:gitreleasemanager": "node dist/tools/cli.mjs --tool gitreleasemanager --agent azure", "run:github:gitreleasemanager": "node dist/tools/cli.mjs --tool gitreleasemanager --agent github", - "test:ci": "vitest --run src/__tests__ --config src/__tests__/vitest.config.ts", "test:tools": "vitest --run src/__tests__/tools --config src/__tests__/vitest.config.ts", "test:agents": "vitest --run src/__tests__/agents --config src/__tests__/vitest.config.ts", - "publish:prepare": "./dist/azure/updateTasks.mjs", "publish:azure:local": "tfx extension create --root ./dist/azure --manifest-js dist/azure/manifest.config.cjs", "publish:azure:marketplace": "tfx extension publish --root ./dist/azure --manifest-js dist/azure/manifest.config.cjs --auth-type pat", - "prepare": "husky" }, "devDependencies": { @@ -70,7 +63,6 @@ "typescript-eslint": "8.57.0", "vite": "8.0.0", "vite-node": "6.0.0", - "vite-tsconfig-paths": "6.1.1", "vitest": "4.1.0" }, "dependencies": { @@ -80,7 +72,12 @@ "minimatch": "10.2.1" }, "lint-staged": { - "*.ts": ["eslint --fix", "prettier --write"], - "*.md": ["markdownlint --fix"] + "*.ts": [ + "eslint --fix", + "prettier --write" + ], + "*.md": [ + "markdownlint --fix" + ] } } diff --git a/src/__tests__/vitest.config.ts b/src/__tests__/vitest.config.ts index 040e9044e..a3a522a8d 100644 --- a/src/__tests__/vitest.config.ts +++ b/src/__tests__/vitest.config.ts @@ -1,17 +1,14 @@ import { defineConfig } from 'vitest/config' import { resolve } from 'path' -import tsconfigPaths from 'vite-tsconfig-paths' const config = defineConfig({ root: resolve(__dirname, '../..'), + resolve: { + tsconfigPaths: true + }, esbuild: { target: 'node24' }, - plugins: [ - tsconfigPaths({ - root: '../..' - }) - ], test: { globals: true, include: ['**/__tests__/**/*.spec.[tj]s'], diff --git a/src/vite.common.config.mts b/src/vite.common.config.mts index 42ff3979e..8986f58ac 100644 --- a/src/vite.common.config.mts +++ b/src/vite.common.config.mts @@ -1,19 +1,16 @@ import { resolve } from 'node:path' import { builtinModules } from 'node:module' import { defineConfig, UserConfig } from 'vite' -import tsconfigPaths from 'vite-tsconfig-paths' export function viteConfig(entry: Record, manualChunks: (id: string) => string | undefined): UserConfig { return defineConfig({ root: resolve(__dirname, '..'), + resolve: { + tsconfigPaths: true + }, esbuild: { target: 'node24' }, - plugins: [ - tsconfigPaths({ - root: '..' - }) - ], build: { target: 'esnext', lib: { From 1e4881511e491f1a266149fee2054fcae26a3bdb Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 13 Mar 2026 21:48:36 +0000 Subject: [PATCH 5/6] fix: update dynamic import paths for Vite 8 rolldown output structure Co-authored-by: arturcic <1760506+arturcic@users.noreply.github.com> --- dist/lib.mjs | 6 ++++-- dist/lib.mjs.map | 2 +- src/tools/lib.ts | 10 ++++++++-- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/dist/lib.mjs b/dist/lib.mjs index e14a2b7a6..c9a530d59 100644 --- a/dist/lib.mjs +++ b/dist/lib.mjs @@ -1,11 +1,13 @@ import { parseArgs } from "node:util"; //#region src/tools/lib.ts async function getAgent(buildAgent) { - return new (await (import(`./${buildAgent}/agent.mjs`))).BuildAgent(); + if (!buildAgent || !/^[a-z0-9-]+$/i.test(buildAgent)) throw new Error(`Invalid build agent: ${buildAgent}`); + return new (await (import(`./tools/${buildAgent}/agent.mjs`))).BuildAgent(); } async function getToolRunner(buildAgent, tool) { + if (!tool || !/^[a-z0-9-]+$/i.test(tool)) throw new Error(`Invalid tool: ${tool}`); const agent = await getAgent(buildAgent); - return new (await (import(`./libs/${tool}.mjs`))).Runner(agent); + return new (await (import(`./tools/libs/${tool}.mjs`))).Runner(agent); } function parseCliArgs() { return parseArgs({ options: { diff --git a/dist/lib.mjs.map b/dist/lib.mjs.map index ffd31bfb2..ceb8b3f69 100644 --- a/dist/lib.mjs.map +++ b/dist/lib.mjs.map @@ -1 +1 @@ -{"version":3,"file":"lib.mjs","names":[],"sources":["../src/tools/lib.ts"],"sourcesContent":["import { parseArgs } from 'node:util'\n\nimport { type ExecResult, type IBuildAgent } from '@agents/common'\nimport { type IRunner } from '@tools/common'\n\ntype CliArgs = {\n agent: string\n tool: string\n command: string\n}\n\nexport async function getAgent(buildAgent: string | undefined): Promise {\n const agent = `./${buildAgent}/agent.mjs`\n const module = (await import(agent)) as { BuildAgent: new () => IBuildAgent }\n return new module.BuildAgent()\n}\n\nexport async function getToolRunner(buildAgent: string | undefined, tool: string | undefined): Promise {\n const agent = await getAgent(buildAgent)\n const toolRunner = `./libs/${tool}.mjs`\n const module = (await import(toolRunner)) as { Runner: new (buildAgent: IBuildAgent) => IRunner }\n return new module.Runner(agent)\n}\n\nexport function parseCliArgs(): CliArgs {\n return parseArgs({\n options: {\n agent: { type: 'string', short: 'a' },\n tool: { type: 'string', short: 't' },\n command: { type: 'string', short: 'c' }\n }\n }).values as CliArgs\n}\n\nexport async function run(agent: string, tool: string, command: string): Promise {\n const runner = await getToolRunner(agent, tool)\n return await runner.run(command)\n}\n\n/**\n * Returns all indexes of a specified single character within a given string.\n *\n * Iterates through the `searchString` and collects the zero-based indexes\n * where the character `indexOf` appears. Throws an error if `indexOf` is not a single character.\n *\n * @param searchString - The string to search within.\n * @param indexOf - The single character to find in the string.\n * @returns An array of indexes where the character appears in the string.\n * @throws {Error} If `indexOf` is not a single character.\n */\nexport function allIndexesOf(searchString: string, indexOf: string): number[] {\n if (indexOf.length !== 1) {\n throw new Error('indexOf must be a single character')\n }\n\n const resultArray: number[] = []\n\n for (let i = 0; i < searchString.length; i++) {\n if (searchString[i] === indexOf) {\n resultArray.push(i)\n }\n }\n\n return resultArray\n}\n"],"mappings":";;AAWA,eAAsB,SAAS,YAAsD;AAGjF,QAAO,KADS,OAAM,OADR,KAAK,WAAW,eAEZ,YAAY;;AAGlC,eAAsB,cAAc,YAAgC,MAA4C;CAC5G,MAAM,QAAQ,MAAM,SAAS,WAAW;AAGxC,QAAO,KADS,OAAM,OADH,UAAU,KAAK,SAEhB,OAAO,MAAM;;AAGnC,SAAgB,eAAwB;AACpC,QAAO,UAAU,EACb,SAAS;EACL,OAAO;GAAE,MAAM;GAAU,OAAO;GAAK;EACrC,MAAM;GAAE,MAAM;GAAU,OAAO;GAAK;EACpC,SAAS;GAAE,MAAM;GAAU,OAAO;GAAK;EAC1C,EACJ,CAAC,CAAC;;AAGP,eAAsB,IAAI,OAAe,MAAc,SAAsC;AAEzF,QAAO,OADQ,MAAM,cAAc,OAAO,KAAK,EAC3B,IAAI,QAAQ;;;;;;;;;;;;;AAcpC,SAAgB,aAAa,cAAsB,SAA2B;AAC1E,KAAI,QAAQ,WAAW,EACnB,OAAM,IAAI,MAAM,qCAAqC;CAGzD,MAAM,cAAwB,EAAE;AAEhC,MAAK,IAAI,IAAI,GAAG,IAAI,aAAa,QAAQ,IACrC,KAAI,aAAa,OAAO,QACpB,aAAY,KAAK,EAAE;AAI3B,QAAO"} \ No newline at end of file +{"version":3,"file":"lib.mjs","names":[],"sources":["../src/tools/lib.ts"],"sourcesContent":["import { parseArgs } from 'node:util'\n\nimport { type ExecResult, type IBuildAgent } from '@agents/common'\nimport { type IRunner } from '@tools/common'\n\ntype CliArgs = {\n agent: string\n tool: string\n command: string\n}\n\nexport async function getAgent(buildAgent: string | undefined): Promise {\n if (!buildAgent || !/^[a-z0-9-]+$/i.test(buildAgent)) {\n throw new Error(`Invalid build agent: ${buildAgent}`)\n }\n const agent = `./tools/${buildAgent}/agent.mjs`\n const module = (await import(agent)) as { BuildAgent: new () => IBuildAgent }\n return new module.BuildAgent()\n}\n\nexport async function getToolRunner(buildAgent: string | undefined, tool: string | undefined): Promise {\n if (!tool || !/^[a-z0-9-]+$/i.test(tool)) {\n throw new Error(`Invalid tool: ${tool}`)\n }\n const agent = await getAgent(buildAgent)\n const toolRunner = `./tools/libs/${tool}.mjs`\n const module = (await import(toolRunner)) as { Runner: new (buildAgent: IBuildAgent) => IRunner }\n return new module.Runner(agent)\n}\n\nexport function parseCliArgs(): CliArgs {\n return parseArgs({\n options: {\n agent: { type: 'string', short: 'a' },\n tool: { type: 'string', short: 't' },\n command: { type: 'string', short: 'c' }\n }\n }).values as CliArgs\n}\n\nexport async function run(agent: string, tool: string, command: string): Promise {\n const runner = await getToolRunner(agent, tool)\n return await runner.run(command)\n}\n\n/**\n * Returns all indexes of a specified single character within a given string.\n *\n * Iterates through the `searchString` and collects the zero-based indexes\n * where the character `indexOf` appears. Throws an error if `indexOf` is not a single character.\n *\n * @param searchString - The string to search within.\n * @param indexOf - The single character to find in the string.\n * @returns An array of indexes where the character appears in the string.\n * @throws {Error} If `indexOf` is not a single character.\n */\nexport function allIndexesOf(searchString: string, indexOf: string): number[] {\n if (indexOf.length !== 1) {\n throw new Error('indexOf must be a single character')\n }\n\n const resultArray: number[] = []\n\n for (let i = 0; i < searchString.length; i++) {\n if (searchString[i] === indexOf) {\n resultArray.push(i)\n }\n }\n\n return resultArray\n}\n"],"mappings":";;AAWA,eAAsB,SAAS,YAAsD;AACjF,KAAI,CAAC,cAAc,CAAC,gBAAgB,KAAK,WAAW,CAChD,OAAM,IAAI,MAAM,wBAAwB,aAAa;AAIzD,QAAO,KADS,OAAM,OADR,WAAW,WAAW,eAElB,YAAY;;AAGlC,eAAsB,cAAc,YAAgC,MAA4C;AAC5G,KAAI,CAAC,QAAQ,CAAC,gBAAgB,KAAK,KAAK,CACpC,OAAM,IAAI,MAAM,iBAAiB,OAAO;CAE5C,MAAM,QAAQ,MAAM,SAAS,WAAW;AAGxC,QAAO,KADS,OAAM,OADH,gBAAgB,KAAK,SAEtB,OAAO,MAAM;;AAGnC,SAAgB,eAAwB;AACpC,QAAO,UAAU,EACb,SAAS;EACL,OAAO;GAAE,MAAM;GAAU,OAAO;GAAK;EACrC,MAAM;GAAE,MAAM;GAAU,OAAO;GAAK;EACpC,SAAS;GAAE,MAAM;GAAU,OAAO;GAAK;EAC1C,EACJ,CAAC,CAAC;;AAGP,eAAsB,IAAI,OAAe,MAAc,SAAsC;AAEzF,QAAO,OADQ,MAAM,cAAc,OAAO,KAAK,EAC3B,IAAI,QAAQ;;;;;;;;;;;;;AAcpC,SAAgB,aAAa,cAAsB,SAA2B;AAC1E,KAAI,QAAQ,WAAW,EACnB,OAAM,IAAI,MAAM,qCAAqC;CAGzD,MAAM,cAAwB,EAAE;AAEhC,MAAK,IAAI,IAAI,GAAG,IAAI,aAAa,QAAQ,IACrC,KAAI,aAAa,OAAO,QACpB,aAAY,KAAK,EAAE;AAI3B,QAAO"} \ No newline at end of file diff --git a/src/tools/lib.ts b/src/tools/lib.ts index 838e32cf2..d71760579 100644 --- a/src/tools/lib.ts +++ b/src/tools/lib.ts @@ -10,14 +10,20 @@ type CliArgs = { } export async function getAgent(buildAgent: string | undefined): Promise { - const agent = `./${buildAgent}/agent.mjs` + if (!buildAgent || !/^[a-z0-9-]+$/i.test(buildAgent)) { + throw new Error(`Invalid build agent: ${buildAgent}`) + } + const agent = `./tools/${buildAgent}/agent.mjs` const module = (await import(agent)) as { BuildAgent: new () => IBuildAgent } return new module.BuildAgent() } export async function getToolRunner(buildAgent: string | undefined, tool: string | undefined): Promise { + if (!tool || !/^[a-z0-9-]+$/i.test(tool)) { + throw new Error(`Invalid tool: ${tool}`) + } const agent = await getAgent(buildAgent) - const toolRunner = `./libs/${tool}.mjs` + const toolRunner = `./tools/libs/${tool}.mjs` const module = (await import(toolRunner)) as { Runner: new (buildAgent: IBuildAgent) => IRunner } return new module.Runner(agent) } From 703db262185646eec35b6b2dfc5f99a6e9b67489 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 13 Mar 2026 21:49:13 +0000 Subject: [PATCH 6/6] Co-authored-by: arturcic <1760506+arturcic@users.noreply.github.com> --- dist/tools/libs/agents.mjs | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/dist/tools/libs/agents.mjs b/dist/tools/libs/agents.mjs index 0e2136fe9..375644fd1 100644 --- a/dist/tools/libs/agents.mjs +++ b/dist/tools/libs/agents.mjs @@ -1,5 +1,5 @@ import { n as __toESM, t as __commonJSMin } from "../../rolldown-runtime.mjs"; -import * as process$1 from "node:process"; +import * as process$2 from "node:process"; import { exec } from "node:child_process"; import * as fs from "node:fs/promises"; import * as path from "node:path"; @@ -1374,7 +1374,7 @@ var access = async (filePath) => { * @return {Promise} Resolves the absolute file path just checked, or undefined. */ var isExecutable = async (absPath, options = {}) => { - const extension = ((options.env || process$1.env).PATHEXT || "").split(path.delimiter).concat(""); + const extension = ((options.env || process$2.env).PATHEXT || "").split(path.delimiter).concat(""); return (await Promise.all(extension.map(async (ext) => access(absPath + ext.toLowerCase())))).find((bin) => !!bin); }; /** @@ -1385,7 +1385,7 @@ var isExecutable = async (absPath, options = {}) => { * @return {string[]} Directories to dig into. */ var getDirsToWalkThrough = (options) => { - return ((options.env || process$1.env)[process$1.platform === "win32" ? "Path" : "PATH"] || "").split(path.delimiter).concat(options.include || []).filter((p) => !(options.exclude || []).includes(p)); + return ((options.env || process$2.env)[process$2.platform === "win32" ? "Path" : "PATH"] || "").split(path.delimiter).concat(options.include || []).filter((p) => !(options.exclude || []).includes(p)); }; /** * Returns async promise with absolute file path of given command, @@ -1414,12 +1414,12 @@ var BuildAgentBase = class { return this.getVariableAsPath(this.cacheDirVariable); } addPath(inputPath) { - const envName = process$1.platform === "win32" ? "Path" : "PATH"; - const newPath = inputPath + path.delimiter + process$1.env[envName]; + const envName = process$2.platform === "win32" ? "Path" : "PATH"; + const newPath = inputPath + path.delimiter + process$2.env[envName]; this.debug(`new Path: ${newPath}`); - process$1.env[envName] = newPath; - process$1.env.Path = newPath; - this.info(`Updated PATH: ${process$1.env[envName]}`); + process$2.env[envName] = newPath; + process$2.env.Path = newPath; + this.info(`Updated PATH: ${process$2.env[envName]}`); } getInput(input, required) { const inputProp = input.replace(/ /g, "_").toUpperCase(); @@ -1439,7 +1439,7 @@ var BuildAgentBase = class { return this.getDelimitedInput(input, "\n", required); } getVariable(name) { - const value = (process$1.env[name] || "").trim(); + const value = (process$2.env[name] || "").trim(); this.debug(`getVariable - ${name}: ${value}`); return value.trim(); } @@ -1457,7 +1457,7 @@ var BuildAgentBase = class { getExpandedString(pattern) { const expanded = pattern.replace(/\$([a-zA-Z_][a-zA-Z0-9_]*|{([a-zA-Z_][a-zA-Z0-9_]*)})/g, (_, whole, braced) => { const name = braced ?? whole; - const value = process$1.env[name.toUpperCase()]; + const value = process$2.env[name.toUpperCase()]; return value !== void 0 ? value : ""; }); this.debug(`getExpandedString - ${pattern}: ${expanded}`);