TypeScript client for TFS / Azure DevOps SOAP services. Speaks the protocol used by Azure DevOps Services (cloud), Azure DevOps Server (on-prem), and Team Foundation Server back to ~2010 — without depending on Visual Studio, Team Explorer Everywhere, or the tf command-line.
Currently covered:
- TFVC (
Repository.asmx) — workspaces, pending changes, shelvesets, undo - Upload (
upload.ashx) — multipart file content upload for shelve / pend - Discussion / Code review (
DiscussionWebService.asmx) — inline review comments
Pure TypeScript, ESM-only, zero runtime dependencies.
npm install @qodevai/tfs-soapimport { HttpClient } from '@qodevai/tfs-soap/core';
import { TfvcSoapClient, TfvcUploadClient } from '@qodevai/tfs-soap/tfvc';
const http = new HttpClient({ strictSSL: true });
const tfvc = new TfvcSoapClient(http, 'https://dev.azure.com/myorg', pat);
await tfvc.createWorkspace({
name: 'my-workspace',
owner: 'me@example.com',
ownerDisplayName: 'Me',
computer: 'laptop',
});Subpath imports (/core, /tfvc, /discussion) let you pull only the surface you need; the top-level import { ... } from '@qodevai/tfs-soap' re-exports everything.
Personal Access Token (PAT) over HTTP Basic. NTLM/Kerberos are not (yet) supported.
- Azure DevOps Services (cloud,
dev.azure.com) - Azure DevOps Server 2019, 2020, 2022 (on-prem)
- Team Foundation Server 2012, 2013, 2015, 2017, 2018 (older may work, untested)
make test # run unit tests
make check # lint, typecheck, build, publint, attw
make build # produce dist/Releases: bump version + CHANGELOG, tag v<version>, push tag — GitHub Actions publishes to npm via Trusted Publishing (no token; provenance attested automatically).
MIT — see LICENSE.