diff --git a/.github/workflows/codeql-advanced.yml b/.github/workflows/codeql-advanced.yml
index 71100719e1..23bea62599 100644
--- a/.github/workflows/codeql-advanced.yml
+++ b/.github/workflows/codeql-advanced.yml
@@ -60,7 +60,7 @@ jobs:
# your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages
steps:
- name: Checkout repository
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
+ uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
# Add any setup steps before running the `github/codeql-action/init` action.
# This includes steps like installing compilers or runtimes (`actions/setup-node`
@@ -70,7 +70,7 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
- uses: github/codeql-action/init@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2
+ uses: github/codeql-action/init@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9
with:
languages: ${{ matrix.language }}
build-mode: ${{ matrix.build-mode }}
@@ -98,6 +98,6 @@ jobs:
exit 1
- name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2
+ uses: github/codeql-action/analyze@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9
with:
category: "/language:${{matrix.language}}"
diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml
index 6008389057..2f8e435dd4 100644
--- a/.github/workflows/dependency-review.yml
+++ b/.github/workflows/dependency-review.yml
@@ -17,6 +17,6 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: 'Checkout Repository'
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v4.3.0
+ uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v4.3.0
- name: 'Dependency Review'
- uses: actions/dependency-review-action@40c09b7dc99638e5ddb0bfd91c1673effc064d8a # v4.8.1
+ uses: actions/dependency-review-action@3c4e3dcb1aa7874d2c16be7d79418e9b7efd6261 # v4.8.2
diff --git a/.github/workflows/npm_release_cli.yml b/.github/workflows/npm_release_cli.yml
index 489cb16378..70dae07342 100644
--- a/.github/workflows/npm_release_cli.yml
+++ b/.github/workflows/npm_release_cli.yml
@@ -2,7 +2,10 @@ name: 'nativescript -> npm'
on:
push:
- branches: [ 'main' ]
+ branches:
+ - main
+ tags:
+ - "v*"
paths-ignore:
- 'packages/**'
workflow_dispatch:
@@ -10,43 +13,150 @@ on:
env:
NPM_TAG: 'next'
-permissions:
- contents: read
-
jobs:
- release:
+ build:
+ name: Build
runs-on: macos-latest
+ outputs:
+ npm_version: ${{ steps.npm_version_output.outputs.NPM_VERSION }}
+ npm_tag: ${{ steps.npm_version_output.outputs.NPM_TAG }}
steps:
-
- name: Harden the runner (Audit all outbound calls)
- uses: step-security/harden-runner@f4a75cfd619ee5ce8d5b864b0d183aff3c69b55a # v2.13.1
+ uses: step-security/harden-runner@20cf305ff2072d973412fa9b1e3a4f227bda3c76 # v2.14.0
with:
egress-policy: audit
- - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
-
- - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
+ - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
+ with:
+ fetch-depth: 0
+
+ - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
with:
node-version: 22.14.0
+ registry-url: "https://registry.npmjs.org"
- name: Setup
run: npm i --ignore-scripts --legacy-peer-deps --no-package-lock
- - name: Generate Version
+ - name: Get Current Version
run: |
- echo NPM_VERSION=$(node -e "console.log(require('./package.json').version);")-$NPM_TAG-$(date +"%m-%d-%Y")-$GITHUB_RUN_ID >> $GITHUB_ENV
+ NPM_VERSION=$(node -e "console.log(require('./package.json').version);")
+ echo NPM_VERSION=$NPM_VERSION >> $GITHUB_ENV
- - name: Bump Version
- run: npm version $NPM_VERSION
+ - name: Bump version for dev release
+ if: ${{ !contains(github.ref, 'refs/tags/') }}
+ run: |
+ NPM_VERSION=$(node ./scripts/get-next-version.js)
+ echo NPM_VERSION=$NPM_VERSION >> $GITHUB_ENV
+ npm version $NPM_VERSION --no-git-tag-version
+
+ - name: Output NPM Version and tag
+ id: npm_version_output
+ run: |
+ NPM_TAG=$(node ./scripts/get-npm-tag.js)
+ echo NPM_VERSION=$NPM_VERSION >> $GITHUB_OUTPUT
+ echo NPM_TAG=$NPM_TAG >> $GITHUB_OUTPUT
- name: Build nativescript
run: npm pack
- - name: Publish nativescript
+ - name: Upload npm package artifact
+ uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
+ with:
+ name: npm-package
+ path: nativescript-${{steps.npm_version_output.outputs.NPM_VERSION}}.tgz
+
+ publish:
+ runs-on: ubuntu-latest
+ environment: npm-publish
+ needs:
+ - build
+ permissions:
+ contents: read
+ id-token: write
+ env:
+ NPM_VERSION: ${{needs.build.outputs.npm_version}}
+ NPM_TAG: ${{needs.build.outputs.npm_tag}}
+ steps:
+ - name: Harden the runner (Audit all outbound calls)
+ uses: step-security/harden-runner@20cf305ff2072d973412fa9b1e3a4f227bda3c76 # v2.14.0
+ with:
+ egress-policy: audit
+
+ - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
+ with:
+ node-version: 22.14.0
+ registry-url: "https://registry.npmjs.org"
+
+ - uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
+ with:
+ name: npm-package
+ path: dist
+
+ - name: Update npm (required for OIDC trusted publishing)
+ run: |
+ npm install -g npm@^11.5.1
+ npm --version
+
+ - name: Publish package (OIDC trusted publishing)
+ if: ${{ vars.USE_NPM_TOKEN != 'true' }}
+ run: |
+ echo "Publishing nativescript@$NPM_VERSION to NPM with tag $NPM_TAG via OIDC trusted publishing..."
+ unset NODE_AUTH_TOKEN
+ if [ -n "${NPM_CONFIG_USERCONFIG:-}" ]; then
+ rm -f "$NPM_CONFIG_USERCONFIG"
+ fi
+ npm publish ./dist/nativescript-${{env.NPM_VERSION}}.tgz --tag $NPM_TAG --access public --provenance
env:
- NPM_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }}
+ NODE_AUTH_TOKEN: ""
+
+ - name: Publish package (granular token)
+ if: ${{ vars.USE_NPM_TOKEN == 'true' }}
run: |
- echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > .npmrc
- echo "Publishing nativescript@$NPM_VERSION to NPM with tag $NPM_TAG..."
- npm publish nativescript-$NPM_VERSION.tgz --tag $NPM_TAG
+ echo "Publishing nativescript@$NPM_VERSION to NPM with tag $NPM_TAG via granular token..."
+ npm publish ./dist/nativescript-${{env.NPM_VERSION}}.tgz --tag $NPM_TAG --access public --provenance
+ env:
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }}
+
+ github-release:
+ runs-on: ubuntu-latest
+ # only runs on tagged commits
+ if: ${{ contains(github.ref, 'refs/tags/') }}
+ permissions:
+ contents: write
+ needs:
+ - build
+ env:
+ NPM_VERSION: ${{needs.build.outputs.npm_version}}
+ steps:
+ - name: Harden the runner (Audit all outbound calls)
+ uses: step-security/harden-runner@20cf305ff2072d973412fa9b1e3a4f227bda3c76 # v2.14.0
+ with:
+ egress-policy: audit
+
+ - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
+ with:
+ fetch-depth: 0
+
+ - uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
+ with:
+ node-version: 22.14.0
+
+ - name: Setup
+ run: npm i --ignore-scripts --legacy-peer-deps --no-package-lock
+
+ - uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
+ with:
+ name: npm-package
+ path: dist
+
+ - name: Partial Changelog
+ run: npx conventional-changelog -p angular -r2 > body.md
+
+ - uses: ncipollo/release-action@b7eabc95ff50cbeeedec83973935c8f306dfcd0b # v1.20.0
+ with:
+ artifacts: "dist/nativescript-*.tgz"
+ bodyFile: "body.md"
+ prerelease: ${{needs.build.outputs.npm_tag != 'latest'}}
+ allowUpdates: true
diff --git a/.github/workflows/npm_release_doctor.yml b/.github/workflows/npm_release_doctor.yml
index aad6142ed1..3098c795a9 100644
--- a/.github/workflows/npm_release_doctor.yml
+++ b/.github/workflows/npm_release_doctor.yml
@@ -24,11 +24,11 @@ jobs:
steps:
- name: Harden the runner (Audit all outbound calls)
- uses: step-security/harden-runner@f4a75cfd619ee5ce8d5b864b0d183aff3c69b55a # v2.13.1
+ uses: step-security/harden-runner@20cf305ff2072d973412fa9b1e3a4f227bda3c76 # v2.14.0
with:
egress-policy: audit
- - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
+ - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- name: Setup
run: npm install
diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml
index 3326fad640..7595c41d05 100644
--- a/.github/workflows/scorecard.yml
+++ b/.github/workflows/scorecard.yml
@@ -33,7 +33,7 @@ jobs:
steps:
- name: "Checkout code"
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v4.3.0
+ uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v4.3.0
with:
persist-credentials: false
@@ -60,7 +60,7 @@ jobs:
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
# format to the repository Actions tab.
- name: "Upload artifact"
- uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
+ uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
name: SARIF file
path: results.sarif
@@ -68,6 +68,6 @@ jobs:
# Upload the results to GitHub's code scanning dashboard.
- name: "Upload to code-scanning"
- uses: github/codeql-action/upload-sarif@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2
+ uses: github/codeql-action/upload-sarif@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9
with:
sarif_file: results.sarif
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 310403ad93..0fd3dda24f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -87,3 +87,5 @@ lib/common/test-reports.xml
!lib/common/test-scripts/**
!lib/common/scripts/**
config/test-deps-versions-generated.json
+!scripts/get-next-version.js
+!scripts/get-npm-tag.js
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 36e4202482..a4ce9d17da 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,12 @@
+## [9.0.2](https://github.com/NativeScript/nativescript-cli/compare/v9.0.1...v9.0.2) (2026-01-04)
+
+
+### Bug Fixes
+
+* vite build and prepare ([#5948](https://github.com/NativeScript/nativescript-cli/issues/5948)) ([e892f48](https://github.com/NativeScript/nativescript-cli/commit/e892f48ea86510b1aafbb739a42bfd834fbdc12e))
+
+
+
## [9.0.1](https://github.com/NativeScript/nativescript-cli/compare/v9.0.0...v9.0.1) (2025-11-18)
diff --git a/README.md b/README.md
index 07ca7c7b89..55da5866a1 100644
--- a/README.md
+++ b/README.md
@@ -1,11 +1,6 @@
-
-
-
-
- NativeScript Command-Line Interface
-
+
The NativeScript CLI lets you create, build, and deploy NativeScript apps.
@@ -14,7 +9,11 @@
---
-[](https://github.com/NativeScript/nativescript-cli/actions/workflows/npm_release_cli.yml)
+
+
+
+
+
Get it using: `npm install -g nativescript`
@@ -67,10 +66,7 @@ Some popular use cases:
To learn more about NativeScript, you can check the following resources:
* [The NativeScript web page][2]
-* [NativeScript - a Technical Overview][7]
-* [Announcing NativeScript - cross-platform framework for building native mobile applications][8]
-* The NativeScript [Documentation repo][3] and [Documentation portal][4]
-* [The NativeScript FAQ][6]
+* The NativeScript [Documentation][4] and contributing to [docs via the repo](https://github.com/NativeScript/docs)
[Back to Top][1]
@@ -104,9 +100,9 @@ System Requirements
You can install and run the NativeScript CLI on Windows, macOS or Linux.
-* [Windows](https://docs.nativescript.org/start/ns-setup-win)
-* [macOS](https://docs.nativescript.org/start/ns-setup-os-x)
-* [Linux](https://docs.nativescript.org/start/ns-setup-linux)
+* [Windows](https://docs.nativescript.org/setup/windows)
+* [macOS](https://docs.nativescript.org/setup/macos)
+* [Linux](https://docs.nativescript.org/setup/linux)
Installation
===
@@ -224,14 +220,14 @@ The CLI places the project in a new directory in the current directory. The newl
```
MyApp/
-├── app
-│ ├── App_Resources
+├── App_Resources
+├── src
│ └── ...
└── platforms
└── ...
```
-* The `app` directory is the **development space for your application**. You should modify all common and platform-specific code within this directory. When you run `prepare `, the NativeScript CLI prepares relevant content to the platform-specific folders for each target platform.
+* The `src` directory (or sometimes `app` folder) is the **development space for your application**. You should modify all common and platform-specific code within this directory. When you run `prepare `, the NativeScript CLI prepares relevant content to the platform-specific folders for each target platform.
* The `platforms` directory is created empty. When you add a target platform to your project, the NativeScript CLI creates a new subdirectory with the platform name. The subdirectory contains the ready-to-build resources of your app. When you run `prepare `, the NativeScript CLI prepares relevant content from the `app` directory to the platform-specific subdirectory for each target platform.
[Back to Top][1]
@@ -263,13 +259,13 @@ You can develop shared functionality or design in common files. To indicate that
### Modifying Configuration Files
-The NativeScript CLI respects any platform configuration files placed inside `app/App_Resources`.
+The NativeScript CLI respects any platform configuration files placed inside `App_Resources`.
### Modifying Entitlements File (iOS only)
-To specify which capabilities are required by your App - Maps, Push Notifications, Wallet etc. you can add or edit the `app.entitlements` file placed inside `app/App_Resources/iOS`. When building the project, the default `app/App_Resources/iOS/app.entitlements` file gets merged with all Plugins entitlement files and a new `yourAppName.entitlements` is created in the platforms directory. The path would be `app/platforms/ios//.entitlements` and will be linked in the `build.xcconfig` file.
+To specify which capabilities are required by your App - Maps, Push Notifications, Wallet etc. you can add or edit the `app.entitlements` file placed inside `App_Resources/iOS`. When building the project, the default `App_Resources/iOS/app.entitlements` file gets merged with all Plugins entitlement files and a new `yourAppName.entitlements` is created in the platforms directory. The path would be `platforms/ios//.entitlements` and will be linked in the `build.xcconfig` file.
-You can always override the generated entitlements file, by pointing to your own entitlements file by setting the `CODE_SIGN_ENTITLEMENTS` property in the `app/App_Resources/iOS/build.xcconfig` file.
+You can always override the generated entitlements file, by pointing to your own entitlements file by setting the `CODE_SIGN_ENTITLEMENTS` property in the `App_Resources/iOS/build.xcconfig` file.
[Back to Top][1]
@@ -314,11 +310,11 @@ ns run ios
Extending the CLI
===
-The NativeScript CLI lets you extend its behavior and customize it to fit your needs by using [hooks](https://en.wikipedia.org/wiki/Hooking).
+The NativeScript CLI lets you extend its behavior and customize it to fit your needs by using [hooks](https://docs.nativescript.org/guide/hooks).
When you run one of the extendable commands (for example, `ns build`), the CLI checks for hooks and executes them. Plugins can also use hooks to control the compilation of the application package.
-For more information, see the [Extending the CLI document](https://github.com/NativeScript/nativescript-cli/blob/master/extending-cli.md)
+For more information, see the [Extending the CLI document](https://github.com/NativeScript/nativescript-cli/blob/main/extending-cli.md)
[Back to Top][1]
@@ -354,6 +350,7 @@ How to Build
git clone https://github.com/NativeScript/nativescript-cli
cd nativescript-cli
npm run setup
+npm run build
```
To use the locally built CLI instead of `ns` you can call `PATH_TO_CLI_FOLDER/bin/ns`. For example:
@@ -379,7 +376,4 @@ This software is licensed under the Apache 2.0 license, quoted =0.5.0"
@@ -1004,42 +1004,42 @@
}
},
"node_modules/@npmcli/arborist": {
- "version": "9.1.6",
- "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-9.1.6.tgz",
- "integrity": "sha512-c5Pr3EG8UP5ollkJy2x+UdEQC5sEHe3H9whYn6hb2HJimAKS4zmoJkx5acCiR/g4P38RnCSMlsYQyyHnKYeLvQ==",
+ "version": "9.1.8",
+ "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-9.1.8.tgz",
+ "integrity": "sha512-TYAzq0oaXQU+uLfXFbR2wYx62qHIOSg/TYhGWJSphJDypyjdNXC7B/+k29ElC2vWlWfX4OJnhmSY5DTwSFiNpg==",
"license": "ISC",
"dependencies": {
"@isaacs/string-locale-compare": "^1.1.0",
- "@npmcli/fs": "^4.0.0",
- "@npmcli/installed-package-contents": "^3.0.0",
+ "@npmcli/fs": "^5.0.0",
+ "@npmcli/installed-package-contents": "^4.0.0",
"@npmcli/map-workspaces": "^5.0.0",
"@npmcli/metavuln-calculator": "^9.0.2",
- "@npmcli/name-from-folder": "^3.0.0",
- "@npmcli/node-gyp": "^4.0.0",
+ "@npmcli/name-from-folder": "^4.0.0",
+ "@npmcli/node-gyp": "^5.0.0",
"@npmcli/package-json": "^7.0.0",
- "@npmcli/query": "^4.0.0",
- "@npmcli/redact": "^3.0.0",
+ "@npmcli/query": "^5.0.0",
+ "@npmcli/redact": "^4.0.0",
"@npmcli/run-script": "^10.0.0",
- "bin-links": "^5.0.0",
+ "bin-links": "^6.0.0",
"cacache": "^20.0.1",
"common-ancestor-path": "^1.0.1",
"hosted-git-info": "^9.0.0",
"json-stringify-nice": "^1.1.4",
"lru-cache": "^11.2.1",
"minimatch": "^10.0.3",
- "nopt": "^8.0.0",
- "npm-install-checks": "^7.1.0",
+ "nopt": "^9.0.0",
+ "npm-install-checks": "^8.0.0",
"npm-package-arg": "^13.0.0",
"npm-pick-manifest": "^11.0.1",
"npm-registry-fetch": "^19.0.0",
"pacote": "^21.0.2",
- "parse-conflict-json": "^4.0.0",
- "proc-log": "^5.0.0",
- "proggy": "^3.0.0",
+ "parse-conflict-json": "^5.0.1",
+ "proc-log": "^6.0.0",
+ "proggy": "^4.0.0",
"promise-all-reject-late": "^1.0.0",
"promise-call-limit": "^3.0.1",
"semver": "^7.3.7",
- "ssri": "^12.0.0",
+ "ssri": "^13.0.0",
"treeverse": "^3.0.0",
"walk-up-path": "^4.0.0"
},
@@ -1050,6 +1050,85 @@
"node": "^20.17.0 || >=22.9.0"
}
},
+ "node_modules/@npmcli/arborist/node_modules/@npmcli/fs": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-5.0.0.tgz",
+ "integrity": "sha512-7OsC1gNORBEawOa5+j2pXN9vsicaIOH5cPXxoR6fJOmH6/EXpJB2CajXOu1fPRFun2m1lktEFX11+P89hqO/og==",
+ "license": "ISC",
+ "dependencies": {
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/@npmcli/arborist/node_modules/@npmcli/installed-package-contents": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-4.0.0.tgz",
+ "integrity": "sha512-yNyAdkBxB72gtZ4GrwXCM0ZUedo9nIbOMKfGjt6Cu6DXf0p8y1PViZAKDC8q8kv/fufx0WTjRBdSlyrvnP7hmA==",
+ "license": "ISC",
+ "dependencies": {
+ "npm-bundled": "^5.0.0",
+ "npm-normalize-package-bin": "^5.0.0"
+ },
+ "bin": {
+ "installed-package-contents": "bin/index.js"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/@npmcli/arborist/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/@npmcli/arborist/node_modules/npm-bundled": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-5.0.0.tgz",
+ "integrity": "sha512-JLSpbzh6UUXIEoqPsYBvVNVmyrjVZ1fzEFbqxKkTJQkWBO3xFzFT+KDnSKQWwOQNbuWRwt5LSD6HOTLGIWzfrw==",
+ "license": "ISC",
+ "dependencies": {
+ "npm-normalize-package-bin": "^5.0.0"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/@npmcli/arborist/node_modules/npm-normalize-package-bin": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-5.0.0.tgz",
+ "integrity": "sha512-CJi3OS4JLsNMmr2u07OJlhcrPxCeOeP/4xq67aWNai6TNWWbTrlNDgl8NcFKVlcBKp18GPj+EzbNIgrBfZhsag==",
+ "license": "ISC",
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/@npmcli/arborist/node_modules/proc-log": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz",
+ "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==",
+ "license": "ISC",
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/@npmcli/arborist/node_modules/ssri": {
+ "version": "13.0.0",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-13.0.0.tgz",
+ "integrity": "sha512-yizwGBpbCn4YomB2lzhZqrHLJoqFGXihNbib3ozhqF/cIp5ue+xSmOQrjNasEE62hFxsCcg/V/z23t4n8jMEng==",
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^7.0.3"
+ },
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
"node_modules/@npmcli/fs": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-4.0.0.tgz",
@@ -1121,15 +1200,6 @@
"node": "^20.17.0 || >=22.9.0"
}
},
- "node_modules/@npmcli/map-workspaces/node_modules/@npmcli/name-from-folder": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-4.0.0.tgz",
- "integrity": "sha512-qfrhVlOSqmKM8i6rkNdZzABj8MKEITGFAY+4teqBziksCQAOLutiAxM1wY2BKEd8KjUSpWmWCYxvXr0y4VTlPg==",
- "license": "ISC",
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
- }
- },
"node_modules/@npmcli/metavuln-calculator": {
"version": "9.0.3",
"resolved": "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-9.0.3.tgz",
@@ -1156,21 +1226,21 @@
}
},
"node_modules/@npmcli/name-from-folder": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-3.0.0.tgz",
- "integrity": "sha512-61cDL8LUc9y80fXn+lir+iVt8IS0xHqEKwPu/5jCjxQTVoSCmkXvw4vbMrzAMtmghz3/AkiBjhHkDKUH+kf7kA==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-4.0.0.tgz",
+ "integrity": "sha512-qfrhVlOSqmKM8i6rkNdZzABj8MKEITGFAY+4teqBziksCQAOLutiAxM1wY2BKEd8KjUSpWmWCYxvXr0y4VTlPg==",
"license": "ISC",
"engines": {
- "node": "^18.17.0 || >=20.5.0"
+ "node": "^20.17.0 || >=22.9.0"
}
},
"node_modules/@npmcli/node-gyp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-4.0.0.tgz",
- "integrity": "sha512-+t5DZ6mO/QFh78PByMq1fGSAub/agLJZDRfJRMeOSNCt8s9YVlTjmGpIPwPhvXTGUIJk+WszlT0rQa1W33yzNA==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-5.0.0.tgz",
+ "integrity": "sha512-uuG5HZFXLfyFKqg8QypsmgLQW7smiRjVc45bqD/ofZZcR/uxEjgQU8qDPv0s9TEeMUiAAU/GC5bR6++UdTirIQ==",
"license": "ISC",
"engines": {
- "node": "^18.17.0 || >=20.5.0"
+ "node": "^20.17.0 || >=22.9.0"
}
},
"node_modules/@npmcli/package-json": {
@@ -1213,24 +1283,24 @@
}
},
"node_modules/@npmcli/query": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@npmcli/query/-/query-4.0.1.tgz",
- "integrity": "sha512-4OIPFb4weUUwkDXJf4Hh1inAn8neBGq3xsH4ZsAaN6FK3ldrFkH7jSpCc7N9xesi0Sp+EBXJ9eGMDrEww2Ztqw==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@npmcli/query/-/query-5.0.0.tgz",
+ "integrity": "sha512-8TZWfTQOsODpLqo9SVhVjHovmKXNpevHU0gO9e+y4V4fRIOneiXy0u0sMP9LmS71XivrEWfZWg50ReH4WRT4aQ==",
"license": "ISC",
"dependencies": {
"postcss-selector-parser": "^7.0.0"
},
"engines": {
- "node": "^18.17.0 || >=20.5.0"
+ "node": "^20.17.0 || >=22.9.0"
}
},
"node_modules/@npmcli/redact": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-3.2.2.tgz",
- "integrity": "sha512-7VmYAmk4csGv08QzrDKScdzn11jHPFGyqJW39FyPgPuAp3zIaUmuCo1yxw9aGs+NEJuTGQ9Gwqpt93vtJubucg==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-4.0.0.tgz",
+ "integrity": "sha512-gOBg5YHMfZy+TfHArfVogwgfBeQnKbbGo3pSUyK/gSI0AVu+pEiDVcKlQb0D8Mg1LNRZILZ6XG8I5dJ4KuAd9Q==",
"license": "ISC",
"engines": {
- "node": "^18.17.0 || >=20.5.0"
+ "node": "^20.17.0 || >=22.9.0"
}
},
"node_modules/@npmcli/run-script": {
@@ -1250,15 +1320,6 @@
"node": "^20.17.0 || >=22.9.0"
}
},
- "node_modules/@npmcli/run-script/node_modules/@npmcli/node-gyp": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-5.0.0.tgz",
- "integrity": "sha512-uuG5HZFXLfyFKqg8QypsmgLQW7smiRjVc45bqD/ofZZcR/uxEjgQU8qDPv0s9TEeMUiAAU/GC5bR6++UdTirIQ==",
- "license": "ISC",
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
- }
- },
"node_modules/@npmcli/run-script/node_modules/proc-log": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.0.0.tgz",
@@ -1689,9 +1750,9 @@
}
},
"node_modules/@types/lodash": {
- "version": "4.17.20",
- "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.20.tgz",
- "integrity": "sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==",
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-FOvQ0YPD5NOfPgMzJihoT+Za5pdkDJWcbpuj1DjaKZIr/gxodQjY/uWEFlTNqW2ugXHUiL8lRQgw63dzKHZdeQ==",
"dev": true,
"license": "MIT"
},
@@ -2713,19 +2774,37 @@
}
},
"node_modules/bin-links": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-5.0.0.tgz",
- "integrity": "sha512-sdleLVfCjBtgO5cNjA2HVRvWBJAHs4zwenaCPMNJAJU0yNxpzj80IpjOIimkpkr+mhlA+how5poQtt53PygbHA==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-6.0.0.tgz",
+ "integrity": "sha512-X4CiKlcV2GjnCMwnKAfbVWpHa++65th9TuzAEYtZoATiOE2DQKhSp4CJlyLoTqdhBKlXjpXjCTYPNNFS33Fi6w==",
"license": "ISC",
"dependencies": {
- "cmd-shim": "^7.0.0",
- "npm-normalize-package-bin": "^4.0.0",
- "proc-log": "^5.0.0",
- "read-cmd-shim": "^5.0.0",
- "write-file-atomic": "^6.0.0"
+ "cmd-shim": "^8.0.0",
+ "npm-normalize-package-bin": "^5.0.0",
+ "proc-log": "^6.0.0",
+ "read-cmd-shim": "^6.0.0",
+ "write-file-atomic": "^7.0.0"
},
"engines": {
- "node": "^18.17.0 || >=20.5.0"
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/bin-links/node_modules/npm-normalize-package-bin": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-5.0.0.tgz",
+ "integrity": "sha512-CJi3OS4JLsNMmr2u07OJlhcrPxCeOeP/4xq67aWNai6TNWWbTrlNDgl8NcFKVlcBKp18GPj+EzbNIgrBfZhsag==",
+ "license": "ISC",
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/bin-links/node_modules/proc-log": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz",
+ "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==",
+ "license": "ISC",
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
}
},
"node_modules/binary-extensions": {
@@ -3413,12 +3492,12 @@
}
},
"node_modules/cmd-shim": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-7.0.0.tgz",
- "integrity": "sha512-rtpaCbr164TPPh+zFdkWpCyZuKkjpAzODfaZCf/SVJZzJN+4bHQb/LP3Jzq5/+84um3XXY8r548XiWKSborwVw==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-8.0.0.tgz",
+ "integrity": "sha512-Jk/BK6NCapZ58BKUxlSI+ouKRbjH1NLZCgJkYoab+vEHUY3f6OzpNBN9u7HFSv9J6TRDGs4PLOHezoKGaFRSCA==",
"license": "ISC",
"engines": {
- "node": "^18.17.0 || >=20.5.0"
+ "node": "^20.17.0 || >=22.9.0"
}
},
"node_modules/code-block-writer": {
@@ -3794,7 +3873,6 @@
"integrity": "sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==",
"dev": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=18"
}
@@ -8423,9 +8501,9 @@
}
},
"node_modules/mocha": {
- "version": "11.7.4",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.7.4.tgz",
- "integrity": "sha512-1jYAaY8x0kAZ0XszLWu14pzsf4KV740Gld4HXkhNTXwcHx4AUEDkPzgEHg9CM5dVcW+zv036tjpsEbLraPJj4w==",
+ "version": "11.7.5",
+ "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.7.5.tgz",
+ "integrity": "sha512-mTT6RgopEYABzXWFx+GcJ+ZQ32kp4fMf0xvpZIIfSq9Z8lC/++MtcCnQ9t5FP2veYEP95FIYSvW+U9fV4xrlig==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -8802,15 +8880,6 @@
"node": "^20.17.0 || >=22.9.0"
}
},
- "node_modules/node-gyp/node_modules/abbrev": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-4.0.0.tgz",
- "integrity": "sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==",
- "license": "ISC",
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
- }
- },
"node_modules/node-gyp/node_modules/env-paths": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
@@ -8820,21 +8889,6 @@
"node": ">=6"
}
},
- "node_modules/node-gyp/node_modules/nopt": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-9.0.0.tgz",
- "integrity": "sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw==",
- "license": "ISC",
- "dependencies": {
- "abbrev": "^4.0.0"
- },
- "bin": {
- "nopt": "bin/nopt.js"
- },
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
- }
- },
"node_modules/node-gyp/node_modules/proc-log": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.0.0.tgz",
@@ -8845,27 +8899,27 @@
}
},
"node_modules/nopt": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-8.1.0.tgz",
- "integrity": "sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==",
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-9.0.0.tgz",
+ "integrity": "sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw==",
"license": "ISC",
"dependencies": {
- "abbrev": "^3.0.0"
+ "abbrev": "^4.0.0"
},
"bin": {
"nopt": "bin/nopt.js"
},
"engines": {
- "node": "^18.17.0 || >=20.5.0"
+ "node": "^20.17.0 || >=22.9.0"
}
},
"node_modules/nopt/node_modules/abbrev": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-3.0.1.tgz",
- "integrity": "sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-4.0.0.tgz",
+ "integrity": "sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==",
"license": "ISC",
"engines": {
- "node": "^18.17.0 || >=20.5.0"
+ "node": "^20.17.0 || >=22.9.0"
}
},
"node_modules/normalize-package-data": {
@@ -8925,15 +8979,15 @@
}
},
"node_modules/npm-install-checks": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-7.1.2.tgz",
- "integrity": "sha512-z9HJBCYw9Zr8BqXcllKIs5nI+QggAImbBdHphOzVYrz2CB4iQ6FzWyKmlqDZua+51nAu7FcemlbTc9VgQN5XDQ==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-8.0.0.tgz",
+ "integrity": "sha512-ScAUdMpyzkbpxoNekQ3tNRdFI8SJ86wgKZSQZdUxT+bj0wVFpsEMWnkXP0twVe1gJyNF5apBWDJhhIbgrIViRA==",
"license": "BSD-2-Clause",
"dependencies": {
"semver": "^7.1.1"
},
"engines": {
- "node": "^18.17.0 || >=20.5.0"
+ "node": "^20.17.0 || >=22.9.0"
}
},
"node_modules/npm-normalize-package-bin": {
@@ -9006,18 +9060,6 @@
"node": "^20.17.0 || >=22.9.0"
}
},
- "node_modules/npm-pick-manifest/node_modules/npm-install-checks": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-8.0.0.tgz",
- "integrity": "sha512-ScAUdMpyzkbpxoNekQ3tNRdFI8SJ86wgKZSQZdUxT+bj0wVFpsEMWnkXP0twVe1gJyNF5apBWDJhhIbgrIViRA==",
- "license": "BSD-2-Clause",
- "dependencies": {
- "semver": "^7.1.1"
- },
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
- }
- },
"node_modules/npm-pick-manifest/node_modules/npm-normalize-package-bin": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-5.0.0.tgz",
@@ -9046,15 +9088,6 @@
"node": "^20.17.0 || >=22.9.0"
}
},
- "node_modules/npm-registry-fetch/node_modules/@npmcli/redact": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-4.0.0.tgz",
- "integrity": "sha512-gOBg5YHMfZy+TfHArfVogwgfBeQnKbbGo3pSUyK/gSI0AVu+pEiDVcKlQb0D8Mg1LNRZILZ6XG8I5dJ4KuAd9Q==",
- "license": "ISC",
- "engines": {
- "node": "^20.17.0 || >=22.9.0"
- }
- },
"node_modules/npm-registry-fetch/node_modules/minipass": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
@@ -9503,15 +9536,15 @@
"license": "BlueOak-1.0.0"
},
"node_modules/pacote": {
- "version": "21.0.3",
- "resolved": "https://registry.npmjs.org/pacote/-/pacote-21.0.3.tgz",
- "integrity": "sha512-itdFlanxO0nmQv4ORsvA9K1wv40IPfB9OmWqfaJWvoJ30VKyHsqNgDVeG+TVhI7Gk7XW8slUy7cA9r6dF5qohw==",
+ "version": "21.0.4",
+ "resolved": "https://registry.npmjs.org/pacote/-/pacote-21.0.4.tgz",
+ "integrity": "sha512-RplP/pDW0NNNDh3pnaoIWYPvNenS7UqMbXyvMqJczosiFWTeGGwJC2NQBLqKf4rGLFfwCOnntw1aEp9Jiqm1MA==",
"license": "ISC",
"dependencies": {
"@npmcli/git": "^7.0.0",
- "@npmcli/installed-package-contents": "^3.0.0",
+ "@npmcli/installed-package-contents": "^4.0.0",
"@npmcli/package-json": "^7.0.0",
- "@npmcli/promise-spawn": "^8.0.0",
+ "@npmcli/promise-spawn": "^9.0.0",
"@npmcli/run-script": "^10.0.0",
"cacache": "^20.0.0",
"fs-minipass": "^3.0.0",
@@ -9520,10 +9553,10 @@
"npm-packlist": "^10.0.1",
"npm-pick-manifest": "^11.0.1",
"npm-registry-fetch": "^19.0.0",
- "proc-log": "^5.0.0",
+ "proc-log": "^6.0.0",
"promise-retry": "^2.0.1",
"sigstore": "^4.0.0",
- "ssri": "^12.0.0",
+ "ssri": "^13.0.0",
"tar": "^7.4.3"
},
"bin": {
@@ -9533,16 +9566,20 @@
"node": "^20.17.0 || >=22.9.0"
}
},
- "node_modules/pacote/node_modules/@npmcli/promise-spawn": {
- "version": "8.0.3",
- "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-8.0.3.tgz",
- "integrity": "sha512-Yb00SWaL4F8w+K8YGhQ55+xE4RUNdMHV43WZGsiTM92gS+lC0mGsn7I4hLug7pbao035S6bj3Y3w0cUNGLfmkg==",
+ "node_modules/pacote/node_modules/@npmcli/installed-package-contents": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-4.0.0.tgz",
+ "integrity": "sha512-yNyAdkBxB72gtZ4GrwXCM0ZUedo9nIbOMKfGjt6Cu6DXf0p8y1PViZAKDC8q8kv/fufx0WTjRBdSlyrvnP7hmA==",
"license": "ISC",
"dependencies": {
- "which": "^5.0.0"
+ "npm-bundled": "^5.0.0",
+ "npm-normalize-package-bin": "^5.0.0"
+ },
+ "bin": {
+ "installed-package-contents": "bin/index.js"
},
"engines": {
- "node": "^18.17.0 || >=20.5.0"
+ "node": "^20.17.0 || >=22.9.0"
}
},
"node_modules/pacote/node_modules/minipass": {
@@ -9554,19 +9591,46 @@
"node": ">=16 || 14 >=14.17"
}
},
- "node_modules/pacote/node_modules/which": {
+ "node_modules/pacote/node_modules/npm-bundled": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz",
- "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==",
+ "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-5.0.0.tgz",
+ "integrity": "sha512-JLSpbzh6UUXIEoqPsYBvVNVmyrjVZ1fzEFbqxKkTJQkWBO3xFzFT+KDnSKQWwOQNbuWRwt5LSD6HOTLGIWzfrw==",
"license": "ISC",
"dependencies": {
- "isexe": "^3.1.1"
+ "npm-normalize-package-bin": "^5.0.0"
},
- "bin": {
- "node-which": "bin/which.js"
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/pacote/node_modules/npm-normalize-package-bin": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-5.0.0.tgz",
+ "integrity": "sha512-CJi3OS4JLsNMmr2u07OJlhcrPxCeOeP/4xq67aWNai6TNWWbTrlNDgl8NcFKVlcBKp18GPj+EzbNIgrBfZhsag==",
+ "license": "ISC",
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/pacote/node_modules/proc-log": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz",
+ "integrity": "sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==",
+ "license": "ISC",
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/pacote/node_modules/ssri": {
+ "version": "13.0.0",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-13.0.0.tgz",
+ "integrity": "sha512-yizwGBpbCn4YomB2lzhZqrHLJoqFGXihNbib3ozhqF/cIp5ue+xSmOQrjNasEE62hFxsCcg/V/z23t4n8jMEng==",
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^7.0.3"
},
"engines": {
- "node": "^18.17.0 || >=20.5.0"
+ "node": "^20.17.0 || >=22.9.0"
}
},
"node_modules/pako": {
@@ -9598,26 +9662,17 @@
}
},
"node_modules/parse-conflict-json": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-4.0.0.tgz",
- "integrity": "sha512-37CN2VtcuvKgHUs8+0b1uJeEsbGn61GRHz469C94P5xiOoqpDYJYwjg4RY9Vmz39WyZAVkR5++nbJwLMIgOCnQ==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-5.0.1.tgz",
+ "integrity": "sha512-ZHEmNKMq1wyJXNwLxyHnluPfRAFSIliBvbK/UiOceROt4Xh9Pz0fq49NytIaeaCUf5VR86hwQ/34FCcNU5/LKQ==",
"license": "ISC",
"dependencies": {
- "json-parse-even-better-errors": "^4.0.0",
+ "json-parse-even-better-errors": "^5.0.0",
"just-diff": "^6.0.0",
"just-diff-apply": "^5.2.0"
},
"engines": {
- "node": "^18.17.0 || >=20.5.0"
- }
- },
- "node_modules/parse-conflict-json/node_modules/json-parse-even-better-errors": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-4.0.0.tgz",
- "integrity": "sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA==",
- "license": "MIT",
- "engines": {
- "node": "^18.17.0 || >=20.5.0"
+ "node": "^20.17.0 || >=22.9.0"
}
},
"node_modules/parse-filepath": {
@@ -9946,9 +10001,9 @@
}
},
"node_modules/postcss-selector-parser": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
- "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
+ "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
@@ -9968,9 +10023,9 @@
}
},
"node_modules/prettier": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz",
- "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==",
+ "version": "3.7.3",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.3.tgz",
+ "integrity": "sha512-QgODejq9K3OzoBbuyobZlUhznP5SKwPqp+6Q6xw6o8gnhr4O85L2U915iM2IDcfF2NPXVaM9zlo9tdwipnYwzg==",
"license": "MIT",
"bin": {
"prettier": "bin/prettier.cjs"
@@ -10007,12 +10062,12 @@
"license": "MIT"
},
"node_modules/proggy": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/proggy/-/proggy-3.0.0.tgz",
- "integrity": "sha512-QE8RApCM3IaRRxVzxrjbgNMpQEX6Wu0p0KBeoSiSEw5/bsGwZHsshF4LCxH2jp/r6BU+bqA3LrMDEYNfJnpD8Q==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/proggy/-/proggy-4.0.0.tgz",
+ "integrity": "sha512-MbA4R+WQT76ZBm/5JUpV9yqcJt92175+Y0Bodg3HgiXzrmKu7Ggq+bpn6y6wHH+gN9NcyKn3yg1+d47VaKwNAQ==",
"license": "ISC",
"engines": {
- "node": "^18.17.0 || >=20.5.0"
+ "node": "^20.17.0 || >=22.9.0"
}
},
"node_modules/promise-all-reject-late": {
@@ -10192,12 +10247,12 @@
"license": "MIT"
},
"node_modules/read-cmd-shim": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-5.0.0.tgz",
- "integrity": "sha512-SEbJV7tohp3DAAILbEMPXavBjAnMN0tVnh4+9G8ihV4Pq3HYF9h8QNez9zkJ1ILkv9G2BjdzwctznGZXgu/HGw==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-6.0.0.tgz",
+ "integrity": "sha512-1zM5HuOfagXCBWMN83fuFI/x+T/UhZ7k+KIzhrHXcQoeX5+7gmaDYjELQHmmzIodumBHeByBJT4QYS7ufAgs7A==",
"license": "ISC",
"engines": {
- "node": "^18.17.0 || >=20.5.0"
+ "node": "^20.17.0 || >=22.9.0"
}
},
"node_modules/read-package-up": {
@@ -12879,16 +12934,16 @@
"license": "ISC"
},
"node_modules/write-file-atomic": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-6.0.0.tgz",
- "integrity": "sha512-GmqrO8WJ1NuzJ2DrziEI2o57jKAVIQNf8a18W3nCYU3H7PNWqCCVTeH6/NQE93CIllIgQS98rrmVkYgTX9fFJQ==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-7.0.0.tgz",
+ "integrity": "sha512-YnlPC6JqnZl6aO4uRc+dx5PHguiR9S6WeoLtpxNT9wIG+BDya7ZNE1q7KOjVgaA73hKhKLpVPgJ5QA9THQ5BRg==",
"license": "ISC",
"dependencies": {
"imurmurhash": "^0.1.4",
"signal-exit": "^4.0.1"
},
"engines": {
- "node": "^18.17.0 || >=20.5.0"
+ "node": "^20.17.0 || >=22.9.0"
}
},
"node_modules/write-file-atomic/node_modules/signal-exit": {
diff --git a/package.json b/package.json
index e33128e271..01617377e9 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "nativescript",
"main": "./lib/nativescript-cli-lib.js",
- "version": "9.0.1",
+ "version": "9.0.2",
"author": "NativeScript ",
"description": "Command-line interface for building NativeScript projects",
"bin": {
@@ -57,7 +57,7 @@
"@foxt/js-srp": "0.0.3-patch2",
"@nativescript/doctor": "2.0.17",
"@nativescript/hook": "3.0.4",
- "@npmcli/arborist": "9.1.6",
+ "@npmcli/arborist": "9.1.8",
"@rigor789/resolve-package-path": "1.0.7",
"@nstudio/trapezedev-project": "7.2.3",
"archiver": "7.0.1",
@@ -85,11 +85,11 @@
"nativescript-dev-xcode": "0.8.1",
"open": "8.4.2",
"ora": "5.4.1",
- "pacote": "21.0.3",
+ "pacote": "21.0.4",
"pbxproj-dom": "1.2.0",
"plist": "3.1.0",
"plist-merge-patch": "0.2.0",
- "prettier": "3.6.2",
+ "prettier": "3.7.3",
"prompts": "2.4.2",
"proper-lockfile": "4.1.2",
"proxy-lib": "0.4.1",
@@ -118,7 +118,7 @@
"@types/chai-as-promised": "8.0.2",
"@types/color": "4.2.0",
"@types/convert-source-map": "2.0.3",
- "@types/lodash": "4.17.20",
+ "@types/lodash": "4.17.21",
"@types/marked-terminal": "^6.1.1",
"@types/node": "^22.0.0",
"@types/npmcli__arborist": "^6.3.0",
@@ -153,7 +153,7 @@
"husky": "9.1.7",
"istanbul": "0.4.5",
"lint-staged": "~15.5.2",
- "mocha": "11.7.4",
+ "mocha": "11.7.5",
"sinon": "19.0.5",
"source-map-support": "0.5.21",
"xml2js": ">=0.5.0"
diff --git a/packages/doctor/package.json b/packages/doctor/package.json
index c74798ccb6..50bff723d6 100644
--- a/packages/doctor/package.json
+++ b/packages/doctor/package.json
@@ -42,7 +42,7 @@
"homepage": "https://github.com/NativeScript/nativescript-doctor#readme",
"devDependencies": {
"@types/chai": "5.2.2",
- "@types/lodash": "4.17.20",
+ "@types/lodash": "4.17.21",
"@types/mocha": "10.0.10",
"@types/semver": "7.7.1",
"@types/shelljs": "0.8.17",
@@ -58,8 +58,8 @@
"grunt-ts": "6.0.0-beta.22",
"grunt-tslint": "5.0.2",
"istanbul": "0.4.5",
- "mocha": "11.7.4",
- "rimraf": "6.1.0",
+ "mocha": "11.7.5",
+ "rimraf": "6.1.2",
"tslint": "6.1.3",
"tslint-microsoft-contrib": "6.2.0",
"typescript": "~5.9.2"
diff --git a/packages/nativescript-envinfo/package.json b/packages/nativescript-envinfo/package.json
index a5dad5ca5d..64e5f94477 100644
--- a/packages/nativescript-envinfo/package.json
+++ b/packages/nativescript-envinfo/package.json
@@ -10,6 +10,6 @@
},
"dependencies": {
"@types/envinfo": "^7.8.4",
- "envinfo": "^7.19.0"
+ "envinfo": "^7.21.0"
}
}
diff --git a/packages/nativescript-envinfo/yarn.lock b/packages/nativescript-envinfo/yarn.lock
index 8f4bc3a825..5be003ebbc 100644
--- a/packages/nativescript-envinfo/yarn.lock
+++ b/packages/nativescript-envinfo/yarn.lock
@@ -7,7 +7,7 @@
resolved "https://registry.yarnpkg.com/@types/envinfo/-/envinfo-7.8.4.tgz#f13ec1050b8e260d6d7c149ba5b99f65d2b74058"
integrity sha512-K5WaRgSlqjc408IyPbxOFnz7rVG9E8ELhj7XR3Ncui15EgeyIXTcCfmwrRnU4uEOCJQhzZRAQurYznEEc1dD2g==
-envinfo@^7.19.0:
- version "7.19.0"
- resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.19.0.tgz#b4b4507a27e9900b0175f556167fd3a95f8623f1"
- integrity sha512-DoSM9VyG6O3vqBf+p3Gjgr/Q52HYBBtO3v+4koAxt1MnWr+zEnxE+nke/yXS4lt2P4SYCHQ4V3f1i88LQVOpAw==
+envinfo@^7.21.0:
+ version "7.21.0"
+ resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.21.0.tgz#04a251be79f92548541f37d13c8b6f22940c3bae"
+ integrity sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==
diff --git a/scripts/get-next-version.js b/scripts/get-next-version.js
new file mode 100644
index 0000000000..5f6be10cbf
--- /dev/null
+++ b/scripts/get-next-version.js
@@ -0,0 +1,60 @@
+const semver = require("semver");
+const child_process = require("child_process");
+const fs = require("fs");
+
+const currentVersion =
+ process.env.NPM_VERSION || require("../package.json").version;
+
+if (!currentVersion) {
+ throw new Error("Invalid current version");
+}
+const currentTag = process.env.NPM_TAG || "next";
+const runID = process.env.GITHUB_RUN_ID || 0;
+
+let prPrerelease = "";
+
+if (currentTag === "pr" && process.env.GITHUB_EVENT_PATH) {
+ try {
+ const ev = JSON.parse(fs.readFileSync(process.env.GITHUB_EVENT_PATH, "utf8"));
+ const prNum = ev.pull_request.number;
+ // add extra PR number to version-pr.PRNUM-....
+ prPrerelease = `${prNum}-`;
+ } catch (e) {
+ // don't add pr prerelease
+ }
+}
+
+// Format date as YYYY-MM-DD using native Date
+const now = new Date();
+const dateStr = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, "0")}-${String(now.getDate()).padStart(2, "0")}`;
+
+const preRelease = `${currentTag}.${prPrerelease}${dateStr}-${runID}`;
+
+let lastTagVersion = (
+ process.env.LAST_TAGGED_VERSION ||
+ child_process
+ .spawnSync("git", ["describe", "--tags", "--abbrev=0", "--match=v*"])
+ .stdout.toString()
+)
+ .trim()
+ .substring(1);
+if (!semver.parse(lastTagVersion)) {
+ throw new Error("Invalid last tag version");
+}
+
+function setPreRelease(version) {
+ const parsed = semver.parse(version);
+ return semver.parse(
+ `${parsed.major}.${parsed.minor}.${parsed.patch}-${preRelease}`
+ );
+}
+
+let nextVersion = setPreRelease(currentVersion);
+
+// bump patch if the current version is lower or equal to the last tagged version
+if (semver.lte(nextVersion, lastTagVersion)) {
+ nextVersion = semver.inc(lastTagVersion, "patch");
+ nextVersion = setPreRelease(nextVersion);
+}
+
+console.log(nextVersion.version);
diff --git a/scripts/get-npm-tag.js b/scripts/get-npm-tag.js
new file mode 100644
index 0000000000..68cd158cd4
--- /dev/null
+++ b/scripts/get-npm-tag.js
@@ -0,0 +1,19 @@
+const semver = require("semver");
+
+const currentVersion =
+ process.env.NPM_VERSION || require("../package.json").version;
+
+function validateNpmTag(version) {
+ const parsed = semver.parse(version);
+ return (
+ parsed.prerelease.length === 0 || /^[a-zA-Z]+$/.test(parsed.prerelease[0])
+ );
+}
+
+function getNpmTag(version) {
+ if (!validateNpmTag(version)) throw new Error("Invalid npm tag");
+ const parsed = semver.parse(version);
+ return parsed.prerelease[0] || "latest";
+}
+
+console.log(getNpmTag(currentVersion));