@crvouga/mockingbird-service-dynamodb

中文文档
3.11.0发布于 2026/11/11MITTypeScriptES Module构建来源已验证近 30 天下载 3400

Stateful Amazon DynamoDB emulator with typed items, expressions, indexes, pagination, transactions, and streams.

原始使用文档
文档目录5 节
  1. Install
  2. Usage
  3. Admin and deterministic controls
  4. Deliberately not modelled
  5. API

@crvouga/mockingbird-service-dynamodb

Local emulators. Real API contracts. Part of Mockingbird.

Stateful Amazon DynamoDB emulator for the AWS SDK v3 low-level client and DynamoDBDocumentClient. It preserves DynamoDB attribute types while modelling CRUD, expressions, indexes, pagination, batches, transactions, TTL, streams, and conditional writes without contacting AWS.

Install

npm install -D @crvouga/mockingbird-service-dynamodb

ESM only. Node 22+ or Bun 1.2+.

Usage

Point the SDK's endpoint option at the emulator. Fixture SigV4 credentials are accepted.

import { DynamoDBClient } from "@aws-sdk/client-dynamodb"
import { DynamoDBDocumentClient, GetCommand } from "@aws-sdk/lib-dynamodb"
import { createServer } from "@crvouga/mockingbird-service-dynamodb/server"

// Test setup: seed the emulator and point the AWS SDK client your application uses at it.
const emulator = await createServer({
  tables: [
    {
      name: "records",
      keySchema: [{ AttributeName: "pk", KeyType: "HASH" }],
      items: [{ pk: { S: "fixture" }, status: { S: "ready" } }],
    },
  ],
})
const db = DynamoDBDocumentClient.from(
  new DynamoDBClient({
    endpoint: emulator.url,
    region: "us-east-1",
    credentials: { accessKeyId: "fixture", secretAccessKey: "fixture" },
  }),
)

// Application code: ordinary SDK calls.
const { Item } = await db.send(new GetCommand({ TableName: "records", Key: { pk: "fixture" } }))
// Item: { pk: "fixture", status: "ready" }

await emulator.close() // after the test

Supported operations are CreateTable, DescribeTable, GetItem, PutItem, UpdateItem, DeleteItem, Query, Scan, BatchGetItem, BatchWriteItem, TransactGetItems, and TransactWriteItems. The expression subset includes expression name/value aliases, SET/ADD/REMOVE/DELETE, if_not_exists; condition, filter and key-condition expressions parsed by DynamoDB's grammar (comparisons between values or paths, BETWEEN, IN, AND/OR/NOT with parentheses, attribute_exists, attribute_not_exists, attribute_type, begins_with, contains, size); projection, conditions, limits, cursors, index ordering, and return values.

Admin and deterministic controls

  • Constructor fixtures define tables, indexes, typed items, and TTL attributes.
  • GET /__admin/tables, /__admin/items?table=…, and /__admin/streams?table=… inspect local state and ordered INSERT/MODIFY/REMOVE records.
  • Advance the shared emulator clock to expire TTL items without sleeps.
  • Fault presets are throttled and one-shot unavailable; generic fault rules can model unprocessed batch responses or eventual-read failures.

The shared runtime also provides reset, timeline, request journal, metrics, faults, and namespace isolation through x-mockingbird-namespace, /__admin/ns/<name>, or SigV4 access-key mappings.

Deliberately not modelled

PartiQL, control-plane operations outside Create/Describe, local/global table replication, IAM policy evaluation, encryption, backups, production capacity accounting, all DynamoDB expression grammar, real asynchronous streams, dashboards, and billing are not modelled.

API

  • DynamoAPI, DynamoAPIOptions, DynamoSeedTable: AWS JSON handler and fixtures.
  • AttributeValue, Item, KeySchemaElement, DynamoIndex, DynamoItem, DynamoTable, StreamRecord: typed state.
  • createRuntime, DynamoRuntime, DynamoRuntimeOptions: full Mockingbird runtime.
  • DYNAMODB_NAMESPACE, DYNAMODB_PRESETS, accessKeyCredential: constants and controls.
  • document, operationIds, supportedOperationIds: generated OpenAPI metadata.
  • createServer, DynamoServerOptions, DEFAULT_PORT, serveTarget from ./server: Node HTTP adapter and CLI integration.

Official oracle: Amazon DynamoDB API Reference.

版本与发布记录

@crvouga/mockingbird-service-dynamodb 共发布 43 个版本,首次发布于 2026/09/23;过去 12 个月发布了 43 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
3.11.0latest2026/11/11今天
3.10.112026/11/038 天前
3.10.102026/11/038 天前
3.10.92026/11/038 天前
3.10.82026/11/038 天前
3.10.72026/11/038 天前

关于 @crvouga/mockingbird-service-dynamodb 的常见问题

@crvouga/mockingbird-service-dynamodb 是什么?

Stateful Amazon DynamoDB emulator with typed items, expressions, indexes, pagination, transactions, and streams.

如何安装 @crvouga/mockingbird-service-dynamodb?

在项目目录运行 npm install @crvouga/mockingbird-service-dynamodb,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 mockingbird-dynamodb,可以用 npx mockingbird-dynamodb 直接运行。

@crvouga/mockingbird-service-dynamodb 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@crvouga/mockingbird-service-dynamodb 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@crvouga/mockingbird-service-dynamodb 可以商用吗?

@crvouga/mockingbird-service-dynamodb 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@crvouga/mockingbird-service-dynamodb 的下载量有多少?

根据 npm 官方下载统计,@crvouga/mockingbird-service-dynamodb 在 2026/10/11 – 2026/11/09 这 30 天内被下载 3,400 次,日均约 113 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@crvouga/mockingbird-service-dynamodb 还在维护吗?

最新版本 3.11.0 发布于 2026/11/11(今天);至今共发布 43 个版本,其中过去 12 个月发布了 43 个;首次发布于 2026/09/23。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。