@ajitems/devtools
v0.4.0
Published
Headless engines for common developer utilities. Compiled to WASM.
Maintainers
Readme
devtools
Headless engines for common developer utilities, implemented in Rust and compiled to WebAssembly. Use them in the browser or any JS runtime that can load WASM (for example via wasm-bindgen).
Install
npm install @ajitems/devtoolsVersion
The crate exports DEVTOOLS_VERSION (semver string) and getDevtoolsVersion() for the browser so the UI can show build info or bust caches.
Usage
The package is built with wasm-pack for the web target. Initialize the module once, then call the exported functions. Each engine returns a JSON-shaped object with ok, optional data, optional error, and optional structured errorDetail (see ToolResult / FfiError in the sources and docs/ffi.md).
import init, { base64_encode, jwt_decode } from "@ajitems/devtools";
await init(); // WASM start (e.g. panic hook)
const encoded = base64_encode("hello", false);
// { ok: true, data: { output: "...", inputBytes: 5, outputBytes: ... }, error: null }
const decoded = jwt_decode("eyJ...");
// { ok: true | false, data: ..., error: ... }Exact import paths depend on how you bundle or serve the .wasm file; follow the wasm-pack web workflow for your toolchain.
What’s included
| Area | Functions (high level) |
|------|-------------------------|
| Version | getDevtoolsVersion |
| Encoding | base64_encode, base64_decode, base32Encode/Decode, base58Encode/Decode |
| JSON / data | json_format, json_diff, jsonlValidate, csvToJson, tsvToJson, jsonToCsv, jsonToTsv, yamlToJson, jsonToYaml, xmlToJson, jsonToXml, queryStringToJson, jsonToQueryString, jwt_decode (decode only) |
| Time / radix / colour | unixToIsoUtc, isoUtcToUnix, radixConvert, hexToRgb, rgbToHex |
| Crypto / MAC / JWT | hashCompute, uuidV4Batch, hmacCompute, bcryptHash, bcryptVerify, jwtHs256Sign, jwtHs256Verify |
| SQL / PHP | sqlFormat, sqlMinify, phpUnserializeToJson |
| Escaping | jsonEscapeString, xmlEscapeText, xmlEscapeAttribute |
| URL | url_process |
| Regex | regex_test |
| Env files | env_validate |
| Docker | docker_convert |
| Tokens / prompts | tokens_estimate, prompt_analyse |
| SLA | sla_calculate |
| Payroll / tax (India-oriented) | ctc_calculate, freelance_calculate, gst_calculate, gstin_validate, pan_validate |
| India utilities | validate_ifsc, estimate_cloud_cost, calculate_working_days, calculate_automation_roi, calculate_sprint_velocity, calculate_retry_budget, calculateCtc, compareTaxRegimes, calculateHike |
With the cron feature (enabled in published builds): cron_parse.
Build from source
Prerequisites: stable Rust, wasm32-unknown-unknown, and wasm-pack.
Checklist (npm publish parity):
rustup target add wasm32-unknown-unknownwasm-pack build --scope ajitems --target web --release -- --features cron- For Vite/Webpack bundlers, prefer
--target bundlerif you rely on direct.wasmimports.
- For Vite/Webpack bundlers, prefer
cp package.npm.json pkg/package.jsoncd pkg && npm publish(or push av*git tag if CI publishes for you)
rustup target add wasm32-unknown-unknown
wasm-pack build --scope ajitems --target web --release -- --features cron
cp package.npm.json pkg/package.jsonOptional Cargo features:
cron— cron expression parsing (cron_parse).minify— pulls in minify/CSS dependencies (seeCargo.toml; not required for the default npm build).
CI runs cargo clippy, cargo fmt --check, cargo test --all-features, and the WASM build above.
Full JS name ↔ parameter notes: docs/ffi.md.
Publish
Releases are published to npm when a version tag v* is pushed (see .github/workflows/publish.yml).
License
MIT. See LICENSE.
