@superblocksteam/sdk-api 2.0.158 → 2.0.159-next.1
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/README.md +23 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/integrations/dynamodb/client.d.ts +6 -2
- package/dist/integrations/dynamodb/client.d.ts.map +1 -1
- package/dist/integrations/dynamodb/client.js +83 -10
- package/dist/integrations/dynamodb/client.js.map +1 -1
- package/dist/integrations/dynamodb/client.test.d.ts +8 -0
- package/dist/integrations/dynamodb/client.test.d.ts.map +1 -0
- package/dist/integrations/dynamodb/client.test.js +198 -0
- package/dist/integrations/dynamodb/client.test.js.map +1 -0
- package/dist/integrations/dynamodb/index.d.ts +1 -1
- package/dist/integrations/dynamodb/index.d.ts.map +1 -1
- package/dist/integrations/dynamodb/index.js.map +1 -1
- package/dist/integrations/dynamodb/types.d.ts +27 -1
- package/dist/integrations/dynamodb/types.d.ts.map +1 -1
- package/dist/integrations/index.d.ts +1 -1
- package/dist/integrations/index.d.ts.map +1 -1
- package/dist/integrations/index.js.map +1 -1
- package/dist/runtime/context.d.ts +6 -0
- package/dist/runtime/context.d.ts.map +1 -1
- package/dist/runtime/context.js +2 -1
- package/dist/runtime/context.js.map +1 -1
- package/dist/runtime/executor.d.ts +6 -0
- package/dist/runtime/executor.d.ts.map +1 -1
- package/dist/runtime/executor.js +1 -0
- package/dist/runtime/executor.js.map +1 -1
- package/dist/types.d.ts +10 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/index.ts +1 -0
- package/src/integrations/dynamodb/README.md +33 -12
- package/src/integrations/dynamodb/client.test.ts +254 -0
- package/src/integrations/dynamodb/client.ts +121 -16
- package/src/integrations/dynamodb/index.ts +5 -1
- package/src/integrations/dynamodb/types.ts +33 -1
- package/src/integrations/index.ts +1 -0
- package/src/runtime/context.ts +9 -0
- package/src/runtime/executor.ts +8 -0
- package/src/types.ts +11 -0
package/README.md
CHANGED
|
@@ -470,6 +470,29 @@ async run(ctx) {
|
|
|
470
470
|
}
|
|
471
471
|
```
|
|
472
472
|
|
|
473
|
+
#### `ctx.dataTag`
|
|
474
|
+
|
|
475
|
+
The canonical key of the requested data tag that Superblocks validated for the
|
|
476
|
+
current execution, such as `"staging"` or `"production"`. This identifies which
|
|
477
|
+
integration configuration is in use; it is not proof of a user's environment
|
|
478
|
+
entitlement. Combine it with `ctx.user` checks for authorization, and do not
|
|
479
|
+
accept a data tag through API input.
|
|
480
|
+
|
|
481
|
+
```typescript
|
|
482
|
+
async run(ctx) {
|
|
483
|
+
// Deny by default, including on older agents where dataTag is undefined.
|
|
484
|
+
if (ctx.dataTag !== "production") {
|
|
485
|
+
throw new Error("This API requires the production data tag");
|
|
486
|
+
}
|
|
487
|
+
// The data tag identifies the integration configuration. User access is
|
|
488
|
+
// checked independently.
|
|
489
|
+
assertPermissions(ctx.user.groups);
|
|
490
|
+
}
|
|
491
|
+
```
|
|
492
|
+
|
|
493
|
+
On agents that predate `ctx.dataTag`, the value is `undefined`. Authorization
|
|
494
|
+
checks must explicitly deny access for missing or unrecognized tags.
|
|
495
|
+
|
|
473
496
|
#### `ctx.user`
|
|
474
497
|
|
|
475
498
|
User information extracted from the Superblocks JWT. This is the **secure, server-side** way to access the current user's identity in API implementations. Never pass user information from the frontend as API input — always use `ctx.user` instead.
|
package/dist/index.d.ts
CHANGED
|
@@ -95,7 +95,7 @@ export type { TwilioClient } from "./integrations/twilio/index.js";
|
|
|
95
95
|
export type { ZendeskClient } from "./integrations/zendesk/index.js";
|
|
96
96
|
export type { ZoomClient } from "./integrations/zoom/index.js";
|
|
97
97
|
export type { GraphQLClient } from "./integrations/graphql/index.js";
|
|
98
|
-
export type { DynamoDBClient, DynamoDBAttributeValue, } from "./integrations/dynamodb/index.js";
|
|
98
|
+
export type { DynamoDBClient, DynamoDBAttributeValue, DynamoDBScanOptions, } from "./integrations/dynamodb/index.js";
|
|
99
99
|
export type { CosmosDBClient } from "./integrations/cosmosdb/index.js";
|
|
100
100
|
export type { SalesforceClient, SalesforceCrudAction, SalesforceBulkAction, } from "./integrations/salesforce/index.js";
|
|
101
101
|
export type { S3Client } from "./integrations/s3/index.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AAEH,gCAAgC;AAChC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,2BAA2B;AAC3B,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAG/D,8BAA8B;AAC9B,OAAO,EAAE,GAAG,EAAE,eAAe,EAAoB,MAAM,gBAAgB,CAAC;AAiBxE,oCAAoC;AACpC,OAAO,EACL,QAAQ,EACR,KAAK,EACL,MAAM,EACN,SAAS,EACT,MAAM,EACN,MAAM,EACN,MAAM,EACN,SAAS,EACT,eAAe,EACf,QAAQ,EACR,KAAK,EACL,SAAS,EACT,GAAG,EACH,QAAQ,EACR,MAAM,EACN,UAAU,EACV,OAAO,EACP,OAAO,EACP,aAAa,EACb,SAAS,EACT,KAAK,EACL,MAAM,EACN,eAAe,EACf,WAAW,EACX,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,IAAI,EACJ,YAAY,EACZ,OAAO,EACP,SAAS,EACT,UAAU,EACV,OAAO,EACP,QAAQ,EACR,WAAW,EACX,MAAM,EACN,OAAO,EACP,IAAI,EACJ,OAAO,EACP,KAAK,EACL,OAAO,EACP,KAAK,EACL,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,UAAU,EACV,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,EAAE,EACF,GAAG,EACH,YAAY,EACZ,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,0BAA0B,EAC1B,QAAQ,EACR,iBAAiB,EACjB,IAAI,GA+DL,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AAEH,gCAAgC;AAChC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,2BAA2B;AAC3B,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAG/D,8BAA8B;AAC9B,OAAO,EAAE,GAAG,EAAE,eAAe,EAAoB,MAAM,gBAAgB,CAAC;AAiBxE,oCAAoC;AACpC,OAAO,EACL,QAAQ,EACR,KAAK,EACL,MAAM,EACN,SAAS,EACT,MAAM,EACN,MAAM,EACN,MAAM,EACN,SAAS,EACT,eAAe,EACf,QAAQ,EACR,KAAK,EACL,SAAS,EACT,GAAG,EACH,QAAQ,EACR,MAAM,EACN,UAAU,EACV,OAAO,EACP,OAAO,EACP,aAAa,EACb,SAAS,EACT,KAAK,EACL,MAAM,EACN,eAAe,EACf,WAAW,EACX,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,IAAI,EACJ,YAAY,EACZ,OAAO,EACP,SAAS,EACT,UAAU,EACV,OAAO,EACP,QAAQ,EACR,WAAW,EACX,MAAM,EACN,OAAO,EACP,IAAI,EACJ,OAAO,EACP,KAAK,EACL,OAAO,EACP,KAAK,EACL,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,UAAU,EACV,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,EAAE,EACF,GAAG,EACH,YAAY,EACZ,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,0BAA0B,EAC1B,QAAQ,EACR,iBAAiB,EACjB,IAAI,GA+DL,MAAM,yBAAyB,CAAC;AA+DjC,iCAAiC;AACjC,OAAO;AACL,WAAW;AACX,UAAU;AACV,oBAAoB;AACpB,gBAAgB;AAChB,cAAc;AACd,QAAQ,EACR,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,gBAAgB,EAChB,cAAc,EACd,SAAS,GACV,MAAM,oBAAoB,CAAC;AAY5B,8CAA8C;AAC9C,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,yBAAyB,CAAC;AAWjC,yEAAyE;AACzE,gFAAgF;AAChF,8FAA8F;AAE9F,wBAAwB;AACxB,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,aAAa,CAAC"}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
import type { z } from "zod";
|
|
9
9
|
import type { QueryExecutor, TraceMetadata } from "../registry.js";
|
|
10
10
|
import type { IntegrationConfig, IntegrationClientImpl } from "../types.js";
|
|
11
|
-
import type { DynamoDBClient, DynamoDBAttributeValue } from "./types.js";
|
|
11
|
+
import type { DynamoDBClient, DynamoDBAttributeValue, DynamoDBScanOptions } from "./types.js";
|
|
12
12
|
/**
|
|
13
13
|
* Internal implementation of DynamoDBClient.
|
|
14
14
|
*
|
|
@@ -44,7 +44,11 @@ export declare class DynamoDBClientImpl implements DynamoDBClient, IntegrationCl
|
|
|
44
44
|
putItem(table: string, item: Record<string, DynamoDBAttributeValue>, metadata?: TraceMetadata): Promise<unknown>;
|
|
45
45
|
updateItem(table: string, key: Record<string, DynamoDBAttributeValue>, updateExpression: string, expressionAttributeValues: Record<string, DynamoDBAttributeValue>, expressionAttributeNames?: Record<string, string>, metadata?: TraceMetadata): Promise<unknown>;
|
|
46
46
|
deleteItem(table: string, key: Record<string, DynamoDBAttributeValue>, metadata?: TraceMetadata): Promise<unknown>;
|
|
47
|
-
|
|
47
|
+
/** Copy optional AWS Scan fields onto the request body. */
|
|
48
|
+
private applyScanParams;
|
|
49
|
+
private isScanOptions;
|
|
50
|
+
private isTraceMetadata;
|
|
51
|
+
scan<T>(table: string, schema: z.ZodSchema<T>, filterExpressionOrOptions?: string | DynamoDBScanOptions, expressionAttributeValuesOrMetadata?: Record<string, DynamoDBAttributeValue> | TraceMetadata, expressionAttributeNames?: Record<string, string>, metadata?: TraceMetadata): Promise<T>;
|
|
48
52
|
queryTable<T>(table: string, keyConditionExpression: string, expressionAttributeValues: Record<string, DynamoDBAttributeValue>, schema: z.ZodSchema<T>, expressionAttributeNames?: Record<string, string>, metadata?: TraceMetadata): Promise<T>;
|
|
49
53
|
batchWriteItem(requestItems: Record<string, Array<Record<string, unknown>>>, metadata?: TraceMetadata): Promise<unknown>;
|
|
50
54
|
listTables<T>(schema: z.ZodSchema<T>, metadata?: TraceMetadata): Promise<T>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/integrations/dynamodb/client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAI7B,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/integrations/dynamodb/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,17 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { RestApiValidationError } from "../../errors.js";
|
|
9
9
|
import { IntegrationError } from "../../runtime/errors.js";
|
|
10
|
+
const DYNAMODB_SCAN_OPTION_KEYS = new Set([
|
|
11
|
+
"filterExpression",
|
|
12
|
+
"expressionAttributeValues",
|
|
13
|
+
"expressionAttributeNames",
|
|
14
|
+
"exclusiveStartKey",
|
|
15
|
+
"limit",
|
|
16
|
+
"projectionExpression",
|
|
17
|
+
"indexName",
|
|
18
|
+
"segment",
|
|
19
|
+
"totalSegments",
|
|
20
|
+
]);
|
|
10
21
|
/**
|
|
11
22
|
* Internal implementation of DynamoDBClient.
|
|
12
23
|
*
|
|
@@ -113,19 +124,80 @@ export class DynamoDBClientImpl {
|
|
|
113
124
|
});
|
|
114
125
|
return this.executeWithErrorHandling(request, "deleteItem", metadata);
|
|
115
126
|
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
if (filterExpression) {
|
|
119
|
-
params.FilterExpression = filterExpression;
|
|
127
|
+
/** Copy optional AWS Scan fields onto the request body. */
|
|
128
|
+
applyScanParams(params, options) {
|
|
129
|
+
if (options.filterExpression) {
|
|
130
|
+
params.FilterExpression = options.filterExpression;
|
|
120
131
|
}
|
|
121
|
-
if (expressionAttributeValues
|
|
122
|
-
|
|
132
|
+
if (options.expressionAttributeValues &&
|
|
133
|
+
Object.keys(options.expressionAttributeValues).length > 0) {
|
|
134
|
+
params.ExpressionAttributeValues = options.expressionAttributeValues;
|
|
123
135
|
}
|
|
124
|
-
if (expressionAttributeNames
|
|
125
|
-
|
|
136
|
+
if (options.expressionAttributeNames &&
|
|
137
|
+
Object.keys(options.expressionAttributeNames).length > 0) {
|
|
138
|
+
params.ExpressionAttributeNames = options.expressionAttributeNames;
|
|
139
|
+
}
|
|
140
|
+
if (options.exclusiveStartKey) {
|
|
141
|
+
params.ExclusiveStartKey = options.exclusiveStartKey;
|
|
142
|
+
}
|
|
143
|
+
if (options.limit !== undefined) {
|
|
144
|
+
params.Limit = options.limit;
|
|
145
|
+
}
|
|
146
|
+
if (options.projectionExpression) {
|
|
147
|
+
params.ProjectionExpression = options.projectionExpression;
|
|
148
|
+
}
|
|
149
|
+
if (options.indexName) {
|
|
150
|
+
params.IndexName = options.indexName;
|
|
151
|
+
}
|
|
152
|
+
if (options.segment !== undefined) {
|
|
153
|
+
params.Segment = options.segment;
|
|
154
|
+
}
|
|
155
|
+
if (options.totalSegments !== undefined) {
|
|
156
|
+
params.TotalSegments = options.totalSegments;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
isScanOptions(value) {
|
|
160
|
+
return (typeof value === "object" &&
|
|
161
|
+
value !== null &&
|
|
162
|
+
Object.keys(value).every((key) => DYNAMODB_SCAN_OPTION_KEYS.has(key)));
|
|
163
|
+
}
|
|
164
|
+
isTraceMetadata(value) {
|
|
165
|
+
return (typeof value === "object" &&
|
|
166
|
+
value !== null &&
|
|
167
|
+
Object.keys(value).every((key) => key === "label" || key === "description") &&
|
|
168
|
+
Object.values(value).every((entry) => entry === undefined || typeof entry === "string"));
|
|
169
|
+
}
|
|
170
|
+
async scan(table, schema, filterExpressionOrOptions, expressionAttributeValuesOrMetadata, expressionAttributeNames, metadata) {
|
|
171
|
+
const params = { TableName: table };
|
|
172
|
+
let resolvedMetadata = metadata;
|
|
173
|
+
if (typeof filterExpressionOrOptions === "object" &&
|
|
174
|
+
filterExpressionOrOptions !== null) {
|
|
175
|
+
if (!this.isScanOptions(filterExpressionOrOptions)) {
|
|
176
|
+
throw new Error(`Invalid DynamoDB scan options: ${Object.keys(filterExpressionOrOptions).join(", ")}`);
|
|
177
|
+
}
|
|
178
|
+
this.applyScanParams(params, filterExpressionOrOptions);
|
|
179
|
+
if (expressionAttributeValuesOrMetadata !== undefined) {
|
|
180
|
+
if (!this.isTraceMetadata(expressionAttributeValuesOrMetadata)) {
|
|
181
|
+
throw new Error("Invalid DynamoDB scan trace metadata");
|
|
182
|
+
}
|
|
183
|
+
resolvedMetadata = expressionAttributeValuesOrMetadata;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
if (filterExpressionOrOptions) {
|
|
188
|
+
params.FilterExpression = filterExpressionOrOptions;
|
|
189
|
+
}
|
|
190
|
+
if (expressionAttributeValuesOrMetadata &&
|
|
191
|
+
Object.keys(expressionAttributeValuesOrMetadata).length > 0) {
|
|
192
|
+
params.ExpressionAttributeValues = expressionAttributeValuesOrMetadata;
|
|
193
|
+
}
|
|
194
|
+
if (expressionAttributeNames &&
|
|
195
|
+
Object.keys(expressionAttributeNames).length > 0) {
|
|
196
|
+
params.ExpressionAttributeNames = expressionAttributeNames;
|
|
197
|
+
}
|
|
126
198
|
}
|
|
127
199
|
const request = this.buildRequest("scan", params);
|
|
128
|
-
const result = await this.executeWithErrorHandling(request, "scan",
|
|
200
|
+
const result = await this.executeWithErrorHandling(request, "scan", resolvedMetadata);
|
|
129
201
|
return this.validateResult(result, schema, "scan");
|
|
130
202
|
}
|
|
131
203
|
async queryTable(table, keyConditionExpression, expressionAttributeValues, schema, expressionAttributeNames, metadata) {
|
|
@@ -134,7 +206,8 @@ export class DynamoDBClientImpl {
|
|
|
134
206
|
KeyConditionExpression: keyConditionExpression,
|
|
135
207
|
ExpressionAttributeValues: expressionAttributeValues,
|
|
136
208
|
};
|
|
137
|
-
if (expressionAttributeNames
|
|
209
|
+
if (expressionAttributeNames &&
|
|
210
|
+
Object.keys(expressionAttributeNames).length > 0) {
|
|
138
211
|
params.ExpressionAttributeNames = expressionAttributeNames;
|
|
139
212
|
}
|
|
140
213
|
const request = this.buildRequest("query", params);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/integrations/dynamodb/client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/integrations/dynamodb/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unit tests for DynamoDB client request bodies.
|
|
3
|
+
*
|
|
4
|
+
* The orchestrator forwards `action` + JSON `body` to the AWS SDK, so these
|
|
5
|
+
* tests lock the wire params - especially ExclusiveStartKey pagination.
|
|
6
|
+
*/
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=client.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.test.d.ts","sourceRoot":"","sources":["../../../src/integrations/dynamodb/client.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unit tests for DynamoDB client request bodies.
|
|
3
|
+
*
|
|
4
|
+
* The orchestrator forwards `action` + JSON `body` to the AWS SDK, so these
|
|
5
|
+
* tests lock the wire params - especially ExclusiveStartKey pagination.
|
|
6
|
+
*/
|
|
7
|
+
import { describe, it, expect, vi } from "vitest";
|
|
8
|
+
import { z } from "zod";
|
|
9
|
+
import { DynamoDBClientImpl } from "./client.js";
|
|
10
|
+
const TEST_CONFIG = {
|
|
11
|
+
id: "dynamodb-test-id",
|
|
12
|
+
name: "Test DynamoDB",
|
|
13
|
+
pluginId: "dynamodb",
|
|
14
|
+
configuration: {},
|
|
15
|
+
};
|
|
16
|
+
const ItemsSchema = z.object({ Items: z.array(z.unknown()).optional() });
|
|
17
|
+
function createClient(mockResult = { Items: [] }) {
|
|
18
|
+
const executeQuery = vi.fn().mockResolvedValue(mockResult);
|
|
19
|
+
const client = new DynamoDBClientImpl(TEST_CONFIG, executeQuery);
|
|
20
|
+
return { client, executeQuery };
|
|
21
|
+
}
|
|
22
|
+
function parsedBody(executeQuery, callIndex = 0) {
|
|
23
|
+
const request = z
|
|
24
|
+
.object({ action: z.string(), body: z.string() })
|
|
25
|
+
.parse(executeQuery.mock.calls[callIndex]?.[0]);
|
|
26
|
+
return { action: request.action, body: JSON.parse(request.body) };
|
|
27
|
+
}
|
|
28
|
+
describe("DynamoDBClientImpl", () => {
|
|
29
|
+
describe("scan", () => {
|
|
30
|
+
it("omits ExclusiveStartKey on a positional scan", async () => {
|
|
31
|
+
const { client, executeQuery } = createClient();
|
|
32
|
+
await client.scan("retailers", ItemsSchema, "status = :s", {
|
|
33
|
+
":s": { S: "active" },
|
|
34
|
+
});
|
|
35
|
+
expect(parsedBody(executeQuery)).toEqual({
|
|
36
|
+
action: "scan",
|
|
37
|
+
body: {
|
|
38
|
+
TableName: "retailers",
|
|
39
|
+
FilterExpression: "status = :s",
|
|
40
|
+
ExpressionAttributeValues: { ":s": { S: "active" } },
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
it("forwards ExclusiveStartKey from the options object", async () => {
|
|
45
|
+
const { client, executeQuery } = createClient();
|
|
46
|
+
const exclusiveStartKey = { id: { S: "retailer-18" } };
|
|
47
|
+
await client.scan("retailers", ItemsSchema, { exclusiveStartKey });
|
|
48
|
+
expect(parsedBody(executeQuery)).toEqual({
|
|
49
|
+
action: "scan",
|
|
50
|
+
body: {
|
|
51
|
+
TableName: "retailers",
|
|
52
|
+
ExclusiveStartKey: exclusiveStartKey,
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
it("treats an empty object as empty scan options", async () => {
|
|
57
|
+
const { client, executeQuery } = createClient();
|
|
58
|
+
await client.scan("retailers", ItemsSchema, {});
|
|
59
|
+
expect(parsedBody(executeQuery)).toEqual({
|
|
60
|
+
action: "scan",
|
|
61
|
+
body: { TableName: "retailers" },
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
it("rejects objects with unknown scan option keys", async () => {
|
|
65
|
+
const { client, executeQuery } = createClient();
|
|
66
|
+
await expect(Reflect.apply(client.scan, client, [
|
|
67
|
+
"retailers",
|
|
68
|
+
ItemsSchema,
|
|
69
|
+
{ label: "not scan options" },
|
|
70
|
+
])).rejects.toThrow("Invalid DynamoDB scan options: label");
|
|
71
|
+
expect(executeQuery).not.toHaveBeenCalled();
|
|
72
|
+
});
|
|
73
|
+
it("forwards pagination and parallel-scan options", async () => {
|
|
74
|
+
const { client, executeQuery } = createClient();
|
|
75
|
+
await client.scan("retailers", ItemsSchema, {
|
|
76
|
+
exclusiveStartKey: { id: { S: "page-2" } },
|
|
77
|
+
limit: 25,
|
|
78
|
+
projectionExpression: "id, name",
|
|
79
|
+
indexName: "gsi1",
|
|
80
|
+
segment: 0,
|
|
81
|
+
totalSegments: 4,
|
|
82
|
+
filterExpression: "#s = :s",
|
|
83
|
+
expressionAttributeNames: { "#s": "status" },
|
|
84
|
+
expressionAttributeValues: { ":s": { S: "active" } },
|
|
85
|
+
}, { label: "page retailers" });
|
|
86
|
+
expect(parsedBody(executeQuery)).toEqual({
|
|
87
|
+
action: "scan",
|
|
88
|
+
body: {
|
|
89
|
+
TableName: "retailers",
|
|
90
|
+
ExclusiveStartKey: { id: { S: "page-2" } },
|
|
91
|
+
Limit: 25,
|
|
92
|
+
ProjectionExpression: "id, name",
|
|
93
|
+
IndexName: "gsi1",
|
|
94
|
+
Segment: 0,
|
|
95
|
+
TotalSegments: 4,
|
|
96
|
+
FilterExpression: "#s = :s",
|
|
97
|
+
ExpressionAttributeNames: { "#s": "status" },
|
|
98
|
+
ExpressionAttributeValues: { ":s": { S: "active" } },
|
|
99
|
+
},
|
|
100
|
+
});
|
|
101
|
+
expect(executeQuery).toHaveBeenCalledWith(expect.anything(), undefined, {
|
|
102
|
+
label: "page retailers",
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
it("keeps positional names and metadata working together", async () => {
|
|
106
|
+
const { client, executeQuery } = createClient();
|
|
107
|
+
await client.scan("retailers", ItemsSchema, "#s = :s", { ":s": { S: "active" } }, { "#s": "status" }, { label: "filtered scan" });
|
|
108
|
+
expect(parsedBody(executeQuery).body).toEqual({
|
|
109
|
+
TableName: "retailers",
|
|
110
|
+
FilterExpression: "#s = :s",
|
|
111
|
+
ExpressionAttributeValues: { ":s": { S: "active" } },
|
|
112
|
+
ExpressionAttributeNames: { "#s": "status" },
|
|
113
|
+
});
|
|
114
|
+
expect(executeQuery.mock.calls[0][2]).toEqual({ label: "filtered scan" });
|
|
115
|
+
});
|
|
116
|
+
it("keeps schemas that strip pagination cursors backward compatible", async () => {
|
|
117
|
+
const lastEvaluatedKey = {
|
|
118
|
+
id: { S: "retailer-18" },
|
|
119
|
+
version: { N: "2" },
|
|
120
|
+
};
|
|
121
|
+
const { client } = createClient({
|
|
122
|
+
Items: [{ id: { S: "retailer-1" } }],
|
|
123
|
+
LastEvaluatedKey: lastEvaluatedKey,
|
|
124
|
+
});
|
|
125
|
+
await expect(client.scan("retailers", ItemsSchema, { limit: 25 })).resolves.toEqual({
|
|
126
|
+
Items: [{ id: { S: "retailer-1" } }],
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
it("preserves mixed AttributeValue pagination cursors", async () => {
|
|
130
|
+
const lastEvaluatedKey = {
|
|
131
|
+
id: { S: "retailer-18" },
|
|
132
|
+
version: { N: "2" },
|
|
133
|
+
};
|
|
134
|
+
const PageSchema = z.object({
|
|
135
|
+
Items: z.array(z.unknown()).optional(),
|
|
136
|
+
LastEvaluatedKey: z.record(z.unknown()).optional(),
|
|
137
|
+
});
|
|
138
|
+
const { client } = createClient({
|
|
139
|
+
Items: [],
|
|
140
|
+
LastEvaluatedKey: lastEvaluatedKey,
|
|
141
|
+
});
|
|
142
|
+
const page = await client.scan("retailers", PageSchema, {});
|
|
143
|
+
expect(page.LastEvaluatedKey).toEqual(lastEvaluatedKey);
|
|
144
|
+
});
|
|
145
|
+
it("threads each returned pagination cursor into the next request", async () => {
|
|
146
|
+
const LastEvaluatedKeySchema = z.object({
|
|
147
|
+
id: z.object({ S: z.string() }),
|
|
148
|
+
});
|
|
149
|
+
const PageSchema = z.object({
|
|
150
|
+
Items: z.array(z.string()),
|
|
151
|
+
LastEvaluatedKey: LastEvaluatedKeySchema.optional(),
|
|
152
|
+
});
|
|
153
|
+
const lastEvaluatedKey = { id: { S: "retailer-1" } };
|
|
154
|
+
const executeQuery = vi
|
|
155
|
+
.fn()
|
|
156
|
+
.mockResolvedValueOnce({
|
|
157
|
+
Items: ["retailer-1"],
|
|
158
|
+
LastEvaluatedKey: lastEvaluatedKey,
|
|
159
|
+
})
|
|
160
|
+
.mockResolvedValueOnce({ Items: ["retailer-2"] });
|
|
161
|
+
const client = new DynamoDBClientImpl(TEST_CONFIG, executeQuery);
|
|
162
|
+
const items = [];
|
|
163
|
+
let exclusiveStartKey;
|
|
164
|
+
do {
|
|
165
|
+
const page = await client.scan("retailers", PageSchema, {
|
|
166
|
+
exclusiveStartKey,
|
|
167
|
+
});
|
|
168
|
+
items.push(...page.Items);
|
|
169
|
+
exclusiveStartKey = page.LastEvaluatedKey;
|
|
170
|
+
} while (exclusiveStartKey);
|
|
171
|
+
expect(items).toEqual(["retailer-1", "retailer-2"]);
|
|
172
|
+
expect(executeQuery).toHaveBeenCalledTimes(2);
|
|
173
|
+
expect(parsedBody(executeQuery, 0).body).toEqual({
|
|
174
|
+
TableName: "retailers",
|
|
175
|
+
});
|
|
176
|
+
expect(parsedBody(executeQuery, 1).body).toEqual({
|
|
177
|
+
TableName: "retailers",
|
|
178
|
+
ExclusiveStartKey: lastEvaluatedKey,
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
});
|
|
182
|
+
describe("queryTable", () => {
|
|
183
|
+
it("treats a plain names map as ExpressionAttributeNames", async () => {
|
|
184
|
+
const { client, executeQuery } = createClient();
|
|
185
|
+
await client.queryTable("orders", "#uid = :uid", { ":uid": { S: "user-123" } }, ItemsSchema, { "#uid": "userId" });
|
|
186
|
+
expect(parsedBody(executeQuery)).toEqual({
|
|
187
|
+
action: "query",
|
|
188
|
+
body: {
|
|
189
|
+
TableName: "orders",
|
|
190
|
+
KeyConditionExpression: "#uid = :uid",
|
|
191
|
+
ExpressionAttributeValues: { ":uid": { S: "user-123" } },
|
|
192
|
+
ExpressionAttributeNames: { "#uid": "userId" },
|
|
193
|
+
},
|
|
194
|
+
});
|
|
195
|
+
});
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
//# sourceMappingURL=client.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.test.js","sourceRoot":"","sources":["../../../src/integrations/dynamodb/client.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @module
|
|
5
5
|
*/
|
|
6
|
-
export type { DynamoDBClient, DynamoDBAttributeValue } from "./types.js";
|
|
6
|
+
export type { DynamoDBClient, DynamoDBAttributeValue, DynamoDBScanOptions, } from "./types.js";
|
|
7
7
|
export { DynamoDBClientImpl } from "./client.js";
|
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/integrations/dynamodb/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/integrations/dynamodb/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EACV,cAAc,EACd,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/integrations/dynamodb/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/integrations/dynamodb/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -43,6 +43,23 @@ export type DynamoDBAttributeValue = {
|
|
|
43
43
|
} | {
|
|
44
44
|
BS: string[];
|
|
45
45
|
};
|
|
46
|
+
/**
|
|
47
|
+
* Optional Scan parameters forwarded to the AWS SDK.
|
|
48
|
+
*
|
|
49
|
+
* Use `exclusiveStartKey` with `LastEvaluatedKey` from a previous page to
|
|
50
|
+
* continue past DynamoDB's 1 MB per-Scan limit.
|
|
51
|
+
*/
|
|
52
|
+
export interface DynamoDBScanOptions {
|
|
53
|
+
filterExpression?: string;
|
|
54
|
+
expressionAttributeValues?: Record<string, DynamoDBAttributeValue>;
|
|
55
|
+
expressionAttributeNames?: Record<string, string>;
|
|
56
|
+
exclusiveStartKey?: Record<string, DynamoDBAttributeValue>;
|
|
57
|
+
limit?: number;
|
|
58
|
+
projectionExpression?: string;
|
|
59
|
+
indexName?: string;
|
|
60
|
+
segment?: number;
|
|
61
|
+
totalSegments?: number;
|
|
62
|
+
}
|
|
46
63
|
/**
|
|
47
64
|
* DynamoDB client for database operations.
|
|
48
65
|
*
|
|
@@ -90,6 +107,11 @@ export type DynamoDBAttributeValue = {
|
|
|
90
107
|
* 'status = :s',
|
|
91
108
|
* { ':s': { S: 'active' } }
|
|
92
109
|
* );
|
|
110
|
+
*
|
|
111
|
+
* // Paginate past the 1 MB Scan limit
|
|
112
|
+
* const page = await ctx.integrations.db.scan('users', UsersSchema, {
|
|
113
|
+
* exclusiveStartKey: lastEvaluatedKey,
|
|
114
|
+
* });
|
|
93
115
|
* ```
|
|
94
116
|
*/
|
|
95
117
|
export interface DynamoDBClient extends BaseIntegrationClient {
|
|
@@ -116,7 +138,10 @@ export interface DynamoDBClient extends BaseIntegrationClient {
|
|
|
116
138
|
*/
|
|
117
139
|
getItem<T>(table: string, key: Record<string, DynamoDBAttributeValue>, schema: z.ZodSchema<T>, metadata?: TraceMetadata): Promise<T>;
|
|
118
140
|
/**
|
|
119
|
-
* Scan a DynamoDB table
|
|
141
|
+
* Scan a DynamoDB table.
|
|
142
|
+
*
|
|
143
|
+
* Prefer the options-object form when paginating (`exclusiveStartKey`) or
|
|
144
|
+
* when you need `limit`, `indexName`, or parallel scan segments.
|
|
120
145
|
*
|
|
121
146
|
* @param table - The table name
|
|
122
147
|
* @param schema - Zod schema for validating the result
|
|
@@ -127,6 +152,7 @@ export interface DynamoDBClient extends BaseIntegrationClient {
|
|
|
127
152
|
* @param metadata - Optional trace metadata for diagnostics
|
|
128
153
|
* @returns The validated result
|
|
129
154
|
*/
|
|
155
|
+
scan<T>(table: string, schema: z.ZodSchema<T>, options: DynamoDBScanOptions, metadata?: TraceMetadata): Promise<T>;
|
|
130
156
|
scan<T>(table: string, schema: z.ZodSchema<T>, filterExpression?: string, expressionAttributeValues?: Record<string, DynamoDBAttributeValue>, expressionAttributeNames?: Record<string, string>, metadata?: TraceMetadata): Promise<T>;
|
|
131
157
|
/**
|
|
132
158
|
* Query a DynamoDB table or index using key conditions.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/integrations/dynamodb/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,sBAAsB,GAC9B;IAAE,CAAC,EAAE,MAAM,CAAA;CAAE,GACb;IAAE,CAAC,EAAE,MAAM,CAAA;CAAE,GACb;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,GACd;IAAE,CAAC,EAAE,sBAAsB,EAAE,CAAA;CAAE,GAC/B;IAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAA;CAAE,GAC7C;IAAE,CAAC,EAAE,MAAM,CAAA;CAAE,GACb;IAAE,EAAE,EAAE,MAAM,EAAE,CAAA;CAAE,GAChB;IAAE,EAAE,EAAE,MAAM,EAAE,CAAA;CAAE,GAChB;IAAE,EAAE,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAErB
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/integrations/dynamodb/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -105,7 +105,7 @@ export type { BigQueryClient } from "./bigquery/index.js";
|
|
|
105
105
|
export { BigQueryClientImpl } from "./bigquery/index.js";
|
|
106
106
|
export type { MongoDBClient, MongoDBAction, MongoDBParams, } from "./mongodb/index.js";
|
|
107
107
|
export { MongoDBClientImpl } from "./mongodb/index.js";
|
|
108
|
-
export type { DynamoDBClient, DynamoDBAttributeValue, } from "./dynamodb/index.js";
|
|
108
|
+
export type { DynamoDBClient, DynamoDBAttributeValue, DynamoDBScanOptions, } from "./dynamodb/index.js";
|
|
109
109
|
export { DynamoDBClientImpl } from "./dynamodb/index.js";
|
|
110
110
|
export type { CosmosDBClient, CosmosDBQueryOptions } from "./cosmosdb/index.js";
|
|
111
111
|
export { CosmosDBClientImpl } from "./cosmosdb/index.js";
|