Files
mfahampshire 08dc353e82 New TS SDK packages (#6839)
* First sweep packages + some minor tweaking

* Second sweep

* Regenerate lockfile + package.json mods

* Regenerate lockfile again

* Fix CI

* Fix CI again

* All building properly

* unblock

* Tweak examples

* Comments + readme + fix rotten unit test
2026-06-05 10:36:36 +00:00

63 lines
2.7 KiB
Markdown

# sdk-version-bump
Tool to update version numbers across the SDK packages, both Cargo
(`wasm/smolmix`, `wasm/client`) and TS (`@nymproject/mix-tunnel`,
`@nymproject/mix-fetch`, `@nymproject/mix-dns`, `@nymproject/mix-websocket`,
plus the legacy `@nymproject/sdk` family).
## Usage
This tool is expected to be run by CI; the snippets below are for manual use
from the repo root.
### Full release (Rust + TS in parity)
This is the default. Use it when smolmix-wasm has changed and the TS SDK
must publish a matching version.
1. `cargo run -p sdk-version-bump remove-suffix`
2. Build everything and publish to crates.io / npm.
3. `cargo run -p sdk-version-bump bump-version` — bumps every package from
`X.Y.Z` to `X.Y.(Z+1)-rc.0`, and rewrites every `@nymproject/...` dep
specifier of the form `>=X.Y.Z-rc.W || ^X` accordingly.
### TS-only release
Use this when the TS SDK needs a bump but smolmix-wasm itself hasn't changed.
The Cargo crates are left untouched, and downstream package.json files keep
their existing dep ranges for `@nymproject/smolmix-wasm` and
`@nymproject/nym-client-wasm` (so they continue to resolve to the last
published wasm version).
1. `cargo run -p sdk-version-bump remove-suffix --ts-only`
2. Build the TS packages and publish to npm.
3. `cargo run -p sdk-version-bump bump-version --ts-only`
### Pre-release (rc bump)
To increment just the `-rc.X` counter (`X.Y.Z-rc.W``X.Y.Z-rc.W+1`):
```
cargo run -p sdk-version-bump bump-version --pre-release
```
Combine with `--ts-only` if you're rc-bumping the TS layer alone.
## What gets touched
| What | Where it's declared | Behaviour under `--ts-only` |
|---|---|---|
| `Cargo.toml` `package.version` of each Cargo crate | `register_cargo(...)` | skipped |
| `package.json` `version` of each TS package | `register_json(...)` | bumped |
| `@nymproject/...` dep ranges in `dependencies` / `peerDependencies` / `devDependencies` / `optionalDependencies` / `bundledDependencies` | `register_known_js_dependency(...)` | bumped, except cargo-derived ones |
| Cargo-derived JS dep ranges (`@nymproject/smolmix-wasm`, `@nymproject/nym-client-wasm`) | `register_cargo_derived_js_dependency(...)` | left alone |
| `workspace:*`, `file:..`, `link:..`, `npm:..` specifiers | n/a (skipped at parse time) | always skipped — pnpm rewrites them at publish |
## Adding a new package
1. If it's a Cargo crate: `packages.register_cargo("relative/path")`.
2. If it's a TS package: `packages.register_json("relative/path")`.
3. If the package is consumed by other packages as a dep, also add its npm
name to either `register_known_js_dependency` (TS-driven version) or
`register_cargo_derived_js_dependency` (wasm-pack-driven version).