Amazon Elasticsearch Service

@crvouga/mockingbird-service-elasticsearch

Work-in-progress Amazon Elasticsearch Service transport scaffold; vendor operations are not implemented.

Parity: Scaffold only; no vendor operations implemented or verifiedStorage0 of 7 operationsIn-process fetchNode servermockingbird-elasticsearch
$
npm install -D @crvouga/mockingbird-service-elasticsearch

Playground

Requests go to the real emulator running in this tab. State persists across requests, and the journal shows what it received. A green dot marks operations whose sample succeeds as-is; others need ids from earlier responses.

Loads the real @crvouga/mockingbird-service-elasticsearch into this tab on first send
https://elasticsearch.us-east-1.amazonaws.com

Send a request to see the emulator's response.

Operations

0 of 7 operations in the vendored contract are emulated.

MethodPathOperationStatus
GET/AwsQueryNot emulated
POST/AwsRpcNot emulated
GET/{path}AwsRestGetNot emulated
POST/{path}AwsRestPostNot emulated
PUT/{path}AwsRestPutNot emulated
PATCH/{path}AwsRestPatchNot emulated
DELETE/{path}AwsRestDeleteNot emulated

Why each gap exists is recorded in SUPPORT.md.

Documentation

The package README, the same file that ships in the npm tarball.Edit on GitHub

Local emulators. Real API contracts. Part of Mockingbird.

Transport scaffold for Amazon Elasticsearch Service. ESM; Node 22+ or Bun 1.2+.

Usage

TypeScript
import { createServer } from "@crvouga/mockingbird-service-elasticsearch/server"

// Test setup: start the emulator.
const server = await createServer()

// Application code: the request `ListDomainNames` sends, against the emulator's base URL.
// No operation is implemented yet, so every request is rejected.
const response = await fetch(`${server.url}/2015-01-01/domain`)
console.log(response.status, await response.text()) // 400 <ErrorResponse>...UnknownOperationException...

await server.close()

The scaffold answers with an XML error body, which @aws-sdk/client-elasticsearch-service (a REST-JSON client) cannot parse, so this example uses plain fetch until operations are implemented.

State lives in SQLite collections and participates in the shared runtime's namespace isolation, reset, timeline, clock, journal, metrics and fault controls. No AWS account is needed.

Planned, not implemented, AWS operations: CreateElasticsearchDomain, DescribeElasticsearchDomain, DescribeElasticsearchDomains, ListDomainNames, DeleteElasticsearchDomain, UpdateElasticsearchDomainConfig, DescribeElasticsearchDomainConfig, AddTags, RemoveTags, ListTags.

Operations outside this list fail explicitly. This package emulates API state, not AWS infrastructure, production quotas, billing, IAM enforcement, or provider consoles. Service-specific omissions and oracle evidence are recorded in the AWS coverage ledger.

Run bun run parity with LocalStack on http://127.0.0.1:4566; an unavailable oracle fails the run. No LocalStack run is recorded for this integration. The parity command is a bounded read-only SDK envelope probe, not proof of full vendor equivalence.

Implementation status

No vendor operations are implemented. Requests fail explicitly with UnknownOperationException; transport tests cover this boundary and malformed input. This package is not a usable vendor replacement yet. No LocalStack or live AWS parity is claimed.

Install

Shell
bun add @crvouga/mockingbird-service-elasticsearch

API

  • ElasticsearchAPI(options?): low-level AWS transport instance with fetch and reset.

  • createRuntime(options?): in-process Fetch API and shared state controls.

  • createServer(options?) from the /server entry: HTTP listener with url, runtime, and close().

  • document, operationIds, and supportedOperationIds: generated transport contract metadata.

↑↓ to navigate↵ to open