From 36de6cf8d10033afe5539ab51030d3599075a35a Mon Sep 17 00:00:00 2001 From: owjs3901 Date: Wed, 8 Apr 2026 20:03:10 +0900 Subject: [PATCH 1/2] Fix js path --- .../changepack_log_7IqVlY7ccSVP-seMz3MIB.json | 1 + Cargo.lock | 12 +- Cargo.toml | 29 +- README.md | 287 ++++++++++++++---- bridge/node/Cargo.toml | 6 +- bridge/node/main.js | 9 +- bridge/node/package.json | 32 +- bridge/node/src/lib.rs | 21 +- bridge/python/Cargo.toml | 9 +- bridge/python/pyproject.toml | 44 ++- bun.lock | 241 +++++++++++++++ crates/cli/Cargo.toml | 7 + crates/core/Cargo.toml | 7 + crates/node/Cargo.toml | 6 + crates/python/Cargo.toml | 6 + crates/rust/Cargo.toml | 6 + crates/testkit/Cargo.toml | 17 -- crates/testkit/src/lib.rs | 1 - 18 files changed, 635 insertions(+), 106 deletions(-) create mode 100644 .changepacks/changepack_log_7IqVlY7ccSVP-seMz3MIB.json create mode 100644 bun.lock delete mode 100644 crates/testkit/Cargo.toml delete mode 100644 crates/testkit/src/lib.rs diff --git a/.changepacks/changepack_log_7IqVlY7ccSVP-seMz3MIB.json b/.changepacks/changepack_log_7IqVlY7ccSVP-seMz3MIB.json new file mode 100644 index 0000000..3356321 --- /dev/null +++ b/.changepacks/changepack_log_7IqVlY7ccSVP-seMz3MIB.json @@ -0,0 +1 @@ +{"changes":{"crates/cli/Cargo.toml":"Patch","crates/core/Cargo.toml":"Patch","crates/node/Cargo.toml":"Patch","crates/rust/Cargo.toml":"Patch","bridge/node/package.json":"Patch","bridge/python/pyproject.toml":"Patch","crates/python/Cargo.toml":"Patch"},"note":"Fix js path","date":"2026-04-08T11:03:05.074030400Z"} \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index 1f7f72d..f32d7db 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -347,7 +347,7 @@ checksum = "092966b41edc516079bdf31ec78a2e0588d1d0c08f78b91d8307215928642b2b" [[package]] name = "dependency-check-updates" -version = "0.1.1" +version = "0.1.4" dependencies = [ "clap", "dependency-check-updates-core", @@ -368,7 +368,7 @@ dependencies = [ [[package]] name = "dependency-check-updates-core" -version = "0.1.1" +version = "0.1.4" dependencies = [ "ignore", "miette", @@ -392,7 +392,7 @@ dependencies = [ [[package]] name = "dependency-check-updates-node" -version = "0.1.1" +version = "0.1.4" dependencies = [ "dependency-check-updates-core", "node-semver", @@ -409,7 +409,7 @@ dependencies = [ [[package]] name = "dependency-check-updates-python" -version = "0.1.1" +version = "0.1.4" dependencies = [ "dependency-check-updates-core", "reqwest", @@ -434,7 +434,7 @@ dependencies = [ [[package]] name = "dependency-check-updates-rust" -version = "0.1.1" +version = "0.1.4" dependencies = [ "dependency-check-updates-core", "reqwest", @@ -452,7 +452,7 @@ dependencies = [ [[package]] name = "dependency-check-updates-testkit" -version = "0.1.1" +version = "0.1.4" dependencies = [ "dependency-check-updates-core", "insta", diff --git a/Cargo.toml b/Cargo.toml index 43c2ce9..6d6760b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,20 +1,35 @@ [workspace] resolver = "3" members = ["crates/*", "bridge/*"] +# bridge/python is built separately via `maturin build` in the build script. +# Excluding it from default-members avoids a bin target name collision with +# crates/cli (both produce `dependency-check-updates.exe`), which caused +# parallel linker processes to race on the same output file (LNK1104). +# `members` still contains bridge/* so workspace-wide commands +# (`cargo test --workspace`, `cargo clippy --workspace`) keep covering it. +default-members = ["crates/cli", "crates/core", "crates/node", "crates/rust", "crates/python", "crates/testkit", "bridge/node"] [workspace.package] edition = "2024" rust-version = "1.85" license = "MIT" +repository = "https://github.com/dev-five-git/dependency-check-updates" +homepage = "https://github.com/dev-five-git/dependency-check-updates" +documentation = "https://github.com/dev-five-git/dependency-check-updates" +readme = "README.md" +keywords = ["dependency", "update", "cargo", "npm", "ncu"] +categories = ["development-tools"] [workspace.dependencies] -# Internal -dependency-check-updates-core = { path = "crates/core" } -dependency-check-updates-node = { path = "crates/node" } -dependency-check-updates-rust = { path = "crates/rust" } -dependency-check-updates-python = { path = "crates/python" } -dependency-check-updates = { path = "crates/cli" } -dependency-check-updates-testkit = { path = "crates/testkit" } +# Internal — `version` is required so `cargo publish` can resolve path +# dependencies against crates.io. When bumping any crate version, remember +# to update these entries in lockstep. +dependency-check-updates-core = { path = "crates/core", version = "0.1.4" } +dependency-check-updates-node = { path = "crates/node", version = "0.1.4" } +dependency-check-updates-rust = { path = "crates/rust", version = "0.1.4" } +dependency-check-updates-python = { path = "crates/python", version = "0.1.4" } +dependency-check-updates = { path = "crates/cli", version = "0.1.4" } +dependency-check-updates-testkit = { path = "crates/testkit", version = "0.1.4" } # External clap = { version = "4.6", features = ["derive"] } diff --git a/README.md b/README.md index 041fb13..a633c68 100644 --- a/README.md +++ b/README.md @@ -1,84 +1,232 @@ -# dcu +# dependency-check-updates + + +[![CI](https://img.shields.io/github/actions/workflow/status/dev-five-git/dependency-check-updates/CI.yml?branch=main&label=CI&logo=github&style=flat-square)](https://github.com/dev-five-git/dependency-check-updates/actions/workflows/CI.yml) +[![Codecov](https://img.shields.io/codecov/c/github/dev-five-git/dependency-check-updates?logo=codecov&logoColor=white&style=flat-square)](https://codecov.io/gh/dev-five-git/dependency-check-updates) +[![deps.rs](https://deps.rs/repo/github/dev-five-git/dependency-check-updates/status.svg?style=flat-square)](https://deps.rs/repo/github/dev-five-git/dependency-check-updates) +[![License: MIT](https://img.shields.io/github/license/dev-five-git/dependency-check-updates?style=flat-square&color=blue)](./LICENSE) + + +[![crates.io](https://img.shields.io/crates/v/dependency-check-updates?logo=rust&label=crates.io&style=flat-square)](https://crates.io/crates/dependency-check-updates) +[![npm](https://img.shields.io/npm/v/@dependency-check-updates/cli?logo=npm&label=npm&style=flat-square)](https://www.npmjs.com/package/@dependency-check-updates/cli) +[![PyPI](https://img.shields.io/pypi/v/dependency-check-updates?logo=pypi&logoColor=white&label=PyPI&style=flat-square)](https://pypi.org/project/dependency-check-updates/) +[![Rust 1.85+](https://img.shields.io/badge/rust-1.85%2B-dea584?logo=rust&style=flat-square)](https://www.rust-lang.org/) +[![Python 3.9+](https://img.shields.io/pypi/pyversions/dependency-check-updates?logo=python&logoColor=white&style=flat-square)](https://pypi.org/project/dependency-check-updates/) +[![Node](https://img.shields.io/node/v/@dependency-check-updates/cli?logo=node.js&logoColor=white&label=node&style=flat-square)](https://www.npmjs.com/package/@dependency-check-updates/cli) + + +[![crates.io downloads](https://img.shields.io/crates/d/dependency-check-updates?logo=rust&label=crates.io%20downloads&style=flat-square)](https://crates.io/crates/dependency-check-updates) +[![npm downloads](https://img.shields.io/npm/dm/@dependency-check-updates/cli?logo=npm&label=npm%20%2Fmonth&style=flat-square)](https://www.npmjs.com/package/@dependency-check-updates/cli) +[![PyPI downloads](https://img.shields.io/pypi/dm/dependency-check-updates?logo=pypi&logoColor=white&label=PyPI%20%2Fmonth&style=flat-square)](https://pypi.org/project/dependency-check-updates/) + + +[![GitHub stars](https://img.shields.io/github/stars/dev-five-git/dependency-check-updates?logo=github&style=flat-square)](https://github.com/dev-five-git/dependency-check-updates/stargazers) +[![GitHub forks](https://img.shields.io/github/forks/dev-five-git/dependency-check-updates?logo=github&style=flat-square)](https://github.com/dev-five-git/dependency-check-updates/network/members) +[![GitHub issues](https://img.shields.io/github/issues/dev-five-git/dependency-check-updates?logo=github&style=flat-square)](https://github.com/dev-five-git/dependency-check-updates/issues) +[![GitHub PRs](https://img.shields.io/github/issues-pr/dev-five-git/dependency-check-updates?logo=github&style=flat-square)](https://github.com/dev-five-git/dependency-check-updates/pulls) +[![Last commit](https://img.shields.io/github/last-commit/dev-five-git/dependency-check-updates?logo=github&style=flat-square)](https://github.com/dev-five-git/dependency-check-updates/commits/main) +[![Contributors](https://img.shields.io/github/contributors/dev-five-git/dependency-check-updates?logo=github&style=flat-square)](https://github.com/dev-five-git/dependency-check-updates/graphs/contributors) **Dependency Check & Update** — a fast, multi-ecosystem dependency updater written in Rust. Like [npm-check-updates](https://www.npmjs.com/package/npm-check-updates), but for every language. ``` -$ dcu +$ dependency-check-updates Checking Cargo.toml toml_edit 0.22 -> 0.25.4 -Run dcu -u to upgrade Cargo.toml +Run dependency-check-updates -u to upgrade Cargo.toml ``` +## Quick Start (Zero Install) + +No install needed — run straight from your package manager's ephemeral runner: + +```bash +# Node.js ecosystem +bunx @dependency-check-updates/cli +npx @dependency-check-updates/cli + +# Python ecosystem +uvx dependency-check-updates +pipx run dependency-check-updates +``` + +All four accept the same flags described in [Usage](#usage). + ## Features -- **Multi-ecosystem** — `package.json`, `Cargo.toml`, `pyproject.toml` in a single tool -- **Format-preserving** — surgical byte-range patching for JSON; `toml_edit` for TOML. Your indentation, comments, and line endings stay intact -- **Fast** — concurrent registry lookups across all manifests (`futures::join_all`) -- **Smart range checking** — skips false positives where the resolved version already satisfies the current range -- **Deep scan** — `dcu -d` recursively finds manifests in monorepos, respecting `.gitignore` -- **ncu-compatible UX** — same flags you already know +- **Multi-ecosystem** — `package.json`, `Cargo.toml`, `pyproject.toml` handled by a single binary +- **Format-preserving** — surgical byte-range patching for JSON; `toml_edit` for TOML. Your indentation, comments, trailing newlines, and key ordering stay intact +- **Fast** — concurrent registry lookups across all manifests via `futures::join_all` +- **Smart range checking** — skips false positives where the resolved version already satisfies the current range (`^3` already covers `3.5.1`) +- **Deep scan** — `-d` recursively finds manifests in monorepos, respecting `.gitignore` +- **ncu-compatible UX** — the same flags you already know from `npm-check-updates` +- **CI-friendly** — `-e 2` exits non-zero when updates exist; `--format json` emits machine-readable output ## Supported Ecosystems -| Ecosystem | Manifest | Registry | Crate | -|-----------|----------|----------|-------| -| Node.js | `package.json` | npm | `dcu-node` | -| Rust | `Cargo.toml` | crates.io | `dcu-rust` | -| Python | `pyproject.toml` | PyPI | `dcu-python` | +| Ecosystem | Manifest | Registry | Package | +|-----------|----------|----------|---------| +| Node.js | `package.json` | [npm](https://www.npmjs.com/) | [`@dependency-check-updates/cli`](https://www.npmjs.com/package/@dependency-check-updates/cli) | +| Rust | `Cargo.toml` | [crates.io](https://crates.io/) | [`dependency-check-updates`](https://crates.io/crates/dependency-check-updates) | +| Python | `pyproject.toml` | [PyPI](https://pypi.org/) | [`dependency-check-updates`](https://pypi.org/project/dependency-check-updates/) | ## Installation +Every distribution below ships the exact same binary. Pick whichever matches your toolchain. + +### Rust (Cargo) + +```bash +cargo install dependency-check-updates +``` + +Installs command: `dependency-check-updates` + +### Node.js (npm / bun / pnpm / yarn) + +Permanent global install: + +```bash +npm install -g @dependency-check-updates/cli +bun add -g @dependency-check-updates/cli +pnpm add -g @dependency-check-updates/cli +yarn global add @dependency-check-updates/cli +``` + +Installs commands: `dependency-check-updates` **and** `dcu` (short alias). + +One-off execution (no install): + +```bash +bunx @dependency-check-updates/cli [flags] +npx @dependency-check-updates/cli [flags] +``` + +### Python (pip / uv / pipx) + +Permanent isolated install: + ```bash -# Rust (cargo) -cargo install dcu-cli +pipx install dependency-check-updates +uv tool install dependency-check-updates +``` -# Node.js (npm/bun) -npm install -g @dcu/cli -bun add -g @dcu/cli +Install inside a virtualenv: -# Python (pip/uv) -pip install dependency-check-updates +```bash +pip install dependency-check-updates uv pip install dependency-check-updates ``` +Installs command: `dependency-check-updates` + +One-off execution (no install): + +```bash +uvx dependency-check-updates [flags] +pipx run dependency-check-updates [flags] +``` + ## Usage +Run from a directory containing at least one of `package.json`, `Cargo.toml`, or `pyproject.toml`. Every supported manifest in the current directory is auto-detected. + +### Basic + ```bash -# Check for outdated dependencies -dcu +# Check for outdated dependencies (read-only, nothing is written) +dependency-check-updates + +# Apply updates in place (format-preserving) +dependency-check-updates -u -# Apply updates -dcu -u +# Recursively scan subdirectories (monorepo-friendly, respects .gitignore) +dependency-check-updates -d +dependency-check-updates -d -u +``` + +> On Node.js installations the short alias `dcu` works identically — e.g. `dcu -d -u`. -# Recursively scan monorepo -dcu -d -dcu -d -u +### All Options +``` +Usage: dependency-check-updates [OPTIONS] [FILTER]... +``` + +| Flag | Description | Default | +|---|---|---| +| `[FILTER]...` | Positional package names to include (allowlist; repeatable) | *(all)* | +| `-u, --upgrade` | Write updated versions back to the manifest file | off | +| `-d, --deep` | Recursively scan subdirectories, respecting `.gitignore` | off | +| `-t, --target ` | Version target: `patch` · `minor` · `latest` · `newest` · `greatest` | `latest` | +| `-x, --reject ` | Exclude packages by name (repeatable) | — | +| `--manifest ` | Operate on a single specific manifest file | *(auto)* | +| `--format ` | Output format: `table` or `json` | `table` | +| `-e, --error-level ` | `1` = always exit 0 · `2` = exit 1 when updates exist (CI gate) | `1` | +| `-v, --verbose` | Increase verbosity: `-v` info · `-vv` debug · `-vvv` trace | off | +| `-h, --help` | Print help | — | +| `-V, --version` | Print version | — | + +#### `-t, --target` values + +| Value | Behavior | +|---|---| +| `patch` | Only patch bumps (e.g., `1.0.1 → 1.0.2`) | +| `minor` | Patch + minor bumps (e.g., `1.0.0 → 1.1.0`) | +| `latest` | Latest **stable** version; prereleases are skipped (**default**) | +| `newest` | Most recently published version by publish date | +| `greatest` | Highest version number, **including prereleases** | + +### Examples + +```bash # Target specific update level -dcu -t patch # only patch bumps -dcu -t minor # patch + minor bumps -dcu -t latest # latest stable (default) +dependency-check-updates -t patch # patch only +dependency-check-updates -t minor # minor + patch +dependency-check-updates -t latest # default: latest stable +dependency-check-updates -t greatest # include prereleases + +# Filter packages — positional args act as an include-list +dependency-check-updates react eslint # only check react and eslint +dependency-check-updates -x typescript # exclude typescript +dependency-check-updates -x typescript -x lodash + +# Operate on a specific manifest +dependency-check-updates --manifest path/to/Cargo.toml +dependency-check-updates --manifest apps/web/package.json -# Filter packages -dcu react eslint # only check these -dcu -x typescript # exclude these +# Machine-readable output for scripting/CI +dependency-check-updates --format json -# Specific manifest -dcu --manifest path/to/Cargo.toml +# CI gate: exit 1 if any updates are available +dependency-check-updates -e 2 -# JSON output -dcu --format json +# Verbose logging (accumulating) +dependency-check-updates -v # info +dependency-check-updates -vv # debug +dependency-check-updates -vvv # trace -# CI mode (exit 1 if updates exist) -dcu -e 2 +# Combining flags — recursive, patch-only upgrade in a monorepo +dependency-check-updates -d -u -t patch +``` + +### Zero-Install Examples + +Every example above works identically via the ephemeral runners, too: -# Verbose logging -dcu -v # info -dcu -vv # debug -dcu -vvv # trace +```bash +bunx @dependency-check-updates/cli # check +bunx @dependency-check-updates/cli -u # apply updates +bunx @dependency-check-updates/cli -d -t minor # deep scan, minor bumps +bunx @dependency-check-updates/cli react eslint # filter +npx @dependency-check-updates/cli --format json + +uvx dependency-check-updates +uvx dependency-check-updates -d -u -t patch +pipx run dependency-check-updates --format json ``` ## Architecture @@ -88,62 +236,71 @@ Follows the [changepacks](https://github.com/changepacks/changepacks) pattern ``` . ├── crates/ -│ ├── dcu-cli/ # Binary + async CLI orchestration -│ ├── dcu-core/ # Shared traits (ManifestHandler, RegistryClient, Scanner) -│ ├── dcu-node/ # Node.js: package.json parser + npm registry -│ ├── dcu-rust/ # Rust: Cargo.toml parser (toml_edit) + crates.io -│ ├── dcu-python/ # Python: pyproject.toml parser (toml_edit) + PyPI -│ └── dcu-testkit/ # Test fixtures and helpers +│ ├── cli/ # Binary + async CLI orchestration +│ ├── core/ # Shared traits (ManifestHandler, RegistryClient, Scanner) +│ ├── node/ # Node.js: package.json parser + npm registry +│ ├── rust/ # Rust: Cargo.toml parser (toml_edit) + crates.io +│ ├── python/ # Python: pyproject.toml parser (toml_edit) + PyPI +│ └── testkit/ # Test fixtures and helpers ├── bridge/ -│ ├── node/ # napi-rs N-API binding → npm distribution (@dcu/cli) -│ └── python/ # maturin bin binding → PyPI distribution (dependency-check-updates) +│ ├── node/ # napi-rs N-API binding → npm: @dependency-check-updates/cli +│ └── python/ # maturin bin binding → PyPI: dependency-check-updates ├── Cargo.toml # Workspace root └── package.json # Bun workspace (build/lint/test scripts) ``` ### Format Preservation -- **JSON** (`package.json`): Surgical byte-range replacement — finds exact byte offsets of version values, replaces only those bytes. Indent, line endings, trailing newline, key ordering all preserved byte-for-byte. -- **TOML** (`Cargo.toml`, `pyproject.toml`): `toml_edit` document model preserves comments, table ordering, inline table formatting, and whitespace. +- **JSON** (`package.json`): Surgical byte-range replacement — finds exact byte offsets of version values and replaces only those bytes. Indent, line endings, trailing newline, and key ordering are preserved byte-for-byte. +- **TOML** (`Cargo.toml`, `pyproject.toml`): `toml_edit` document model preserves comments, table ordering, inline-table formatting, and whitespace. ### Shared Traits -Each ecosystem crate implements two core traits from `dcu-core`: +Each ecosystem crate implements two core traits from `dependency-check-updates-core`: -- **`ManifestHandler`** — parse manifest files, collect dependencies, apply format-preserving updates +- **`ManifestHandler`** — parse manifests, collect dependencies, apply format-preserving updates - **`RegistryClient`** — resolve versions from package registries with concurrency control ### Range Satisfaction -Before reporting an update, the resolver checks if the selected version already satisfies the current range (e.g., `^3` already covers `3.5.1`). This eliminates false positives that plague naive string comparison. +Before reporting an update, the resolver checks whether the selected version already satisfies the current range (e.g., `^3` already covers `3.5.1`). This eliminates the false positives that plague naive string comparison. ## Development +Build prerequisites: + +- Rust 1.85+ (stable toolchain) +- Bun 1.0+ *(or Node.js 18+ with npm)* +- Python 3.9+ with [`maturin`](https://www.maturin.rs/) *(only for the Python wheel step)* +- Windows: Visual Studio 2022 Build Tools (MSVC linker) + ```bash -# Install dependencies +# First-time setup: install JS toolchain deps (@napi-rs/cli, etc.) bun install -# Build everything (CLI + napi + maturin) +# Build everything (native CLI + napi .node + maturin wheel) bun run build -# Dev build +# Dev build (faster, unoptimized) bun run build:dev -# Lint (clippy + fmt) +# Lint (cargo clippy + rustfmt + bun workspace lints) bun run lint +bun run lint:fix -# Test +# Test (cargo test --workspace + bun workspace tests) bun run test -# Run CLI +# Run CLI from source bun run run -- --help bun run run -- --manifest Cargo.toml -v +bun run run:release -- -d ``` ## Inspirations -- [npm-check-updates](https://github.com/raineorshine/npm-check-updates) — the original `ncu` that inspired dcu's UX and flag design -- [changepacks](https://github.com/changepacks/changepacks) — workspace architecture pattern (crates/\* + bridge/\*), multi-language bridge distribution via napi-rs and maturin, and the overall project structure that dcu follows +- [npm-check-updates](https://github.com/raineorshine/npm-check-updates) — the original `ncu` that inspired this tool's UX and flag design +- [changepacks](https://github.com/changepacks/changepacks) — the workspace architecture pattern (`crates/*` + `bridge/*`), multi-language bridge distribution via napi-rs and maturin, and the overall project structure ## License diff --git a/bridge/node/Cargo.toml b/bridge/node/Cargo.toml index 0a4330a..94c7009 100644 --- a/bridge/node/Cargo.toml +++ b/bridge/node/Cargo.toml @@ -1,10 +1,12 @@ [package] name = "dependency-check-updates-napi" version = "0.1.0" +description = "Node.js bridge for dependency-check-updates (N-API bindings)" edition.workspace = true license.workspace = true -description = "Node.js bridge for dependency-check-updates (N-API bindings)" -readme = "../../README.md" +repository.workspace = true +homepage.workspace = true +readme.workspace = true publish = false [lib] diff --git a/bridge/node/main.js b/bridge/node/main.js index ff6f59b..73f9c47 100644 --- a/bridge/node/main.js +++ b/bridge/node/main.js @@ -1,3 +1,10 @@ #!/usr/bin/env node const { main } = require('./index.js') -;(async () => await main().catch(console.error))() +;(async () => { + try { + await main(process.argv.slice(2)) + } catch (err) { + console.error(err) + process.exit(1) + } +})() diff --git a/bridge/node/package.json b/bridge/node/package.json index a047bd1..e0aec8e 100644 --- a/bridge/node/package.json +++ b/bridge/node/package.json @@ -1,9 +1,39 @@ { "name": "@dependency-check-updates/cli", "version": "0.1.3", - "description": "dependency-check-updates — multi-ecosystem dependency check & update CLI", + "description": "Fast multi-ecosystem dependency updater: package.json, Cargo.toml, pyproject.toml in a single CLI (like npm-check-updates for every language)", "main": "main.js", "license": "MIT", + "author": "dev-five-git", + "homepage": "https://github.com/dev-five-git/dependency-check-updates#readme", + "repository": { + "type": "git", + "url": "git+https://github.com/dev-five-git/dependency-check-updates.git", + "directory": "bridge/node" + }, + "bugs": { + "url": "https://github.com/dev-five-git/dependency-check-updates/issues" + }, + "keywords": [ + "dependency", + "dependencies", + "update", + "updater", + "ncu", + "npm-check-updates", + "npm", + "cargo", + "pypi", + "package-json", + "cargo-toml", + "pyproject-toml", + "cli", + "rust", + "multi-ecosystem" + ], + "engines": { + "node": ">=18" + }, "bin": { "dcu": "./main.js", "dependency-check-updates": "./main.js" diff --git a/bridge/node/src/lib.rs b/bridge/node/src/lib.rs index 112fa2d..5e31be9 100644 --- a/bridge/node/src/lib.rs +++ b/bridge/node/src/lib.rs @@ -5,15 +5,30 @@ use napi::{Error, Result}; use napi_derive::napi; -/// Run the dependency-check-updates CLI with the current process arguments. +/// Run the dependency-check-updates CLI with the given user arguments. +/// +/// `args` must contain only the user-supplied arguments (typically +/// `process.argv.slice(2)` on the Node.js side). Do **not** include the Node +/// runtime path or the script path — those are part of Node's `process.argv` +/// but are meaningless to the CLI parser and would be misinterpreted as the +/// first positional argument (`filter`), causing all dependencies to be +/// silently filtered out. /// /// # Errors /// /// Returns an error if the CLI command execution fails. #[napi] #[cfg(not(tarpaulin_include))] -pub async fn main() -> Result<()> { - dependency_check_updates::main(&std::env::args().collect::>()) +pub async fn main(args: Vec) -> Result<()> { + // `Cli::parse_from` treats the first element as the program name and + // skips it, so we prepend a synthetic program name. This keeps + // `dependency_check_updates::main` unchanged across the native CLI, + // the Python bin-bridge, and this N-API bridge. + let full_args: Vec = std::iter::once("dependency-check-updates".to_string()) + .chain(args) + .collect(); + + dependency_check_updates::main(&full_args) .await .map_err(|e| Error::from_reason(e.to_string())) } diff --git a/bridge/python/Cargo.toml b/bridge/python/Cargo.toml index 8171aab..b33888c 100644 --- a/bridge/python/Cargo.toml +++ b/bridge/python/Cargo.toml @@ -1,9 +1,16 @@ [package] name = "dependency-check-updates-python-bridge" version = "0.1.0" +description = "Python bridge for dependency-check-updates (standalone binary)" edition.workspace = true license.workspace = true -description = "Python bridge for dependency-check-updates (standalone binary)" +repository.workspace = true +homepage.workspace = true +# NOTE: maturin (as of 1.10.x) mis-resolves `readme.workspace = true` by +# re-applying the workspace-relative path against this crate's directory, +# producing `bridge/python/../../../../README.md` which does not exist. +# Keeping an explicit path avoids the bug. `cargo check --workspace` +# itself is unaffected — only maturin's pyproject-metadata reader trips on it. readme = "../../README.md" publish = false diff --git a/bridge/python/pyproject.toml b/bridge/python/pyproject.toml index fbb559d..f5bef74 100644 --- a/bridge/python/pyproject.toml +++ b/bridge/python/pyproject.toml @@ -4,14 +4,54 @@ build-backend = "maturin" [project] name = "dependency-check-updates" -requires-python = ">=3.9" version = "0.1.3" +description = "Fast multi-ecosystem dependency updater: package.json, Cargo.toml, pyproject.toml in a single CLI (like npm-check-updates for every language)" +requires-python = ">=3.9" +readme = "../../README.md" +license = { text = "MIT" } +authors = [ + { name = "dev-five-git" }, +] +keywords = [ + "dependency", + "dependencies", + "update", + "updater", + "ncu", + "npm-check-updates", + "npm", + "cargo", + "pypi", + "cli", + "rust", + "multi-ecosystem", +] classifiers = [ + "Development Status :: 4 - Beta", + "Environment :: Console", + "Intended Audience :: Developers", + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", "Programming Language :: Rust", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", + "Topic :: Software Development", + "Topic :: Software Development :: Build Tools", ] -readme = "../../README.md" + +[project.urls] +Homepage = "https://github.com/dev-five-git/dependency-check-updates" +Repository = "https://github.com/dev-five-git/dependency-check-updates" +Issues = "https://github.com/dev-five-git/dependency-check-updates/issues" +Changelog = "https://github.com/dev-five-git/dependency-check-updates/releases" [tool.maturin] bindings = "bin" diff --git a/bun.lock b/bun.lock new file mode 100644 index 0000000..c88daa0 --- /dev/null +++ b/bun.lock @@ -0,0 +1,241 @@ +{ + "lockfileVersion": 1, + "configVersion": 1, + "workspaces": { + "": { + "name": "dependency-check-updates", + }, + "bridge/node": { + "name": "@dependency-check-updates/cli", + "version": "0.1.3", + "bin": { + "dcu": "./main.js", + "dependency-check-updates": "./main.js", + }, + "devDependencies": { + "@napi-rs/cli": "^3.6", + }, + }, + }, + "packages": { + "@dependency-check-updates/cli": ["@dependency-check-updates/cli@workspace:bridge/node"], + + "@emnapi/core": ["@emnapi/core@1.9.2", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.1", "tslib": "^2.4.0" } }, "sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA=="], + + "@emnapi/runtime": ["@emnapi/runtime@1.9.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw=="], + + "@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w=="], + + "@inquirer/ansi": ["@inquirer/ansi@2.0.5", "", {}, "sha512-doc2sWgJpbFQ64UflSVd17ibMGDuxO1yKgOgLMwavzESnXjFWJqUeG8saYosqKpHp4kWiM5x1nXvEjbpx90gzw=="], + + "@inquirer/checkbox": ["@inquirer/checkbox@5.1.3", "", { "dependencies": { "@inquirer/ansi": "^2.0.5", "@inquirer/core": "^11.1.8", "@inquirer/figures": "^2.0.5", "@inquirer/type": "^4.0.5" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-+G7I8CT+EHv/hasNfUl3P37DVoMoZfpA+2FXmM54dA8MxYle1YqucxbacxHalw1iAFSdKNEDTGNV7F+j1Ldqcg=="], + + "@inquirer/confirm": ["@inquirer/confirm@6.0.11", "", { "dependencies": { "@inquirer/core": "^11.1.8", "@inquirer/type": "^4.0.5" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-pTpHjg0iEIRMYV/7oCZUMf27/383E6Wyhfc/MY+AVQGEoUobffIYWOK9YLP2XFRGz/9i6WlTQh1CkFVIo2Y7XA=="], + + "@inquirer/core": ["@inquirer/core@11.1.8", "", { "dependencies": { "@inquirer/ansi": "^2.0.5", "@inquirer/figures": "^2.0.5", "@inquirer/type": "^4.0.5", "cli-width": "^4.1.0", "fast-wrap-ansi": "^0.2.0", "mute-stream": "^3.0.0", "signal-exit": "^4.1.0" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-/u+yJk2pOKNDOh1ZgdUH2RQaRx6OOH4I0uwL95qPvTFTIL38YBsuSC4r1yXBB3Q6JvNqFFc202gk0Ew79rrcjA=="], + + "@inquirer/editor": ["@inquirer/editor@5.1.0", "", { "dependencies": { "@inquirer/core": "^11.1.8", "@inquirer/external-editor": "^3.0.0", "@inquirer/type": "^4.0.5" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-6wlkYl65Qfayy48gPCfU4D7li6KCAGN79mLXa/tYHZH99OfZ820yY+HA+DgE88r8YwwgeuY6PQgNqMeK6LuMmw=="], + + "@inquirer/expand": ["@inquirer/expand@5.0.12", "", { "dependencies": { "@inquirer/core": "^11.1.8", "@inquirer/type": "^4.0.5" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-vOfrB33b7YIZfDauXS8vNNz2Z86FozTZLIt7e+7/dCaPJ1RXZsHCuI9TlcERzEUq57vkM+UdnBgxP0rFd23JYQ=="], + + "@inquirer/external-editor": ["@inquirer/external-editor@3.0.0", "", { "dependencies": { "chardet": "^2.1.1", "iconv-lite": "^0.7.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-lDSwMgg+M5rq6JKBYaJwSX6T9e/HK2qqZ1oxmOwn4AQoJE5D+7TumsxLGC02PWS//rkIVqbZv3XA3ejsc9FYvg=="], + + "@inquirer/figures": ["@inquirer/figures@2.0.5", "", {}, "sha512-NsSs4kzfm12lNetHwAn3GEuH317IzpwrMCbOuMIVytpjnJ90YYHNwdRgYGuKmVxwuIqSgqk3M5qqQt1cDk0tGQ=="], + + "@inquirer/input": ["@inquirer/input@5.0.11", "", { "dependencies": { "@inquirer/core": "^11.1.8", "@inquirer/type": "^4.0.5" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-twUWidn4ocPO8qi6fRM7tNWt7W1FOnOZqQ+/+PsfLUacMR5rFLDPK9ql0nBPwxi0oELbo8T5NhRs8B2+qQEqFQ=="], + + "@inquirer/number": ["@inquirer/number@4.0.11", "", { "dependencies": { "@inquirer/core": "^11.1.8", "@inquirer/type": "^4.0.5" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-Vscmim9TCksQsfjPtka/JwPUcbLhqWYrgfPf1cHrCm24X/F2joFwnageD50yMKsaX14oNGOyKf/RNXAFkNjWpA=="], + + "@inquirer/password": ["@inquirer/password@5.0.11", "", { "dependencies": { "@inquirer/ansi": "^2.0.5", "@inquirer/core": "^11.1.8", "@inquirer/type": "^4.0.5" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-9KZFeRaNHIcejtPb0wN4ddFc7EvobVoAFa049eS3LrDZFxI8O7xUXiITEOinBzkZFAIwY5V4yzQae/QfO9cbbg=="], + + "@inquirer/prompts": ["@inquirer/prompts@8.4.1", "", { "dependencies": { "@inquirer/checkbox": "^5.1.3", "@inquirer/confirm": "^6.0.11", "@inquirer/editor": "^5.1.0", "@inquirer/expand": "^5.0.12", "@inquirer/input": "^5.0.11", "@inquirer/number": "^4.0.11", "@inquirer/password": "^5.0.11", "@inquirer/rawlist": "^5.2.7", "@inquirer/search": "^4.1.7", "@inquirer/select": "^5.1.3" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-AH5xPQ997K7e0F0vulPlteIHke2awMkFi8F0dBemrDfmvtPmHJo82mdHbONC4F/t8d1NHwrbI5cGVI+RbLWdoQ=="], + + "@inquirer/rawlist": ["@inquirer/rawlist@5.2.7", "", { "dependencies": { "@inquirer/core": "^11.1.8", "@inquirer/type": "^4.0.5" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-AqRMiD9+uE1lskDPrdqHwrV/EUmxKEBLX44SR7uxK3vD2413AmVfE5EQaPeNzYf5Pq5SitHJDYUFVF0poIr09w=="], + + "@inquirer/search": ["@inquirer/search@4.1.7", "", { "dependencies": { "@inquirer/core": "^11.1.8", "@inquirer/figures": "^2.0.5", "@inquirer/type": "^4.0.5" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-1y7+0N65AWk5RdlXH/Kn13txf3IjIQ7OEfhCEkDTU+h5wKMLq8DUF3P6z+/kLSxDGDtQT1dRBWEUC3o/VvImsQ=="], + + "@inquirer/select": ["@inquirer/select@5.1.3", "", { "dependencies": { "@inquirer/ansi": "^2.0.5", "@inquirer/core": "^11.1.8", "@inquirer/figures": "^2.0.5", "@inquirer/type": "^4.0.5" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-zYyqWgGQi3NhBcNq4Isc5rB3oEdQEh1Q/EcAnOW0FK4MpnXWkvSBYgA4cYrTM4A9UB573omouZbnL9JJ74Mq3A=="], + + "@inquirer/type": ["@inquirer/type@4.0.5", "", { "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-aetVUNeKNc/VriqXlw1NRSW0zhMBB0W4bNbWRJgzRl/3d0QNDQFfk0GO5SDdtjMZVg6o8ZKEiadd7SCCzoOn5Q=="], + + "@napi-rs/cli": ["@napi-rs/cli@3.6.1", "", { "dependencies": { "@inquirer/prompts": "^8.0.0", "@napi-rs/cross-toolchain": "^1.0.3", "@napi-rs/wasm-tools": "^1.0.1", "@octokit/rest": "^22.0.1", "clipanion": "^4.0.0-rc.4", "colorette": "^2.0.20", "emnapi": "^1.9.1", "es-toolkit": "^1.41.0", "js-yaml": "^4.1.0", "obug": "^2.0.0", "semver": "^7.7.3", "typanion": "^3.14.0" }, "peerDependencies": { "@emnapi/runtime": "^1.7.1" }, "optionalPeers": ["@emnapi/runtime"], "bin": { "napi": "dist/cli.js", "napi-raw": "cli.mjs" } }, "sha512-xOrDmCdtXfJ2XzknJAyEAMUe4SHT02PHY3JG8/vXFAB+EPF7Pgv0q182Vmw2zAlhAvnfofccvJlHrZpNPDbypA=="], + + "@napi-rs/cross-toolchain": ["@napi-rs/cross-toolchain@1.0.3", "", { "dependencies": { "@napi-rs/lzma": "^1.4.5", "@napi-rs/tar": "^1.1.0", "debug": "^4.4.1" }, "peerDependencies": { "@napi-rs/cross-toolchain-arm64-target-aarch64": "^1.0.3", "@napi-rs/cross-toolchain-arm64-target-armv7": "^1.0.3", "@napi-rs/cross-toolchain-arm64-target-ppc64le": "^1.0.3", "@napi-rs/cross-toolchain-arm64-target-s390x": "^1.0.3", "@napi-rs/cross-toolchain-arm64-target-x86_64": "^1.0.3", "@napi-rs/cross-toolchain-x64-target-aarch64": "^1.0.3", "@napi-rs/cross-toolchain-x64-target-armv7": "^1.0.3", "@napi-rs/cross-toolchain-x64-target-ppc64le": "^1.0.3", "@napi-rs/cross-toolchain-x64-target-s390x": "^1.0.3", "@napi-rs/cross-toolchain-x64-target-x86_64": "^1.0.3" }, "optionalPeers": ["@napi-rs/cross-toolchain-arm64-target-aarch64", "@napi-rs/cross-toolchain-arm64-target-armv7", "@napi-rs/cross-toolchain-arm64-target-ppc64le", "@napi-rs/cross-toolchain-arm64-target-s390x", "@napi-rs/cross-toolchain-arm64-target-x86_64", "@napi-rs/cross-toolchain-x64-target-aarch64", "@napi-rs/cross-toolchain-x64-target-armv7", "@napi-rs/cross-toolchain-x64-target-ppc64le", "@napi-rs/cross-toolchain-x64-target-s390x", "@napi-rs/cross-toolchain-x64-target-x86_64"] }, "sha512-ENPfLe4937bsKVTDA6zdABx4pq9w0tHqRrJHyaGxgaPq03a2Bd1unD5XSKjXJjebsABJ+MjAv1A2OvCgK9yehg=="], + + "@napi-rs/lzma": ["@napi-rs/lzma@1.4.5", "", { "optionalDependencies": { "@napi-rs/lzma-android-arm-eabi": "1.4.5", "@napi-rs/lzma-android-arm64": "1.4.5", "@napi-rs/lzma-darwin-arm64": "1.4.5", "@napi-rs/lzma-darwin-x64": "1.4.5", "@napi-rs/lzma-freebsd-x64": "1.4.5", "@napi-rs/lzma-linux-arm-gnueabihf": "1.4.5", "@napi-rs/lzma-linux-arm64-gnu": "1.4.5", "@napi-rs/lzma-linux-arm64-musl": "1.4.5", "@napi-rs/lzma-linux-ppc64-gnu": "1.4.5", "@napi-rs/lzma-linux-riscv64-gnu": "1.4.5", "@napi-rs/lzma-linux-s390x-gnu": "1.4.5", "@napi-rs/lzma-linux-x64-gnu": "1.4.5", "@napi-rs/lzma-linux-x64-musl": "1.4.5", "@napi-rs/lzma-wasm32-wasi": "1.4.5", "@napi-rs/lzma-win32-arm64-msvc": "1.4.5", "@napi-rs/lzma-win32-ia32-msvc": "1.4.5", "@napi-rs/lzma-win32-x64-msvc": "1.4.5" } }, "sha512-zS5LuN1OBPAyZpda2ZZgYOEDC+xecUdAGnrvbYzjnLXkrq/OBC3B9qcRvlxbDR3k5H/gVfvef1/jyUqPknqjbg=="], + + "@napi-rs/lzma-android-arm-eabi": ["@napi-rs/lzma-android-arm-eabi@1.4.5", "", { "os": "android", "cpu": "arm" }, "sha512-Up4gpyw2SacmyKWWEib06GhiDdF+H+CCU0LAV8pnM4aJIDqKKd5LHSlBht83Jut6frkB0vwEPmAkv4NjQ5u//Q=="], + + "@napi-rs/lzma-android-arm64": ["@napi-rs/lzma-android-arm64@1.4.5", "", { "os": "android", "cpu": "arm64" }, "sha512-uwa8sLlWEzkAM0MWyoZJg0JTD3BkPknvejAFG2acUA1raXM8jLrqujWCdOStisXhqQjZ2nDMp3FV6cs//zjfuQ=="], + + "@napi-rs/lzma-darwin-arm64": ["@napi-rs/lzma-darwin-arm64@1.4.5", "", { "os": "darwin", "cpu": "arm64" }, "sha512-0Y0TQLQ2xAjVabrMDem1NhIssOZzF/y/dqetc6OT8mD3xMTDtF8u5BqZoX3MyPc9FzpsZw4ksol+w7DsxHrpMA=="], + + "@napi-rs/lzma-darwin-x64": ["@napi-rs/lzma-darwin-x64@1.4.5", "", { "os": "darwin", "cpu": "x64" }, "sha512-vR2IUyJY3En+V1wJkwmbGWcYiT8pHloTAWdW4pG24+51GIq+intst6Uf6D/r46citObGZrlX0QvMarOkQeHWpw=="], + + "@napi-rs/lzma-freebsd-x64": ["@napi-rs/lzma-freebsd-x64@1.4.5", "", { "os": "freebsd", "cpu": "x64" }, "sha512-XpnYQC5SVovO35tF0xGkbHYjsS6kqyNCjuaLQ2dbEblFRr5cAZVvsJ/9h7zj/5FluJPJRDojVNxGyRhTp4z2lw=="], + + "@napi-rs/lzma-linux-arm-gnueabihf": ["@napi-rs/lzma-linux-arm-gnueabihf@1.4.5", "", { "os": "linux", "cpu": "arm" }, "sha512-ic1ZZMoRfRMwtSwxkyw4zIlbDZGC6davC9r+2oX6x9QiF247BRqqT94qGeL5ZP4Vtz0Hyy7TEViWhx5j6Bpzvw=="], + + "@napi-rs/lzma-linux-arm64-gnu": ["@napi-rs/lzma-linux-arm64-gnu@1.4.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-asEp7FPd7C1Yi6DQb45a3KPHKOFBSfGuJWXcAd4/bL2Fjetb2n/KK2z14yfW8YC/Fv6x3rBM0VAZKmJuz4tysg=="], + + "@napi-rs/lzma-linux-arm64-musl": ["@napi-rs/lzma-linux-arm64-musl@1.4.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-yWjcPDgJ2nIL3KNvi4536dlT/CcCWO0DUyEOlBs/SacG7BeD6IjGh6yYzd3/X1Y3JItCbZoDoLUH8iB1lTXo3w=="], + + "@napi-rs/lzma-linux-ppc64-gnu": ["@napi-rs/lzma-linux-ppc64-gnu@1.4.5", "", { "os": "linux", "cpu": "ppc64" }, "sha512-0XRhKuIU/9ZjT4WDIG/qnX7Xz7mSQHYZo9Gb3MP2gcvBgr6BA4zywQ9k3gmQaPn9ECE+CZg2V7DV7kT+x2pUMQ=="], + + "@napi-rs/lzma-linux-riscv64-gnu": ["@napi-rs/lzma-linux-riscv64-gnu@1.4.5", "", { "os": "linux", "cpu": "none" }, "sha512-QrqDIPEUUB23GCpyQj/QFyMlr8SGxxyExeZz9OWFnHfb70kXdTLWrHS/hEI1Ru+lSbQ/6xRqeoGyQ4Aqdg+/RA=="], + + "@napi-rs/lzma-linux-s390x-gnu": ["@napi-rs/lzma-linux-s390x-gnu@1.4.5", "", { "os": "linux", "cpu": "s390x" }, "sha512-k8RVM5aMhW86E9H0QXdquwojew4H3SwPxbRVbl49/COJQWCUjGi79X6mYruMnMPEznZinUiT1jgKbFo2A00NdA=="], + + "@napi-rs/lzma-linux-x64-gnu": ["@napi-rs/lzma-linux-x64-gnu@1.4.5", "", { "os": "linux", "cpu": "x64" }, "sha512-6rMtBgnIq2Wcl1rQdZsnM+rtCcVCbws1nF8S2NzaUsVaZv8bjrPiAa0lwg4Eqnn1d9lgwqT+cZgm5m+//K08Kw=="], + + "@napi-rs/lzma-linux-x64-musl": ["@napi-rs/lzma-linux-x64-musl@1.4.5", "", { "os": "linux", "cpu": "x64" }, "sha512-eiadGBKi7Vd0bCArBUOO/qqRYPHt/VQVvGyYvDFt6C2ZSIjlD+HuOl+2oS1sjf4CFjK4eDIog6EdXnL0NE6iyQ=="], + + "@napi-rs/lzma-wasm32-wasi": ["@napi-rs/lzma-wasm32-wasi@1.4.5", "", { "dependencies": { "@napi-rs/wasm-runtime": "^1.0.3" }, "cpu": "none" }, "sha512-+VyHHlr68dvey6fXc2hehw9gHVFIW3TtGF1XkcbAu65qVXsA9D/T+uuoRVqhE+JCyFHFrO0ixRbZDRK1XJt1sA=="], + + "@napi-rs/lzma-win32-arm64-msvc": ["@napi-rs/lzma-win32-arm64-msvc@1.4.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-eewnqvIyyhHi3KaZtBOJXohLvwwN27gfS2G/YDWdfHlbz1jrmfeHAmzMsP5qv8vGB+T80TMHNkro4kYjeh6Deg=="], + + "@napi-rs/lzma-win32-ia32-msvc": ["@napi-rs/lzma-win32-ia32-msvc@1.4.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-OeacFVRCJOKNU/a0ephUfYZ2Yt+NvaHze/4TgOwJ0J0P4P7X1mHzN+ig9Iyd74aQDXYqc7kaCXA2dpAOcH87Cg=="], + + "@napi-rs/lzma-win32-x64-msvc": ["@napi-rs/lzma-win32-x64-msvc@1.4.5", "", { "os": "win32", "cpu": "x64" }, "sha512-T4I1SamdSmtyZgDXGAGP+y5LEK5vxHUFwe8mz6D4R7Sa5/WCxTcCIgPJ9BD7RkpO17lzhlaM2vmVvMy96Lvk9Q=="], + + "@napi-rs/tar": ["@napi-rs/tar@1.1.0", "", { "optionalDependencies": { "@napi-rs/tar-android-arm-eabi": "1.1.0", "@napi-rs/tar-android-arm64": "1.1.0", "@napi-rs/tar-darwin-arm64": "1.1.0", "@napi-rs/tar-darwin-x64": "1.1.0", "@napi-rs/tar-freebsd-x64": "1.1.0", "@napi-rs/tar-linux-arm-gnueabihf": "1.1.0", "@napi-rs/tar-linux-arm64-gnu": "1.1.0", "@napi-rs/tar-linux-arm64-musl": "1.1.0", "@napi-rs/tar-linux-ppc64-gnu": "1.1.0", "@napi-rs/tar-linux-s390x-gnu": "1.1.0", "@napi-rs/tar-linux-x64-gnu": "1.1.0", "@napi-rs/tar-linux-x64-musl": "1.1.0", "@napi-rs/tar-wasm32-wasi": "1.1.0", "@napi-rs/tar-win32-arm64-msvc": "1.1.0", "@napi-rs/tar-win32-ia32-msvc": "1.1.0", "@napi-rs/tar-win32-x64-msvc": "1.1.0" } }, "sha512-7cmzIu+Vbupriudo7UudoMRH2OA3cTw67vva8MxeoAe5S7vPFI7z0vp0pMXiA25S8IUJefImQ90FeJjl8fjEaQ=="], + + "@napi-rs/tar-android-arm-eabi": ["@napi-rs/tar-android-arm-eabi@1.1.0", "", { "os": "android", "cpu": "arm" }, "sha512-h2Ryndraj/YiKgMV/r5by1cDusluYIRT0CaE0/PekQ4u+Wpy2iUVqvzVU98ZPnhXaNeYxEvVJHNGafpOfaD0TA=="], + + "@napi-rs/tar-android-arm64": ["@napi-rs/tar-android-arm64@1.1.0", "", { "os": "android", "cpu": "arm64" }, "sha512-DJFyQHr1ZxNZorm/gzc1qBNLF/FcKzcH0V0Vwan5P+o0aE2keQIGEjJ09FudkF9v6uOuJjHCVDdK6S6uHtShAw=="], + + "@napi-rs/tar-darwin-arm64": ["@napi-rs/tar-darwin-arm64@1.1.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Zz2sXRzjIX4e532zD6xm2SjXEym6MkvfCvL2RMpG2+UwNVDVscHNcz3d47Pf3sysP2e2af7fBB3TIoK2f6trPw=="], + + "@napi-rs/tar-darwin-x64": ["@napi-rs/tar-darwin-x64@1.1.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-EI+CptIMNweT0ms9S3mkP/q+J6FNZ1Q6pvpJOEcWglRfyfQpLqjlC0O+dptruTPE8VamKYuqdjxfqD8hifZDOA=="], + + "@napi-rs/tar-freebsd-x64": ["@napi-rs/tar-freebsd-x64@1.1.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-J0PIqX+pl6lBIAckL/c87gpodLbjZB1OtIK+RDscKC9NLdpVv6VGOxzUV/fYev/hctcE8EfkLbgFOfpmVQPg2g=="], + + "@napi-rs/tar-linux-arm-gnueabihf": ["@napi-rs/tar-linux-arm-gnueabihf@1.1.0", "", { "os": "linux", "cpu": "arm" }, "sha512-SLgIQo3f3EjkZ82ZwvrEgFvMdDAhsxCYjyoSuWfHCz0U16qx3SuGCp8+FYOPYCECHN3ZlGjXnoAIt9ERd0dEUg=="], + + "@napi-rs/tar-linux-arm64-gnu": ["@napi-rs/tar-linux-arm64-gnu@1.1.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-d014cdle52EGaH6GpYTQOP9Py7glMO1zz/+ynJPjjzYFSxvdYx0byrjumZk2UQdIyGZiJO2MEFpCkEEKFSgPYA=="], + + "@napi-rs/tar-linux-arm64-musl": ["@napi-rs/tar-linux-arm64-musl@1.1.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-L/y1/26q9L/uBqiW/JdOb/Dc94egFvNALUZV2WCGKQXc6UByPBMgdiEyW2dtoYxYYYYc+AKD+jr+wQPcvX2vrQ=="], + + "@napi-rs/tar-linux-ppc64-gnu": ["@napi-rs/tar-linux-ppc64-gnu@1.1.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-EPE1K/80RQvPbLRJDJs1QmCIcH+7WRi0F73+oTe1582y9RtfGRuzAkzeBuAGRXAQEjRQw/RjtNqr6UTJ+8UuWQ=="], + + "@napi-rs/tar-linux-s390x-gnu": ["@napi-rs/tar-linux-s390x-gnu@1.1.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-B2jhWiB1ffw1nQBqLUP1h4+J1ovAxBOoe5N2IqDMOc63fsPZKNqF1PvO/dIem8z7LL4U4bsfmhy3gBfu547oNQ=="], + + "@napi-rs/tar-linux-x64-gnu": ["@napi-rs/tar-linux-x64-gnu@1.1.0", "", { "os": "linux", "cpu": "x64" }, "sha512-tbZDHnb9617lTnsDMGo/eAMZxnsQFnaRe+MszRqHguKfMwkisc9CCJnks/r1o84u5fECI+J/HOrKXgczq/3Oww=="], + + "@napi-rs/tar-linux-x64-musl": ["@napi-rs/tar-linux-x64-musl@1.1.0", "", { "os": "linux", "cpu": "x64" }, "sha512-dV6cODlzbO8u6Anmv2N/ilQHq/AWz0xyltuXoLU3yUyXbZcnWYZuB2rL8OBGPmqNcD+x9NdScBNXh7vWN0naSQ=="], + + "@napi-rs/tar-wasm32-wasi": ["@napi-rs/tar-wasm32-wasi@1.1.0", "", { "dependencies": { "@napi-rs/wasm-runtime": "^1.0.3" }, "cpu": "none" }, "sha512-jIa9nb2HzOrfH0F8QQ9g3WE4aMH5vSI5/1NYVNm9ysCmNjCCtMXCAhlI3WKCdm/DwHf0zLqdrrtDFXODcNaqMw=="], + + "@napi-rs/tar-win32-arm64-msvc": ["@napi-rs/tar-win32-arm64-msvc@1.1.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-vfpG71OB0ijtjemp3WTdmBKJm9R70KM8vsSExMsIQtV0lVzP07oM1CW6JbNRPXNLhRoue9ofYLiUDk8bE0Hckg=="], + + "@napi-rs/tar-win32-ia32-msvc": ["@napi-rs/tar-win32-ia32-msvc@1.1.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-hGPyPW60YSpOSgzfy68DLBHgi6HxkAM+L59ZZZPMQ0TOXjQg+p2EW87+TjZfJOkSpbYiEkULwa/f4a2hcVjsqQ=="], + + "@napi-rs/tar-win32-x64-msvc": ["@napi-rs/tar-win32-x64-msvc@1.1.0", "", { "os": "win32", "cpu": "x64" }, "sha512-L6Ed1DxXK9YSCMyvpR8MiNAyKNkQLjsHsHK9E0qnHa8NzLFqzDKhvs5LfnWxM2kJ+F7m/e5n9zPm24kHb3LsVw=="], + + "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.3", "", { "dependencies": { "@tybys/wasm-util": "^0.10.1" }, "peerDependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1" } }, "sha512-xK9sGVbJWYb08+mTJt3/YV24WxvxpXcXtP6B172paPZ+Ts69Re9dAr7lKwJoeIx8OoeuimEiRZ7umkiUVClmmQ=="], + + "@napi-rs/wasm-tools": ["@napi-rs/wasm-tools@1.0.1", "", { "optionalDependencies": { "@napi-rs/wasm-tools-android-arm-eabi": "1.0.1", "@napi-rs/wasm-tools-android-arm64": "1.0.1", "@napi-rs/wasm-tools-darwin-arm64": "1.0.1", "@napi-rs/wasm-tools-darwin-x64": "1.0.1", "@napi-rs/wasm-tools-freebsd-x64": "1.0.1", "@napi-rs/wasm-tools-linux-arm64-gnu": "1.0.1", "@napi-rs/wasm-tools-linux-arm64-musl": "1.0.1", "@napi-rs/wasm-tools-linux-x64-gnu": "1.0.1", "@napi-rs/wasm-tools-linux-x64-musl": "1.0.1", "@napi-rs/wasm-tools-wasm32-wasi": "1.0.1", "@napi-rs/wasm-tools-win32-arm64-msvc": "1.0.1", "@napi-rs/wasm-tools-win32-ia32-msvc": "1.0.1", "@napi-rs/wasm-tools-win32-x64-msvc": "1.0.1" } }, "sha512-enkZYyuCdo+9jneCPE/0fjIta4wWnvVN9hBo2HuiMpRF0q3lzv1J6b/cl7i0mxZUKhBrV3aCKDBQnCOhwKbPmQ=="], + + "@napi-rs/wasm-tools-android-arm-eabi": ["@napi-rs/wasm-tools-android-arm-eabi@1.0.1", "", { "os": "android", "cpu": "arm" }, "sha512-lr07E/l571Gft5v4aA1dI8koJEmF1F0UigBbsqg9OWNzg80H3lDPO+auv85y3T/NHE3GirDk7x/D3sLO57vayw=="], + + "@napi-rs/wasm-tools-android-arm64": ["@napi-rs/wasm-tools-android-arm64@1.0.1", "", { "os": "android", "cpu": "arm64" }, "sha512-WDR7S+aRLV6LtBJAg5fmjKkTZIdrEnnQxgdsb7Cf8pYiMWBHLU+LC49OUVppQ2YSPY0+GeYm9yuZWW3kLjJ7Bg=="], + + "@napi-rs/wasm-tools-darwin-arm64": ["@napi-rs/wasm-tools-darwin-arm64@1.0.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-qWTI+EEkiN0oIn/N2gQo7+TVYil+AJ20jjuzD2vATS6uIjVz+Updeqmszi7zq7rdFTLp6Ea3/z4kDKIfZwmR9g=="], + + "@napi-rs/wasm-tools-darwin-x64": ["@napi-rs/wasm-tools-darwin-x64@1.0.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-bA6hubqtHROR5UI3tToAF/c6TDmaAgF0SWgo4rADHtQ4wdn0JeogvOk50gs2TYVhKPE2ZD2+qqt7oBKB+sxW3A=="], + + "@napi-rs/wasm-tools-freebsd-x64": ["@napi-rs/wasm-tools-freebsd-x64@1.0.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-90+KLBkD9hZEjPQW1MDfwSt5J1L46EUKacpCZWyRuL6iIEO5CgWU0V/JnEgFsDOGyyYtiTvHc5bUdUTWd4I9Vg=="], + + "@napi-rs/wasm-tools-linux-arm64-gnu": ["@napi-rs/wasm-tools-linux-arm64-gnu@1.0.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-rG0QlS65x9K/u3HrKafDf8cFKj5wV2JHGfl8abWgKew0GVPyp6vfsDweOwHbWAjcHtp2LHi6JHoW80/MTHm52Q=="], + + "@napi-rs/wasm-tools-linux-arm64-musl": ["@napi-rs/wasm-tools-linux-arm64-musl@1.0.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-jAasbIvjZXCgX0TCuEFQr+4D6Lla/3AAVx2LmDuMjgG4xoIXzjKWl7c4chuaD+TI+prWT0X6LJcdzFT+ROKGHQ=="], + + "@napi-rs/wasm-tools-linux-x64-gnu": ["@napi-rs/wasm-tools-linux-x64-gnu@1.0.1", "", { "os": "linux", "cpu": "x64" }, "sha512-Plgk5rPqqK2nocBGajkMVbGm010Z7dnUgq0wtnYRZbzWWxwWcXfZMPa8EYxrK4eE8SzpI7VlZP1tdVsdjgGwMw=="], + + "@napi-rs/wasm-tools-linux-x64-musl": ["@napi-rs/wasm-tools-linux-x64-musl@1.0.1", "", { "os": "linux", "cpu": "x64" }, "sha512-GW7AzGuWxtQkyHknHWYFdR0CHmW6is8rG2Rf4V6GNmMpmwtXt/ItWYWtBe4zqJWycMNazpfZKSw/BpT7/MVCXQ=="], + + "@napi-rs/wasm-tools-wasm32-wasi": ["@napi-rs/wasm-tools-wasm32-wasi@1.0.1", "", { "dependencies": { "@napi-rs/wasm-runtime": "^1.0.3" }, "cpu": "none" }, "sha512-/nQVSTrqSsn7YdAc2R7Ips/tnw5SPUcl3D7QrXCNGPqjbatIspnaexvaOYNyKMU6xPu+pc0BTnKVmqhlJJCPLA=="], + + "@napi-rs/wasm-tools-win32-arm64-msvc": ["@napi-rs/wasm-tools-win32-arm64-msvc@1.0.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-PFi7oJIBu5w7Qzh3dwFea3sHRO3pojMsaEnUIy22QvsW+UJfNQwJCryVrpoUt8m4QyZXI+saEq/0r4GwdoHYFQ=="], + + "@napi-rs/wasm-tools-win32-ia32-msvc": ["@napi-rs/wasm-tools-win32-ia32-msvc@1.0.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-gXkuYzxQsgkj05Zaq+KQTkHIN83dFAwMcTKa2aQcpYPRImFm2AQzEyLtpXmyCWzJ0F9ZYAOmbSyrNew8/us6bw=="], + + "@napi-rs/wasm-tools-win32-x64-msvc": ["@napi-rs/wasm-tools-win32-x64-msvc@1.0.1", "", { "os": "win32", "cpu": "x64" }, "sha512-rEAf05nol3e3eei2sRButmgXP+6ATgm0/38MKhz9Isne82T4rPIMYsCIFj0kOisaGeVwoi2fnm7O9oWp5YVnYQ=="], + + "@octokit/auth-token": ["@octokit/auth-token@6.0.0", "", {}, "sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w=="], + + "@octokit/core": ["@octokit/core@7.0.6", "", { "dependencies": { "@octokit/auth-token": "^6.0.0", "@octokit/graphql": "^9.0.3", "@octokit/request": "^10.0.6", "@octokit/request-error": "^7.0.2", "@octokit/types": "^16.0.0", "before-after-hook": "^4.0.0", "universal-user-agent": "^7.0.0" } }, "sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q=="], + + "@octokit/endpoint": ["@octokit/endpoint@11.0.3", "", { "dependencies": { "@octokit/types": "^16.0.0", "universal-user-agent": "^7.0.2" } }, "sha512-FWFlNxghg4HrXkD3ifYbS/IdL/mDHjh9QcsNyhQjN8dplUoZbejsdpmuqdA76nxj2xoWPs7p8uX2SNr9rYu0Ag=="], + + "@octokit/graphql": ["@octokit/graphql@9.0.3", "", { "dependencies": { "@octokit/request": "^10.0.6", "@octokit/types": "^16.0.0", "universal-user-agent": "^7.0.0" } }, "sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA=="], + + "@octokit/openapi-types": ["@octokit/openapi-types@27.0.0", "", {}, "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA=="], + + "@octokit/plugin-paginate-rest": ["@octokit/plugin-paginate-rest@14.0.0", "", { "dependencies": { "@octokit/types": "^16.0.0" }, "peerDependencies": { "@octokit/core": ">=6" } }, "sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw=="], + + "@octokit/plugin-request-log": ["@octokit/plugin-request-log@6.0.0", "", { "peerDependencies": { "@octokit/core": ">=6" } }, "sha512-UkOzeEN3W91/eBq9sPZNQ7sUBvYCqYbrrD8gTbBuGtHEuycE4/awMXcYvx6sVYo7LypPhmQwwpUe4Yyu4QZN5Q=="], + + "@octokit/plugin-rest-endpoint-methods": ["@octokit/plugin-rest-endpoint-methods@17.0.0", "", { "dependencies": { "@octokit/types": "^16.0.0" }, "peerDependencies": { "@octokit/core": ">=6" } }, "sha512-B5yCyIlOJFPqUUeiD0cnBJwWJO8lkJs5d8+ze9QDP6SvfiXSz1BF+91+0MeI1d2yxgOhU/O+CvtiZ9jSkHhFAw=="], + + "@octokit/request": ["@octokit/request@10.0.8", "", { "dependencies": { "@octokit/endpoint": "^11.0.3", "@octokit/request-error": "^7.0.2", "@octokit/types": "^16.0.0", "fast-content-type-parse": "^3.0.0", "json-with-bigint": "^3.5.3", "universal-user-agent": "^7.0.2" } }, "sha512-SJZNwY9pur9Agf7l87ywFi14W+Hd9Jg6Ifivsd33+/bGUQIjNujdFiXII2/qSlN2ybqUHfp5xpekMEjIBTjlSw=="], + + "@octokit/request-error": ["@octokit/request-error@7.1.0", "", { "dependencies": { "@octokit/types": "^16.0.0" } }, "sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw=="], + + "@octokit/rest": ["@octokit/rest@22.0.1", "", { "dependencies": { "@octokit/core": "^7.0.6", "@octokit/plugin-paginate-rest": "^14.0.0", "@octokit/plugin-request-log": "^6.0.0", "@octokit/plugin-rest-endpoint-methods": "^17.0.0" } }, "sha512-Jzbhzl3CEexhnivb1iQ0KJ7s5vvjMWcmRtq5aUsKmKDrRW6z3r84ngmiFKFvpZjpiU/9/S6ITPFRpn5s/3uQJw=="], + + "@octokit/types": ["@octokit/types@16.0.0", "", { "dependencies": { "@octokit/openapi-types": "^27.0.0" } }, "sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg=="], + + "@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], + + "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], + + "before-after-hook": ["before-after-hook@4.0.0", "", {}, "sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ=="], + + "chardet": ["chardet@2.1.1", "", {}, "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ=="], + + "cli-width": ["cli-width@4.1.0", "", {}, "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ=="], + + "clipanion": ["clipanion@4.0.0-rc.4", "", { "dependencies": { "typanion": "^3.8.0" } }, "sha512-CXkMQxU6s9GklO/1f714dkKBMu1lopS1WFF0B8o4AxPykR1hpozxSiUZ5ZUeBjfPgCWqbcNOtZVFhB8Lkfp1+Q=="], + + "colorette": ["colorette@2.0.20", "", {}, "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w=="], + + "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], + + "emnapi": ["emnapi@1.9.2", "", { "peerDependencies": { "node-addon-api": ">= 6.1.0" }, "optionalPeers": ["node-addon-api"] }, "sha512-OdUoQe/8so7FvubnE/DNV9sNNSFwDYQiK4ZCAz4agMnD1s6faLuDn2gzxfJrmMoKfxZhhsckqGNwqPnS5K140A=="], + + "es-toolkit": ["es-toolkit@1.45.1", "", {}, "sha512-/jhoOj/Fx+A+IIyDNOvO3TItGmlMKhtX8ISAHKE90c4b/k1tqaqEZ+uUqfpU8DMnW5cgNJv606zS55jGvza0Xw=="], + + "fast-content-type-parse": ["fast-content-type-parse@3.0.0", "", {}, "sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg=="], + + "fast-string-truncated-width": ["fast-string-truncated-width@3.0.3", "", {}, "sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g=="], + + "fast-string-width": ["fast-string-width@3.0.2", "", { "dependencies": { "fast-string-truncated-width": "^3.0.2" } }, "sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg=="], + + "fast-wrap-ansi": ["fast-wrap-ansi@0.2.0", "", { "dependencies": { "fast-string-width": "^3.0.2" } }, "sha512-rLV8JHxTyhVmFYhBJuMujcrHqOT2cnO5Zxj37qROj23CP39GXubJRBUFF0z8KFK77Uc0SukZUf7JZhsVEQ6n8w=="], + + "iconv-lite": ["iconv-lite@0.7.2", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw=="], + + "js-yaml": ["js-yaml@4.1.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="], + + "json-with-bigint": ["json-with-bigint@3.5.8", "", {}, "sha512-eq/4KP6K34kwa7TcFdtvnftvHCD9KvHOGGICWwMFc4dOOKF5t4iYqnfLK8otCRCRv06FXOzGGyqE8h8ElMvvdw=="], + + "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], + + "mute-stream": ["mute-stream@3.0.0", "", {}, "sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw=="], + + "obug": ["obug@2.1.1", "", {}, "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ=="], + + "safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="], + + "semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], + + "signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], + + "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "typanion": ["typanion@3.14.0", "", {}, "sha512-ZW/lVMRabETuYCd9O9ZvMhAh8GslSqaUjxmK/JLPCh6l73CvLBiuXswj/+7LdnWOgYsQ130FqLzFz5aGT4I3Ug=="], + + "universal-user-agent": ["universal-user-agent@7.0.3", "", {}, "sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A=="], + } +} diff --git a/crates/cli/Cargo.toml b/crates/cli/Cargo.toml index e8ef9b4..66675c4 100644 --- a/crates/cli/Cargo.toml +++ b/crates/cli/Cargo.toml @@ -1,9 +1,16 @@ [package] name = "dependency-check-updates" version = "0.1.3" +description = "Fast multi-ecosystem dependency updater: package.json, Cargo.toml, pyproject.toml in a single CLI (like npm-check-updates for every language)" edition.workspace = true rust-version.workspace = true license.workspace = true +repository.workspace = true +homepage.workspace = true +documentation.workspace = true +readme.workspace = true +keywords.workspace = true +categories = ["command-line-utilities", "development-tools"] [[bin]] name = "dependency-check-updates" diff --git a/crates/core/Cargo.toml b/crates/core/Cargo.toml index bfb728b..5261969 100644 --- a/crates/core/Cargo.toml +++ b/crates/core/Cargo.toml @@ -1,9 +1,16 @@ [package] name = "dependency-check-updates-core" version = "0.1.3" +description = "Shared traits and types for dependency-check-updates (ManifestHandler, RegistryClient, Scanner)" edition.workspace = true rust-version.workspace = true license.workspace = true +repository.workspace = true +homepage.workspace = true +documentation.workspace = true +readme.workspace = true +keywords.workspace = true +categories.workspace = true [dependencies] thiserror.workspace = true diff --git a/crates/node/Cargo.toml b/crates/node/Cargo.toml index eecc098..d88b396 100644 --- a/crates/node/Cargo.toml +++ b/crates/node/Cargo.toml @@ -5,6 +5,12 @@ description = "Node.js ecosystem support for dependency-check-updates: package.j edition.workspace = true rust-version.workspace = true license.workspace = true +repository.workspace = true +homepage.workspace = true +documentation.workspace = true +readme.workspace = true +keywords.workspace = true +categories.workspace = true [dependencies] dependency-check-updates-core.workspace = true diff --git a/crates/python/Cargo.toml b/crates/python/Cargo.toml index 439ea29..85a9eca 100644 --- a/crates/python/Cargo.toml +++ b/crates/python/Cargo.toml @@ -5,6 +5,12 @@ description = "Python ecosystem support for dependency-check-updates: pyproject. edition.workspace = true rust-version.workspace = true license.workspace = true +repository.workspace = true +homepage.workspace = true +documentation.workspace = true +readme.workspace = true +keywords.workspace = true +categories.workspace = true [dependencies] dependency-check-updates-core.workspace = true diff --git a/crates/rust/Cargo.toml b/crates/rust/Cargo.toml index fa6399d..bc35254 100644 --- a/crates/rust/Cargo.toml +++ b/crates/rust/Cargo.toml @@ -5,6 +5,12 @@ description = "Rust ecosystem support for dependency-check-updates: Cargo.toml p edition.workspace = true rust-version.workspace = true license.workspace = true +repository.workspace = true +homepage.workspace = true +documentation.workspace = true +readme.workspace = true +keywords.workspace = true +categories.workspace = true [dependencies] dependency-check-updates-core.workspace = true diff --git a/crates/testkit/Cargo.toml b/crates/testkit/Cargo.toml deleted file mode 100644 index 7b922b2..0000000 --- a/crates/testkit/Cargo.toml +++ /dev/null @@ -1,17 +0,0 @@ -[package] -name = "dependency-check-updates-testkit" -version = "0.1.3" -edition.workspace = true -rust-version.workspace = true -license.workspace = true - -[dependencies] -dependency-check-updates-core.workspace = true -serde.workspace = true -serde_json.workspace = true - -[dev-dependencies] -insta.workspace = true - -[lints] -workspace = true diff --git a/crates/testkit/src/lib.rs b/crates/testkit/src/lib.rs deleted file mode 100644 index 08c8b23..0000000 --- a/crates/testkit/src/lib.rs +++ /dev/null @@ -1 +0,0 @@ -//! Test fixtures and golden test helpers for dependency-check-updates. From d23947e69ed8e1295fd0c41f2b51239ad96b8a5b Mon Sep 17 00:00:00 2001 From: owjs3901 Date: Wed, 8 Apr 2026 20:05:38 +0900 Subject: [PATCH 2/2] Fix js path --- Cargo.toml | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 6d6760b..550b364 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,7 +7,7 @@ members = ["crates/*", "bridge/*"] # parallel linker processes to race on the same output file (LNK1104). # `members` still contains bridge/* so workspace-wide commands # (`cargo test --workspace`, `cargo clippy --workspace`) keep covering it. -default-members = ["crates/cli", "crates/core", "crates/node", "crates/rust", "crates/python", "crates/testkit", "bridge/node"] +default-members = ["crates/cli", "crates/core", "crates/node", "crates/rust", "crates/python", "bridge/node"] [workspace.package] edition = "2024" @@ -24,12 +24,11 @@ categories = ["development-tools"] # Internal — `version` is required so `cargo publish` can resolve path # dependencies against crates.io. When bumping any crate version, remember # to update these entries in lockstep. -dependency-check-updates-core = { path = "crates/core", version = "0.1.4" } -dependency-check-updates-node = { path = "crates/node", version = "0.1.4" } -dependency-check-updates-rust = { path = "crates/rust", version = "0.1.4" } -dependency-check-updates-python = { path = "crates/python", version = "0.1.4" } -dependency-check-updates = { path = "crates/cli", version = "0.1.4" } -dependency-check-updates-testkit = { path = "crates/testkit", version = "0.1.4" } +dependency-check-updates-core = { path = "crates/core" } +dependency-check-updates-node = { path = "crates/node" } +dependency-check-updates-rust = { path = "crates/rust" } +dependency-check-updates-python = { path = "crates/python" } +dependency-check-updates = { path = "crates/cli" } # External clap = { version = "4.6", features = ["derive"] }