diff --git a/.github/settings.yml b/.github/settings.yml index af806f5..71d185d 100644 --- a/.github/settings.yml +++ b/.github/settings.yml @@ -3,10 +3,10 @@ # repository: - name: anoncreds-rs - description: anoncreds-rs + name: anoncreds-wrapper-javascript + description: Node.JS and React Native wrapper for AnonCreds RS homepage: https://wiki.hyperledger.org/display/anoncreds - default_branch: main + default_branch: main has_downloads: false has_issues: true has_projects: false diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index 508d35a..0000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,507 +0,0 @@ -name: "Anoncreds" - -env: - RUST_VERSION: "stable 6 months ago" - CROSS_VERSION: "0.2.4" - -on: - push: - branches: [main] - pull_request: - branches: [main] - release: - types: [created] - workflow_dispatch: - inputs: - publish-binaries: - description: "Publish Binaries to Release (will create a release if no release exits for branch or tag)" - required: true - default: false - type: boolean - publish-python-wrapper: - description: "Publish Python Wrapper to Registries" - required: true - default: false - type: boolean - publish-javascript-wrapper: - description: "Publish JavaScript Wrapper to Registries" - required: true - default: false - type: boolean - -jobs: - lint: - name: Lint - - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@stable - with: - toolchain: ${{ env.RUST_VERSION }} - components: clippy, rustfmt - - - name: Cache cargo resources - uses: Swatinem/rust-cache@v2 - - - name: Cargo check - run: cargo check - - - name: Cargo fmt - run: cargo fmt --all -- --check - - test: - name: Test - - strategy: - matrix: - os: [anoncreds-windows-latest, anoncreds-ubuntu-latest] - - runs-on: ${{ matrix.os }} - - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@stable - with: - toolchain: ${{ env.RUST_VERSION }} - - - name: Cache cargo resources - uses: Swatinem/rust-cache@v2 - - - name: Test Linux and macOS - if: ${{ runner.os != 'Windows' }} - run: cargo test --package anoncreds --features vendored - - - name: Test Windows - if: ${{ runner.os == 'Windows' }} - env: - OPENSSL_STATIC: 1 - run: cargo test --package anoncreds --features vendored - - build-release: - name: Build Library - - strategy: - matrix: - include: - - architecture: linux-aarch64 - os: anoncreds-ubuntu-latest - target: aarch64-unknown-linux-gnu - lib: libanoncreds.so - use_cross: true - - architecture: linux-x86_64 - os: anoncreds-ubuntu-latest - target: x86_64-unknown-linux-gnu - lib: libanoncreds.so - use_cross: true - - architecture: darwin-x86_64 - os: macos-latest - target: x86_64-apple-darwin - lib: libanoncreds.dylib - - architecture: darwin-aarch64 - os: macos-latest - target: aarch64-apple-darwin - lib: libanoncreds.dylib - - architecture: darwin-universal - os: macos-latest - target: darwin-universal - lib: libanoncreds.dylib - - architecture: windows-x86_64 - os: anoncreds-windows-latest - arch: windows-x86_64 - target: x86_64-pc-windows-msvc - lib: anoncreds.dll - - runs-on: ${{ matrix.os }} - - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Install Rust toolchain - if: ${{ matrix.target != 'darwin-universal' }} - uses: dtolnay/rust-toolchain@stable - with: - toolchain: ${{ env.RUST_VERSION }} - targets: ${{ matrix.target }} - - - name: Cache cargo resources - uses: Swatinem/rust-cache@v2 - with: - shared-key: deps - save-if: false - - - name: Build library for Windows - if: ${{ runner.os == 'Windows' }} - env: - OPENSSL_STATIC: 1 - run: cargo build --release --package anoncreds --target ${{matrix.target}} --features vendored - - - name: Build library for Linux - if: ${{ runner.os == 'Linux' }} - run: | - if [ -n "${{ matrix.use_cross }}" ]; then - cargo install --locked --git https://github.com/cross-rs/cross --tag v${{ env.CROSS_VERSION }} cross - cross build --release --package anoncreds --target ${{matrix.target}} --features vendored - else - cargo build --release --package anoncreds --target ${{matrix.target}} --features vendored - fi - - - name: Build library for macOS - if: ${{ runner.os == 'macOS' }} - run: | - if [ "${{ matrix.architecture }}" == "darwin-universal" ]; then - ./build-universal.sh - else - cargo build --release --package anoncreds --target ${{matrix.target}} --features vendored - fi - - - name: Upload library artifacts - uses: actions/upload-artifact@v4 - with: - name: library-${{ matrix.architecture }} - path: target/${{ matrix.target }}/release/${{ matrix.lib }} - - - name: Create library artifacts directory - if: | - github.event_name == 'release' || - (github.event_name == 'workflow_dispatch' && github.event.inputs.publish-binaries == 'true') - run: | - mkdir release-artifacts - cp target/${{ matrix.target }}/release/${{ matrix.lib }} release-artifacts/ - - - name: Release artifacts - uses: a7ul/tar-action@v1.1.2 - if: | - github.event_name == 'release' || - (github.event_name == 'workflow_dispatch' && github.event.inputs.publish-binaries == 'true') - with: - command: c - cwd: release-artifacts - files: . - outPath: "library-${{ matrix.architecture }}.tar.gz" - - - name: Add library artifacts to release - if: | - github.event_name == 'release' || - (github.event_name == 'workflow_dispatch' && github.event.inputs.publish-binaries == 'true') - uses: svenstaro/upload-release-action@v2 - with: - file: library-${{ matrix.architecture }}.tar.gz - asset_name: "library-${{ matrix.architecture }}.tar.gz" - - build-javascript: - name: Build and Test JavaScript wrapper - needs: [build-release] - runs-on: anoncreds-ubuntu-latest - defaults: - run: - working-directory: wrappers/javascript - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Set up Node.JS 18.x - uses: actions/setup-node@v4 - with: - node-version: 18.x - registry-url: "https://registry.npmjs.org/" - - - uses: pnpm/action-setup@v4 - with: - version: 9 - - - name: Fetch library artifacts - uses: actions/download-artifact@v4 - with: - name: library-linux-x86_64 - - - name: Install dependencies - run: pnpm install --frozen-lockfile - - - name: Build JavaScript Wrapper - run: pnpm build - - - name: Lint JavaScript Wrapper - run: pnpm lint - - - name: Format Check JavaScript Wrapper - run: pnpm check-format - - - name: Type Check JavaScript Wrapper - run: pnpm check-types - - - name: Test JavaScript Wrapper - env: - # binary is downloaded to root of repository - LIB_ANONCREDS_PATH: ../../ - run: pnpm test - - - name: Publish JavaScript Wrapper - if: | - github.event_name == 'release' || - (github.event_name == 'workflow_dispatch' && github.event.inputs.publish-javascript-wrapper == 'true') - run: | - if [[ $(cat lerna.json | grep version | head -1 | grep dev) ]]; then - npx lerna publish from-package --no-push --no-private --yes --no-git-tag-version --dist-tag=alpha - else - npx lerna publish from-package --no-push --no-private --yes --no-git-tag-version - fi - env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - - build-py: - name: Build Python - needs: [build-release] - - env: - PYTHON_VERSION: "3.8" - - strategy: - matrix: - include: - - runner: anoncreds-ubuntu-latest - architecture: linux-aarch64 - plat-name: manylinux2014_aarch64 - - runner: anoncreds-ubuntu-latest - architecture: linux-x86_64 - plat-name: manylinux2014_x86_64 - - runner: macos-latest - architecture: darwin-universal - plat-name: macosx_10_9_universal2 - - runner: anoncreds-windows-latest - architecture: windows-x86_64 - plat-name: win_amd64 - - runs-on: ${{ matrix.runner }} - - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v4 - with: - python-version: ${{ env.PYTHON_VERSION }} - - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install setuptools wheel twine auditwheel - - - name: Fetch library artifacts - uses: actions/download-artifact@v4 - with: - name: library-${{ matrix.architecture }} - path: wrappers/python/anoncreds/ - - - name: Build wheel package - run: | - python setup.py bdist_wheel --python-tag=py3 --plat-name=${{ matrix.plat-name }} - working-directory: wrappers/python - - - if: ${{ matrix.architecture != 'linux-aarch64' }} - name: Test python package - shell: sh - run: | - cd wrappers/python - pip install dist/* - python -m demo.test - - - if: ${{ runner.os == 'Linux' }} - name: Audit wheel - run: | - auditwheel show wrappers/python/dist/* | tee auditwheel.log - grep -q manylinux_2_17_ auditwheel.log - - - if: | - (github.event_name == 'release' || - (github.event_name == 'workflow_dispatch' && - github.event.inputs.publish-python-wrapper == 'true')) - name: Publish python package - working-directory: wrappers/python - env: - TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} - TWINE_PASSWORD: ${{ secrets.PYPI_ANONCREDS }} - run: | - twine upload --repository pypi --skip-existing dist/* - - build-android-libraries: - name: Build Android Libraries - runs-on: anoncreds-ubuntu-latest - strategy: - matrix: - target: - [ - aarch64-linux-android, - armv7-linux-androideabi, - i686-linux-android, - x86_64-linux-android, - ] - # NB: RUST_VERSION must be <1.68 here to support NDK 17 - env: - RUST_VERSION: "1.67" - - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@stable - with: - toolchain: ${{ env.RUST_VERSION }} - targets: ${{ matrix.target }} - - - name: Cache cargo resources - uses: Swatinem/rust-cache@v2 - - - name: Build - run: | - cargo install --locked --git https://github.com/cross-rs/cross --tag v${{ env.CROSS_VERSION }} cross - cp Cargo.lock.android Cargo.lock - cross build --release --target ${{ matrix.target }} --features=vendored - - - name: Upload artifacts - uses: actions/upload-artifact@v4 - with: - name: ${{ matrix.target }} - path: target/${{ matrix.target }}/release/libanoncreds.so - - create-android-library: - name: Create android libraries - runs-on: anoncreds-ubuntu-latest - needs: build-android-libraries - if: | - (github.event_name == 'release' || - (github.event_name == 'workflow_dispatch' && - github.event.inputs.publish-binaries == 'true')) - steps: - - name: Fetch libraries - uses: actions/download-artifact@v4 - - run: | - sudo mkdir ./libs - sudo mv aarch64-linux-android ./libs/arm64-v8a - sudo mv armv7-linux-androideabi ./libs/armeabi-v7a - sudo mv i686-linux-android ./libs/x86 - sudo mv x86_64-linux-android ./libs/x86_64 - - name: Save Android library - uses: actions/upload-artifact@v4 - with: - name: android-libraries - path: ./libs - - - name: Delete artifacts - uses: geekyeggo/delete-artifact@v1 - with: - name: | - aarch64-linux-android - armv7-linux-androideabi - i686-linux-android - x86_64-linux-android - failOnError: false - - build-ios-libraries: - name: Build ios Libraries - runs-on: macos-latest - strategy: - matrix: - architecture: - [aarch64-apple-ios, aarch64-apple-ios-sim, x86_64-apple-ios] - - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@stable - with: - targets: ${{matrix.architecture}} - - - name: Build - run: cargo build --release --target ${{matrix.architecture}} --features=vendored - - - name: Save artifacts - uses: actions/upload-artifact@v4 - with: - name: ${{matrix.architecture}} - path: target/${{matrix.architecture}}/release/libanoncreds.a - - create-ios-xcframework: - name: Create ios xcframework - runs-on: macos-latest - needs: build-ios-libraries - if: | - (github.event_name == 'release' || - (github.event_name == 'workflow_dispatch' && - github.event.inputs.publish-binaries == 'true')) - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Fetch static libraries - uses: actions/download-artifact@v4 - - run: > - ./build-xcframework.sh aarch64-apple-ios \ - aarch64-apple-ios-sim \ - x86_64-apple-ios \ - include - - - name: Save xcframework - uses: actions/upload-artifact@v4 - with: - name: anoncreds.xcframework - path: out - - - name: Delete artifacts - uses: geekyeggo/delete-artifact@v1 - with: - name: | - aarch64-apple-ios - aarch64-apple-ios-sim - x86_64-apple-ios - failOnError: false - - create-ios-android-release-asset: - name: Create iOS and Android Release Assets - runs-on: anoncreds-ubuntu-latest - needs: - - create-ios-xcframework - - create-android-library - if: | - (github.event_name == 'release' || - (github.event_name == 'workflow_dispatch' && - github.event.inputs.publish-binaries == 'true')) - - steps: - - name: Fetch Android libraries - uses: actions/download-artifact@v4 - with: - name: android-libraries - path: mobile/android/ - - - name: Fetch iOS Framework - uses: actions/download-artifact@v4 - with: - name: anoncreds.xcframework - path: mobile/ios/ - - - name: Create archive - uses: a7ul/tar-action@v1.1.2 - with: - command: c - files: ./mobile - outPath: "library-ios-android.tar.gz" - - - name: Add library artifacts to release - uses: svenstaro/upload-release-action@v2 - with: - file: library-ios-android.tar.gz - asset_name: "library-ios-android.tar.gz" diff --git a/packages/anoncreds-nodejs/native/libanoncreds.so b/packages/anoncreds-nodejs/native/libanoncreds.so deleted file mode 100755 index 4b53684..0000000 Binary files a/packages/anoncreds-nodejs/native/libanoncreds.so and /dev/null differ diff --git a/packages/anoncreds-nodejs/package.json b/packages/anoncreds-nodejs/package.json index 76ff724..bf26ea3 100644 --- a/packages/anoncreds-nodejs/package.json +++ b/packages/anoncreds-nodejs/package.json @@ -27,7 +27,6 @@ "@2060.io/ffi-napi": "^4.0.9", "@2060.io/ref-napi": "^3.0.6", "@hyperledger/anoncreds-shared": "workspace:*", - "@mapbox/node-pre-gyp": "^1.0.11", "ref-array-di": "1.2.2", "ref-struct-di": "1.1.1" }, @@ -38,11 +37,9 @@ "typescript": "catalog:" }, "binary": { - "module_name": "anoncreds", - "module_path": "native", - "remote_path": "v0.2.0", - "host": "https://github.com/hyperledger/anoncreds-rs/releases/download/", - "package_name": "library-{platform}-{arch}.tar.gz" + "version": "v0.2.0", + "host": "https://github.com/hyperledger/anoncreds-rs/releases/download", + "packageName": "library-{platform}-{arch}.tar.gz" }, "engines": { "node": ">= 18" diff --git a/packages/anoncreds-nodejs/scripts/install.js b/packages/anoncreds-nodejs/scripts/install.js index 89d403f..3808a35 100644 --- a/packages/anoncreds-nodejs/scripts/install.js +++ b/packages/anoncreds-nodejs/scripts/install.js @@ -1,5 +1,8 @@ -const { execSync } = require('node:child_process') +const { downloadBinaryIfNeeded } = require('@hyperledger/anoncreds-shared/installBinary') const { arch, platform: osPlatform } = require('os') +const path = require('path') + +const { binary } = require('../package.json') const archTable = { x64: 'x86_64', @@ -8,8 +11,12 @@ const archTable = { const platform = osPlatform() const targetPlatform = platform === 'win32' ? 'windows' : platform -const targetArchitecture = platform === 'darwin' ? 'universal' : archTable[arch] - -const command = `node-pre-gyp install --target_arch=${targetArchitecture} --target_platform=${targetPlatform}` +const targetArchitecture = platform === 'darwin' ? 'universal' : archTable[arch()] +const packageName = binary.packageName.replace('{platform}', targetPlatform).replace('{arch}', targetArchitecture) -execSync(command) +downloadBinaryIfNeeded({ + packageName, + host: binary.host, + version: binary.version, + targetDirectory: path.join(__dirname, '../native'), +}) diff --git a/packages/anoncreds-nodejs/tests/api.test.ts b/packages/anoncreds-nodejs/tests/api.test.ts index d1a94db..9cd8067 100644 --- a/packages/anoncreds-nodejs/tests/api.test.ts +++ b/packages/anoncreds-nodejs/tests/api.test.ts @@ -18,7 +18,7 @@ import { import { setup } from './utils' -import { deepStrictEqual, ok, strict, strictEqual, throws } from 'node:assert' +import { deepStrictEqual, ok, strictEqual, throws } from 'node:assert' import { before, describe, test } from 'node:test' describe('API', () => { diff --git a/packages/anoncreds-react-native/package.json b/packages/anoncreds-react-native/package.json index 84a5f32..492b366 100644 --- a/packages/anoncreds-react-native/package.json +++ b/packages/anoncreds-react-native/package.json @@ -26,18 +26,18 @@ "ios/Anoncreds.xcodeproj/project.pbxproj", "cpp/**/*.cpp", "cpp/**/*.h", - "anoncreds.podspec" + "anoncreds.podspec", + "scripts" ], "scripts": { "check-types": "pnpm compile --noEmit", "build": "pnpm clean && pnpm compile", "clean": "rimraf -rf ./build", "compile": "tsc -p ./tsconfig.build.json", - "install": "node-pre-gyp install" + "install": "node scripts/install.js" }, "dependencies": { - "@hyperledger/anoncreds-shared": "workspace:*", - "@mapbox/node-pre-gyp": "^1.0.11" + "@hyperledger/anoncreds-shared": "workspace:*" }, "devDependencies": { "react": "18.2.0", @@ -49,10 +49,8 @@ "react-native": ">= 0.71" }, "binary": { - "module_name": "anoncreds", - "module_path": "native", - "remote_path": "v0.2.0", - "host": "https://github.com/hyperledger/anoncreds-rs/releases/download/", - "package_name": "library-ios-android.tar.gz" + "version": "v0.2.0", + "host": "https://github.com/hyperledger/anoncreds-rs/releases/download", + "packageName": "library-ios-android.tar.gz" } } diff --git a/packages/anoncreds-react-native/scripts/install.js b/packages/anoncreds-react-native/scripts/install.js new file mode 100644 index 0000000..70a3670 --- /dev/null +++ b/packages/anoncreds-react-native/scripts/install.js @@ -0,0 +1,10 @@ +const { downloadBinaryIfNeeded } = require('@hyperledger/anoncreds-shared/installBinary') +const { binary } = require('../package.json') +const path = require('path') + +downloadBinaryIfNeeded({ + packageName: binary.packageName, + host: binary.host, + version: binary.version, + targetDirectory: path.join(__dirname, '../native'), +}) diff --git a/packages/anoncreds-shared/installBinary.js b/packages/anoncreds-shared/installBinary.js new file mode 100644 index 0000000..154b0fb --- /dev/null +++ b/packages/anoncreds-shared/installBinary.js @@ -0,0 +1,83 @@ +const path = require('path') +const tar = require('tar') +const fs = require('fs') + +async function downloadBinaryIfNeeded({ packageName, version, host, targetDirectory }) { + if (!needsDownload({ version, targetDirectory })) return + + await downloadBinary({ packageName, version, host, targetDirectory }) +} + +function needsDownload({ version, targetDirectory }) { + const metadataPath = path.join(targetDirectory, 'version.json') + + if (!fs.existsSync(metadataPath)) return true + + // Check if metadata exists and matches current version + try { + const metadata = JSON.parse(fs.readFileSync(metadataPath, 'utf8')) + if (metadata.version === version) { + console.log('Binary is up to date, skipping download') + return false + } + } catch (error) { + // If metadata is corrupted, download anyway + console.log('Metadata file is invalid, will download binary') + } + + return true +} + +async function downloadBinary({ packageName, version, host, targetDirectory }) { + const url = `${host}/${version}/${packageName}` + const metadataPath = path.join(targetDirectory, 'version.json') + + console.log(`Downloading binary from ${url} to \n ${targetDirectory}...`) + + try { + // Ensure the directory exists + if (!fs.existsSync(targetDirectory)) { + fs.mkdirSync(targetDirectory, { recursive: true }) + } + + const response = await fetch(url) + + if (!response.ok) { + throw new Error(`Failed to download: ${response.status} ${response.statusText}`) + } + const data = await response.arrayBuffer() + + // Write the downloaded file first + const tempFile = path.join(targetDirectory, 'anoncreds.tar.gz') + fs.writeFileSync(tempFile, Buffer.from(data)) + + // Then extract it + return tar + .extract({ + file: tempFile, + cwd: targetDirectory, + strip: 1, + }) + .then(() => { + // Remove the tarball after extraction + fs.unlinkSync(tempFile) + + // Save version metadata + fs.writeFileSync( + metadataPath, + JSON.stringify({ + version, + }) + ) + + console.log('Binary downloaded and extracted successfully') + }) + } catch (error) { + console.error('Error downloading binary:', error) + process.exit(1) + } +} + +module.exports = { + downloadBinaryIfNeeded, +} diff --git a/packages/anoncreds-shared/package.json b/packages/anoncreds-shared/package.json index 0d0289d..8e65964 100644 --- a/packages/anoncreds-shared/package.json +++ b/packages/anoncreds-shared/package.json @@ -3,8 +3,7 @@ "version": "0.3.0", "license": "Apache-2.0", "description": "Anoncreds wrapper library with NodeJS and React Native", - "main": "build/index", - "source": "src/index", + "main": "src/index", "homepage": "https://github.com/hyperledger/anoncreds-wrapper-javascript/tree/main/packages/anoncreds-shared", "repository": { "url": "https://github.com/hyperledger/anoncreds-wrapper-javascript", @@ -12,9 +11,10 @@ "directory": "packages/anoncreds-shared" }, "publishConfig": { - "access": "public" + "access": "public", + "main": "build/index" }, - "files": ["build"], + "files": ["build", "installBinary.js"], "scripts": { "check-types": "pnpm compile --noEmit", "build": "pnpm clean && pnpm compile", @@ -23,5 +23,8 @@ }, "devDependencies": { "typescript": "catalog:" + }, + "dependencies": { + "tar": "^7.4.3" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5aa1014..458373f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -90,9 +90,6 @@ importers: '@hyperledger/anoncreds-shared': specifier: workspace:* version: link:../anoncreds-shared - '@mapbox/node-pre-gyp': - specifier: ^1.0.11 - version: 1.0.11 ref-array-di: specifier: 1.2.2 version: 1.2.2 @@ -118,9 +115,6 @@ importers: '@hyperledger/anoncreds-shared': specifier: workspace:* version: link:../anoncreds-shared - '@mapbox/node-pre-gyp': - specifier: ^1.0.11 - version: 1.0.11 devDependencies: react: specifier: 18.2.0 @@ -133,6 +127,10 @@ importers: version: 5.4.5 packages/anoncreds-shared: + dependencies: + tar: + specifier: ^7.4.3 + version: 7.4.3 devDependencies: typescript: specifier: 'catalog:' @@ -1206,6 +1204,10 @@ packages: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} + '@isaacs/fs-minipass@4.0.1': + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + '@isaacs/ttlcache@1.4.1': resolution: {integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==} engines: {node: '>=12'} @@ -1269,10 +1271,6 @@ packages: '@manypkg/get-packages@1.1.3': resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} - '@mapbox/node-pre-gyp@1.0.11': - resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} - hasBin: true - '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -1447,9 +1445,6 @@ packages: resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} engines: {node: '>=10.0.0'} - abbrev@1.1.1: - resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} - abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} @@ -1463,10 +1458,6 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - aggregate-error@3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} @@ -1520,14 +1511,6 @@ packages: application-config-path@0.1.1: resolution: {integrity: sha512-zy9cHePtMP0YhwG+CfHm0bgwdnga2X3gZexpdCwEj//dpb+TKajtiC8REEUJUSq6Ab4f9cgNy2l8ObXzCXFkEw==} - aproba@2.0.0: - resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - - are-we-there-yet@2.0.0: - resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} - engines: {node: '>=10'} - deprecated: This package is no longer supported. - arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} @@ -1752,6 +1735,10 @@ packages: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} + chrome-launcher@0.15.2: resolution: {integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==} engines: {node: '>=12.13.0'} @@ -1804,10 +1791,6 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - color-support@1.1.3: - resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} - hasBin: true - combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} @@ -1851,9 +1834,6 @@ packages: resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} engines: {node: '>= 0.10.0'} - console-control-strings@1.1.0: - resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} @@ -1941,9 +1921,6 @@ packages: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} - delegates@1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} @@ -1961,10 +1938,6 @@ packages: engines: {node: '>=0.10'} hasBin: true - detect-libc@2.0.3: - resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} - engines: {node: '>=8'} - dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -2294,11 +2267,6 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - gauge@3.0.2: - resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} - engines: {node: '>=10'} - deprecated: This package is no longer supported. - gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -2387,9 +2355,6 @@ packages: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} - has-unicode@2.0.1: - resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -2414,10 +2379,6 @@ packages: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} - https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} - human-id@4.1.1: resolution: {integrity: sha512-3gKm/gCSUipeLsRYZbbdA1BD83lBoWUkZ7G9VFrhWPAU76KwYo5KR8V28bpoPm/ygy0x5/GCbpRQdY7VLYCoIg==} hasBin: true @@ -2777,10 +2738,6 @@ packages: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} engines: {node: '>=6'} - make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} - makeerror@1.0.12: resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} @@ -2934,6 +2891,10 @@ packages: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} + minizlib@3.0.1: + resolution: {integrity: sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==} + engines: {node: '>= 18'} + mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true @@ -2943,6 +2904,11 @@ packages: engines: {node: '>=10'} hasBin: true + mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} + hasBin: true + mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} @@ -3011,11 +2977,6 @@ packages: node-releases@2.0.19: resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} - nopt@5.0.0: - resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} - engines: {node: '>=6'} - hasBin: true - normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -3032,10 +2993,6 @@ packages: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} - npmlog@5.0.1: - resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} - deprecated: This package is no longer supported. - nullthrows@1.1.1: resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} @@ -3314,10 +3271,6 @@ packages: resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} engines: {node: '>=6'} - readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - readline@1.3.0: resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==} @@ -3469,9 +3422,6 @@ packages: resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} engines: {node: '>= 0.8.0'} - set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} @@ -3582,9 +3532,6 @@ packages: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} - string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - strip-ansi@5.2.0: resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} engines: {node: '>=6'} @@ -3653,6 +3600,10 @@ packages: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} + tar@7.4.3: + resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} + engines: {node: '>=18'} + temp-dir@2.0.0: resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} engines: {node: '>=8'} @@ -3812,9 +3763,6 @@ packages: peerDependencies: browserslist: '>= 4.21.0' - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - utils-merge@1.0.1: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} @@ -3874,9 +3822,6 @@ packages: engines: {node: '>= 8'} hasBin: true - wide-align@1.1.5: - resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} - wonka@6.3.5: resolution: {integrity: sha512-SSil+ecw6B4/Dm7Pf2sAshKQ5hWFvfyGlfPbEd6A14dOH6VDjrmbY86u6nZvy9omGwwIPFR8V41+of1EezgoUw==} @@ -3963,6 +3908,10 @@ packages: yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} + yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} @@ -5445,6 +5394,10 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 + '@isaacs/fs-minipass@4.0.1': + dependencies: + minipass: 7.1.2 + '@isaacs/ttlcache@1.4.1': {} '@istanbuljs/load-nyc-config@1.1.0': @@ -5548,21 +5501,6 @@ snapshots: globby: 11.1.0 read-yaml-file: 1.1.0 - '@mapbox/node-pre-gyp@1.0.11': - dependencies: - detect-libc: 2.0.3 - https-proxy-agent: 5.0.1 - make-dir: 3.1.0 - node-fetch: 2.7.0 - nopt: 5.0.0 - npmlog: 5.0.1 - rimraf: 3.0.2 - semver: 7.7.1 - tar: 6.2.1 - transitivePeerDependencies: - - encoding - - supports-color - '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -5839,8 +5777,6 @@ snapshots: '@xmldom/xmldom@0.8.10': {} - abbrev@1.1.1: {} - abort-controller@3.0.0: dependencies: event-target-shim: 5.0.1 @@ -5852,12 +5788,6 @@ snapshots: acorn@8.14.1: {} - agent-base@6.0.2: - dependencies: - debug: 4.4.0 - transitivePeerDependencies: - - supports-color - aggregate-error@3.1.0: dependencies: clean-stack: 2.2.0 @@ -5898,13 +5828,6 @@ snapshots: application-config-path@0.1.1: {} - aproba@2.0.0: {} - - are-we-there-yet@2.0.0: - dependencies: - delegates: 1.0.0 - readable-stream: 3.6.2 - arg@5.0.2: {} argparse@1.0.10: @@ -6182,6 +6105,8 @@ snapshots: chownr@2.0.0: {} + chownr@3.0.0: {} + chrome-launcher@0.15.2: dependencies: '@types/node': 22.13.9 @@ -6240,8 +6165,6 @@ snapshots: color-name@1.1.4: {} - color-support@1.1.3: {} - combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 @@ -6287,8 +6210,6 @@ snapshots: transitivePeerDependencies: - supports-color - console-control-strings@1.1.0: {} - convert-source-map@2.0.0: {} core-js-compat@3.41.0: @@ -6373,8 +6294,6 @@ snapshots: delayed-stream@1.0.0: {} - delegates@1.0.0: {} - depd@2.0.0: {} destroy@1.2.0: {} @@ -6383,8 +6302,6 @@ snapshots: detect-libc@1.0.3: {} - detect-libc@2.0.3: {} - dir-glob@3.0.1: dependencies: path-type: 4.0.0 @@ -6795,18 +6712,6 @@ snapshots: function-bind@1.1.2: {} - gauge@3.0.2: - dependencies: - aproba: 2.0.0 - color-support: 1.1.3 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - object-assign: 4.1.1 - signal-exit: 3.0.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wide-align: 1.1.5 - gensync@1.0.0-beta.2: {} get-caller-file@2.0.5: {} @@ -6898,8 +6803,6 @@ snapshots: dependencies: has-symbols: 1.1.0 - has-unicode@2.0.1: {} - hasown@2.0.2: dependencies: function-bind: 1.1.2 @@ -6928,13 +6831,6 @@ snapshots: statuses: 2.0.1 toidentifier: 1.0.1 - https-proxy-agent@5.0.1: - dependencies: - agent-base: 6.0.2 - debug: 4.4.0 - transitivePeerDependencies: - - supports-color - human-id@4.1.1: {} human-signals@2.1.0: {} @@ -7282,10 +7178,6 @@ snapshots: pify: 4.0.1 semver: 5.7.2 - make-dir@3.1.0: - dependencies: - semver: 6.3.1 - makeerror@1.0.12: dependencies: tmpl: 1.0.5 @@ -7536,12 +7428,19 @@ snapshots: minipass: 3.3.6 yallist: 4.0.0 + minizlib@3.0.1: + dependencies: + minipass: 7.1.2 + rimraf: 5.0.10 + mkdirp@0.5.6: dependencies: minimist: 1.2.8 mkdirp@1.0.4: {} + mkdirp@3.0.1: {} + mri@1.2.0: {} ms@2.0.0: {} @@ -7586,10 +7485,6 @@ snapshots: node-releases@2.0.19: {} - nopt@5.0.0: - dependencies: - abbrev: 1.1.1 - normalize-path@3.0.0: {} npm-package-arg@11.0.3: @@ -7607,13 +7502,6 @@ snapshots: dependencies: path-key: 3.1.1 - npmlog@5.0.1: - dependencies: - are-we-there-yet: 2.0.0 - console-control-strings: 1.1.0 - gauge: 3.0.2 - set-blocking: 2.0.0 - nullthrows@1.1.1: {} ob1@0.81.3: @@ -7963,12 +7851,6 @@ snapshots: pify: 4.0.1 strip-bom: 3.0.0 - readable-stream@3.6.2: - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - readline@1.3.0: {} recast@0.21.5: @@ -8143,8 +8025,6 @@ snapshots: transitivePeerDependencies: - supports-color - set-blocking@2.0.0: {} - setimmediate@1.0.5: {} setprototypeof@1.2.0: {} @@ -8237,10 +8117,6 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.1.0 - string_decoder@1.3.0: - dependencies: - safe-buffer: 5.2.1 - strip-ansi@5.2.0: dependencies: ansi-regex: 4.1.1 @@ -8305,6 +8181,15 @@ snapshots: mkdirp: 1.0.4 yallist: 4.0.0 + tar@7.4.3: + dependencies: + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.2 + minizlib: 3.0.1 + mkdirp: 3.0.1 + yallist: 5.0.0 + temp-dir@2.0.0: {} temp@0.8.4: @@ -8433,8 +8318,6 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 - util-deprecate@1.0.2: {} - utils-merge@1.0.1: {} uuid@7.0.3: {} @@ -8482,10 +8365,6 @@ snapshots: dependencies: isexe: 2.0.0 - wide-align@1.1.5: - dependencies: - string-width: 4.2.3 - wonka@6.3.5: {} wrap-ansi@7.0.0: @@ -8543,6 +8422,8 @@ snapshots: yallist@4.0.0: {} + yallist@5.0.0: {} + yargs-parser@21.1.1: {} yargs@17.7.2: