steam-workshop-ts
TypeScript 1
// Overview
Zero-dependency TypeScript client for the Steam Workshop Web API and SteamCMD. Query and search items, resolve collections, and download and cache workshop content with a CLI, built for CS2 and Source game servers.
// Built with
TypeScriptNode.jsBunzero-depSteamCMD
// The problem
Managing Steam Workshop items for game servers means juggling the barely documented Web API and driving steamcmd by hand, then guessing where the files actually landed.
// Approach
- One zero-dependency package covering both the Workshop Web API and SteamCMD automation.
- Manifest-based caching with pre-flight disk-space checks, plus a persistent depot cache for fast incremental updates.
- Docker and temp-dir sandbox modes, so downloads work even on macOS and never pollute the host.
// Engineering challenges
- Parsing steamcmd's noisy output to reliably return the exact download path on disk.
- Getting cache invalidation right by comparing the Web API update timestamp against a local manifest.
- Handling Steam Guard 2FA, timeouts and transient API errors without a single runtime dependency.