From abe167b49a2fbee69fb8edd33e6388ff681deba5 Mon Sep 17 00:00:00 2001 From: Ayushman Chhabra <14110965+ayushmanchhabra@users.noreply.github.com> Date: Tue, 3 Mar 2026 20:27:23 +0530 Subject: [PATCH 01/10] chore: initial cut --- .github/dependabot.yml | 20 + .github/release-please/config.json | 14 + .github/release-please/manifest.json | 3 + .github/workflows/cd.yml | 44 + .github/workflows/ci.yml | 84 ++ .gitignore | 5 + CHANGELOG.md | 85 ++ LICENSE | 20 + eslint.config.js | 19 + package-lock.json | 1892 ++++++++++++++++++++++++++ package.json | 62 + src/main.js | 65 + tests/specs/main.test.js | 46 + tsconfig.json | 13 + types/main.d.ts | 44 + 15 files changed, 2416 insertions(+) create mode 100644 .github/dependabot.yml create mode 100644 .github/release-please/config.json create mode 100644 .github/release-please/manifest.json create mode 100644 .github/workflows/cd.yml create mode 100644 .github/workflows/ci.yml create mode 100644 .gitignore create mode 100644 CHANGELOG.md create mode 100644 LICENSE create mode 100644 eslint.config.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 src/main.js create mode 100644 tests/specs/main.test.js create mode 100644 tsconfig.json create mode 100644 types/main.d.ts diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..a8621d3 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,20 @@ +version: 2 +updates: + - package-ecosystem: "npm" + directory: "." + schedule: + interval: "monthly" + versioning-strategy: increase + groups: + npm: + patterns: + - "*" + + - package-ecosystem: "github-actions" + directory: ".github/workflows" + schedule: + interval: "monthly" + groups: + gha: + patterns: + - "*" diff --git a/.github/release-please/config.json b/.github/release-please/config.json new file mode 100644 index 0000000..64e1873 --- /dev/null +++ b/.github/release-please/config.json @@ -0,0 +1,14 @@ +{ + "packages": { + ".": { + "include-component-in-tag": false, + "release-type": "node", + "changelog-sections": [ + { "type": "feat", "section": "Features", "hidden": false }, + { "type": "fix", "section": "Bug Fixes", "hidden": false }, + { "type": "chore", "section": "Chores", "hidden": false } + ] + } + } +} + \ No newline at end of file diff --git a/.github/release-please/manifest.json b/.github/release-please/manifest.json new file mode 100644 index 0000000..f5b6b2a --- /dev/null +++ b/.github/release-please/manifest.json @@ -0,0 +1,3 @@ +{ + ".": "0.0.0" +} diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml new file mode 100644 index 0000000..6c39f67 --- /dev/null +++ b/.github/workflows/cd.yml @@ -0,0 +1,44 @@ +name: cd + +on: + push: + branches: + - main + +permissions: + contents: write + pull-requests: write + id-token: write + +jobs: + publish: + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@v6.0.1 + with: + fetch-depth: 0 + + - id: release + uses: googleapis/release-please-action@v4.4.0 + with: + token: ${{ secrets.GITHUB_TOKEN }} + config-file: .github/release-please/config.json + manifest-file: .github/release-please/manifest.json + + - uses: actions/setup-node@v6.1.0 + if: ${{ steps.release.outputs.release_created }} + with: + node-version: '24' + registry-url: 'https://registry.npmjs.org' + + - run: npm install -g npm@latest + if: ${{ steps.release.outputs.release_created }} + + - run: npm ci + if: ${{ steps.release.outputs.release_created }} + + - run: npm run type + if: ${{ steps.release.outputs.release_created }} + + - run: npm publish --tag latest --provenance --access public + if: ${{ steps.release.outputs.release_created }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..59e09ae --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,84 @@ +name: ci + +on: + pull_request: + branches: + - main + +permissions: + contents: read + pull-requests: write + +concurrency: + group: ${{ github.ref }} + cancel-in-progress: true + +jobs: + test: + strategy: + matrix: + os: + - macos-15 + - ubuntu-24.04 + - windows-2025 + fail-fast: false + + runs-on: ${{ matrix.os }} + + steps: + - name: Checkout repository + uses: actions/checkout@v6.0.1 + + - name: Setup Volta + uses: volta-cli/action@v4.2.1 + + - name: Install dependencies + run: npm ci + + - name: Check for linting errors + run: npm run lint + + - name: Run tests with coverage + id: coverage + shell: bash + run: | + { npm t || true; } \ + | sed 's/\x1b\[[0-9;]*m//g' \ + | awk ' + /start of coverage report/ {printing=1; next} + /end of coverage report/ {printing=0} + printing + ' > coverage.txt + + echo "COVERAGE<> $GITHUB_OUTPUT + cat coverage.txt >> $GITHUB_OUTPUT + echo "EOF" >> $GITHUB_OUTPUT + + - name: Convert coverage to markdown + id: markdown + shell: bash + run: | + { + echo "### 📊 Coverage Report — ${{ matrix.os }}" + echo + echo "| File | Line % | Branch % | Funcs % | Uncovered Lines |" + echo "|------|--------|----------|---------|------------------|" + grep '|' coverage.txt | \ + grep -vE "file\s*\|\s*line|----" | \ + while read -r line; do + clean=$(echo "$line" | sed 's/^ℹ\s*//' | tr -s ' ') + echo "| ${clean// | / | } |" + done + echo + } > coverage.md + + echo "MARKDOWN<> $GITHUB_OUTPUT + cat coverage.md >> $GITHUB_OUTPUT + echo "EOF" >> $GITHUB_OUTPUT + + - name: Comment on PR + uses: marocchino/sticky-pull-request-comment@v2 + with: + key: coverage-${{ matrix.os }} + header: "Coverage Report – ${{ matrix.os }}" + message: ${{ steps.markdown.outputs.MARKDOWN }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..510c533 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +#runtime +node_modules + +#package +cache diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..88c7f88 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,85 @@ +# Changelog + +## [0.2.0](https://github.com/nwutils/getter/compare/v0.1.6...v0.2.0) (2026-01-18) + + +### Features + +* support file protocol for options.manifestUrl ([#14](https://github.com/nwutils/getter/issues/14)) ([76b00d4](https://github.com/nwutils/getter/commit/76b00d4379f38644329c81ef264d5e67ce427425)) + + +### Bug Fixes + +* **deps:** security update for node-tar ([#12](https://github.com/nwutils/getter/issues/12)) ([28f991f](https://github.com/nwutils/getter/commit/28f991f89b51ffc98ab1d0fcc82298ac9496b322)) + + +### Chores + +* lint jsdoc comments ([96d71c2](https://github.com/nwutils/getter/commit/96d71c2fcb9da06bd616b71c5b5d97d62550c888)) + +## [0.1.6](https://github.com/nwutils/getter/compare/v0.1.5...v0.1.6) (2026-01-17) + + +### Bug Fixes + +* return NW.js file path ([#9](https://github.com/nwutils/getter/issues/9)) ([3589c17](https://github.com/nwutils/getter/commit/3589c173df07b49698c7ef2899608920f5b37771)) + + +### Chores + +* **dependabot:** daily -> monthly ([97deb87](https://github.com/nwutils/getter/commit/97deb8756dc1733dcba43f4830a5a9b1c2f337ab)) +* **test:** cover http request logic ([#11](https://github.com/nwutils/getter/issues/11)) ([97674b1](https://github.com/nwutils/getter/commit/97674b1243d26e44c151cc259a1375d44d3d677f)) + +## [0.1.5](https://github.com/nwutils/getter/compare/v0.1.4...v0.1.5) (2025-11-30) + + +### Chores + +* enable OIDC ([a8aa7df](https://github.com/nwutils/getter/commit/a8aa7dfbafff961f9b5f3f95d6592e207f039739)) + +## [0.1.4](https://github.com/nwutils/getter/compare/v0.1.3...v0.1.4) (2025-11-30) + + +### Chores + +* **ci:** update npm to latest before publishing ([81eaad3](https://github.com/nwutils/getter/commit/81eaad34a778b2d6fdb6df241d6329ec9a953d98)) + +## [0.1.3](https://github.com/nwutils/getter/compare/v0.1.2...v0.1.3) (2025-11-30) + + +### Chores + +* **ci:** add id: release ([c7d9c1c](https://github.com/nwutils/getter/commit/c7d9c1c1182682ee547cda1e3a3da729193b1904)) + +## [0.1.2](https://github.com/nwutils/getter/compare/v0.1.1...v0.1.2) (2025-11-30) + + +### Bug Fixes + +* adopt inversion of control ([#2](https://github.com/nwutils/getter/issues/2)) ([8f87b29](https://github.com/nwutils/getter/commit/8f87b2955e9b939274d2bf0ad8f9f6e25164ae7f)) + + +### Chores + +* **ci:** merge publish into release ([de9dc94](https://github.com/nwutils/getter/commit/de9dc94bb13b3dc061db8b9909ad80650fba307f)) +* **ci:** set fetch-depth to 0 ([9aa6690](https://github.com/nwutils/getter/commit/9aa66909fe30fa22abe6a5c69bddf1515f17b7c1)) +* **ci:** trigger publish job on release event ([a90974e](https://github.com/nwutils/getter/commit/a90974eecc9fa8aad4b1d083d6b0b0746bd53762)) +* **ci:** try trigger npm publish on release.types == published event ([d427207](https://github.com/nwutils/getter/commit/d42720747f47659e84f31762487512efc767ecca)) +* **deps:** configure Dependabot ([0e0a0bf](https://github.com/nwutils/getter/commit/0e0a0bf838e9f9078c1749cb012cfd0142d75de8)) +* **main:** release 0.1.1 ([#4](https://github.com/nwutils/getter/issues/4)) ([fa46f38](https://github.com/nwutils/getter/commit/fa46f38f00aff479e1e6138f6c9b89153ccd1225)) +* migrate from nw-builder ([f78b3d9](https://github.com/nwutils/getter/commit/f78b3d9aa075c740197cbe1f832a8a4b5eb9d8eb)) +* **release-please:** remove last-release-sha ([b7cdf68](https://github.com/nwutils/getter/commit/b7cdf68639251504e719f4cdd4a9a2a2f04e1ae2)) + +## [0.1.1](https://github.com/nwutils/getter/compare/v0.1.0...v0.1.1) (2025-11-30) + + +### Bug Fixes + +* adopt inversion of control ([#2](https://github.com/nwutils/getter/issues/2)) ([8f87b29](https://github.com/nwutils/getter/commit/8f87b2955e9b939274d2bf0ad8f9f6e25164ae7f)) + + +### Chores + +* **ci:** trigger publish job on release event ([a90974e](https://github.com/nwutils/getter/commit/a90974eecc9fa8aad4b1d083d6b0b0746bd53762)) +* **deps:** configure Dependabot ([0e0a0bf](https://github.com/nwutils/getter/commit/0e0a0bf838e9f9078c1749cb012cfd0142d75de8)) +* migrate from nw-builder ([f78b3d9](https://github.com/nwutils/getter/commit/f78b3d9aa075c740197cbe1f832a8a4b5eb9d8eb)) diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..2526652 --- /dev/null +++ b/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2025 Ayushman Chhabra + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..ee033dd --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,19 @@ +import js from "@eslint/js"; +import { defineConfig } from "eslint/config"; +import jsdoc from "eslint-plugin-jsdoc"; +import globals from "globals"; + +export default defineConfig([ + { + files: ["**/*.{js,mjs,cjs}"], + plugins: { + jsdoc, + }, + languageOptions: { + globals: globals.node, + }, + rules: { + ...js.configs.recommended.rules, + }, + }, +]); diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..eb9bde1 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1892 @@ +{ + "name": "@nwutils/runner", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@nwutils/runner", + "version": "0.0.0", + "license": "MIT", + "dependencies": { + "semver": "^7.7.3", + "tar": "^7.5.3", + "yauzl-promise": "^4.0.0" + }, + "devDependencies": { + "@eslint/js": "^9.39.2", + "@nwutils/getter": "^0.2.2", + "eslint": "^9.39.2", + "eslint-plugin-jsdoc": "^62.1.0", + "globals": "^17.0.0", + "typescript": "^5.9.3" + } + }, + "node_modules/@emnapi/core": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.7.0.tgz", + "integrity": "sha512-pJdKGq/1iquWYtv1RRSljZklxHCOCAJFJrImO5ZLKPJVJlVUcs8yFwNQlqS0Lo8xT1VAXXTCZocF9n26FWEKsw==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.1.0", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.7.0.tgz", + "integrity": "sha512-oAYoQnCYaQZKVS53Fq23ceWMRxq5EhQsE0x0RdQ55jT7wagMu5k+fS39v1fiSLrtrLQlXwVINenqhLMtTrV/1Q==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", + "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@es-joy/jsdoccomment": { + "version": "0.81.0", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.81.0.tgz", + "integrity": "sha512-4V4A0hFAB19id7w9iwiosV/rqwlH+PXEuYnnu1Cyc5jUjTwsE2G1qsX9TOCmfCmsWYBg6xeDC/XDFUzXAxDg3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.8", + "@typescript-eslint/types": "^8.53.0", + "comment-parser": "1.4.4", + "esquery": "^1.7.0", + "jsdoc-type-pratt-parser": "~7.0.0" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@es-joy/resolve.exports": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@es-joy/resolve.exports/-/resolve.exports-1.2.0.tgz", + "integrity": "sha512-Q9hjxWI5xBM+qW2enxfe8wDKdFWMfd0Z29k5ZJnuBqD/CasY5Zryj09aCA6owbGATWz+39p5uIdaHXpopOcG8g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", + "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz", + "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.1", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.39.2", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz", + "integrity": "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" + } + }, + "node_modules/@node-rs/crc32": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32/-/crc32-1.10.6.tgz", + "integrity": "sha512-+llXfqt+UzgoDzT9of5vPQPGqTAVCohU74I9zIBkNo5TH6s2P31DFJOGsJQKN207f0GHnYv5pV3wh3BCY/un/A==", + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "optionalDependencies": { + "@node-rs/crc32-android-arm-eabi": "1.10.6", + "@node-rs/crc32-android-arm64": "1.10.6", + "@node-rs/crc32-darwin-arm64": "1.10.6", + "@node-rs/crc32-darwin-x64": "1.10.6", + "@node-rs/crc32-freebsd-x64": "1.10.6", + "@node-rs/crc32-linux-arm-gnueabihf": "1.10.6", + "@node-rs/crc32-linux-arm64-gnu": "1.10.6", + "@node-rs/crc32-linux-arm64-musl": "1.10.6", + "@node-rs/crc32-linux-x64-gnu": "1.10.6", + "@node-rs/crc32-linux-x64-musl": "1.10.6", + "@node-rs/crc32-wasm32-wasi": "1.10.6", + "@node-rs/crc32-win32-arm64-msvc": "1.10.6", + "@node-rs/crc32-win32-ia32-msvc": "1.10.6", + "@node-rs/crc32-win32-x64-msvc": "1.10.6" + } + }, + "node_modules/@node-rs/crc32-android-arm-eabi": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-android-arm-eabi/-/crc32-android-arm-eabi-1.10.6.tgz", + "integrity": "sha512-vZAMuJXm3TpWPOkkhxdrofWDv+Q+I2oO7ucLRbXyAPmXFNDhHtBxbO1rk9Qzz+M3eep8ieS4/+jCL1Q0zacNMQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/crc32-android-arm64": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-android-arm64/-/crc32-android-arm64-1.10.6.tgz", + "integrity": "sha512-Vl/JbjCinCw/H9gEpZveWCMjxjcEChDcDBM8S4hKay5yyoRCUHJPuKr4sjVDBeOm+1nwU3oOm6Ca8dyblwp4/w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/crc32-darwin-arm64": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-darwin-arm64/-/crc32-darwin-arm64-1.10.6.tgz", + "integrity": "sha512-kARYANp5GnmsQiViA5Qu74weYQ3phOHSYQf0G+U5wB3NB5JmBHnZcOc46Ig21tTypWtdv7u63TaltJQE41noyg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/crc32-darwin-x64": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-darwin-x64/-/crc32-darwin-x64-1.10.6.tgz", + "integrity": "sha512-Q99bevJVMfLTISpkpKBlXgtPUItrvTWKFyiqoKH5IvscZmLV++NH4V13Pa17GTBmv9n18OwzgQY4/SRq6PQNVA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/crc32-freebsd-x64": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-freebsd-x64/-/crc32-freebsd-x64-1.10.6.tgz", + "integrity": "sha512-66hpawbNjrgnS9EDMErta/lpaqOMrL6a6ee+nlI2viduVOmRZWm9Rg9XdGTK/+c4bQLdtC6jOd+Kp4EyGRYkAg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/crc32-linux-arm-gnueabihf": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-arm-gnueabihf/-/crc32-linux-arm-gnueabihf-1.10.6.tgz", + "integrity": "sha512-E8Z0WChH7X6ankbVm8J/Yym19Cq3otx6l4NFPS6JW/cWdjv7iw+Sps2huSug+TBprjbcEA+s4TvEwfDI1KScjg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/crc32-linux-arm64-gnu": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-arm64-gnu/-/crc32-linux-arm64-gnu-1.10.6.tgz", + "integrity": "sha512-LmWcfDbqAvypX0bQjQVPmQGazh4dLiVklkgHxpV4P0TcQ1DT86H/SWpMBMs/ncF8DGuCQ05cNyMv1iddUDugoQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/crc32-linux-arm64-musl": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-arm64-musl/-/crc32-linux-arm64-musl-1.10.6.tgz", + "integrity": "sha512-k8ra/bmg0hwRrIEE8JL1p32WfaN9gDlUUpQRWsbxd1WhjqvXea7kKO6K4DwVxyxlPhBS9Gkb5Urq7Y4mXANzaw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/crc32-linux-x64-gnu": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-x64-gnu/-/crc32-linux-x64-gnu-1.10.6.tgz", + "integrity": "sha512-IfjtqcuFK7JrSZ9mlAFhb83xgium30PguvRjIMI45C3FJwu18bnLk1oR619IYb/zetQT82MObgmqfKOtgemEKw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/crc32-linux-x64-musl": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-x64-musl/-/crc32-linux-x64-musl-1.10.6.tgz", + "integrity": "sha512-LbFYsA5M9pNunOweSt6uhxenYQF94v3bHDAQRPTQ3rnjn+mK6IC7YTAYoBjvoJP8lVzcvk9hRj8wp4Jyh6Y80g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/crc32-wasm32-wasi": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-wasm32-wasi/-/crc32-wasm32-wasi-1.10.6.tgz", + "integrity": "sha512-KaejdLgHMPsRaxnM+OG9L9XdWL2TabNx80HLdsCOoX9BVhEkfh39OeahBo8lBmidylKbLGMQoGfIKDjq0YMStw==", + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.5" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@node-rs/crc32-win32-arm64-msvc": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-win32-arm64-msvc/-/crc32-win32-arm64-msvc-1.10.6.tgz", + "integrity": "sha512-x50AXiSxn5Ccn+dCjLf1T7ZpdBiV1Sp5aC+H2ijhJO4alwznvXgWbopPRVhbp2nj0i+Gb6kkDUEyU+508KAdGQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/crc32-win32-ia32-msvc": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-win32-ia32-msvc/-/crc32-win32-ia32-msvc-1.10.6.tgz", + "integrity": "sha512-DpDxQLaErJF9l36aghe1Mx+cOnYLKYo6qVPqPL9ukJ5rAGLtCdU0C+Zoi3gs9ySm8zmbFgazq/LvmsZYU42aBw==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/crc32-win32-x64-msvc": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-win32-x64-msvc/-/crc32-win32-x64-msvc-1.10.6.tgz", + "integrity": "sha512-5B1vXosIIBw1m2Rcnw62IIfH7W9s9f7H7Ma0rRuhT8HR4Xh8QCgw6NJSI2S2MCngsGktYnAhyUvs81b7efTyQw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nwutils/getter": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@nwutils/getter/-/getter-0.2.2.tgz", + "integrity": "sha512-03JbQfBagmEuI5WeRKnGsu7vvQd7TlP3h5/AYIhhb36y6CdCzQnLis4ccEqiG7gLDBs+tfV2vZ0GRy8i/1KtDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.7.3", + "tar": "^7.5.4", + "yauzl-promise": "^4.0.0" + } + }, + "node_modules/@sindresorhus/base62": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/base62/-/base62-1.0.0.tgz", + "integrity": "sha512-TeheYy0ILzBEI/CO55CP6zJCSdSWeRtGnHy8U8dWSUH4I68iqTsy7HkMktR4xakThc9jotkPQUXT4ITdbV7cHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/types": { + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.53.0.tgz", + "integrity": "sha512-Bmh9KX31Vlxa13+PqPvt4RzKRN1XORYSLlAE+sO1i28NkisGbTtSLFVB3l7PWdHtR3E0mVMuC7JilWJ99m2HxQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/are-docs-informative": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", + "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/comment-parser": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.4.tgz", + "integrity": "sha512-0D6qSQ5IkeRrGJFHRClzaMOenMeT0gErz3zIw3AprKMqhRN6LNU2jQOdkPG/FZ+8bCgXE1VidrgSzlBBDZRr8A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.39.2", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz", + "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.1", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.39.2", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-jsdoc": { + "version": "62.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-62.1.0.tgz", + "integrity": "sha512-HEK/u7FO/hPDNo5ERxru7OouIx6AVBjjNbNQCsq4CxQBtRxb9esr8PuxX2zy0zAdGJnfczg3+zytnkKWjsKWwQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@es-joy/jsdoccomment": "~0.81.0", + "@es-joy/resolve.exports": "1.2.0", + "are-docs-informative": "^0.0.2", + "comment-parser": "1.4.4", + "debug": "^4.4.3", + "escape-string-regexp": "^4.0.0", + "espree": "^11.0.0", + "esquery": "^1.7.0", + "html-entities": "^2.6.0", + "object-deep-merge": "^2.0.0", + "parse-imports-exports": "^0.2.4", + "semver": "^7.7.3", + "spdx-expression-parse": "^4.0.0", + "to-valid-identifier": "^1.0.0" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-jsdoc/node_modules/eslint-visitor-keys": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.0.tgz", + "integrity": "sha512-A0XeIi7CXU7nPlfHS9loMYEKxUaONu/hTEzHTGba9Huu94Cq1hPivf+DE5erJozZOky0LfvXAyrV/tcswpLI0Q==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-jsdoc/node_modules/espree": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-11.0.0.tgz", + "integrity": "sha512-+gMeWRrIh/NsG+3NaLeWHuyeyk70p2tbvZIWBYcqQ4/7Xvars6GYTZNhF1sIeLcc6Wb11He5ffz3hsHyXFrw5A==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^5.0.0" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.0.0.tgz", + "integrity": "sha512-gv5BeD2EssA793rlFWVPMMCqefTlpusw6/2TbAVMy0FzcG8wKJn4O+NqJ4+XWmmwrayJgw5TzrmWjFgmz1XPqw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/html-entities": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", + "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ], + "license": "MIT" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-it-type": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/is-it-type/-/is-it-type-5.1.3.tgz", + "integrity": "sha512-AX2uU0HW+TxagTgQXOJY7+2fbFHemC7YFBwN1XqD8qQMKdtfbOC8OC3fUb4s5NU59a3662Dzwto8tWDdZYRXxg==", + "license": "MIT", + "dependencies": { + "globalthis": "^1.0.2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdoc-type-pratt-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-7.0.0.tgz", + "integrity": "sha512-c7YbokssPOSHmqTbSAmTtnVgAVa/7lumWNYqomgd5KOMyPrRve2anx6lonfOsXEQacqF9FKVUj7bLg4vRSvdYA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minizlib": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", + "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", + "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/object-deep-merge": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/object-deep-merge/-/object-deep-merge-2.0.0.tgz", + "integrity": "sha512-3DC3UMpeffLTHiuXSy/UG4NOIYTLlY9u3V82+djSCLYClWobZiS4ivYzpIUWrRY/nfsJ8cWsKyG3QfyLePmhvg==", + "dev": true, + "license": "MIT" + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-imports-exports": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/parse-imports-exports/-/parse-imports-exports-0.2.4.tgz", + "integrity": "sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse-statements": "1.0.11" + } + }, + "node_modules/parse-statements": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/parse-statements/-/parse-statements-1.0.11.tgz", + "integrity": "sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/reserved-identifiers": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/reserved-identifiers/-/reserved-identifiers-1.2.0.tgz", + "integrity": "sha512-yE7KUfFvaBFzGPs5H3Ops1RevfUEsDc5Iz65rOwWg4lE8HJSYtle77uul3+573457oHvBKuHYDl/xqUkKpEEdw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/simple-invariant": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/simple-invariant/-/simple-invariant-2.0.1.tgz", + "integrity": "sha512-1sbhsxqI+I2tqlmjbz99GXNmZtr6tKIyEgGGnJw/MKGblalqk/XoOYYFJlBzTKZCxx8kLaD3FD5s9BEEjx5Pyg==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true, + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", + "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.22", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz", + "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.9.tgz", + "integrity": "sha512-BTLcK0xsDh2+PUe9F6c2TlRp4zOOBMTkoQHQIWSIzI0R7KG46uEwq4OPk2W7bZcprBMsuaeFsqwYr7pjh6CuHg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.1.0", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/to-valid-identifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-valid-identifier/-/to-valid-identifier-1.0.0.tgz", + "integrity": "sha512-41wJyvKep3yT2tyPqX/4blcfybknGB4D+oETKLs7Q76UiPqRpUJK3hr1nxelyYO0PHKVzJwlu0aCeEAsGI6rpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/base62": "^1.0.0", + "reserved-identifiers": "^1.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "license": "0BSD", + "optional": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/yauzl-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yauzl-promise/-/yauzl-promise-4.0.0.tgz", + "integrity": "sha512-/HCXpyHXJQQHvFq9noqrjfa/WpQC2XYs3vI7tBiAi4QiIU1knvYhZGaO1QPjwIVMdqflxbmwgMXtYeaRiAE0CA==", + "license": "MIT", + "dependencies": { + "@node-rs/crc32": "^1.7.0", + "is-it-type": "^5.1.2", + "simple-invariant": "^2.0.1" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..35887a5 --- /dev/null +++ b/package.json @@ -0,0 +1,62 @@ +{ + "name": "@nwutils/runner", + "version": "0.0.0", + "description": "Run NW.js and related binaries for Linux, MacOS and Windows.", + "keywords": [ + "NW.js", + "node-webkit", + "Desktop", + "Application" + ], + "author": { + "name": "Ayushman Chhabra", + "url": "https://ayushmanchhabra.com" + }, + "maintainers": [ + { + "name": "Ayushman Chhabra", + "url": "https://ayushmanchhabra.com" + } + ], + "contributors": [ + { + "name": "@nwutils/getter Contributors", + "url": "https://github.com/nwutils/getter/graphs/contributors" + } + ], + "license": "MIT", + "main": "./src/main.js", + "types": "types", + "type": "module", + "files": [ + "LICENSE", + "src" + ], + "homepage": "https://github.com/nwutils/getter", + "repository": { + "type": "git", + "url": "git+https://github.com/nwutils/getter.git" + }, + "scripts": { + "lint": "eslint .", + "type": "tsc", + "test": "node --test --experimental-test-coverage --test-coverage-exclude=\"tests/**/*\" \"tests/specs/*.test.js\"" + }, + "volta": { + "node": "25.1.0", + "npm": "11.11.0" + }, + "dependencies": { + "semver": "^7.7.3", + "tar": "^7.5.3", + "yauzl-promise": "^4.0.0" + }, + "devDependencies": { + "@eslint/js": "^9.39.2", + "@nwutils/getter": "^0.2.2", + "eslint": "^9.39.2", + "eslint-plugin-jsdoc": "^62.1.0", + "globals": "^17.0.0", + "typescript": "^5.9.3" + } +} diff --git a/src/main.js b/src/main.js new file mode 100644 index 0000000..571c4c2 --- /dev/null +++ b/src/main.js @@ -0,0 +1,65 @@ +import child_process from 'node:child_process'; +import path from 'node:path'; + +/** + * @typedef {object} Options + * @property {string | "latest" | "stable" | "lts"} version Runtime version + * @property {"normal" | "sdk"} flavor Build flavor + * @property {"linux" | "osx" | "win"} platform Target platform + * @property {"ia32" | "x64" | "arm64"} arch Target arch + * @property {string} srcDir Source directory + * @property {string} cacheDir Cache directory + * @property {boolean} glob If true, throw error + * @property {string[]} argv CLI arguments + */ + +/** + * Run NW.js application. + * @async + * @function + * @param {Options} options Options + * @returns {Promise} - A Node.js process object + */ +async function run({ + version, + flavor, + platform, + arch, + srcDir, + cacheDir, + argv, +}) { + const nwDir = path.resolve( + cacheDir, + `nwjs${flavor === 'sdk' ? '-sdk' : ''}-v${version}-${platform}-${arch}`, + ); + + const EXE_NAME = { + win: 'nw.exe', + osx: 'nwjs.app/Contents/MacOS/nwjs', + linux: 'nw', + }; + + const nwExe = path.resolve(nwDir, EXE_NAME[platform]); + + /** + * @type {child_process.ChildProcess | null} + */ + let nwProcess = child_process.spawn( + nwExe, + [...[srcDir], ...argv], + { stdio: 'inherit' }, + ); + + nwProcess.on('close', () => { + // define callback on close + }); + + nwProcess.on('error', (error) => { + // define callback on error + }); + + return nwProcess; +} + +export default run; diff --git a/tests/specs/main.test.js b/tests/specs/main.test.js new file mode 100644 index 0000000..c7af197 --- /dev/null +++ b/tests/specs/main.test.js @@ -0,0 +1,46 @@ +import assert from "node:assert/strict"; +import fs from "node:fs"; +import { describe, it } from "node:test"; + +import get from "../../src/main.js"; + +describe("getter test suite", function () { + + it("downloads a file from a test server", async function () { + if (!fs.existsSync("./cache/nwjs-v0.108.0-linux-x64")) { + await get({ + version: "0.108.0", + flavor: "normal", + platform: "linux", + arch: "x64", + downloadUrl: "https://dl.nwjs.io", + manifestUrl: "https://nwjs.io/versions.json", + cacheDir: "./cache", + cache: true, + ffmpeg: false, + nativeAddon: false, + shaSum: true, + }); + } + + assert.strictEqual(fs.existsSync("./cache/nwjs-v0.108.0-linux-x64"), true); + }); + + it('parses manifestUrl file:/// path correctly', async function () { + await get({ + version: "0.108.0", + flavor: "normal", + platform: "linux", + arch: "x64", + downloadUrl: "https://dl.nwjs.io", + manifestUrl: `file:///${process.cwd()}/tests/fixtures/main_manifest.json`, + cacheDir: "./cache", + cache: true, + ffmpeg: false, + nativeAddon: false, + shaSum: true, + }); + const localManifestFile = JSON.parse(await fs.promises.readFile(`${process.cwd()}/cache/manifest.json`, "utf-8")); + assert.strictEqual(localManifestFile.latest, 'v0.108.0'); + }); +}); diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..ab3f75f --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "allowJs": true, + "checkJs": true, + "declaration": true, + "emitDeclarationOnly": true, + "outDir": "types", + "strict": true + }, + "include": [ + "src/**/*.js" + ] +} diff --git a/types/main.d.ts b/types/main.d.ts new file mode 100644 index 0000000..66e0398 --- /dev/null +++ b/types/main.d.ts @@ -0,0 +1,44 @@ +export default get; +export type Options = { + /** + * Runtime version + */ + version: string | "latest" | "stable" | "lts"; + /** + * Build flavor + */ + flavor: "normal" | "sdk"; + /** + * Target platform + */ + platform: "linux" | "osx" | "win"; + /** + * Target architecture + */ + arch: "ia32" | "x64" | "arm64"; + /** + * Cache directory + */ + cacheDir: string; + /** + * List of CLI arguments to be passed to NW.js. + */ + argv: string[]; +}; +/** + * @typedef {object} Options + * @property {string | "latest" | "stable" | "lts"} version Runtime version + * @property {"normal" | "sdk"} flavor Build flavor + * @property {"linux" | "osx" | "win"} platform Target platform + * @property {"ia32" | "x64" | "arm64"} arch Target architecture + * @property {string} cacheDir Cache directory + * @property {string[]} argv List of CLI arguments to be passed to NW.js. + */ +/** + * Get NW.js and related binaries for Linux, MacOS and Windows. + * @async + * @function + * @param {Options} options Get mode options + * @returns {Promise} + */ +declare function get(options: Options): Promise; From bed2a470e307104f1fea21ad7e4c11a409a0440c Mon Sep 17 00:00:00 2001 From: Ayushman Chhabra <14110965+ayushmanchhabra@users.noreply.github.com> Date: Tue, 3 Mar 2026 20:28:48 +0530 Subject: [PATCH 02/10] chore: fix lint error --- src/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.js b/src/main.js index 571c4c2..2eca82d 100644 --- a/src/main.js +++ b/src/main.js @@ -55,7 +55,7 @@ async function run({ // define callback on close }); - nwProcess.on('error', (error) => { + nwProcess.on('error', () => { // define callback on error }); From bf205a4586c5ae4189810696a30ecea3762fa949 Mon Sep 17 00:00:00 2001 From: Ayushman Chhabra <14110965+ayushmanchhabra@users.noreply.github.com> Date: Tue, 3 Mar 2026 20:31:20 +0530 Subject: [PATCH 03/10] fix(test): correct import --- tests/specs/main.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/specs/main.test.js b/tests/specs/main.test.js index c7af197..f94868a 100644 --- a/tests/specs/main.test.js +++ b/tests/specs/main.test.js @@ -2,7 +2,7 @@ import assert from "node:assert/strict"; import fs from "node:fs"; import { describe, it } from "node:test"; -import get from "../../src/main.js"; +import get from "@nwutils/getter"; describe("getter test suite", function () { From 1c1b7a75f683c4e0f52700b94083bb9876483ad5 Mon Sep 17 00:00:00 2001 From: Ayushman Chhabra <14110965+ayushmanchhabra@users.noreply.github.com> Date: Tue, 3 Mar 2026 22:08:18 +0530 Subject: [PATCH 04/10] chore: update --- tests/fixtures/app/index.html | 11 + tests/fixtures/app/package.json | 4 + tests/fixtures/main_manifest.json | 3617 +++++++++++++++++++++++++++++ tests/specs/main.test.js | 86 +- 4 files changed, 3678 insertions(+), 40 deletions(-) create mode 100644 tests/fixtures/app/index.html create mode 100644 tests/fixtures/app/package.json create mode 100644 tests/fixtures/main_manifest.json diff --git a/tests/fixtures/app/index.html b/tests/fixtures/app/index.html new file mode 100644 index 0000000..142d38e --- /dev/null +++ b/tests/fixtures/app/index.html @@ -0,0 +1,11 @@ + + + + + + Demo + + + Hello, World! + + \ No newline at end of file diff --git a/tests/fixtures/app/package.json b/tests/fixtures/app/package.json new file mode 100644 index 0000000..1bdf5bd --- /dev/null +++ b/tests/fixtures/app/package.json @@ -0,0 +1,4 @@ +{ + "name": "Demo", + "main": "index.html" +} diff --git a/tests/fixtures/main_manifest.json b/tests/fixtures/main_manifest.json new file mode 100644 index 0000000..1fbecdf --- /dev/null +++ b/tests/fixtures/main_manifest.json @@ -0,0 +1,3617 @@ +{ + "latest": "v0.108.0", + "stable": "v0.108.0", + "lts": "v0.14.7", + "versions": [ + { + "version": "v0.108.0", + "date": "2026/02/15", + "files": ["win-x64", "win-ia32", "win-arm64", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "25.2.1", + "chromium": "145.0.7632.76" + } + }, + { + "version": "v0.107.0", + "date": "2026/01/11", + "files": ["win-x64", "win-ia32", "win-arm64", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "25.2.1", + "chromium": "144.0.7559.59" + } + }, + { + "version": "v0.106.1", + "date": "2025/12/26", + "files": ["win-x64", "win-ia32", "win-arm64", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "25.2.1", + "chromium": "143.0.7499.170" + } + }, + { + "version": "v0.106.0", + "date": "2025/11/23", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "25.1.0", + "chromium": "143.0.7499.40" + } + }, + { + "version": "v0.105.0", + "date": "2025/10/24", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "24.9.0", + "chromium": "142.0.7444.53" + } + }, + { + "version": "v0.104.1", + "date": "2025/10/07", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "24.9.0", + "chromium": "141.0.7390.55" + } + }, + { + "version": "v0.104.0", + "date": "2025/09/30", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "24.7.0", + "chromium": "141.0.7390.37" + } + }, + { + "version": "v0.103.1", + "date": "2025/09/09", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "24.7.0", + "chromium": "140.0.7339.81" + } + }, + { + "version": "v0.103.0", + "date": "2025/08/28", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "24.5.0", + "chromium": "140.0.7339.41" + } + }, + { + "version": "v0.102.1", + "date": "2025/08/14", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "24.5.0", + "chromium": "139.0.7258.128" + } + }, + { + "version": "v0.102.0", + "date": "2025/07/31", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "24.3.0", + "chromium": "139.0.7258.66" + } + }, + { + "version": "v0.101.2", + "date": "2025/07/03", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "24.3.0", + "chromium": "138.0.7204.97" + } + }, + { + "version": "v0.101.1", + "date": "2025/06/30", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "24.3.0", + "chromium": "138.0.7204.50" + } + }, + { + "version": "v0.101.0", + "date": "2025/06/25", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "24.1.0", + "chromium": "138.0.7204.50" + } + }, + { + "version": "v0.100.1", + "date": "2025/06/04", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "24.1.0", + "chromium": "137.0.7151.69" + } + }, + { + "version": "v0.100.0", + "date": "2025/05/23", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "23.11.0", + "chromium": "137.0.7151.41" + } + }, + { + "version": "v0.99.1", + "date": "2025/05/08", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "23.11.0", + "chromium": "136.0.7103.93" + } + }, + { + "version": "v0.99.0", + "date": "2025/04/24", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "23.10.0", + "chromium": "136.0.7103.48" + } + }, + { + "version": "v0.98.2", + "date": "2025/04/17", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "23.10.0", + "chromium": "135.0.7049.96" + } + }, + { + "version": "v0.98.1", + "date": "2025/04/04", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "23.10.0", + "chromium": "135.0.7049.42" + } + }, + { + "version": "v0.98.0", + "date": "2025/03/28", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "23.3.0", + "chromium": "135.0.7049.41" + } + }, + { + "version": "v0.97.0", + "date": "2025/03/11", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "23.3.0", + "chromium": "134.0.6998.45" + } + }, + { + "version": "v0.96.0", + "date": "2025/02/18", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "23.3.0", + "chromium": "133.0.6943.60" + } + }, + { + "version": "v0.95.0", + "date": "2025/01/24", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "23.3.0", + "chromium": "132.0.6834.84" + } + }, + { + "version": "v0.94.1", + "date": "2025/01/05", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "23.3.0", + "chromium": "131.0.6778.109" + } + }, + { + "version": "v0.94.0", + "date": "2024/12/03", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "22.7.0", + "chromium": "131.0.6778.70" + } + }, + { + "version": "v0.93.0", + "date": "2024/10/22", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "22.7.0", + "chromium": "130.0.6723.59" + } + }, + { + "version": "v0.92.0", + "date": "2024/09/24", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "22.7.0", + "chromium": "129.0.6668.59" + } + }, + { + "version": "v0.91.0", + "date": "2024/08/21", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "22.2.0", + "chromium": "128.0.6613.36" + } + }, + { + "version": "v0.90.0", + "date": "2024/07/30", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "22.2.0", + "chromium": "127.0.6533.73" + } + }, + { + "version": "v0.89.0", + "date": "2024/06/25", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "22.2.0", + "chromium": "126.0.6478.57" + } + }, + { + "version": "v0.88.0", + "date": "2024/05/21", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "22.0.0", + "chromium": "125.0.6422.60" + } + }, + { + "version": "v0.87.0", + "date": "2024/04/21", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "21.1.0", + "chromium": "124.0.6367.62" + } + }, + { + "version": "v0.86.0", + "date": "2024/04/02", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "21.1.0", + "chromium": "123.0.6312.87" + } + }, + { + "version": "v0.85.0", + "date": "2024/03/04", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "21.1.0", + "chromium": "122.0.6261.69" + } + }, + { + "version": "v0.84.0", + "date": "2024/02/05", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "21.1.0", + "chromium": "121.0.6167.139" + } + }, + { + "version": "v0.83.0", + "date": "2023/12/22", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "21.1.0", + "chromium": "120.0.6099.129" + } + }, + { + "version": "v0.82.0", + "date": "2023/11/02", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "20.7.0", + "chromium": "119.0.6045.105" + } + }, + { + "version": "v0.81.0", + "date": "2023/10/19", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "20.7.0", + "chromium": "118.0.5993.71" + } + }, + { + "version": "v0.80.0", + "date": "2023/09/15", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "20.5.1", + "chromium": "117.0.5938.63" + } + }, + { + "version": "v0.79.1", + "date": "2023/08/23", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "20.5.1", + "chromium": "116.0.5845.96" + } + }, + { + "version": "v0.79.0", + "date": "2023/08/17", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "20.5.0", + "chromium": "116.0.5845.96" + } + }, + { + "version": "v0.78.1", + "date": "2023/07/30", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "20.5.0", + "chromium": "115.0.5790.114" + } + }, + { + "version": "v0.78.0", + "date": "2023/07/23", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "20.2.0", + "chromium": "115.0.5790.98" + } + }, + { + "version": "v0.77.0", + "date": "2023/06/05", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-arm64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "20.1.0", + "chromium": "114.0.5735.91" + } + }, + { + "version": "v0.76.1", + "date": "2023/05/16", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "20.1.0", + "chromium": "113.0.5672.64" + } + }, + { + "version": "v0.76.0", + "date": "2023/05/09", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "19.8.1", + "chromium": "113.0.5672.64" + } + }, + { + "version": "v0.75.1", + "date": "2023/04/27", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "19.8.1", + "chromium": "112.0.5615.138" + } + }, + { + "version": "v0.75.0", + "date": "2023/04/05", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "19.7.0", + "chromium": "112.0.5615.49" + } + }, + { + "version": "v0.74.0", + "date": "2023/03/13", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "19.7.0", + "chromium": "111.0.5563.65" + } + }, + { + "version": "v0.73.0", + "date": "2023/02/14", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "19.5.0", + "chromium": "110.0.5481.97" + } + }, + { + "version": "v0.72.0", + "date": "2023/01/13", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "19.3.0", + "chromium": "109.0.5414.87" + } + }, + { + "version": "v0.71.1", + "date": "2022/12/22", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "19.3.0", + "chromium": "108.0.5359.95" + } + }, + { + "version": "v0.71.0", + "date": "2022/12/08", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "19.0.0", + "chromium": "108.0.5359.95" + } + }, + { + "version": "v0.70.1", + "date": "2022/10/27", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "19.0.0", + "chromium": "107.0.5304.88" + } + }, + { + "version": "v0.70.0", + "date": "2022/10/27", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "18.10.0", + "chromium": "107.0.5304.68" + } + }, + { + "version": "v0.69.1", + "date": "2022/10/02", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "18.10.0", + "chromium": "106.0.5249.61" + } + }, + { + "version": "v0.69.0", + "date": "2022/09/29", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "18.9.1", + "chromium": "106.0.5249.61" + } + }, + { + "version": "v0.68.1", + "date": "2022/09/14", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "18.9.0", + "chromium": "105.0.5195.102" + } + }, + { + "version": "v0.68.0", + "date": "2022/09/06", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "18.8.0", + "chromium": "105.0.5195.102" + } + }, + { + "version": "v0.67.1", + "date": "2022/08/10", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "18.7.0", + "chromium": "104.0.5112.80" + } + }, + { + "version": "v0.67.0", + "date": "2022/08/03", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "18.5.0", + "chromium": "104.0.5112.80" + } + }, + { + "version": "v0.66.1", + "date": "2022/07/09", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "18.5.0", + "chromium": "103.0.5060.114" + } + }, + { + "version": "v0.66.0", + "date": "2022/06/28", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "18.4.0", + "chromium": "103.0.5060.53" + } + }, + { + "version": "v0.65.1", + "date": "2022/06/10", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "18.3.0", + "chromium": "102.0.5005.115" + } + }, + { + "version": "v0.65.0", + "date": "2022/05/30", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "18.0.0", + "chromium": "102.0.5005.61" + } + }, + { + "version": "v0.64.1", + "date": "2022/05/15", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "18.0.0", + "chromium": "101.0.4951.67" + } + }, + { + "version": "v0.64.0", + "date": "2022/05/01", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "17.8.0", + "chromium": "101.0.4951.41" + } + }, + { + "version": "v0.63.1", + "date": "2022/04/17", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "17.8.0", + "chromium": "100.0.4896.127" + } + }, + { + "version": "v0.63.0", + "date": "2022/03/30", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "17.7.2", + "chromium": "100.0.4896.60" + } + }, + { + "version": "v0.62.2", + "date": "2022/03/27", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "17.7.2", + "chromium": "99.0.4844.84" + } + }, + { + "version": "v0.62.1", + "date": "2022/03/22", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "17.7.2", + "chromium": "99.0.4844.83" + } + }, + { + "version": "v0.62.0", + "date": "2022/03/06", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "17.3.0", + "chromium": "99.0.4844.51" + } + }, + { + "version": "v0.61.0", + "date": "2022/02/06", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "17.3.0", + "chromium": "98.0.4758.82" + } + }, + { + "version": "v0.60.0", + "date": "2022/01/05", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "17.3.0", + "chromium": "97.0.4692.71" + } + }, + { + "version": "v0.59.1", + "date": "2021/12/21", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "17.3.0", + "chromium": "96.0.4664.110" + } + }, + { + "version": "v0.59.0", + "date": "2021/12/02", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "17.1.0", + "chromium": "96.0.4664.55" + } + }, + { + "version": "v0.58.0", + "date": "2021/10/25", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "16.10.0", + "chromium": "95.0.4638.54" + } + }, + { + "version": "v0.57.1", + "date": "2021/10/10", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "16.10.0", + "chromium": "94.0.4606.81" + } + }, + { + "version": "v0.57.0", + "date": "2021/09/25", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "16.9.1", + "chromium": "94.0.4606.61" + } + }, + { + "version": "v0.56.1", + "date": "2021/09/21", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "16.9.1", + "chromium": "93.0.4577.82" + } + }, + { + "version": "v0.56.0", + "date": "2021/09/05", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "16.4.2", + "chromium": "93.0.4577.63" + } + }, + { + "version": "v0.55.0", + "date": "2021/08/01", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "16.4.2", + "chromium": "92.0.4515.107" + } + }, + { + "version": "v0.54.1", + "date": "2021/07/02", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "16.4.0", + "chromium": "91.0.4472.114" + } + }, + { + "version": "v0.54.0", + "date": "2021/05/26", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "16.1.0", + "chromium": "91.0.4472.77" + } + }, + { + "version": "v0.53.1", + "date": "2021/05/14", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "16.1.0", + "chromium": "90.0.4430.93" + } + }, + { + "version": "v0.53.0", + "date": "2021/04/27", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "15.14.0", + "chromium": "90.0.4430.93" + } + }, + { + "version": "v0.52.2", + "date": "2021/04/07", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "15.12.0", + "chromium": "89.0.4389.114" + } + }, + { + "version": "v0.52.1", + "date": "2021/03/28", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "15.12.0", + "chromium": "89.0.4389.90" + } + }, + { + "version": "v0.52.0", + "date": "2021/03/05", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "15.10.0", + "chromium": "89.0.4389.72" + } + }, + { + "version": "v0.51.2", + "date": "2021/02/21", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "15.8.0", + "chromium": "88.0.4324.182" + } + }, + { + "version": "v0.51.1", + "date": "2021/02/08", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "15.8.0", + "chromium": "88.0.4324.150" + } + }, + { + "version": "v0.51.0", + "date": "2021/01/22", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "15.5.1", + "chromium": "88.0.4324.96" + } + }, + { + "version": "v0.50.3", + "date": "2021/01/12", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "15.5.1", + "chromium": "87.0.4280.141" + } + }, + { + "version": "v0.50.2", + "date": "2020/12/06", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "15.3.0", + "chromium": "87.0.4280.88" + } + }, + { + "version": "v0.50.1", + "date": "2020/11/25", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "15.3.0", + "chromium": "87.0.4280.66" + } + }, + { + "version": "v0.50.0", + "date": "2020/11/19", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "15.0.1", + "chromium": "87.0.4280.66" + } + }, + { + "version": "v0.49.2", + "date": "2020/11/01", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "15.0.1", + "chromium": "86.0.4240.111" + } + }, + { + "version": "v0.49.1", + "date": "2020/10/23", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "14.13.1", + "chromium": "86.0.4240.111" + } + }, + { + "version": "v0.49.0", + "date": "2020/10/07", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "14.12.0", + "chromium": "86.0.4240.75" + } + }, + { + "version": "v0.48.4", + "date": "2020/10/04", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "14.12.0", + "chromium": "85.0.4183.121" + } + }, + { + "version": "v0.49.0-beta1", + "date": "2020/09/27", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "14.12.0", + "chromium": "86.0.4240.53" + } + }, + { + "version": "v0.48.3", + "date": "2020/09/26", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "14.12.0", + "chromium": "85.0.4183.121" + } + }, + { + "version": "v0.48.2", + "date": "2020/09/15", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "14.10.1", + "chromium": "85.0.4183.83" + } + }, + { + "version": "v0.48.1", + "date": "2020/09/01", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "14.9.0", + "chromium": "85.0.4183.83" + } + }, + { + "version": "v0.48.0", + "date": "2020/08/27", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "14.8.0", + "chromium": "85.0.4183.83" + } + }, + { + "version": "v0.48.0-beta1", + "date": "2020/08/17", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "14.8.0", + "chromium": "85.0.4183.69" + } + }, + { + "version": "v0.47.3", + "date": "2020/08/16", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "14.8.0", + "chromium": "84.0.4147.125" + } + }, + { + "version": "v0.47.2", + "date": "2020/08/05", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "14.7.0", + "chromium": "84.0.4147.105" + } + }, + { + "version": "v0.47.1", + "date": "2020/07/24", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "14.6.0", + "chromium": "84.0.4147.89" + } + }, + { + "version": "v0.47.0", + "date": "2020/07/15", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "14.5.0", + "chromium": "84.0.4147.89" + } + }, + { + "version": "v0.46.4", + "date": "2020/07/08", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "14.5.0", + "chromium": "83.0.4103.116" + } + }, + { + "version": "v0.46.3", + "date": "2020/06/24", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "14.4.0", + "chromium": "83.0.4103.116" + } + }, + { + "version": "v0.47.0-beta1", + "date": "2020/06/10", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "14.4.0", + "chromium": "84.0.4147.38" + } + }, + { + "version": "v0.46.2", + "date": "2020/06/07", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "14.4.0", + "chromium": "83.0.4103.97" + } + }, + { + "version": "v0.46.1", + "date": "2020/06/04", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "14.4.0", + "chromium": "83.0.4103.61" + } + }, + { + "version": "v0.46.0", + "date": "2020/05/20", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "14.2.0", + "chromium": "83.0.4103.61" + } + }, + { + "version": "v0.45.6", + "date": "2020/05/10", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "14.2.0", + "chromium": "81.0.4044.138" + } + }, + { + "version": "v0.45.5", + "date": "2020/05/04", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "14.0.0", + "chromium": "81.0.4044.129" + } + }, + { + "version": "v0.46.0-beta1", + "date": "2020/05/02", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "14.0.0", + "chromium": "83.0.4103.23" + } + }, + { + "version": "v0.45.4", + "date": "2020/04/23", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "14.0.0", + "chromium": "81.0.4044.113" + } + }, + { + "version": "v0.45.3", + "date": "2020/04/19", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "13.13.0", + "chromium": "81.0.4044.113" + } + }, + { + "version": "v0.45.2", + "date": "2020/04/16", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "13.13.0", + "chromium": "81.0.4044.92" + } + }, + { + "version": "v0.45.1", + "date": "2020/04/10", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "13.12.0", + "chromium": "81.0.4044.92" + } + }, + { + "version": "v0.45.0", + "date": "2020/04/08", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "13.10.1", + "chromium": "81.0.4044.92" + } + }, + { + "version": "v0.44.6", + "date": "2020/04/01", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "13.10.1", + "chromium": "80.0.3987.162" + } + }, + { + "version": "v0.44.5", + "date": "2020/03/18", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "13.10.1", + "chromium": "80.0.3987.149" + } + }, + { + "version": "v0.44.4", + "date": "2020/03/09", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "13.10.1", + "chromium": "80.0.3987.132" + } + }, + { + "version": "v0.44.3", + "date": "2020/02/26", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "13.9.0", + "chromium": "80.0.3987.122" + } + }, + { + "version": "v0.44.2", + "date": "2020/02/19", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "13.8.0", + "chromium": "80.0.3987.116" + } + }, + { + "version": "v0.45.0-beta1", + "date": "2020/02/19", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "13.8.0", + "chromium": "81.0.4044.17" + } + }, + { + "version": "v0.44.1", + "date": "2020/02/11", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "13.8.0", + "chromium": "80.0.3987.87" + } + }, + { + "version": "v0.44.0", + "date": "2020/02/05", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "13.6.0", + "chromium": "80.0.3987.87" + } + }, + { + "version": "v0.43.6", + "date": "2020/01/17", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "13.6.0", + "chromium": "79.0.3945.130" + } + }, + { + "version": "v0.43.5", + "date": "2020/01/15", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "13.6.0", + "chromium": "79.0.3945.117" + } + }, + { + "version": "v0.44.0-beta1", + "date": "2019/12/20", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "13.5.0", + "chromium": "80.0.3987.16" + } + }, + { + "version": "v0.43.4", + "date": "2020/01/09", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "13.5.0", + "chromium": "79.0.3945.117" + } + }, + { + "version": "v0.43.3", + "date": "2020/01/01", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "13.5.0", + "chromium": "79.0.3945.88" + } + }, + { + "version": "v0.43.2", + "date": "2019/12/20", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "13.5.0", + "chromium": "79.0.3945.88" + } + }, + { + "version": "v0.43.1", + "date": "2019/12/16", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "13.3.0", + "chromium": "79.0.3945.79" + } + }, + { + "version": "v0.43.0", + "date": "2019/12/11", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "13.3.0", + "chromium": "79.0.3945.79" + } + }, + { + "version": "v0.42.6", + "date": "2019/11/30", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "13.1.0", + "chromium": "78.0.3904.108" + } + }, + { + "version": "v0.42.5", + "date": "2019/11/18", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "13.1.0", + "chromium": "78.0.3904.108" + } + }, + { + "version": "v0.42.4", + "date": "2019/11/13", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "13.1.0", + "chromium": "78.0.3904.97" + } + }, + { + "version": "v0.42.3", + "date": "2019/11/08", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "13.1.0", + "chromium": "78.0.3904.97" + } + }, + { + "version": "v0.43.0-beta1", + "date": "2019/11/04", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "13.0.1", + "chromium": "79.0.3945.16" + } + }, + { + "version": "v0.42.2", + "date": "2019/11/01", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "13.0.1", + "chromium": "78.0.3904.87" + } + }, + { + "version": "v0.42.1", + "date": "2019/10/30", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "13.0.1", + "chromium": "78.0.3904.70" + } + }, + { + "version": "v0.42.0", + "date": "2019/10/23", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "12.12.0", + "chromium": "78.0.3904.70" + } + }, + { + "version": "v0.41.3", + "date": "2019/10/15", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "12.12.0", + "chromium": "77.0.3865.120" + } + }, + { + "version": "v0.42.0-beta1", + "date": "2019/10/09", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "12.9.1", + "chromium": "78.0.3904.44" + } + }, + { + "version": "v0.41.2", + "date": "2019/09/20", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "12.9.1", + "chromium": "77.0.3865.90" + } + }, + { + "version": "v0.41.1", + "date": "2019/09/12", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "12.9.1", + "chromium": "77.0.3865.75" + } + }, + { + "version": "v0.41.0", + "date": "2019/09/12", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "12.9.1", + "chromium": "77.0.3865.75" + } + }, + { + "version": "v0.40.2", + "date": "2019/08/30", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "12.9.1", + "chromium": "76.0.3809.132" + } + }, + { + "version": "v0.41.0-beta1", + "date": "2019/08/29", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "12.8.0", + "chromium": "77.0.3865.42" + } + }, + { + "version": "v0.40.1", + "date": "2019/08/08", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "12.8.0", + "chromium": "76.0.3809.100" + } + }, + { + "version": "v0.40.0", + "date": "2019/07/30", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "12.6.0", + "chromium": "76.0.3809.87" + } + }, + { + "version": "v0.39.3", + "date": "2019/07/17", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "12.6.0", + "chromium": "75.0.3770.142" + } + }, + { + "version": "v0.40.0-beta1", + "date": "2019/06/29", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "12.4.0", + "chromium": "76.0.3809.46" + } + }, + { + "version": "v0.39.2", + "date": "2019/06/27", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "12.4.0", + "chromium": "75.0.3770.100" + } + }, + { + "version": "v0.39.1", + "date": "2019/06/18", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "12.3.1", + "chromium": "75.0.3770.90" + } + }, + { + "version": "v0.39.0", + "date": "2019/06/11", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "12.3.1", + "chromium": "75.0.3770.80" + } + }, + { + "version": "v0.38.4", + "date": "2019/05/24", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "12.3.1", + "chromium": "74.0.3729.169" + } + }, + { + "version": "v0.39.0-beta1", + "date": "2019/05/16", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "12.2.0", + "chromium": "75.0.3770.27" + } + }, + { + "version": "v0.38.3", + "date": "2019/05/15", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "12.2.0", + "chromium": "74.0.3729.157" + } + }, + { + "version": "v0.38.2", + "date": "2019/05/06", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "12.1.0", + "chromium": "74.0.3729.131" + } + }, + { + "version": "v0.38.1", + "date": "2019/04/29", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "12.0.0", + "chromium": "74.0.3729.108" + } + }, + { + "version": "v0.38.0", + "date": "2019/04/25", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "11.14.0", + "chromium": "74.0.3729.108" + } + }, + { + "version": "v0.37.4", + "date": "2019/04/15", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "11.14.0", + "chromium": "73.0.3683.103" + } + }, + { + "version": "v0.37.3", + "date": "2019/04/08", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "11.13.0", + "chromium": "73.0.3683.103" + } + }, + { + "version": "v0.38.0-beta1", + "date": "2019/04/03", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "11.13.0", + "chromium": "74.0.3729.40" + } + }, + { + "version": "v0.37.2", + "date": "2019/04/02", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "11.13.0", + "chromium": "73.0.3683.86" + } + }, + { + "version": "v0.37.1", + "date": "2019/03/21", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "11.12.0", + "chromium": "73.0.3683.86" + } + }, + { + "version": "v0.37.0", + "date": "2019/03/14", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "11.10.1", + "chromium": "73.0.3683.75" + } + }, + { + "version": "v0.36.4", + "date": "2019/03/04", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "11.10.1", + "chromium": "72.0.3626.121" + } + }, + { + "version": "v0.36.3", + "date": "2019/03/01", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "11.10.1", + "chromium": "72.0.3626.119" + } + }, + { + "version": "v0.37.0-beta1", + "date": "2019/02/22", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "11.10.0", + "chromium": "73.0.3683.39" + } + }, + { + "version": "v0.36.2", + "date": "2019/02/18", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "11.9.0", + "chromium": "72.0.3626.109" + } + }, + { + "version": "v0.36.1", + "date": "2019/02/08", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "11.9.0", + "chromium": "72.0.3626.96" + } + }, + { + "version": "v0.36.0", + "date": "2019/01/31", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "11.8.0", + "chromium": "72.0.3626.81" + } + }, + { + "version": "v0.35.5", + "date": "2019/01/15", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "11.6.0", + "chromium": "71.0.3578.98" + } + }, + { + "version": "v0.35.4", + "date": "2019/01/04", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "11.6.0", + "chromium": "71.0.3578.98" + } + }, + { + "version": "v0.35.3", + "date": "2018/12/24", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "11.5.0", + "chromium": "71.0.3578.98" + } + }, + { + "version": "v0.36.0-beta1", + "date": "2018/12/19", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "11.5.0", + "chromium": "72.0.3626.17" + } + }, + { + "version": "v0.35.2", + "date": "2018/12/14", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "11.4.0", + "chromium": "71.0.3578.98" + } + }, + { + "version": "v0.35.1", + "date": "2018/12/11", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "11.4.0", + "chromium": "71.0.3578.80" + } + }, + { + "version": "v0.35.0", + "date": "2018/12/05", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "11.3.0", + "chromium": "71.0.3578.80" + } + }, + { + "version": "v0.34.5", + "date": "2018/11/20", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "11.2.0", + "chromium": "70.0.3538.110" + } + }, + { + "version": "v0.34.4", + "date": "2018/11/16", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "11.2.0", + "chromium": "70.0.3538.102" + } + }, + { + "version": "v0.34.3", + "date": "2018/11/12", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "11.1.0", + "chromium": "70.0.3538.102" + } + }, + { + "version": "v0.35.0-beta1", + "date": "2018/11/09", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "11.1.0", + "chromium": "71.0.3578.30" + } + }, + { + "version": "v0.34.2", + "date": "2018/11/08", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "11.1.0", + "chromium": "70.0.3538.77" + } + }, + { + "version": "v0.34.1", + "date": "2018/10/25", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "11.0.0", + "chromium": "70.0.3538.77" + } + }, + { + "version": "v0.34.0", + "date": "2018/10/17", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "11.0.0-pre", + "chromium": "70.0.3538.67" + } + }, + { + "version": "v0.33.4", + "date": "2018/09/25", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "10.11.0", + "chromium": "69.0.3497.100" + } + }, + { + "version": "v0.34.0-beta1", + "date": "2018/09/21", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "11.0.0-pre", + "chromium": "70.0.3538.22" + } + }, + { + "version": "v0.33.3", + "date": "2018/09/18", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "10.10.0", + "chromium": "69.0.3497.100" + } + }, + { + "version": "v0.33.2", + "date": "2018/09/12", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "10.10.0", + "chromium": "69.0.3497.92" + } + }, + { + "version": "v0.33.1", + "date": "2018/09/11", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "10.10.0", + "chromium": "69.0.3497.81" + } + }, + { + "version": "v0.33.0", + "date": "2018/09/05", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "10.9.0", + "chromium": "69.0.3497.81" + } + }, + { + "version": "v0.32.4", + "date": "2018/08/25", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "10.9.0", + "chromium": "68.0.3440.106" + } + }, + { + "version": "v0.32.3", + "date": "2018/08/16", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "10.9.0", + "chromium": "68.0.3440.106" + } + }, + { + "version": "v0.33.0-beta1", + "date": "2018/08/15", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "10.8.0", + "chromium": "69.0.3497.32" + } + }, + { + "version": "v0.32.2", + "date": "2018/08/11", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "10.8.0", + "chromium": "68.0.3440.106" + } + }, + { + "version": "v0.32.1", + "date": "2018/08/02", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "10.8.0", + "chromium": "68.0.3440.84" + } + }, + { + "version": "v0.32.0", + "date": "2018/07/25", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "10.6.0", + "chromium": "68.0.3440.75" + } + }, + { + "version": "v0.31.5", + "date": "2018/07/09", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "10.6.0", + "chromium": "67.0.3396.99" + } + }, + { + "version": "v0.31.4", + "date": "2018/06/28", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "10.5.0", + "chromium": "67.0.3396.99" + } + }, + { + "version": "v0.31.3", + "date": "2018/06/25", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "10.5.0", + "chromium": "67.0.3396.87" + } + }, + { + "version": "v0.32.0-beta1", + "date": "2018/06/20", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "10.4.1", + "chromium": "68.0.3440.25" + } + }, + { + "version": "v0.31.2", + "date": "2018/06/14", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "10.4.1", + "chromium": "67.0.3396.87" + } + }, + { + "version": "v0.31.1", + "date": "2018/06/08", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "10.4.0", + "chromium": "67.0.3396.79" + } + }, + { + "version": "v0.31.0", + "date": "2018/05/30", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "10.1.0", + "chromium": "67.0.3396.62" + } + }, + { + "version": "v0.30.5", + "date": "2018/05/18", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "10.1.0", + "chromium": "66.0.3359.181" + } + }, + { + "version": "v0.30.4", + "date": "2018/05/14", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "10.1.0", + "chromium": "66.0.3359.170" + } + }, + { + "version": "v0.30.3", + "date": "2018/05/10", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "10.1.0", + "chromium": "66.0.3359.139" + } + }, + { + "version": "v0.31.0-beta1", + "date": "2018/05/07", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "10.0.0", + "chromium": "67.0.3396.30" + } + }, + { + "version": "v0.30.2", + "date": "2018/04/28", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "10.0.0", + "chromium": "66.0.3359.139" + } + }, + { + "version": "v0.30.1", + "date": "2018/04/25", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "10.0.0", + "chromium": "66.0.3359.117" + } + }, + { + "version": "v0.30.0", + "date": "2018/04/18", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "9.11.1", + "chromium": "66.0.3359.117" + } + }, + { + "version": "v0.29.4", + "date": "2018/04/08", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "9.11.1", + "chromium": "65.0.3325.181" + } + }, + { + "version": "v0.29.3", + "date": "2018/03/29", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "9.10.0", + "chromium": "65.0.3325.181" + } + }, + { + "version": "v0.30.0-beta1", + "date": "2018/03/26", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "9.9.0", + "chromium": "66.0.3359.45" + } + }, + { + "version": "v0.29.2", + "date": "2018/03/22", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "9.8.0", + "chromium": "65.0.3325.181" + } + }, + { + "version": "v0.29.1", + "date": "2018/03/14", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "9.8.0", + "chromium": "65.0.3325.162" + } + }, + { + "version": "v0.29.0", + "date": "2018/03/07", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "9.7.1", + "chromium": "65.0.3325.146" + } + }, + { + "version": "v0.28.3", + "date": "2018/02/23", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "9.6.1", + "chromium": "64.0.3282.186" + } + }, + { + "version": "v0.29.0-beta1", + "date": "2018/02/18", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "9.5.0", + "chromium": "65.0.3325.73" + } + }, + { + "version": "v0.28.2", + "date": "2018/02/15", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "9.5.0", + "chromium": "64.0.3282.167" + } + }, + { + "version": "v0.28.1", + "date": "2018/02/05", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "9.5.0", + "chromium": "64.0.3282.140" + } + }, + { + "version": "v0.28.0", + "date": "2018/01/24", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "9.4.0", + "chromium": "64.0.3282.119" + } + }, + { + "version": "v0.27.5", + "date": "2018/01/15", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "9.3.0", + "chromium": "63.0.3239.132" + } + }, + { + "version": "v0.27.4", + "date": "2018/01/08", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "9.3.0", + "chromium": "63.0.3239.132" + } + }, + { + "version": "v0.27.3", + "date": "2017/12/22", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "9.3.0", + "chromium": "63.0.3239.108" + } + }, + { + "version": "v0.28.0-beta1", + "date": "2017/12/18", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "9.3.0", + "chromium": "64.0.3282.32" + } + }, + { + "version": "v0.27.2", + "date": "2017/12/15", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "9.3.0", + "chromium": "63.0.3239.108" + } + }, + { + "version": "v0.27.1", + "date": "2017/12/11", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "9.2.1", + "chromium": "63.0.3239.84" + } + }, + { + "version": "v0.27.0", + "date": "2017/12/07", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "9.2.0", + "chromium": "63.0.3239.84" + } + }, + { + "version": "v0.26.6", + "date": "2017/11/14", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "9.1.0", + "chromium": "62.0.3202.94" + } + }, + { + "version": "v0.26.5", + "date": "2017/11/09", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "9.1.0", + "chromium": "62.0.3202.89" + } + }, + { + "version": "v0.26.4", + "date": "2017/11/07", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "9.0.0", + "chromium": "62.0.3202.89" + } + }, + { + "version": "v0.26.3", + "date": "2017/11/01", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "9.0.0", + "chromium": "62.0.3202.75" + } + }, + { + "version": "v0.27.0-beta1", + "date": "2017/10/28", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "8.8.1", + "chromium": "63.0.3239.18" + } + }, + { + "version": "v0.26.2", + "date": "2017/10/28", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "8.8.1", + "chromium": "62.0.3202.75" + } + }, + { + "version": "v0.26.1", + "date": "2017/10/26", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "8.8.1", + "chromium": "62.0.3202.62" + } + }, + { + "version": "v0.26.0", + "date": "2017/10/18", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "8.7.0", + "chromium": "62.0.3202.62" + } + }, + { + "version": "v0.25.4", + "date": "2017/09/29", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "8.6.0", + "chromium": "61.0.3163.100" + } + }, + { + "version": "v0.25.3", + "date": "2017/09/25", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "8.5.0", + "chromium": "61.0.3163.100" + } + }, + { + "version": "v0.26.0-beta1", + "date": "2017/09/22", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "8.5.0", + "chromium": "62.0.3202.29" + } + }, + { + "version": "v0.25.2", + "date": "2017/09/18", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "8.5.0", + "chromium": "61.0.3163.91" + } + }, + { + "version": "v0.25.1", + "date": "2017/09/15", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "8.5.0", + "chromium": "61.0.3163.79" + } + }, + { + "version": "v0.25.0", + "date": "2017/09/06", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "8.4.0", + "chromium": "61.0.3163.79" + } + }, + { + "version": "v0.24.4", + "date": "2017/08/25", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "8.4.0", + "chromium": "60.0.3112.113" + } + }, + { + "version": "v0.24.3", + "date": "2017/08/16", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "8.4.0", + "chromium": "60.0.3112.101" + } + }, + { + "version": "v0.25.0-beta1", + "date": "2017/08/11", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "8.3.0", + "chromium": "61.0.3163.39" + } + }, + { + "version": "v0.24.2", + "date": "2017/08/11", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "8.3.0", + "chromium": "60.0.3112.90" + } + }, + { + "version": "v0.24.1", + "date": "2017/08/05", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "8.2.1", + "chromium": "60.0.3112.90" + } + }, + { + "version": "v0.24.0", + "date": "2017/07/26", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "8.2.1", + "chromium": "60.0.3112.78" + } + }, + { + "version": "v0.23.7", + "date": "2017/07/21", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "8.1.4", + "chromium": "59.0.3071.115" + } + }, + { + "version": "v0.23.6", + "date": "2017/07/12", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "8.1.4", + "chromium": "59.0.3071.115" + } + }, + { + "version": "v0.23.5", + "date": "2017/06/27", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "8.1.2", + "chromium": "59.0.3071.115" + } + }, + { + "version": "v0.23.4", + "date": "2017/06/22", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "8.1.2", + "chromium": "59.0.3071.109" + } + }, + { + "version": "v0.23.3", + "date": "2017/06/19", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "8.1.2", + "chromium": "59.0.3071.104" + } + }, + { + "version": "v0.24.0-beta1", + "date": "2017/06/15", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "8.1.0", + "chromium": "60.0.3112.24" + } + }, + { + "version": "v0.23.2", + "date": "2017/06/15", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "8.1.0", + "chromium": "59.0.3071.86" + } + }, + { + "version": "v0.23.1", + "date": "2017/06/08", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "8.0.0", + "chromium": "59.0.3071.86" + } + }, + { + "version": "v0.23.0", + "date": "2017/06/06", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "8.0.0", + "chromium": "59.0.3071.86" + } + }, + { + "version": "v0.22.3", + "date": "2017/05/10", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "7.10.0", + "chromium": "58.0.3029.110" + } + }, + { + "version": "v0.22.2", + "date": "2017/05/09", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "7.10.0", + "chromium": "58.0.3029.96" + } + }, + { + "version": "v0.22.1", + "date": "2017/05/03", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "7.9.0", + "chromium": "58.0.3029.96" + } + }, + { + "version": "v0.23.0-beta1", + "date": "2017/05/03", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "7.9.0", + "chromium": "59.0.3071.29" + } + }, + { + "version": "v0.22.0", + "date": "2017/04/20", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "7.9.0", + "chromium": "58.0.3029.81" + } + }, + { + "version": "v0.21.6", + "date": "2017/04/13", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "7.9.0", + "chromium": "57.0.2987.133" + } + }, + { + "version": "v0.21.5", + "date": "2017/04/06", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "7.8.0", + "chromium": "57.0.2987.133" + } + }, + { + "version": "v0.21.4", + "date": "2017/03/30", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "7.8.0", + "chromium": "57.0.2987.133" + } + }, + { + "version": "v0.22.0-beta1", + "date": "2017/03/23", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "7.7.4", + "chromium": "58.0.3029.33" + } + }, + { + "version": "v0.21.3", + "date": "2017/03/17", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "7.7.3", + "chromium": "57.0.2987.110" + } + }, + { + "version": "v0.21.2", + "date": "2017/03/15", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "7.7.3", + "chromium": "57.0.2987.98" + } + }, + { + "version": "v0.21.1", + "date": "2017/03/10", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "7.7.2", + "chromium": "57.0.2987.98" + } + }, + { + "version": "v0.21.0", + "date": "2017/03/08", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "7.7.2", + "chromium": "57.0.2987.98" + } + }, + { + "version": "v0.20.3", + "date": "2017/02/23", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "7.6.0", + "chromium": "56.0.2924.87" + } + }, + { + "version": "v0.21.0-rc1", + "date": "2017/02/20", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "7.5.0", + "chromium": "57.0.2987.54" + } + }, + { + "version": "v0.20.2", + "date": "2017/02/13", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "7.5.0", + "chromium": "56.0.2924.87" + } + }, + { + "version": "v0.21.0-beta1", + "date": "2017/02/05", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "7.5.0", + "chromium": "57.0.2987.21" + } + }, + { + "version": "v0.20.1", + "date": "2017/02/02", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "7.5.0", + "chromium": "56.0.2924.87" + } + }, + { + "version": "v0.20.0", + "date": "2017/01/26", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "7.4.0", + "chromium": "56.0.2924.76" + } + }, + { + "version": "v0.20.0-rc1", + "date": "2017/01/19", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "7.4.0", + "chromium": "56.0.2924.67" + } + }, + { + "version": "v0.19.5", + "date": "2017/01/10", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "7.4.0", + "chromium": "55.0.2883.87" + } + }, + { + "version": "v0.20.0-beta2", + "date": "2017/01/05", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "7.4.0", + "chromium": "56.0.2924.51" + } + }, + { + "version": "v0.19.4", + "date": "2016/12/30", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "7.3.0", + "chromium": "55.0.2883.87" + } + }, + { + "version": "v0.19.3", + "date": "2016/12/21", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "7.3.0", + "chromium": "55.0.2883.87" + } + }, + { + "version": "v0.20.0-beta1", + "date": "2016/12/16", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "7.2.1", + "chromium": "56.0.2924.28" + } + }, + { + "version": "v0.19.2", + "date": "2016/12/12", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "7.2.1", + "chromium": "55.0.2883.87" + } + }, + { + "version": "v0.19.1", + "date": "2016/12/09", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "7.2.1", + "chromium": "55.0.2883.75" + } + }, + { + "version": "v0.19.0", + "date": "2016/12/02", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "7.2.0", + "chromium": "55.0.2883.75" + } + }, + { + "version": "v0.18.8", + "date": "2016/11/23", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "7.2.0", + "chromium": "54.0.2840.99" + } + }, + { + "version": "v0.19.0-rc1", + "date": "2016/11/17", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "7.1.0", + "chromium": "55.0.2883.52" + } + }, + { + "version": "v0.18.7", + "date": "2016/11/16", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "7.1.0", + "chromium": "54.0.2840.99" + } + }, + { + "version": "v0.18.6", + "date": "2016/11/10", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "7.1.0", + "chromium": "54.0.2840.99" + } + }, + { + "version": "v0.18.5", + "date": "2016/11/03", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "7.0.0", + "chromium": "54.0.2840.90" + } + }, + { + "version": "v0.19.0-beta1", + "date": "2016/10/31", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "7.0.0", + "chromium": "55.0.2883.28" + } + }, + { + "version": "v0.18.4", + "date": "2016/10/31", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "7.0.0", + "chromium": "54.0.2840.71" + } + }, + { + "version": "v0.18.3", + "date": "2016/10/26", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "7.0.0", + "chromium": "54.0.2840.71" + } + }, + { + "version": "v0.18.2", + "date": "2016/10/22", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "6.8.1", + "chromium": "54.0.2840.71" + } + }, + { + "version": "v0.18.1", + "date": "2016/10/18", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "6.8.1", + "chromium": "54.0.2840.59" + } + }, + { + "version": "v0.18.0", + "date": "2016/10/13", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "6.8.0", + "chromium": "54.0.2840.59" + } + }, + { + "version": "v0.17.6", + "date": "2016/09/30", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "6.7.0", + "chromium": "53.0.2785.143" + } + }, + { + "version": "v0.17.5", + "date": "2016/09/28", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "6.7.0", + "chromium": "53.0.2785.116" + } + }, + { + "version": "v0.18.0-rc1", + "date": "2016/09/22", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "6.6.0", + "chromium": "54.0.2840.34" + } + }, + { + "version": "v0.17.4", + "date": "2016/09/20", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "6.6.0", + "chromium": "53.0.2785.116" + } + }, + { + "version": "v0.17.3", + "date": "2016/09/15", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "6.5.0", + "chromium": "53.0.2785.116" + } + }, + { + "version": "v0.17.2", + "date": "2016/09/14", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "6.5.0", + "chromium": "53.0.2785.113" + } + }, + { + "version": "v0.18.0-beta1", + "date": "2016/09/13", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "6.5.0", + "chromium": "54.0.2840.16" + } + }, + { + "version": "v0.17.1", + "date": "2016/09/08", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "6.5.0", + "chromium": "53.0.2785.101" + } + }, + { + "version": "v0.17.0", + "date": "2016/09/01", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "6.5.0", + "chromium": "53.0.2785.89" + } + }, + { + "version": "v0.17.0-beta2", + "date": "2016/08/21", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "6.4.0", + "chromium": "53.0.2785.70" + } + }, + { + "version": "v0.17.0-beta1", + "date": "2016/08/05", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "6.3.1", + "chromium": "53.0.2785.46" + } + }, + { + "version": "v0.16.1", + "date": "2016/08/04", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "6.3.1", + "chromium": "52.0.2743.116" + } + }, + { + "version": "v0.14.7", + "date": "2016/07/22", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "5.11.1", + "chromium": "50.0.2661.102" + } + }, + { + "version": "v0.16.0", + "date": "2016/07/21", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "6.3.0", + "chromium": "52.0.2743.82" + } + }, + { + "version": "v0.16.0-rc2", + "date": "2016/07/15", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "6.3.0", + "chromium": "52.0.2743.75" + } + }, + { + "version": "v0.16.0-rc1", + "date": "2016/07/13", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "6.3.0", + "chromium": "52.0.2743.73" + } + }, + { + "version": "v0.15.4", + "date": "2016/06/24", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "6.2.2", + "chromium": "52.0.2743.73" + } + }, + { + "version": "v0.16.0-beta2", + "date": "2016/06/23", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "6.2.2", + "chromium": "52.0.2743.49" + } + }, + { + "version": "v0.15.3", + "date": "2016/06/18", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "6.2.2", + "chromium": "51.0.2704.103" + } + }, + { + "version": "v0.15.2", + "date": "2016/06/07", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "6.2.1", + "chromium": "51.0.2704.84" + } + }, + { + "version": "v0.16.0-beta1", + "date": "2016/06/03", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "6.2.0", + "chromium": "52.0.2743.19" + } + }, + { + "version": "v0.15.1", + "date": "2016/06/02", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "6.2.0", + "chromium": "51.0.2704.79" + } + }, + { + "version": "v0.14.6", + "date": "2016/06/01", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "5.11.1", + "chromium": "50.0.2661.102" + } + }, + { + "version": "v0.15.0", + "date": "2016/05/25", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "6.2.0", + "chromium": "51.0.2704.63" + } + }, + { + "version": "v0.15.0-rc2", + "date": "2016/05/13", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "6.1.0", + "chromium": "51.0.2704.47" + } + }, + { + "version": "v0.14.5", + "date": "2016/05/12", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "5.11.1", + "chromium": "50.0.2661.102" + } + }, + { + "version": "v0.14.4", + "date": "2016/05/06", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "5.11.1", + "chromium": "50.0.2661.94" + } + }, + { + "version": "v0.15.0-rc1", + "date": "2016/05/06", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "6.1.0", + "chromium": "51.0.2704.36" + } + }, + { + "version": "v0.15.0-beta2", + "date": "2016/05/03", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "6.0.0", + "chromium": "51.0.2704.29" + } + }, + { + "version": "v0.14.3", + "date": "2016/04/29", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk", "nacl"], + "components": { + "node": "5.11.1", + "chromium": "50.0.2661.94" + } + }, + { + "version": "v0.15.0-beta1", + "date": "2016/04/27", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk"], + "components": { + "node": "6.0.0", + "chromium": "51.0.2704.22" + } + }, + { + "version": "v0.14.2", + "date": "2016/04/21", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk", "nacl"], + "components": { + "node": "5.10.1", + "chromium": "50.0.2661.86" + } + }, + { + "version": "v0.14.1", + "date": "2016/04/18", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk", "nacl"], + "components": { + "node": "5.10.0", + "chromium": "50.0.2661.75" + } + }, + { + "version": "v0.14.0", + "date": "2016/04/14", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk", "nacl"], + "components": { + "node": "5.10.0", + "chromium": "50.0.2661.75" + } + }, + { + "version": "v0.13.4", + "date": "2016/04/08", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk", "nacl"], + "components": { + "node": "5.10.0", + "chromium": "49.0.2623.112" + } + }, + { + "version": "v0.14.0-rc3", + "date": "2016/04/07", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk", "nacl"], + "components": { + "node": "5.10.0", + "chromium": "50.0.2661.66" + } + }, + { + "version": "v0.13.3", + "date": "2016/04/04", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk", "nacl"], + "components": { + "node": "5.10.0", + "chromium": "49.0.2623.110" + } + }, + { + "version": "v0.14.0-rc2", + "date": "2016/03/31", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk", "nacl"], + "components": { + "node": "5.9.1", + "chromium": "50.0.2661.57" + } + }, + { + "version": "v0.14.0-rc1", + "date": "2016/03/29", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk", "nacl"], + "components": { + "node": "5.9.0", + "chromium": "50.0.2661.49" + } + }, + { + "version": "v0.13.2", + "date": "2016/03/29", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk", "nacl"], + "components": { + "node": "5.9.0", + "chromium": "49.0.2623.110" + } + }, + { + "version": "v0.13.1", + "date": "2016/03/25", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk", "nacl"], + "components": { + "node": "5.9.0", + "chromium": "49.0.2623.108" + } + }, + { + "version": "v0.13.0", + "date": "2016/03/23", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk", "nacl"], + "components": { + "node": "5.9.0", + "chromium": "49.0.2623.87" + } + }, + { + "version": "v0.13.0-rc4", + "date": "2016/03/21", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk", "nacl"], + "components": { + "node": "5.9.0", + "chromium": "49.0.2623.87" + } + }, + { + "version": "v0.13.0-rc3", + "date": "2016/03/15", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk", "nacl"], + "components": { + "node": "5.8.0", + "chromium": "49.0.2623.87" + } + }, + { + "version": "v0.13.0-rc2", + "date": "2016/03/11", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk", "nacl"], + "components": { + "node": "5.8.0", + "chromium": "49.0.2623.87" + } + }, + { + "version": "v0.13.0-rc1", + "date": "2016/03/03", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk", "nacl"], + "components": { + "node": "5.7.0", + "chromium": "49.0.2623.75" + } + }, + { + "version": "v0.13.0-beta7", + "date": "2016/02/25", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk", "nacl"], + "components": { + "node": "5.6.0", + "chromium": "48.0.2564.116" + } + }, + { + "version": "v0.13.0-beta6", + "date": "2016/02/17", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk", "nacl"], + "components": { + "node": "5.6.0", + "chromium": "48.0.2564.109" + } + }, + { + "version": "v0.13.0-beta5", + "date": "2016/02/01", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk", "nacl"], + "components": { + "node": "5.4.1", + "chromium": "48.0.2564.97" + } + }, + { + "version": "v0.13.0-beta4", + "date": "2016/01/18", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk", "nacl"], + "components": { + "node": "5.4.1", + "chromium": "48.0.2564.82" + } + }, + { + "version": "v0.13.0-beta3", + "date": "2016/01/13", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk", "nacl"], + "components": { + "node": "5.1.0", + "chromium": "47.0.2526.73" + } + }, + { + "version": "v0.13.0-beta2", + "date": "2015/12/31", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk", "nacl"], + "components": { + "node": "5.1.0", + "chromium": "47.0.2526.73" + } + }, + { + "version": "v0.13.0-beta1", + "date": "2015/12/30", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64"], + "flavors": ["normal", "sdk", "nacl"], + "components": { + "node": "5.1.0", + "chromium": "47.0.2526.73" + } + }, + { + "version": "v0.12.3", + "date": "2015/08/01", + "files": ["win-x64", "win-ia32", "linux-x64", "linux-ia32", "osx-x64", "osx-ia32"], + "flavors": ["normal", "macappstore"], + "components": { + "node": "1.2.0", + "chromium": "41.0.2272.76" + } + } + ] +} diff --git a/tests/specs/main.test.js b/tests/specs/main.test.js index f94868a..08a76a6 100644 --- a/tests/specs/main.test.js +++ b/tests/specs/main.test.js @@ -1,46 +1,52 @@ -import assert from "node:assert/strict"; -import fs from "node:fs"; -import { describe, it } from "node:test"; +import process from 'node:process'; -import get from "@nwutils/getter"; +import { beforeAll, describe, expect, it } from 'vitest'; -describe("getter test suite", function () { +import get from '@nwutils/getter'; +import run from '../../src/main.js'; +import util from '../../src/util.js'; - it("downloads a file from a test server", async function () { - if (!fs.existsSync("./cache/nwjs-v0.108.0-linux-x64")) { - await get({ - version: "0.108.0", - flavor: "normal", - platform: "linux", - arch: "x64", - downloadUrl: "https://dl.nwjs.io", - manifestUrl: "https://nwjs.io/versions.json", - cacheDir: "./cache", - cache: true, - ffmpeg: false, - nativeAddon: false, - shaSum: true, - }); - } +const PLATFORM_KV = { + darwin: 'osx', + linux: 'linux', + win32: 'win', +}; - assert.strictEqual(fs.existsSync("./cache/nwjs-v0.108.0-linux-x64"), true); - }); +const ARCH_KV = { + x64: 'x64', + ia32: 'ia32', + arm64: 'arm64', +}; - it('parses manifestUrl file:/// path correctly', async function () { - await get({ - version: "0.108.0", - flavor: "normal", - platform: "linux", - arch: "x64", - downloadUrl: "https://dl.nwjs.io", - manifestUrl: `file:///${process.cwd()}/tests/fixtures/main_manifest.json`, - cacheDir: "./cache", - cache: true, - ffmpeg: false, - nativeAddon: false, - shaSum: true, - }); - const localManifestFile = JSON.parse(await fs.promises.readFile(`${process.cwd()}/cache/manifest.json`, "utf-8")); - assert.strictEqual(localManifestFile.latest, 'v0.108.0'); - }); +describe('runner test suite', async () => { + + beforeAll(async () => { + await get({ + srcDir: 'tests/fixtures/app', + mode: 'build', + version: '0.108.0', + flavor: 'sdk', + platform: PLATFORM_KV[process.platform], + arch: ARCH_KV[process.arch], + downloadUrl: 'https://dl.nwjs.io', + manifestUrl: 'https://nwjs.io/versions.json', + outDir: 'tests/fixtures/out/app', + cacheDir: './cache/nw', + cache: true, + ffmpeg: false, + glob: false, + managedManifest: false, + nativeAddon: false, + zip: false, + shaSum: false, + }); + }, Infinity); + + it.skipIf(process.platform === 'win32')('runs and is killed via code', async () => { + const nwProcess = await run(nwOptions); + if (nwProcess) { + nwProcess.kill(); + expect(nwProcess.killed).toEqual(true); + } + }); }); From 73a90d32de830998ef1ec355afd71392449c41ed Mon Sep 17 00:00:00 2001 From: Ayushman Chhabra <14110965+ayushmanchhabra@users.noreply.github.com> Date: Tue, 3 Mar 2026 22:10:30 +0530 Subject: [PATCH 05/10] chore(test): fix missing reference --- tests/specs/main.test.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tests/specs/main.test.js b/tests/specs/main.test.js index 08a76a6..f1ac435 100644 --- a/tests/specs/main.test.js +++ b/tests/specs/main.test.js @@ -4,7 +4,6 @@ import { beforeAll, describe, expect, it } from 'vitest'; import get from '@nwutils/getter'; import run from '../../src/main.js'; -import util from '../../src/util.js'; const PLATFORM_KV = { darwin: 'osx', @@ -20,8 +19,7 @@ const ARCH_KV = { describe('runner test suite', async () => { - beforeAll(async () => { - await get({ + const nwOptions = { srcDir: 'tests/fixtures/app', mode: 'build', version: '0.108.0', @@ -39,7 +37,10 @@ describe('runner test suite', async () => { nativeAddon: false, zip: false, shaSum: false, - }); + } + + beforeAll(async () => { + await get(nwOptions); }, Infinity); it.skipIf(process.platform === 'win32')('runs and is killed via code', async () => { From 07a892a9ea8a59177bccb5049e9943f93e893eb8 Mon Sep 17 00:00:00 2001 From: Ayushman Chhabra <14110965+ayushmanchhabra@users.noreply.github.com> Date: Tue, 3 Mar 2026 22:13:40 +0530 Subject: [PATCH 06/10] chore: update --- package.json | 2 +- tests/specs/main.test.js | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 35887a5..c45036c 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "test": "node --test --experimental-test-coverage --test-coverage-exclude=\"tests/**/*\" \"tests/specs/*.test.js\"" }, "volta": { - "node": "25.1.0", + "node": "25.2.1", "npm": "11.11.0" }, "dependencies": { diff --git a/tests/specs/main.test.js b/tests/specs/main.test.js index f1ac435..113465e 100644 --- a/tests/specs/main.test.js +++ b/tests/specs/main.test.js @@ -1,6 +1,6 @@ +import assert from 'node:assert'; import process from 'node:process'; - -import { beforeAll, describe, expect, it } from 'vitest'; +import { before, describe, it } from 'node:test'; import get from '@nwutils/getter'; import run from '../../src/main.js'; @@ -39,7 +39,7 @@ describe('runner test suite', async () => { shaSum: false, } - beforeAll(async () => { + before(async () => { await get(nwOptions); }, Infinity); @@ -47,7 +47,7 @@ describe('runner test suite', async () => { const nwProcess = await run(nwOptions); if (nwProcess) { nwProcess.kill(); - expect(nwProcess.killed).toEqual(true); + assert.strictEqual(nwProcess.killed, true); } }); }); From ceddadb547d18809872444e0be891311215b22e8 Mon Sep 17 00:00:00 2001 From: Ayushman Chhabra <14110965+ayushmanchhabra@users.noreply.github.com> Date: Wed, 4 Mar 2026 12:02:26 +0530 Subject: [PATCH 07/10] chore(test): tests pass now --- tests/specs/main.test.js | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/tests/specs/main.test.js b/tests/specs/main.test.js index 113465e..dc744d4 100644 --- a/tests/specs/main.test.js +++ b/tests/specs/main.test.js @@ -37,17 +37,19 @@ describe('runner test suite', async () => { nativeAddon: false, zip: false, shaSum: false, + argv: [], } before(async () => { await get(nwOptions); }, Infinity); - it.skipIf(process.platform === 'win32')('runs and is killed via code', async () => { - const nwProcess = await run(nwOptions); - if (nwProcess) { - nwProcess.kill(); - assert.strictEqual(nwProcess.killed, true); - } - }); + it('runs and is killed via code', { skip: process.platform === 'win32' }, + async () => { + const nwProcess = await run(nwOptions); + if (nwProcess) { + nwProcess.kill(); + assert.strictEqual(nwProcess.killed, true); + } + }); }); From 4a554887e4e367a6038f38805cf00df45a603f72 Mon Sep 17 00:00:00 2001 From: Ayushman Chhabra <14110965+ayushmanchhabra@users.noreply.github.com> Date: Wed, 4 Mar 2026 12:04:41 +0530 Subject: [PATCH 08/10] chore: generate types --- package-lock.json | 18 ++++++++++++++++++ package.json | 1 + tsconfig.json | 9 ++++++++- types/main.d.ts | 37 ++++++++++++++++++++++++------------- 4 files changed, 51 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index eb9bde1..f815fad 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,6 +16,7 @@ "devDependencies": { "@eslint/js": "^9.39.2", "@nwutils/getter": "^0.2.2", + "@types/node": "^25.3.3", "eslint": "^9.39.2", "eslint-plugin-jsdoc": "^62.1.0", "globals": "^17.0.0", @@ -615,6 +616,16 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/node": { + "version": "25.3.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.3.tgz", + "integrity": "sha512-DpzbrH7wIcBaJibpKo9nnSQL0MTRdnWttGyE5haGwK86xgMOkFLp7vEyfQPGLOJh5wNYiJ3V9PmUMDhV9u8kkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.18.0" + } + }, "node_modules/@typescript-eslint/types": { "version": "8.53.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.53.0.tgz", @@ -1816,6 +1827,13 @@ "node": ">=14.17" } }, + "node_modules/undici-types": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "dev": true, + "license": "MIT" + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", diff --git a/package.json b/package.json index c45036c..e7acc82 100644 --- a/package.json +++ b/package.json @@ -54,6 +54,7 @@ "devDependencies": { "@eslint/js": "^9.39.2", "@nwutils/getter": "^0.2.2", + "@types/node": "^25.3.3", "eslint": "^9.39.2", "eslint-plugin-jsdoc": "^62.1.0", "globals": "^17.0.0", diff --git a/tsconfig.json b/tsconfig.json index ab3f75f..82c8527 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -5,7 +5,14 @@ "declaration": true, "emitDeclarationOnly": true, "outDir": "types", - "strict": true + "strict": true, + "target": "ES2020", + "lib": ["ES2020"], + "module": "ESNext", + "moduleResolution": "node", + "types": ["node"], + "esModuleInterop": true, + "allowSyntheticDefaultImports": true }, "include": [ "src/**/*.js" diff --git a/types/main.d.ts b/types/main.d.ts index 66e0398..ee2f5f5 100644 --- a/types/main.d.ts +++ b/types/main.d.ts @@ -1,4 +1,4 @@ -export default get; +export default run; export type Options = { /** * Runtime version @@ -13,32 +13,43 @@ export type Options = { */ platform: "linux" | "osx" | "win"; /** - * Target architecture + * Target arch */ arch: "ia32" | "x64" | "arm64"; + /** + * Source directory + */ + srcDir: string; /** * Cache directory */ cacheDir: string; /** - * List of CLI arguments to be passed to NW.js. + * If true, throw error + */ + glob: boolean; + /** + * CLI arguments */ argv: string[]; }; /** * @typedef {object} Options - * @property {string | "latest" | "stable" | "lts"} version Runtime version - * @property {"normal" | "sdk"} flavor Build flavor - * @property {"linux" | "osx" | "win"} platform Target platform - * @property {"ia32" | "x64" | "arm64"} arch Target architecture - * @property {string} cacheDir Cache directory - * @property {string[]} argv List of CLI arguments to be passed to NW.js. + * @property {string | "latest" | "stable" | "lts"} version Runtime version + * @property {"normal" | "sdk"} flavor Build flavor + * @property {"linux" | "osx" | "win"} platform Target platform + * @property {"ia32" | "x64" | "arm64"} arch Target arch + * @property {string} srcDir Source directory + * @property {string} cacheDir Cache directory + * @property {boolean} glob If true, throw error + * @property {string[]} argv CLI arguments */ /** - * Get NW.js and related binaries for Linux, MacOS and Windows. + * Run NW.js application. * @async * @function - * @param {Options} options Get mode options - * @returns {Promise} + * @param {Options} options Options + * @returns {Promise} - A Node.js process object */ -declare function get(options: Options): Promise; +declare function run({ version, flavor, platform, arch, srcDir, cacheDir, argv, }: Options): Promise; +import child_process from 'node:child_process'; From d61b12f9de5af141c353fcad23a569c7ae5223e5 Mon Sep 17 00:00:00 2001 From: Ayushman Chhabra <14110965+ayushmanchhabra@users.noreply.github.com> Date: Wed, 4 Mar 2026 12:09:47 +0530 Subject: [PATCH 09/10] chore(docs): update docs --- README.md | 4 +++- package.json | 8 ++++---- src/main.js | 1 - 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 0fa6a59..99b37d8 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![npm](https://img.shields.io/npm/v/@nwutils/runner/latest)](https://www.npmjs.com/package/@nwutils/runner/v/latest) -Download NW.js and related binaries for Linux, MacOS and Windows. +Run NW.js on Linux, MacOS and Windows hosts. ## Getting Started @@ -19,7 +19,9 @@ await get({ flavor: "normal", platform: "linux", arch: "x64", + srcDir: "./src", cacheDir: "./cache", + argv: [], }); ``` diff --git a/package.json b/package.json index e7acc82..bb0cfd9 100644 --- a/package.json +++ b/package.json @@ -20,8 +20,8 @@ ], "contributors": [ { - "name": "@nwutils/getter Contributors", - "url": "https://github.com/nwutils/getter/graphs/contributors" + "name": "@nwutils/runner Contributors", + "url": "https://github.com/nwutils/runner/graphs/contributors" } ], "license": "MIT", @@ -32,10 +32,10 @@ "LICENSE", "src" ], - "homepage": "https://github.com/nwutils/getter", + "homepage": "https://github.com/nwutils/runner", "repository": { "type": "git", - "url": "git+https://github.com/nwutils/getter.git" + "url": "git+https://github.com/nwutils/runner.git" }, "scripts": { "lint": "eslint .", diff --git a/src/main.js b/src/main.js index 2eca82d..e47908f 100644 --- a/src/main.js +++ b/src/main.js @@ -9,7 +9,6 @@ import path from 'node:path'; * @property {"ia32" | "x64" | "arm64"} arch Target arch * @property {string} srcDir Source directory * @property {string} cacheDir Cache directory - * @property {boolean} glob If true, throw error * @property {string[]} argv CLI arguments */ From 930a04105feb464ae061ab76635214e7576e4f48 Mon Sep 17 00:00:00 2001 From: Ayushman Chhabra <14110965+ayushmanchhabra@users.noreply.github.com> Date: Wed, 4 Mar 2026 12:12:30 +0530 Subject: [PATCH 10/10] chore(docs): update usage guide --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 99b37d8..08998d2 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ Run NW.js on Linux, MacOS and Windows hosts. ```js import run from "@nwutils/runner"; -await get({ +const nwProcess = await run({ version: "latest", flavor: "normal", platform: "linux", @@ -23,6 +23,8 @@ await get({ cacheDir: "./cache", argv: [], }); + +nwProcess.kill(); ``` ## API Reference