# msw-azure-kusto

> TypeScript Azure Data Explorer (Kusto) HTTP emulator for local testing with MSW.

Latest version **1.4.0** (published 2026-08-11) · ISC license · 0 weekly downloads

## Install

```sh
npm install msw-azure-kusto
pnpm add msw-azure-kusto
yarn add msw-azure-kusto
bun add msw-azure-kusto
```

Provides the command `msw-azure-kusto`.

## Health

**Score 75/100 (B)** — status: active.

Positive: has types; esm support; no vulnerabilities; has provenance; recently updated; high maintenance score; high quality score.

Warnings: low downloads.

## Facts

| | |
|---|---|
| Version | 1.4.0 |
| Published | 2026-08-11 |
| First published | 2026-03-09 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Node | >=22 |
| Dependencies | 5 |
| Unpacked size | 2.2 MB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Provenance | attested (GitHub Actions) |
| GitHub stars | 0 |
| Author | Allan Hvam |
| Maintainers | allanhvam |
| Keywords | kusto, azure-data-explorer, msw, mocking, testing, typescript |

## Links

- npm: https://www.npmjs.com/package/msw-azure-kusto
- Repository: https://github.com/allanhvam/msw-azure-kusto
- Homepage: https://github.com/allanhvam/msw-azure-kusto#readme
- Issues: https://github.com/allanhvam/msw-azure-kusto/issues
- npm.io page: https://npm.io/package/msw-azure-kusto

## Dependencies (5)

- [msw](https://npm.io/package/msw.md) ^2.12.10
- [zod](https://npm.io/package/zod.md) ^4.3.6
- [hono](https://npm.io/package/hono.md) ^4.12.8
- [antlr4ng](https://npm.io/package/antlr4ng.md) ^3.0.16
- [portmore](https://npm.io/package/portmore.md) ^1.0.0

## Alternatives

- [pagerjs](https://npm.io/package/pagerjs.md) — 60 weekly downloads
- [whistle.savefor-mock](https://npm.io/package/whistle.savefor-mock.md) — 4 weekly downloads
- [sinon-typed-stub](https://npm.io/package/sinon-typed-stub.md) — 0 weekly downloads
- [named-patch](https://npm.io/package/named-patch.md) — 0 weekly downloads
- [@anil-labs/factory](https://npm.io/package/@anil-labs/factory.md) — 0 weekly downloads

## Recent versions

- 1.4.0 (latest) — 2026-08-11
- 1.3.0 — 2026-06-24
- 1.2.1 — 2026-06-23
- 1.2.0 — 2026-06-22
- 1.1.1 — 2026-05-08
- 1.1.0 — 2026-03-19
- 1.0.0 — 2026-03-09

## README

# msw-azure-kusto

TypeScript Azure Data Explorer (Kusto) HTTP emulator for local testing with MSW.

> Disclaimer: Primarily coded by Codex and Opus, this emulator is not feature complete. Only inline ingestion and URI-based CSV ingestion.

## Usage

1. Install `msw` (https://mswjs.io/docs/getting-started)
2. Install `msw-azure-kusto`
3. Import `handlers` from `msw-azure-kusto` and pass them to your MSW setup

### CLI emulator

You can run a standalone local Kusto emulator with `npx`:

```bash
npx msw-azure-kusto --port 80 --dashboard 4000
```

Flags:

- `--port` (`-p`) HTTP port for the Kusto emulator endpoints.
- `--dashboard` Optional dashboard UI port.

### Install

```bash
npm install msw-azure-kusto
```

### Setup

```ts
import { setupServer } from "msw/node";
import { handlers } from "msw-azure-kusto";

export const server = setupServer(...handlers());
```

### `azure-kusto-data` client example

`msw-azure-kusto` emulates Kusto REST endpoints such as `https://<cluster>/v1/rest/mgmt` and `https://<cluster>/v2/rest/query`.
Use your normal `azure-kusto-data` client setup and point it at a mocked cluster host.

```ts
import { Client, KustoConnectionStringBuilder } from "azure-kusto-data";
import { setupServer } from "msw/node";
import { handlers } from "msw-azure-kusto";

const server = setupServer(...handlers());
server.listen();

const cluster = "https://example.kusto.windows.net";
const kcsb = KustoConnectionStringBuilder.withTokenProvider(cluster, async () => "mock-token");
const client = new Client(kcsb);

await client.executeMgmt("Samples", ".create table StormEvents (EventId:int, State:string, Damage:int)");
await client.executeMgmt("Samples", ".ingest inline into table StormEvents <| 1,WA,10\n2,CA,20\n3,WA,5");

const response = await client.executeQuery(
  "Samples",
  "StormEvents | where State == 'WA' | project EventId, State",
);

const primary = response.primaryResults[0];
const json = primary?.toJSON() as { data: Array<Record<string, unknown>> };
console.log(json.data);

await client.close();
server.close();
```

Supported hosts:

- `https://*.kusto.windows.net`
- `https://kusto.local`

## Snapshot tests

Snapshots are in [src/tests/snapshots/commands.test.snapshot.ts](src/tests/snapshots/commands.test.snapshot.ts), based on `.kql` files in [src/tests/commands](src/tests/commands).

Set `CLUSTER` in your shell or `.env` before running command tests, for example:

```bash
export CLUSTER="https://kusto.local"
```

### Run snapshot-backed command tests

```bash
node --run build
node --env-file-if-exists=.env --test dist/tests/commands.test.js
```

To run only medium guide command cases:

```bash
node --env-file-if-exists=.env --test dist/tests/commands.test.js --test-name-pattern "command - medium-guide"
```

### Update snapshots

```bash
node --run build
node --run test-update-snapshots
```

---
_Source: https://npm.io/package/msw-azure-kusto · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
