@exabugs/dynamodb-client 1.13.0 → 1.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +27 -0
- package/README.md +5 -15
- package/bin/dynamodb-access-check.js +6 -0
- package/dist/server/handler.cjs +3 -3
- package/dist/server/handler.cjs.map +1 -1
- package/dist/server/media-handler.cjs +2 -2
- package/dist/server/media-process-handler-dlq.cjs +2 -2
- package/dist/server/media-process-handler.cjs +2 -2
- package/dist/server/operations/parameterConverter.js +3 -3
- package/dist/server/operations/parameterConverter.js.map +1 -1
- package/dist/sharp-layer.zip +0 -0
- package/dist/tools/dynamodb-access-check/allowlist.d.ts +39 -0
- package/dist/tools/dynamodb-access-check/allowlist.d.ts.map +1 -0
- package/dist/tools/dynamodb-access-check/allowlist.js +34 -0
- package/dist/tools/dynamodb-access-check/allowlist.js.map +1 -0
- package/dist/tools/dynamodb-access-check/check.d.ts +24 -0
- package/dist/tools/dynamodb-access-check/check.d.ts.map +1 -0
- package/dist/tools/dynamodb-access-check/check.js +40 -0
- package/dist/tools/dynamodb-access-check/check.js.map +1 -0
- package/dist/tools/dynamodb-access-check/cli.d.ts +10 -0
- package/dist/tools/dynamodb-access-check/cli.d.ts.map +1 -0
- package/dist/tools/dynamodb-access-check/cli.js +96 -0
- package/dist/tools/dynamodb-access-check/cli.js.map +1 -0
- package/dist/tools/dynamodb-access-check/forbidden.d.ts +15 -0
- package/dist/tools/dynamodb-access-check/forbidden.d.ts.map +1 -0
- package/dist/tools/dynamodb-access-check/forbidden.js +34 -0
- package/dist/tools/dynamodb-access-check/forbidden.js.map +1 -0
- package/dist/tools/dynamodb-access-check/glob.d.ts +8 -0
- package/dist/tools/dynamodb-access-check/glob.d.ts.map +1 -0
- package/dist/tools/dynamodb-access-check/glob.js +37 -0
- package/dist/tools/dynamodb-access-check/glob.js.map +1 -0
- package/dist/tools/dynamodb-access-check/index.d.ts +5 -0
- package/dist/tools/dynamodb-access-check/index.d.ts.map +1 -0
- package/dist/tools/dynamodb-access-check/index.js +4 -0
- package/dist/tools/dynamodb-access-check/index.js.map +1 -0
- package/dist/tools/dynamodb-access-check/run.d.ts +2 -0
- package/dist/tools/dynamodb-access-check/run.d.ts.map +1 -0
- package/dist/tools/dynamodb-access-check/run.js +3 -0
- package/dist/tools/dynamodb-access-check/run.js.map +1 -0
- package/dist/tools/dynamodb-access-check/scan.d.ts +25 -0
- package/dist/tools/dynamodb-access-check/scan.d.ts.map +1 -0
- package/dist/tools/dynamodb-access-check/scan.js +151 -0
- package/dist/tools/dynamodb-access-check/scan.js.map +1 -0
- package/dist/tools/eslint/index.d.ts +28 -0
- package/dist/tools/eslint/index.d.ts.map +1 -0
- package/dist/tools/eslint/index.js +34 -0
- package/dist/tools/eslint/index.js.map +1 -0
- package/docs/DYNAMODB_ACCESS.md +152 -0
- package/package.json +11 -11
- package/bin/dynamodb-mcp.js +0 -12
- package/dist/mcp/adapter.d.ts +0 -36
- package/dist/mcp/adapter.d.ts.map +0 -1
- package/dist/mcp/adapter.js +0 -213
- package/dist/mcp/adapter.js.map +0 -1
- package/dist/mcp/cli.d.ts +0 -2
- package/dist/mcp/cli.d.ts.map +0 -1
- package/dist/mcp/cli.js +0 -122
- package/dist/mcp/cli.js.map +0 -1
- package/dist/mcp/index.d.ts +0 -7
- package/dist/mcp/index.d.ts.map +0 -1
- package/dist/mcp/index.js +0 -6
- package/dist/mcp/index.js.map +0 -1
- package/dist/mcp/server.d.ts +0 -18
- package/dist/mcp/server.d.ts.map +0 -1
- package/dist/mcp/server.js +0 -127
- package/dist/mcp/server.js.map +0 -1
- package/dist/mcp/tools/deleteMany.d.ts +0 -12
- package/dist/mcp/tools/deleteMany.d.ts.map +0 -1
- package/dist/mcp/tools/deleteMany.js +0 -24
- package/dist/mcp/tools/deleteMany.js.map +0 -1
- package/dist/mcp/tools/deleteOne.d.ts +0 -12
- package/dist/mcp/tools/deleteOne.d.ts.map +0 -1
- package/dist/mcp/tools/deleteOne.js +0 -24
- package/dist/mcp/tools/deleteOne.js.map +0 -1
- package/dist/mcp/tools/find.d.ts +0 -12
- package/dist/mcp/tools/find.d.ts.map +0 -1
- package/dist/mcp/tools/find.js +0 -56
- package/dist/mcp/tools/find.js.map +0 -1
- package/dist/mcp/tools/findMany.d.ts +0 -12
- package/dist/mcp/tools/findMany.d.ts.map +0 -1
- package/dist/mcp/tools/findMany.js +0 -28
- package/dist/mcp/tools/findMany.js.map +0 -1
- package/dist/mcp/tools/findManyReference.d.ts +0 -12
- package/dist/mcp/tools/findManyReference.d.ts.map +0 -1
- package/dist/mcp/tools/findManyReference.js +0 -32
- package/dist/mcp/tools/findManyReference.js.map +0 -1
- package/dist/mcp/tools/findOne.d.ts +0 -12
- package/dist/mcp/tools/findOne.d.ts.map +0 -1
- package/dist/mcp/tools/findOne.js +0 -24
- package/dist/mcp/tools/findOne.js.map +0 -1
- package/dist/mcp/tools/generated.d.ts +0 -11
- package/dist/mcp/tools/generated.d.ts.map +0 -1
- package/dist/mcp/tools/generated.js +0 -171
- package/dist/mcp/tools/generated.js.map +0 -1
- package/dist/mcp/tools/index.d.ts +0 -13
- package/dist/mcp/tools/index.d.ts.map +0 -1
- package/dist/mcp/tools/index.js +0 -29
- package/dist/mcp/tools/index.js.map +0 -1
- package/dist/mcp/tools/insertMany.d.ts +0 -12
- package/dist/mcp/tools/insertMany.d.ts.map +0 -1
- package/dist/mcp/tools/insertMany.js +0 -28
- package/dist/mcp/tools/insertMany.js.map +0 -1
- package/dist/mcp/tools/insertOne.d.ts +0 -12
- package/dist/mcp/tools/insertOne.d.ts.map +0 -1
- package/dist/mcp/tools/insertOne.js +0 -24
- package/dist/mcp/tools/insertOne.js.map +0 -1
- package/dist/mcp/tools/updateMany.d.ts +0 -12
- package/dist/mcp/tools/updateMany.d.ts.map +0 -1
- package/dist/mcp/tools/updateMany.js +0 -28
- package/dist/mcp/tools/updateMany.js.map +0 -1
- package/dist/mcp/tools/updateOne.d.ts +0 -12
- package/dist/mcp/tools/updateOne.d.ts.map +0 -1
- package/dist/mcp/tools/updateOne.js +0 -38
- package/dist/mcp/tools/updateOne.js.map +0 -1
- package/dist/mcp/types.d.ts +0 -50
- package/dist/mcp/types.d.ts.map +0 -1
- package/dist/mcp/types.js +0 -49
- package/dist/mcp/types.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,33 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.14.0] - 2026-10-18
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **`dynamodb-access-check` CLI**: DynamoDB への直接アクセスの検査。ソースの import(`@aws-sdk/client-dynamodb` / `lib-dynamodb` / `util-dynamodb`、aws-sdk v2 の DynamoDB クライアント、このライブラリの内部で DynamoDB に触れる `server` / `server/handler` / `server/media-handler` / `server/media-process-handler` / `server/media-process-handler-dlq`)と、Terraform の `dynamodb:*` の権限(`resource` / `data` ブロック、AWS 管理ポリシー `AmazonDynamoDB*`)を走査し、許可リスト(JSON)と照合する。許可リストに無い違反は終了コード 1、許可リストにあるのに検出されないエントリと行番号のずれは警告。引数: `--allowlist <path>`(必須)、`--root <dir>`、`--src <dir>...`、`--tf <dir>...`、`--ignore <glob>...`。許可リストの形式(`file` / `terraform` / `kind` / `reason` / `todo` / `exclude` / `line` / `eslintOnly` / `notes`)と使い方は [docs/DYNAMODB_ACCESS.md](docs/DYNAMODB_ACCESS.md)
|
|
15
|
+
- **`@exabugs/dynamodb-client/eslint`**: `createDynamoDbGuardConfig({ allowlistPath, files?, message?, patterns? })`。同じ許可リストから、ESLint の flat config(`no-restricted-imports` と、許可するファイルの overrides)を返す。ESLint 自体は import しない
|
|
16
|
+
|
|
17
|
+
### Removed
|
|
18
|
+
|
|
19
|
+
- **MCP を削除した**: `dynamodb-mcp`(`bin`)、`@exabugs/dynamodb-client/mcp`(`exports`)、`generate-mcp-tools`、`@modelcontextprotocol/sdk`(依存)。利用者はいないと確認済み。破壊的変更だが、利用者がいないため minor とする
|
|
20
|
+
|
|
21
|
+
### 利用側(asanowa・astro・asaichi)の移行手順
|
|
22
|
+
|
|
23
|
+
3 リポジトリでコピーしていた検査スクリプト(`check-dynamodb-access.mjs`)と ESLint の生成(`eslint.dynamodb-guard.cjs`)を、このライブラリのものに置き換える。
|
|
24
|
+
|
|
25
|
+
1. `@exabugs/dynamodb-client` を 1.14.0 に上げる
|
|
26
|
+
2. 許可リストの JSON を、共通の形式にする: コードのエントリは `{ "file": "<パス>", "kind", "reason", "todo" }`(asanowa の `type: "code"` の `path` は `file` に)。Terraform のエントリは `{ "file": "<.tf のパス>", "terraform": "<resource 名>", ... }`(asanowa の `type: "iam"` の `path` / `resource`)。astro の `source` / `terraform`(ファイルごと・`imports` / `actions` の配列)は、ファイルごとに 1 エントリにする(import・アクション単位の許可はなくなる)
|
|
27
|
+
3. スクリプトの呼び出しを CLI にする。例(asanowa): `npx dynamodb-access-check --allowlist infra/scripts/dynamodb-access-allowlist.json --src . --tf . --ignore <旧スクリプトがあれば、そのパス>`。例(astro): `--src apps functions packages scripts --tf infra --ignore '**/__tests__/**' '**/generated/**' '**/*.test.*' '**/*.spec.*'`(テストを検査から外していた場合)
|
|
28
|
+
4. ESLint は `eslint.dynamodb-guard.cjs` を、`createDynamoDbGuardConfig({ allowlistPath })` に置き換える
|
|
29
|
+
5. 旧スクリプトと `eslint.dynamodb-guard.cjs` を削除する。旧スクリプトの結果と同じ(違反ゼロ、同じ警告)になることを確かめる
|
|
30
|
+
|
|
31
|
+
## [1.13.1] - 2026-10-16
|
|
32
|
+
|
|
33
|
+
### Fixed
|
|
34
|
+
|
|
35
|
+
- **sharp レイヤーの zip を再現可能にした**(`dist/sharp-layer.zip`): 同じ入力から常に同じバイト列を作る(mtime・エントリの順序・パーミッション・uid/gid などの追加フィールドを固定)。これまでは、中身が同じでも、ビルドのたびに zip のバイト列が変わり、Terraform の `aws_lambda_layer_version`(`source_code_hash = filebase64sha256(...)`)が、ライブラリの版を上げるたびに差分になっていた。`scripts/verify-reproducible-layer.sh` と CI で、2 回ビルドして一致することを確かめる。ランタイムの挙動は変わらない。**利用側への影響: 1.13.1 に最初に上げるときだけ、バイト列が 1.11.x / 1.13.0 と違うため、レイヤーが 1 回置き換わる(レイヤーに依存する Lambda、CloudFront 公開鍵、Lambda 権限なども連鎖して置き換わる)。それ以降は、版を上げてもレイヤーは置き換わらない**(sharp の版や、推移依存の中身が変わらない限り)
|
|
36
|
+
|
|
10
37
|
## [1.13.0] - 2026-10-16
|
|
11
38
|
|
|
12
39
|
### Added
|
package/README.md
CHANGED
|
@@ -570,7 +570,7 @@ We welcome contributions!
|
|
|
570
570
|
|
|
571
571
|
### OpenAPI-Driven Development
|
|
572
572
|
|
|
573
|
-
This project uses OpenAPI specification as the Single Source of Truth (SSOT) for
|
|
573
|
+
This project uses OpenAPI specification as the Single Source of Truth (SSOT) for TypeScript type definitions.
|
|
574
574
|
|
|
575
575
|
#### Workflow
|
|
576
576
|
|
|
@@ -581,11 +581,11 @@ This project uses OpenAPI specification as the Single Source of Truth (SSOT) for
|
|
|
581
581
|
vim docs/specs/openapi.yaml
|
|
582
582
|
```
|
|
583
583
|
|
|
584
|
-
2. **Generate
|
|
584
|
+
2. **Generate Types**
|
|
585
585
|
|
|
586
586
|
```bash
|
|
587
|
-
# Regenerate
|
|
588
|
-
npm run generate-
|
|
587
|
+
# Regenerate TypeScript types from OpenAPI spec
|
|
588
|
+
npm run generate-types
|
|
589
589
|
```
|
|
590
590
|
|
|
591
591
|
3. **Verify Changes**
|
|
@@ -599,17 +599,7 @@ This project uses OpenAPI specification as the Single Source of Truth (SSOT) for
|
|
|
599
599
|
|
|
600
600
|
- **Location**: `docs/specs/openapi.yaml`
|
|
601
601
|
- **Components**: `docs/specs/components/schemas/`
|
|
602
|
-
- **
|
|
603
|
-
- **Output**: `src/mcp/tools/generated.ts` (auto-generated, do not edit manually)
|
|
604
|
-
|
|
605
|
-
#### Key Design Principles
|
|
606
|
-
|
|
607
|
-
- **OpenAPI as SSOT**: All MCP tool definitions are derived from OpenAPI spec
|
|
608
|
-
- **Minimal Inference**: Generator extracts information directly from OpenAPI, avoiding complex inference logic
|
|
609
|
-
- **Type Safety**: Generated TypeScript code maintains full type safety
|
|
610
|
-
- **Consistency**: All tools follow the same structure and naming conventions
|
|
611
|
-
|
|
612
|
-
For more details, see the [OpenAPI to MCP Generator Spec](.kiro/specs/openapi-to-mcp-generator/design.md).
|
|
602
|
+
- **Output**: `src/__generated__/` (auto-generated, do not edit manually)
|
|
613
603
|
|
|
614
604
|
---
|
|
615
605
|
|
package/dist/server/handler.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
// @exabugs/dynamodb-client v1.
|
|
2
|
-
// Built: 2026-10-
|
|
1
|
+
// @exabugs/dynamodb-client v1.14.0
|
|
2
|
+
// Built: 2026-10-18T05:26:53.693Z
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
5
5
|
var __defProp = Object.defineProperty;
|
|
@@ -38980,7 +38980,7 @@ async function handler(event) {
|
|
|
38980
38980
|
return createCorsResponse(HTTP_STATUS.OK);
|
|
38981
38981
|
}
|
|
38982
38982
|
if (event.requestContext.http.method === "GET" && event.requestContext.http.path === "/version") {
|
|
38983
|
-
const version = "1.
|
|
38983
|
+
const version = "1.14.0";
|
|
38984
38984
|
return createSuccessResponse({ version, timestamp: (/* @__PURE__ */ new Date()).toISOString() }, requestId);
|
|
38985
38985
|
}
|
|
38986
38986
|
if (event.requestContext.http.method !== "POST") {
|