Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@datastream/aws

Package Overview
Dependencies
Maintainers
1
Versions
47
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@datastream/aws - npm Package Compare versions

Comparing version
0.3.0
to
0.3.1
+3
-3
cloudwatch-logs.d.ts
// Copyright 2026 will Farrell, and datastream contributors.
// SPDX-License-Identifier: MIT
import type { StreamOptions } from "@datastream/core";
import type { DatastreamReadable, StreamOptions } from "@datastream/core";

@@ -21,3 +21,3 @@ export function awsCloudWatchLogsSetClient(cwlClient: unknown): void;

streamOptions?: StreamOptions,
): Promise<unknown>;
): Promise<DatastreamReadable>;

@@ -37,2 +37,2 @@ export function awsCloudWatchLogsFilterLogEventsStream(

streamOptions?: StreamOptions,
): Promise<unknown>;
): Promise<DatastreamReadable>;

@@ -11,10 +11,12 @@ import {

};
const awsCloudWatchLogsGetLogEventsStream = async (options, _streamOptions = {}) => {
const awsCloudWatchLogsGetLogEventsStream = async (options, streamOptions = {}) => {
const { pollingActive, pollingDelay = 1e3, ...cwlOptions } = options;
cwlOptions.startFromHead ??= true;
async function* command(options2) {
async function* command(opts) {
let previousToken;
let expectMore = true;
while (expectMore) {
const response = await client.send(new GetLogEventsCommand(options2));
const response = await client.send(new GetLogEventsCommand(opts), {
abortSignal: streamOptions.signal
});
const events = response.events ?? [];

@@ -24,5 +26,5 @@ for (const item of events) {

}
const tokenUnchanged = response.nextForwardToken === previousToken || response.nextForwardToken === options2.nextToken;
const tokenUnchanged = response.nextForwardToken === previousToken || response.nextForwardToken === opts.nextToken;
previousToken = response.nextForwardToken;
options2.nextToken = response.nextForwardToken;
opts.nextToken = response.nextForwardToken;
if (tokenUnchanged) {

@@ -39,17 +41,19 @@ if (pollingActive) {

}
return command(cwlOptions);
return command({ ...cwlOptions });
};
const awsCloudWatchLogsFilterLogEventsStream = async (options, _streamOptions = {}) => {
async function* command(options2) {
const awsCloudWatchLogsFilterLogEventsStream = async (options, streamOptions = {}) => {
async function* command(opts) {
let expectMore = true;
while (expectMore) {
const response = await client.send(new FilterLogEventsCommand(options2));
const response = await client.send(new FilterLogEventsCommand(opts), {
abortSignal: streamOptions.signal
});
for (const item of response.events ?? []) {
yield item;
}
options2.nextToken = response.nextToken;
opts.nextToken = response.nextToken;
expectMore = !!response.nextToken;
}
}
return command(options);
return command({ ...options });
};

@@ -56,0 +60,0 @@ var cloudwatch_logs_default = {

{
"version": 3,
"sources": ["cloudwatch-logs.js"],
"sourcesContent": ["// Copyright 2026 will Farrell, and datastream contributors.\n// SPDX-License-Identifier: MIT\nimport {\n\tCloudWatchLogsClient,\n\tFilterLogEventsCommand,\n\tGetLogEventsCommand,\n} from \"@aws-sdk/client-cloudwatch-logs\";\nimport { awsClientDefaults } from \"./client.js\";\n\nlet client = new CloudWatchLogsClient(awsClientDefaults);\nexport const awsCloudWatchLogsSetClient = (cwlClient) => {\n\tclient = cwlClient;\n};\n\nexport const awsCloudWatchLogsGetLogEventsStream = async (\n\toptions,\n\t_streamOptions = {},\n) => {\n\tconst { pollingActive, pollingDelay = 1000, ...cwlOptions } = options;\n\tcwlOptions.startFromHead ??= true;\n\tasync function* command(options) {\n\t\tlet previousToken;\n\t\tlet expectMore = true;\n\t\twhile (expectMore) {\n\t\t\tconst response = await client.send(new GetLogEventsCommand(options));\n\t\t\tconst events = response.events ?? [];\n\t\t\tfor (const item of events) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t\tconst tokenUnchanged =\n\t\t\t\tresponse.nextForwardToken === previousToken ||\n\t\t\t\tresponse.nextForwardToken === options.nextToken;\n\t\t\tpreviousToken = response.nextForwardToken;\n\t\t\toptions.nextToken = response.nextForwardToken;\n\n\t\t\tif (tokenUnchanged) {\n\t\t\t\tif (pollingActive) {\n\t\t\t\t\tif (pollingDelay > 0) {\n\t\t\t\t\t\tawait new Promise((resolve) => setTimeout(resolve, pollingDelay));\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\texpectMore = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn command(cwlOptions);\n};\n\nexport const awsCloudWatchLogsFilterLogEventsStream = async (\n\toptions,\n\t_streamOptions = {},\n) => {\n\tasync function* command(options) {\n\t\tlet expectMore = true;\n\t\twhile (expectMore) {\n\t\t\tconst response = await client.send(new FilterLogEventsCommand(options));\n\t\t\tfor (const item of response.events ?? []) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t\toptions.nextToken = response.nextToken;\n\t\t\texpectMore = !!response.nextToken;\n\t\t}\n\t}\n\treturn command(options);\n};\n\nexport default {\n\tsetClient: awsCloudWatchLogsSetClient,\n\tgetLogEventsStream: awsCloudWatchLogsGetLogEventsStream,\n\tfilterLogEventsStream: awsCloudWatchLogsFilterLogEventsStream,\n};\n"],
"mappings": "AAEA;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,yBAAyB;AAElC,IAAI,SAAS,IAAI,qBAAqB,iBAAiB;AAChD,MAAM,6BAA6B,CAAC,cAAc;AACxD,WAAS;AACV;AAEO,MAAM,sCAAsC,OAClD,SACA,iBAAiB,CAAC,MACd;AACJ,QAAM,EAAE,eAAe,eAAe,KAAM,GAAG,WAAW,IAAI;AAC9D,aAAW,kBAAkB;AAC7B,kBAAgB,QAAQA,UAAS;AAChC,QAAI;AACJ,QAAI,aAAa;AACjB,WAAO,YAAY;AAClB,YAAM,WAAW,MAAM,OAAO,KAAK,IAAI,oBAAoBA,QAAO,CAAC;AACnE,YAAM,SAAS,SAAS,UAAU,CAAC;AACnC,iBAAW,QAAQ,QAAQ;AAC1B,cAAM;AAAA,MACP;AACA,YAAM,iBACL,SAAS,qBAAqB,iBAC9B,SAAS,qBAAqBA,SAAQ;AACvC,sBAAgB,SAAS;AACzB,MAAAA,SAAQ,YAAY,SAAS;AAE7B,UAAI,gBAAgB;AACnB,YAAI,eAAe;AAClB,cAAI,eAAe,GAAG;AACrB,kBAAM,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,YAAY,CAAC;AAAA,UACjE;AAAA,QACD,OAAO;AACN,uBAAa;AAAA,QACd;AAAA,MACD;AAAA,IACD;AAAA,EACD;AACA,SAAO,QAAQ,UAAU;AAC1B;AAEO,MAAM,yCAAyC,OACrD,SACA,iBAAiB,CAAC,MACd;AACJ,kBAAgB,QAAQA,UAAS;AAChC,QAAI,aAAa;AACjB,WAAO,YAAY;AAClB,YAAM,WAAW,MAAM,OAAO,KAAK,IAAI,uBAAuBA,QAAO,CAAC;AACtE,iBAAW,QAAQ,SAAS,UAAU,CAAC,GAAG;AACzC,cAAM;AAAA,MACP;AACA,MAAAA,SAAQ,YAAY,SAAS;AAC7B,mBAAa,CAAC,CAAC,SAAS;AAAA,IACzB;AAAA,EACD;AACA,SAAO,QAAQ,OAAO;AACvB;AAEA,IAAO,0BAAQ;AAAA,EACd,WAAW;AAAA,EACX,oBAAoB;AAAA,EACpB,uBAAuB;AACxB;",
"names": ["options"]
"sourcesContent": ["// Copyright 2026 will Farrell, and datastream contributors.\n// SPDX-License-Identifier: MIT\nimport {\n\tCloudWatchLogsClient,\n\tFilterLogEventsCommand,\n\tGetLogEventsCommand,\n} from \"@aws-sdk/client-cloudwatch-logs\";\nimport { awsClientDefaults } from \"./client.js\";\n\nlet client = new CloudWatchLogsClient(awsClientDefaults);\nexport const awsCloudWatchLogsSetClient = (cwlClient) => {\n\tclient = cwlClient;\n};\n\nexport const awsCloudWatchLogsGetLogEventsStream = async (\n\toptions,\n\tstreamOptions = {},\n) => {\n\tconst { pollingActive, pollingDelay = 1000, ...cwlOptions } = options;\n\tcwlOptions.startFromHead ??= true;\n\tasync function* command(opts) {\n\t\tlet previousToken;\n\t\tlet expectMore = true;\n\t\twhile (expectMore) {\n\t\t\tconst response = await client.send(new GetLogEventsCommand(opts), {\n\t\t\t\tabortSignal: streamOptions.signal,\n\t\t\t});\n\t\t\tconst events = response.events ?? [];\n\t\t\tfor (const item of events) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t\tconst tokenUnchanged =\n\t\t\t\tresponse.nextForwardToken === previousToken ||\n\t\t\t\tresponse.nextForwardToken === opts.nextToken;\n\t\t\tpreviousToken = response.nextForwardToken;\n\t\t\topts.nextToken = response.nextForwardToken;\n\n\t\t\tif (tokenUnchanged) {\n\t\t\t\tif (pollingActive) {\n\t\t\t\t\tif (pollingDelay > 0) {\n\t\t\t\t\t\tawait new Promise((resolve) => setTimeout(resolve, pollingDelay));\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\texpectMore = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn command({ ...cwlOptions });\n};\n\nexport const awsCloudWatchLogsFilterLogEventsStream = async (\n\toptions,\n\tstreamOptions = {},\n) => {\n\tasync function* command(opts) {\n\t\tlet expectMore = true;\n\t\twhile (expectMore) {\n\t\t\tconst response = await client.send(new FilterLogEventsCommand(opts), {\n\t\t\t\tabortSignal: streamOptions.signal,\n\t\t\t});\n\t\t\tfor (const item of response.events ?? []) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t\topts.nextToken = response.nextToken;\n\t\t\texpectMore = !!response.nextToken;\n\t\t}\n\t}\n\treturn command({ ...options });\n};\n\nexport default {\n\tsetClient: awsCloudWatchLogsSetClient,\n\tgetLogEventsStream: awsCloudWatchLogsGetLogEventsStream,\n\tfilterLogEventsStream: awsCloudWatchLogsFilterLogEventsStream,\n};\n"],
"mappings": "AAEA;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,yBAAyB;AAElC,IAAI,SAAS,IAAI,qBAAqB,iBAAiB;AAChD,MAAM,6BAA6B,CAAC,cAAc;AACxD,WAAS;AACV;AAEO,MAAM,sCAAsC,OAClD,SACA,gBAAgB,CAAC,MACb;AACJ,QAAM,EAAE,eAAe,eAAe,KAAM,GAAG,WAAW,IAAI;AAC9D,aAAW,kBAAkB;AAC7B,kBAAgB,QAAQ,MAAM;AAC7B,QAAI;AACJ,QAAI,aAAa;AACjB,WAAO,YAAY;AAClB,YAAM,WAAW,MAAM,OAAO,KAAK,IAAI,oBAAoB,IAAI,GAAG;AAAA,QACjE,aAAa,cAAc;AAAA,MAC5B,CAAC;AACD,YAAM,SAAS,SAAS,UAAU,CAAC;AACnC,iBAAW,QAAQ,QAAQ;AAC1B,cAAM;AAAA,MACP;AACA,YAAM,iBACL,SAAS,qBAAqB,iBAC9B,SAAS,qBAAqB,KAAK;AACpC,sBAAgB,SAAS;AACzB,WAAK,YAAY,SAAS;AAE1B,UAAI,gBAAgB;AACnB,YAAI,eAAe;AAClB,cAAI,eAAe,GAAG;AACrB,kBAAM,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,YAAY,CAAC;AAAA,UACjE;AAAA,QACD,OAAO;AACN,uBAAa;AAAA,QACd;AAAA,MACD;AAAA,IACD;AAAA,EACD;AACA,SAAO,QAAQ,EAAE,GAAG,WAAW,CAAC;AACjC;AAEO,MAAM,yCAAyC,OACrD,SACA,gBAAgB,CAAC,MACb;AACJ,kBAAgB,QAAQ,MAAM;AAC7B,QAAI,aAAa;AACjB,WAAO,YAAY;AAClB,YAAM,WAAW,MAAM,OAAO,KAAK,IAAI,uBAAuB,IAAI,GAAG;AAAA,QACpE,aAAa,cAAc;AAAA,MAC5B,CAAC;AACD,iBAAW,QAAQ,SAAS,UAAU,CAAC,GAAG;AACzC,cAAM;AAAA,MACP;AACA,WAAK,YAAY,SAAS;AAC1B,mBAAa,CAAC,CAAC,SAAS;AAAA,IACzB;AAAA,EACD;AACA,SAAO,QAAQ,EAAE,GAAG,QAAQ,CAAC;AAC9B;AAEA,IAAO,0BAAQ;AAAA,EACd,WAAW;AAAA,EACX,oBAAoB;AAAA,EACpB,uBAAuB;AACxB;",
"names": []
}

@@ -11,10 +11,12 @@ import {

};
const awsCloudWatchLogsGetLogEventsStream = async (options, _streamOptions = {}) => {
const awsCloudWatchLogsGetLogEventsStream = async (options, streamOptions = {}) => {
const { pollingActive, pollingDelay = 1e3, ...cwlOptions } = options;
cwlOptions.startFromHead ??= true;
async function* command(options2) {
async function* command(opts) {
let previousToken;
let expectMore = true;
while (expectMore) {
const response = await client.send(new GetLogEventsCommand(options2));
const response = await client.send(new GetLogEventsCommand(opts), {
abortSignal: streamOptions.signal
});
const events = response.events ?? [];

@@ -24,5 +26,5 @@ for (const item of events) {

}
const tokenUnchanged = response.nextForwardToken === previousToken || response.nextForwardToken === options2.nextToken;
const tokenUnchanged = response.nextForwardToken === previousToken || response.nextForwardToken === opts.nextToken;
previousToken = response.nextForwardToken;
options2.nextToken = response.nextForwardToken;
opts.nextToken = response.nextForwardToken;
if (tokenUnchanged) {

@@ -39,17 +41,19 @@ if (pollingActive) {

}
return command(cwlOptions);
return command({ ...cwlOptions });
};
const awsCloudWatchLogsFilterLogEventsStream = async (options, _streamOptions = {}) => {
async function* command(options2) {
const awsCloudWatchLogsFilterLogEventsStream = async (options, streamOptions = {}) => {
async function* command(opts) {
let expectMore = true;
while (expectMore) {
const response = await client.send(new FilterLogEventsCommand(options2));
const response = await client.send(new FilterLogEventsCommand(opts), {
abortSignal: streamOptions.signal
});
for (const item of response.events ?? []) {
yield item;
}
options2.nextToken = response.nextToken;
opts.nextToken = response.nextToken;
expectMore = !!response.nextToken;
}
}
return command(options);
return command({ ...options });
};

@@ -56,0 +60,0 @@ var cloudwatch_logs_default = {

{
"version": 3,
"sources": ["cloudwatch-logs.js"],
"sourcesContent": ["// Copyright 2026 will Farrell, and datastream contributors.\n// SPDX-License-Identifier: MIT\nimport {\n\tCloudWatchLogsClient,\n\tFilterLogEventsCommand,\n\tGetLogEventsCommand,\n} from \"@aws-sdk/client-cloudwatch-logs\";\nimport { awsClientDefaults } from \"./client.js\";\n\nlet client = new CloudWatchLogsClient(awsClientDefaults);\nexport const awsCloudWatchLogsSetClient = (cwlClient) => {\n\tclient = cwlClient;\n};\n\nexport const awsCloudWatchLogsGetLogEventsStream = async (\n\toptions,\n\t_streamOptions = {},\n) => {\n\tconst { pollingActive, pollingDelay = 1000, ...cwlOptions } = options;\n\tcwlOptions.startFromHead ??= true;\n\tasync function* command(options) {\n\t\tlet previousToken;\n\t\tlet expectMore = true;\n\t\twhile (expectMore) {\n\t\t\tconst response = await client.send(new GetLogEventsCommand(options));\n\t\t\tconst events = response.events ?? [];\n\t\t\tfor (const item of events) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t\tconst tokenUnchanged =\n\t\t\t\tresponse.nextForwardToken === previousToken ||\n\t\t\t\tresponse.nextForwardToken === options.nextToken;\n\t\t\tpreviousToken = response.nextForwardToken;\n\t\t\toptions.nextToken = response.nextForwardToken;\n\n\t\t\tif (tokenUnchanged) {\n\t\t\t\tif (pollingActive) {\n\t\t\t\t\tif (pollingDelay > 0) {\n\t\t\t\t\t\tawait new Promise((resolve) => setTimeout(resolve, pollingDelay));\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\texpectMore = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn command(cwlOptions);\n};\n\nexport const awsCloudWatchLogsFilterLogEventsStream = async (\n\toptions,\n\t_streamOptions = {},\n) => {\n\tasync function* command(options) {\n\t\tlet expectMore = true;\n\t\twhile (expectMore) {\n\t\t\tconst response = await client.send(new FilterLogEventsCommand(options));\n\t\t\tfor (const item of response.events ?? []) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t\toptions.nextToken = response.nextToken;\n\t\t\texpectMore = !!response.nextToken;\n\t\t}\n\t}\n\treturn command(options);\n};\n\nexport default {\n\tsetClient: awsCloudWatchLogsSetClient,\n\tgetLogEventsStream: awsCloudWatchLogsGetLogEventsStream,\n\tfilterLogEventsStream: awsCloudWatchLogsFilterLogEventsStream,\n};\n"],
"mappings": "AAEA;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,yBAAyB;AAElC,IAAI,SAAS,IAAI,qBAAqB,iBAAiB;AAChD,MAAM,6BAA6B,CAAC,cAAc;AACxD,WAAS;AACV;AAEO,MAAM,sCAAsC,OAClD,SACA,iBAAiB,CAAC,MACd;AACJ,QAAM,EAAE,eAAe,eAAe,KAAM,GAAG,WAAW,IAAI;AAC9D,aAAW,kBAAkB;AAC7B,kBAAgB,QAAQA,UAAS;AAChC,QAAI;AACJ,QAAI,aAAa;AACjB,WAAO,YAAY;AAClB,YAAM,WAAW,MAAM,OAAO,KAAK,IAAI,oBAAoBA,QAAO,CAAC;AACnE,YAAM,SAAS,SAAS,UAAU,CAAC;AACnC,iBAAW,QAAQ,QAAQ;AAC1B,cAAM;AAAA,MACP;AACA,YAAM,iBACL,SAAS,qBAAqB,iBAC9B,SAAS,qBAAqBA,SAAQ;AACvC,sBAAgB,SAAS;AACzB,MAAAA,SAAQ,YAAY,SAAS;AAE7B,UAAI,gBAAgB;AACnB,YAAI,eAAe;AAClB,cAAI,eAAe,GAAG;AACrB,kBAAM,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,YAAY,CAAC;AAAA,UACjE;AAAA,QACD,OAAO;AACN,uBAAa;AAAA,QACd;AAAA,MACD;AAAA,IACD;AAAA,EACD;AACA,SAAO,QAAQ,UAAU;AAC1B;AAEO,MAAM,yCAAyC,OACrD,SACA,iBAAiB,CAAC,MACd;AACJ,kBAAgB,QAAQA,UAAS;AAChC,QAAI,aAAa;AACjB,WAAO,YAAY;AAClB,YAAM,WAAW,MAAM,OAAO,KAAK,IAAI,uBAAuBA,QAAO,CAAC;AACtE,iBAAW,QAAQ,SAAS,UAAU,CAAC,GAAG;AACzC,cAAM;AAAA,MACP;AACA,MAAAA,SAAQ,YAAY,SAAS;AAC7B,mBAAa,CAAC,CAAC,SAAS;AAAA,IACzB;AAAA,EACD;AACA,SAAO,QAAQ,OAAO;AACvB;AAEA,IAAO,0BAAQ;AAAA,EACd,WAAW;AAAA,EACX,oBAAoB;AAAA,EACpB,uBAAuB;AACxB;",
"names": ["options"]
"sourcesContent": ["// Copyright 2026 will Farrell, and datastream contributors.\n// SPDX-License-Identifier: MIT\nimport {\n\tCloudWatchLogsClient,\n\tFilterLogEventsCommand,\n\tGetLogEventsCommand,\n} from \"@aws-sdk/client-cloudwatch-logs\";\nimport { awsClientDefaults } from \"./client.js\";\n\nlet client = new CloudWatchLogsClient(awsClientDefaults);\nexport const awsCloudWatchLogsSetClient = (cwlClient) => {\n\tclient = cwlClient;\n};\n\nexport const awsCloudWatchLogsGetLogEventsStream = async (\n\toptions,\n\tstreamOptions = {},\n) => {\n\tconst { pollingActive, pollingDelay = 1000, ...cwlOptions } = options;\n\tcwlOptions.startFromHead ??= true;\n\tasync function* command(opts) {\n\t\tlet previousToken;\n\t\tlet expectMore = true;\n\t\twhile (expectMore) {\n\t\t\tconst response = await client.send(new GetLogEventsCommand(opts), {\n\t\t\t\tabortSignal: streamOptions.signal,\n\t\t\t});\n\t\t\tconst events = response.events ?? [];\n\t\t\tfor (const item of events) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t\tconst tokenUnchanged =\n\t\t\t\tresponse.nextForwardToken === previousToken ||\n\t\t\t\tresponse.nextForwardToken === opts.nextToken;\n\t\t\tpreviousToken = response.nextForwardToken;\n\t\t\topts.nextToken = response.nextForwardToken;\n\n\t\t\tif (tokenUnchanged) {\n\t\t\t\tif (pollingActive) {\n\t\t\t\t\tif (pollingDelay > 0) {\n\t\t\t\t\t\tawait new Promise((resolve) => setTimeout(resolve, pollingDelay));\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\texpectMore = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn command({ ...cwlOptions });\n};\n\nexport const awsCloudWatchLogsFilterLogEventsStream = async (\n\toptions,\n\tstreamOptions = {},\n) => {\n\tasync function* command(opts) {\n\t\tlet expectMore = true;\n\t\twhile (expectMore) {\n\t\t\tconst response = await client.send(new FilterLogEventsCommand(opts), {\n\t\t\t\tabortSignal: streamOptions.signal,\n\t\t\t});\n\t\t\tfor (const item of response.events ?? []) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t\topts.nextToken = response.nextToken;\n\t\t\texpectMore = !!response.nextToken;\n\t\t}\n\t}\n\treturn command({ ...options });\n};\n\nexport default {\n\tsetClient: awsCloudWatchLogsSetClient,\n\tgetLogEventsStream: awsCloudWatchLogsGetLogEventsStream,\n\tfilterLogEventsStream: awsCloudWatchLogsFilterLogEventsStream,\n};\n"],
"mappings": "AAEA;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,yBAAyB;AAElC,IAAI,SAAS,IAAI,qBAAqB,iBAAiB;AAChD,MAAM,6BAA6B,CAAC,cAAc;AACxD,WAAS;AACV;AAEO,MAAM,sCAAsC,OAClD,SACA,gBAAgB,CAAC,MACb;AACJ,QAAM,EAAE,eAAe,eAAe,KAAM,GAAG,WAAW,IAAI;AAC9D,aAAW,kBAAkB;AAC7B,kBAAgB,QAAQ,MAAM;AAC7B,QAAI;AACJ,QAAI,aAAa;AACjB,WAAO,YAAY;AAClB,YAAM,WAAW,MAAM,OAAO,KAAK,IAAI,oBAAoB,IAAI,GAAG;AAAA,QACjE,aAAa,cAAc;AAAA,MAC5B,CAAC;AACD,YAAM,SAAS,SAAS,UAAU,CAAC;AACnC,iBAAW,QAAQ,QAAQ;AAC1B,cAAM;AAAA,MACP;AACA,YAAM,iBACL,SAAS,qBAAqB,iBAC9B,SAAS,qBAAqB,KAAK;AACpC,sBAAgB,SAAS;AACzB,WAAK,YAAY,SAAS;AAE1B,UAAI,gBAAgB;AACnB,YAAI,eAAe;AAClB,cAAI,eAAe,GAAG;AACrB,kBAAM,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,YAAY,CAAC;AAAA,UACjE;AAAA,QACD,OAAO;AACN,uBAAa;AAAA,QACd;AAAA,MACD;AAAA,IACD;AAAA,EACD;AACA,SAAO,QAAQ,EAAE,GAAG,WAAW,CAAC;AACjC;AAEO,MAAM,yCAAyC,OACrD,SACA,gBAAgB,CAAC,MACb;AACJ,kBAAgB,QAAQ,MAAM;AAC7B,QAAI,aAAa;AACjB,WAAO,YAAY;AAClB,YAAM,WAAW,MAAM,OAAO,KAAK,IAAI,uBAAuB,IAAI,GAAG;AAAA,QACpE,aAAa,cAAc;AAAA,MAC5B,CAAC;AACD,iBAAW,QAAQ,SAAS,UAAU,CAAC,GAAG;AACzC,cAAM;AAAA,MACP;AACA,WAAK,YAAY,SAAS;AAC1B,mBAAa,CAAC,CAAC,SAAS;AAAA,IACzB;AAAA,EACD;AACA,SAAO,QAAQ,EAAE,GAAG,QAAQ,CAAC;AAC9B;AAEA,IAAO,0BAAQ;AAAA,EACd,WAAW;AAAA,EACX,oBAAoB;AAAA,EACpB,uBAAuB;AACxB;",
"names": []
}
// Copyright 2026 will Farrell, and datastream contributors.
// SPDX-License-Identifier: MIT
import type { StreamOptions } from "@datastream/core";
import type {
DatastreamReadable,
DatastreamWritable,
StreamOptions,
} from "@datastream/core";

@@ -17,3 +21,3 @@ export function awsDynamoDBSetClient(

streamOptions?: StreamOptions,
): Promise<unknown>;
): Promise<DatastreamReadable>;

@@ -27,3 +31,3 @@ export function awsDynamoDBScanStream(

streamOptions?: StreamOptions,
): Promise<unknown>;
): Promise<DatastreamReadable>;

@@ -38,3 +42,3 @@ export function awsDynamoDBExecuteStatementStream(

streamOptions?: StreamOptions,
): Promise<unknown>;
): Promise<DatastreamReadable>;

@@ -51,3 +55,3 @@ export function awsDynamoDBGetItemStream(

streamOptions?: StreamOptions,
): Promise<unknown>;
): Promise<DatastreamReadable>;

@@ -61,3 +65,3 @@ export function awsDynamoDBPutItemStream(

streamOptions?: StreamOptions,
): unknown;
): DatastreamWritable;

@@ -71,2 +75,2 @@ export function awsDynamoDBDeleteItemStream(

streamOptions?: StreamOptions,
): unknown;
): DatastreamWritable;

@@ -17,6 +17,6 @@ import {

const awsDynamoDBQueryStream = async (options, streamOptions = {}) => {
async function* command(options2) {
async function* command(opts) {
let expectMore = true;
while (expectMore) {
const response = await client.send(new QueryCommand(options2), {
const response = await client.send(new QueryCommand(opts), {
abortSignal: streamOptions.signal

@@ -27,13 +27,13 @@ });

}
options2.ExclusiveStartKey = response.LastEvaluatedKey;
opts.ExclusiveStartKey = response.LastEvaluatedKey;
expectMore = !!response.LastEvaluatedKey;
}
}
return command(options);
return command({ ...options });
};
const awsDynamoDBScanStream = async (options, streamOptions = {}) => {
async function* command(options2) {
async function* command(opts) {
let expectMore = true;
while (expectMore) {
const response = await client.send(new ScanCommand(options2), {
const response = await client.send(new ScanCommand(opts), {
abortSignal: streamOptions.signal

@@ -44,13 +44,13 @@ });

}
options2.ExclusiveStartKey = response.LastEvaluatedKey;
opts.ExclusiveStartKey = response.LastEvaluatedKey;
expectMore = !!response.LastEvaluatedKey;
}
}
return command(options);
return command({ ...options });
};
const awsDynamoDBExecuteStatementStream = async (options, streamOptions = {}) => {
async function* command(options2) {
async function* command(opts) {
let expectMore = true;
while (expectMore) {
const response = await client.send(new ExecuteStatementCommand(options2), {
const response = await client.send(new ExecuteStatementCommand(opts), {
abortSignal: streamOptions.signal

@@ -61,7 +61,7 @@ });

}
options2.NextToken = response.NextToken;
opts.NextToken = response.NextToken;
expectMore = !!response.NextToken;
}
}
return command(options);
return command({ ...options });
};

@@ -68,0 +68,0 @@ const awsDynamoDBGetItemStream = async (options, streamOptions = {}) => {

{
"version": 3,
"sources": ["dynamodb.js"],
"sourcesContent": ["// Copyright 2026 will Farrell, and datastream contributors.\n// SPDX-License-Identifier: MIT\nimport {\n\tBatchGetItemCommand,\n\tBatchWriteItemCommand,\n\tDynamoDBClient,\n\tExecuteStatementCommand,\n\tQueryCommand,\n\tScanCommand,\n} from \"@aws-sdk/client-dynamodb\";\nimport { createWritableStream, timeout } from \"@datastream/core\";\nimport { awsClientDefaults } from \"./client.js\";\n\nlet client = new DynamoDBClient(awsClientDefaults);\nexport const awsDynamoDBSetClient = (ddbClient, _translateConfig) => {\n\tclient = ddbClient;\n};\nawsDynamoDBSetClient(client);\n\n// options = {TableName, ...}\n\nexport const awsDynamoDBQueryStream = async (options, streamOptions = {}) => {\n\tasync function* command(options) {\n\t\tlet expectMore = true;\n\t\twhile (expectMore) {\n\t\t\tconst response = await client.send(new QueryCommand(options), {\n\t\t\t\tabortSignal: streamOptions.signal,\n\t\t\t});\n\t\t\tfor (const item of response.Items) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t\toptions.ExclusiveStartKey = response.LastEvaluatedKey;\n\t\t\texpectMore = !!response.LastEvaluatedKey;\n\t\t}\n\t}\n\treturn command(options);\n};\n\nexport const awsDynamoDBScanStream = async (options, streamOptions = {}) => {\n\tasync function* command(options) {\n\t\tlet expectMore = true;\n\t\twhile (expectMore) {\n\t\t\tconst response = await client.send(new ScanCommand(options), {\n\t\t\t\tabortSignal: streamOptions.signal,\n\t\t\t});\n\t\t\tfor (const item of response.Items) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t\toptions.ExclusiveStartKey = response.LastEvaluatedKey;\n\t\t\texpectMore = !!response.LastEvaluatedKey;\n\t\t}\n\t}\n\treturn command(options);\n};\n\nexport const awsDynamoDBExecuteStatementStream = async (\n\toptions,\n\tstreamOptions = {},\n) => {\n\tasync function* command(options) {\n\t\tlet expectMore = true;\n\t\twhile (expectMore) {\n\t\t\tconst response = await client.send(new ExecuteStatementCommand(options), {\n\t\t\t\tabortSignal: streamOptions.signal,\n\t\t\t});\n\t\t\tfor (const item of response.Items ?? []) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t\toptions.NextToken = response.NextToken;\n\t\t\texpectMore = !!response.NextToken;\n\t\t}\n\t}\n\treturn command(options);\n};\n\nexport const awsDynamoDBGetItemStream = async (options, streamOptions = {}) => {\n\tif (options.Keys?.length > 100) {\n\t\tthrow new Error(\n\t\t\t`awsDynamoDBGetItemStream Keys.length (${options.Keys.length}) exceeds BatchGetItem limit of 100`,\n\t\t);\n\t}\n\tasync function* command(options) {\n\t\tlet keys = options.Keys;\n\t\tlet retryCount = options.retryCount ?? 0;\n\t\tconst retryMaxCount = options.retryMaxCount ?? 10;\n\t\twhile (true) {\n\t\t\tconst response = await client.send(\n\t\t\t\tnew BatchGetItemCommand({\n\t\t\t\t\tRequestItems: {\n\t\t\t\t\t\t[options.TableName]: { Keys: keys },\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t\t{ abortSignal: streamOptions.signal },\n\t\t\t);\n\t\t\tfor (const item of response.Responses[options.TableName]) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t\tconst UnprocessedKeys =\n\t\t\t\tresponse?.UnprocessedKeys?.[options.TableName]?.Keys ?? [];\n\t\t\tif (!UnprocessedKeys.length) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (retryCount >= retryMaxCount) {\n\t\t\t\tthrow new Error(\"awsDynamoDBBatchGetItem has UnprocessedKeys\", {\n\t\t\t\t\tcause: {\n\t\t\t\t\t\t...options,\n\t\t\t\t\t\tUnprocessedKeysCount: UnprocessedKeys.length,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tawait timeout(3 ** retryCount); // 3^10 == 59sec\n\t\t\tretryCount++;\n\t\t\tkeys = UnprocessedKeys;\n\t\t}\n\t}\n\treturn command(options);\n};\n\nexport const awsDynamoDBPutItemStream = (options, streamOptions = {}) => {\n\tlet batch = [];\n\tconst write = async (chunk) => {\n\t\tif (batch.length === 25) {\n\t\t\tawait dynamodbBatchWrite(options, batch, streamOptions);\n\t\t\tbatch = [];\n\t\t}\n\t\tbatch.push({\n\t\t\tPutRequest: {\n\t\t\t\tItem: chunk,\n\t\t\t},\n\t\t});\n\t};\n\tconst final = () =>\n\t\tbatch.length\n\t\t\t? dynamodbBatchWrite(options, batch, streamOptions)\n\t\t\t: undefined;\n\treturn createWritableStream(write, final, streamOptions);\n};\n\nexport const awsDynamoDBDeleteItemStream = (options, streamOptions = {}) => {\n\tlet batch = [];\n\tconst write = async (chunk) => {\n\t\tif (batch.length === 25) {\n\t\t\tawait dynamodbBatchWrite(options, batch, streamOptions);\n\t\t\tbatch = [];\n\t\t}\n\t\tbatch.push({\n\t\t\tDeleteRequest: {\n\t\t\t\tKey: chunk,\n\t\t\t},\n\t\t});\n\t};\n\tconst final = () =>\n\t\tbatch.length\n\t\t\t? dynamodbBatchWrite(options, batch, streamOptions)\n\t\t\t: undefined;\n\treturn createWritableStream(write, final, streamOptions);\n};\n\nconst dynamodbBatchWrite = async (\n\toptions,\n\tbatch,\n\tstreamOptions,\n\tretryCount = 0,\n) => {\n\tconst retryMaxCount = options.retryMaxCount ?? 10;\n\tconst { UnprocessedItems } = await client.send(\n\t\tnew BatchWriteItemCommand({\n\t\t\tRequestItems: {\n\t\t\t\t[options.TableName]: batch,\n\t\t\t},\n\t\t}),\n\t\t{ abortSignal: streamOptions?.signal },\n\t);\n\tif (UnprocessedItems?.[options.TableName]?.length) {\n\t\tif (retryCount >= retryMaxCount) {\n\t\t\tthrow new Error(\"awsDynamoDBBatchWriteItem has UnprocessedItems\", {\n\t\t\t\tcause: {\n\t\t\t\t\t...options,\n\t\t\t\t\tUnprocessedItemsCount: UnprocessedItems[options.TableName].length,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tawait timeout(3 ** retryCount); // 3^10 == 59sec\n\t\treturn dynamodbBatchWrite(\n\t\t\toptions,\n\t\t\tUnprocessedItems[options.TableName],\n\t\t\tstreamOptions,\n\t\t\tretryCount + 1,\n\t\t);\n\t}\n};\n\nexport default {\n\tsetClient: awsDynamoDBSetClient,\n\tqueryStream: awsDynamoDBQueryStream,\n\tscanStream: awsDynamoDBScanStream,\n\texecuteStatementStream: awsDynamoDBExecuteStatementStream,\n\tgetItemStream: awsDynamoDBGetItemStream,\n\tputItemStream: awsDynamoDBPutItemStream,\n\tdeleteItemStream: awsDynamoDBDeleteItemStream,\n};\n"],
"mappings": "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",
"sourcesContent": ["// Copyright 2026 will Farrell, and datastream contributors.\n// SPDX-License-Identifier: MIT\nimport {\n\tBatchGetItemCommand,\n\tBatchWriteItemCommand,\n\tDynamoDBClient,\n\tExecuteStatementCommand,\n\tQueryCommand,\n\tScanCommand,\n} from \"@aws-sdk/client-dynamodb\";\nimport { createWritableStream, timeout } from \"@datastream/core\";\nimport { awsClientDefaults } from \"./client.js\";\n\nlet client = new DynamoDBClient(awsClientDefaults);\nexport const awsDynamoDBSetClient = (ddbClient, _translateConfig) => {\n\tclient = ddbClient;\n};\nawsDynamoDBSetClient(client);\n\n// options = {TableName, ...}\n\nexport const awsDynamoDBQueryStream = async (options, streamOptions = {}) => {\n\tasync function* command(opts) {\n\t\tlet expectMore = true;\n\t\twhile (expectMore) {\n\t\t\tconst response = await client.send(new QueryCommand(opts), {\n\t\t\t\tabortSignal: streamOptions.signal,\n\t\t\t});\n\t\t\tfor (const item of response.Items) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t\topts.ExclusiveStartKey = response.LastEvaluatedKey;\n\t\t\texpectMore = !!response.LastEvaluatedKey;\n\t\t}\n\t}\n\treturn command({ ...options });\n};\n\nexport const awsDynamoDBScanStream = async (options, streamOptions = {}) => {\n\tasync function* command(opts) {\n\t\tlet expectMore = true;\n\t\twhile (expectMore) {\n\t\t\tconst response = await client.send(new ScanCommand(opts), {\n\t\t\t\tabortSignal: streamOptions.signal,\n\t\t\t});\n\t\t\tfor (const item of response.Items) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t\topts.ExclusiveStartKey = response.LastEvaluatedKey;\n\t\t\texpectMore = !!response.LastEvaluatedKey;\n\t\t}\n\t}\n\treturn command({ ...options });\n};\n\nexport const awsDynamoDBExecuteStatementStream = async (\n\toptions,\n\tstreamOptions = {},\n) => {\n\tasync function* command(opts) {\n\t\tlet expectMore = true;\n\t\twhile (expectMore) {\n\t\t\tconst response = await client.send(new ExecuteStatementCommand(opts), {\n\t\t\t\tabortSignal: streamOptions.signal,\n\t\t\t});\n\t\t\tfor (const item of response.Items ?? []) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t\topts.NextToken = response.NextToken;\n\t\t\texpectMore = !!response.NextToken;\n\t\t}\n\t}\n\treturn command({ ...options });\n};\n\nexport const awsDynamoDBGetItemStream = async (options, streamOptions = {}) => {\n\tif (options.Keys?.length > 100) {\n\t\tthrow new Error(\n\t\t\t`awsDynamoDBGetItemStream Keys.length (${options.Keys.length}) exceeds BatchGetItem limit of 100`,\n\t\t);\n\t}\n\tasync function* command(options) {\n\t\tlet keys = options.Keys;\n\t\tlet retryCount = options.retryCount ?? 0;\n\t\tconst retryMaxCount = options.retryMaxCount ?? 10;\n\t\twhile (true) {\n\t\t\tconst response = await client.send(\n\t\t\t\tnew BatchGetItemCommand({\n\t\t\t\t\tRequestItems: {\n\t\t\t\t\t\t[options.TableName]: { Keys: keys },\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t\t{ abortSignal: streamOptions.signal },\n\t\t\t);\n\t\t\tfor (const item of response.Responses[options.TableName]) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t\tconst UnprocessedKeys =\n\t\t\t\tresponse?.UnprocessedKeys?.[options.TableName]?.Keys ?? [];\n\t\t\tif (!UnprocessedKeys.length) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (retryCount >= retryMaxCount) {\n\t\t\t\tthrow new Error(\"awsDynamoDBBatchGetItem has UnprocessedKeys\", {\n\t\t\t\t\tcause: {\n\t\t\t\t\t\t...options,\n\t\t\t\t\t\tUnprocessedKeysCount: UnprocessedKeys.length,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tawait timeout(3 ** retryCount); // 3^10 == 59sec\n\t\t\tretryCount++;\n\t\t\tkeys = UnprocessedKeys;\n\t\t}\n\t}\n\treturn command(options);\n};\n\nexport const awsDynamoDBPutItemStream = (options, streamOptions = {}) => {\n\tlet batch = [];\n\tconst write = async (chunk) => {\n\t\tif (batch.length === 25) {\n\t\t\tawait dynamodbBatchWrite(options, batch, streamOptions);\n\t\t\tbatch = [];\n\t\t}\n\t\tbatch.push({\n\t\t\tPutRequest: {\n\t\t\t\tItem: chunk,\n\t\t\t},\n\t\t});\n\t};\n\tconst final = () =>\n\t\tbatch.length\n\t\t\t? dynamodbBatchWrite(options, batch, streamOptions)\n\t\t\t: undefined;\n\treturn createWritableStream(write, final, streamOptions);\n};\n\nexport const awsDynamoDBDeleteItemStream = (options, streamOptions = {}) => {\n\tlet batch = [];\n\tconst write = async (chunk) => {\n\t\tif (batch.length === 25) {\n\t\t\tawait dynamodbBatchWrite(options, batch, streamOptions);\n\t\t\tbatch = [];\n\t\t}\n\t\tbatch.push({\n\t\t\tDeleteRequest: {\n\t\t\t\tKey: chunk,\n\t\t\t},\n\t\t});\n\t};\n\tconst final = () =>\n\t\tbatch.length\n\t\t\t? dynamodbBatchWrite(options, batch, streamOptions)\n\t\t\t: undefined;\n\treturn createWritableStream(write, final, streamOptions);\n};\n\nconst dynamodbBatchWrite = async (\n\toptions,\n\tbatch,\n\tstreamOptions,\n\tretryCount = 0,\n) => {\n\tconst retryMaxCount = options.retryMaxCount ?? 10;\n\tconst { UnprocessedItems } = await client.send(\n\t\tnew BatchWriteItemCommand({\n\t\t\tRequestItems: {\n\t\t\t\t[options.TableName]: batch,\n\t\t\t},\n\t\t}),\n\t\t{ abortSignal: streamOptions?.signal },\n\t);\n\tif (UnprocessedItems?.[options.TableName]?.length) {\n\t\tif (retryCount >= retryMaxCount) {\n\t\t\tthrow new Error(\"awsDynamoDBBatchWriteItem has UnprocessedItems\", {\n\t\t\t\tcause: {\n\t\t\t\t\t...options,\n\t\t\t\t\tUnprocessedItemsCount: UnprocessedItems[options.TableName].length,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tawait timeout(3 ** retryCount); // 3^10 == 59sec\n\t\treturn dynamodbBatchWrite(\n\t\t\toptions,\n\t\t\tUnprocessedItems[options.TableName],\n\t\t\tstreamOptions,\n\t\t\tretryCount + 1,\n\t\t);\n\t}\n};\n\nexport default {\n\tsetClient: awsDynamoDBSetClient,\n\tqueryStream: awsDynamoDBQueryStream,\n\tscanStream: awsDynamoDBScanStream,\n\texecuteStatementStream: awsDynamoDBExecuteStatementStream,\n\tgetItemStream: awsDynamoDBGetItemStream,\n\tputItemStream: awsDynamoDBPutItemStream,\n\tdeleteItemStream: awsDynamoDBDeleteItemStream,\n};\n"],
"mappings": "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",
"names": ["options"]
}

@@ -17,6 +17,6 @@ import {

const awsDynamoDBQueryStream = async (options, streamOptions = {}) => {
async function* command(options2) {
async function* command(opts) {
let expectMore = true;
while (expectMore) {
const response = await client.send(new QueryCommand(options2), {
const response = await client.send(new QueryCommand(opts), {
abortSignal: streamOptions.signal

@@ -27,13 +27,13 @@ });

}
options2.ExclusiveStartKey = response.LastEvaluatedKey;
opts.ExclusiveStartKey = response.LastEvaluatedKey;
expectMore = !!response.LastEvaluatedKey;
}
}
return command(options);
return command({ ...options });
};
const awsDynamoDBScanStream = async (options, streamOptions = {}) => {
async function* command(options2) {
async function* command(opts) {
let expectMore = true;
while (expectMore) {
const response = await client.send(new ScanCommand(options2), {
const response = await client.send(new ScanCommand(opts), {
abortSignal: streamOptions.signal

@@ -44,13 +44,13 @@ });

}
options2.ExclusiveStartKey = response.LastEvaluatedKey;
opts.ExclusiveStartKey = response.LastEvaluatedKey;
expectMore = !!response.LastEvaluatedKey;
}
}
return command(options);
return command({ ...options });
};
const awsDynamoDBExecuteStatementStream = async (options, streamOptions = {}) => {
async function* command(options2) {
async function* command(opts) {
let expectMore = true;
while (expectMore) {
const response = await client.send(new ExecuteStatementCommand(options2), {
const response = await client.send(new ExecuteStatementCommand(opts), {
abortSignal: streamOptions.signal

@@ -61,7 +61,7 @@ });

}
options2.NextToken = response.NextToken;
opts.NextToken = response.NextToken;
expectMore = !!response.NextToken;
}
}
return command(options);
return command({ ...options });
};

@@ -68,0 +68,0 @@ const awsDynamoDBGetItemStream = async (options, streamOptions = {}) => {

{
"version": 3,
"sources": ["dynamodb.js"],
"sourcesContent": ["// Copyright 2026 will Farrell, and datastream contributors.\n// SPDX-License-Identifier: MIT\nimport {\n\tBatchGetItemCommand,\n\tBatchWriteItemCommand,\n\tDynamoDBClient,\n\tExecuteStatementCommand,\n\tQueryCommand,\n\tScanCommand,\n} from \"@aws-sdk/client-dynamodb\";\nimport { createWritableStream, timeout } from \"@datastream/core\";\nimport { awsClientDefaults } from \"./client.js\";\n\nlet client = new DynamoDBClient(awsClientDefaults);\nexport const awsDynamoDBSetClient = (ddbClient, _translateConfig) => {\n\tclient = ddbClient;\n};\nawsDynamoDBSetClient(client);\n\n// options = {TableName, ...}\n\nexport const awsDynamoDBQueryStream = async (options, streamOptions = {}) => {\n\tasync function* command(options) {\n\t\tlet expectMore = true;\n\t\twhile (expectMore) {\n\t\t\tconst response = await client.send(new QueryCommand(options), {\n\t\t\t\tabortSignal: streamOptions.signal,\n\t\t\t});\n\t\t\tfor (const item of response.Items) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t\toptions.ExclusiveStartKey = response.LastEvaluatedKey;\n\t\t\texpectMore = !!response.LastEvaluatedKey;\n\t\t}\n\t}\n\treturn command(options);\n};\n\nexport const awsDynamoDBScanStream = async (options, streamOptions = {}) => {\n\tasync function* command(options) {\n\t\tlet expectMore = true;\n\t\twhile (expectMore) {\n\t\t\tconst response = await client.send(new ScanCommand(options), {\n\t\t\t\tabortSignal: streamOptions.signal,\n\t\t\t});\n\t\t\tfor (const item of response.Items) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t\toptions.ExclusiveStartKey = response.LastEvaluatedKey;\n\t\t\texpectMore = !!response.LastEvaluatedKey;\n\t\t}\n\t}\n\treturn command(options);\n};\n\nexport const awsDynamoDBExecuteStatementStream = async (\n\toptions,\n\tstreamOptions = {},\n) => {\n\tasync function* command(options) {\n\t\tlet expectMore = true;\n\t\twhile (expectMore) {\n\t\t\tconst response = await client.send(new ExecuteStatementCommand(options), {\n\t\t\t\tabortSignal: streamOptions.signal,\n\t\t\t});\n\t\t\tfor (const item of response.Items ?? []) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t\toptions.NextToken = response.NextToken;\n\t\t\texpectMore = !!response.NextToken;\n\t\t}\n\t}\n\treturn command(options);\n};\n\nexport const awsDynamoDBGetItemStream = async (options, streamOptions = {}) => {\n\tif (options.Keys?.length > 100) {\n\t\tthrow new Error(\n\t\t\t`awsDynamoDBGetItemStream Keys.length (${options.Keys.length}) exceeds BatchGetItem limit of 100`,\n\t\t);\n\t}\n\tasync function* command(options) {\n\t\tlet keys = options.Keys;\n\t\tlet retryCount = options.retryCount ?? 0;\n\t\tconst retryMaxCount = options.retryMaxCount ?? 10;\n\t\twhile (true) {\n\t\t\tconst response = await client.send(\n\t\t\t\tnew BatchGetItemCommand({\n\t\t\t\t\tRequestItems: {\n\t\t\t\t\t\t[options.TableName]: { Keys: keys },\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t\t{ abortSignal: streamOptions.signal },\n\t\t\t);\n\t\t\tfor (const item of response.Responses[options.TableName]) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t\tconst UnprocessedKeys =\n\t\t\t\tresponse?.UnprocessedKeys?.[options.TableName]?.Keys ?? [];\n\t\t\tif (!UnprocessedKeys.length) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (retryCount >= retryMaxCount) {\n\t\t\t\tthrow new Error(\"awsDynamoDBBatchGetItem has UnprocessedKeys\", {\n\t\t\t\t\tcause: {\n\t\t\t\t\t\t...options,\n\t\t\t\t\t\tUnprocessedKeysCount: UnprocessedKeys.length,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tawait timeout(3 ** retryCount); // 3^10 == 59sec\n\t\t\tretryCount++;\n\t\t\tkeys = UnprocessedKeys;\n\t\t}\n\t}\n\treturn command(options);\n};\n\nexport const awsDynamoDBPutItemStream = (options, streamOptions = {}) => {\n\tlet batch = [];\n\tconst write = async (chunk) => {\n\t\tif (batch.length === 25) {\n\t\t\tawait dynamodbBatchWrite(options, batch, streamOptions);\n\t\t\tbatch = [];\n\t\t}\n\t\tbatch.push({\n\t\t\tPutRequest: {\n\t\t\t\tItem: chunk,\n\t\t\t},\n\t\t});\n\t};\n\tconst final = () =>\n\t\tbatch.length\n\t\t\t? dynamodbBatchWrite(options, batch, streamOptions)\n\t\t\t: undefined;\n\treturn createWritableStream(write, final, streamOptions);\n};\n\nexport const awsDynamoDBDeleteItemStream = (options, streamOptions = {}) => {\n\tlet batch = [];\n\tconst write = async (chunk) => {\n\t\tif (batch.length === 25) {\n\t\t\tawait dynamodbBatchWrite(options, batch, streamOptions);\n\t\t\tbatch = [];\n\t\t}\n\t\tbatch.push({\n\t\t\tDeleteRequest: {\n\t\t\t\tKey: chunk,\n\t\t\t},\n\t\t});\n\t};\n\tconst final = () =>\n\t\tbatch.length\n\t\t\t? dynamodbBatchWrite(options, batch, streamOptions)\n\t\t\t: undefined;\n\treturn createWritableStream(write, final, streamOptions);\n};\n\nconst dynamodbBatchWrite = async (\n\toptions,\n\tbatch,\n\tstreamOptions,\n\tretryCount = 0,\n) => {\n\tconst retryMaxCount = options.retryMaxCount ?? 10;\n\tconst { UnprocessedItems } = await client.send(\n\t\tnew BatchWriteItemCommand({\n\t\t\tRequestItems: {\n\t\t\t\t[options.TableName]: batch,\n\t\t\t},\n\t\t}),\n\t\t{ abortSignal: streamOptions?.signal },\n\t);\n\tif (UnprocessedItems?.[options.TableName]?.length) {\n\t\tif (retryCount >= retryMaxCount) {\n\t\t\tthrow new Error(\"awsDynamoDBBatchWriteItem has UnprocessedItems\", {\n\t\t\t\tcause: {\n\t\t\t\t\t...options,\n\t\t\t\t\tUnprocessedItemsCount: UnprocessedItems[options.TableName].length,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tawait timeout(3 ** retryCount); // 3^10 == 59sec\n\t\treturn dynamodbBatchWrite(\n\t\t\toptions,\n\t\t\tUnprocessedItems[options.TableName],\n\t\t\tstreamOptions,\n\t\t\tretryCount + 1,\n\t\t);\n\t}\n};\n\nexport default {\n\tsetClient: awsDynamoDBSetClient,\n\tqueryStream: awsDynamoDBQueryStream,\n\tscanStream: awsDynamoDBScanStream,\n\texecuteStatementStream: awsDynamoDBExecuteStatementStream,\n\tgetItemStream: awsDynamoDBGetItemStream,\n\tputItemStream: awsDynamoDBPutItemStream,\n\tdeleteItemStream: awsDynamoDBDeleteItemStream,\n};\n"],
"mappings": "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",
"sourcesContent": ["// Copyright 2026 will Farrell, and datastream contributors.\n// SPDX-License-Identifier: MIT\nimport {\n\tBatchGetItemCommand,\n\tBatchWriteItemCommand,\n\tDynamoDBClient,\n\tExecuteStatementCommand,\n\tQueryCommand,\n\tScanCommand,\n} from \"@aws-sdk/client-dynamodb\";\nimport { createWritableStream, timeout } from \"@datastream/core\";\nimport { awsClientDefaults } from \"./client.js\";\n\nlet client = new DynamoDBClient(awsClientDefaults);\nexport const awsDynamoDBSetClient = (ddbClient, _translateConfig) => {\n\tclient = ddbClient;\n};\nawsDynamoDBSetClient(client);\n\n// options = {TableName, ...}\n\nexport const awsDynamoDBQueryStream = async (options, streamOptions = {}) => {\n\tasync function* command(opts) {\n\t\tlet expectMore = true;\n\t\twhile (expectMore) {\n\t\t\tconst response = await client.send(new QueryCommand(opts), {\n\t\t\t\tabortSignal: streamOptions.signal,\n\t\t\t});\n\t\t\tfor (const item of response.Items) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t\topts.ExclusiveStartKey = response.LastEvaluatedKey;\n\t\t\texpectMore = !!response.LastEvaluatedKey;\n\t\t}\n\t}\n\treturn command({ ...options });\n};\n\nexport const awsDynamoDBScanStream = async (options, streamOptions = {}) => {\n\tasync function* command(opts) {\n\t\tlet expectMore = true;\n\t\twhile (expectMore) {\n\t\t\tconst response = await client.send(new ScanCommand(opts), {\n\t\t\t\tabortSignal: streamOptions.signal,\n\t\t\t});\n\t\t\tfor (const item of response.Items) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t\topts.ExclusiveStartKey = response.LastEvaluatedKey;\n\t\t\texpectMore = !!response.LastEvaluatedKey;\n\t\t}\n\t}\n\treturn command({ ...options });\n};\n\nexport const awsDynamoDBExecuteStatementStream = async (\n\toptions,\n\tstreamOptions = {},\n) => {\n\tasync function* command(opts) {\n\t\tlet expectMore = true;\n\t\twhile (expectMore) {\n\t\t\tconst response = await client.send(new ExecuteStatementCommand(opts), {\n\t\t\t\tabortSignal: streamOptions.signal,\n\t\t\t});\n\t\t\tfor (const item of response.Items ?? []) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t\topts.NextToken = response.NextToken;\n\t\t\texpectMore = !!response.NextToken;\n\t\t}\n\t}\n\treturn command({ ...options });\n};\n\nexport const awsDynamoDBGetItemStream = async (options, streamOptions = {}) => {\n\tif (options.Keys?.length > 100) {\n\t\tthrow new Error(\n\t\t\t`awsDynamoDBGetItemStream Keys.length (${options.Keys.length}) exceeds BatchGetItem limit of 100`,\n\t\t);\n\t}\n\tasync function* command(options) {\n\t\tlet keys = options.Keys;\n\t\tlet retryCount = options.retryCount ?? 0;\n\t\tconst retryMaxCount = options.retryMaxCount ?? 10;\n\t\twhile (true) {\n\t\t\tconst response = await client.send(\n\t\t\t\tnew BatchGetItemCommand({\n\t\t\t\t\tRequestItems: {\n\t\t\t\t\t\t[options.TableName]: { Keys: keys },\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t\t{ abortSignal: streamOptions.signal },\n\t\t\t);\n\t\t\tfor (const item of response.Responses[options.TableName]) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t\tconst UnprocessedKeys =\n\t\t\t\tresponse?.UnprocessedKeys?.[options.TableName]?.Keys ?? [];\n\t\t\tif (!UnprocessedKeys.length) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (retryCount >= retryMaxCount) {\n\t\t\t\tthrow new Error(\"awsDynamoDBBatchGetItem has UnprocessedKeys\", {\n\t\t\t\t\tcause: {\n\t\t\t\t\t\t...options,\n\t\t\t\t\t\tUnprocessedKeysCount: UnprocessedKeys.length,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tawait timeout(3 ** retryCount); // 3^10 == 59sec\n\t\t\tretryCount++;\n\t\t\tkeys = UnprocessedKeys;\n\t\t}\n\t}\n\treturn command(options);\n};\n\nexport const awsDynamoDBPutItemStream = (options, streamOptions = {}) => {\n\tlet batch = [];\n\tconst write = async (chunk) => {\n\t\tif (batch.length === 25) {\n\t\t\tawait dynamodbBatchWrite(options, batch, streamOptions);\n\t\t\tbatch = [];\n\t\t}\n\t\tbatch.push({\n\t\t\tPutRequest: {\n\t\t\t\tItem: chunk,\n\t\t\t},\n\t\t});\n\t};\n\tconst final = () =>\n\t\tbatch.length\n\t\t\t? dynamodbBatchWrite(options, batch, streamOptions)\n\t\t\t: undefined;\n\treturn createWritableStream(write, final, streamOptions);\n};\n\nexport const awsDynamoDBDeleteItemStream = (options, streamOptions = {}) => {\n\tlet batch = [];\n\tconst write = async (chunk) => {\n\t\tif (batch.length === 25) {\n\t\t\tawait dynamodbBatchWrite(options, batch, streamOptions);\n\t\t\tbatch = [];\n\t\t}\n\t\tbatch.push({\n\t\t\tDeleteRequest: {\n\t\t\t\tKey: chunk,\n\t\t\t},\n\t\t});\n\t};\n\tconst final = () =>\n\t\tbatch.length\n\t\t\t? dynamodbBatchWrite(options, batch, streamOptions)\n\t\t\t: undefined;\n\treturn createWritableStream(write, final, streamOptions);\n};\n\nconst dynamodbBatchWrite = async (\n\toptions,\n\tbatch,\n\tstreamOptions,\n\tretryCount = 0,\n) => {\n\tconst retryMaxCount = options.retryMaxCount ?? 10;\n\tconst { UnprocessedItems } = await client.send(\n\t\tnew BatchWriteItemCommand({\n\t\t\tRequestItems: {\n\t\t\t\t[options.TableName]: batch,\n\t\t\t},\n\t\t}),\n\t\t{ abortSignal: streamOptions?.signal },\n\t);\n\tif (UnprocessedItems?.[options.TableName]?.length) {\n\t\tif (retryCount >= retryMaxCount) {\n\t\t\tthrow new Error(\"awsDynamoDBBatchWriteItem has UnprocessedItems\", {\n\t\t\t\tcause: {\n\t\t\t\t\t...options,\n\t\t\t\t\tUnprocessedItemsCount: UnprocessedItems[options.TableName].length,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tawait timeout(3 ** retryCount); // 3^10 == 59sec\n\t\treturn dynamodbBatchWrite(\n\t\t\toptions,\n\t\t\tUnprocessedItems[options.TableName],\n\t\t\tstreamOptions,\n\t\t\tretryCount + 1,\n\t\t);\n\t}\n};\n\nexport default {\n\tsetClient: awsDynamoDBSetClient,\n\tqueryStream: awsDynamoDBQueryStream,\n\tscanStream: awsDynamoDBScanStream,\n\texecuteStatementStream: awsDynamoDBExecuteStatementStream,\n\tgetItemStream: awsDynamoDBGetItemStream,\n\tputItemStream: awsDynamoDBPutItemStream,\n\tdeleteItemStream: awsDynamoDBDeleteItemStream,\n};\n"],
"mappings": "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",
"names": ["options"]
}
// Copyright 2026 will Farrell, and datastream contributors.
// SPDX-License-Identifier: MIT
import type { StreamOptions } from "@datastream/core";
import type {
DatastreamReadable,
DatastreamWritable,
StreamOptions,
} from "@datastream/core";

@@ -16,3 +20,3 @@ export function awsKinesisSetClient(kinesisClient: unknown): void;

streamOptions?: StreamOptions,
): Promise<unknown>;
): Promise<DatastreamReadable>;

@@ -27,2 +31,2 @@ export function awsKinesisPutRecordsStream(

streamOptions?: StreamOptions,
): unknown;
): DatastreamWritable;

@@ -12,8 +12,10 @@ import {

};
const awsKinesisGetRecordsStream = async (options, _streamOptions = {}) => {
const awsKinesisGetRecordsStream = async (options, streamOptions = {}) => {
const { pollingActive, pollingDelay = 1e3, ...kinesisOptions } = options;
async function* command(options2) {
async function* command(opts) {
let expectMore = true;
while (expectMore) {
const response = await client.send(new GetRecordsCommand(options2));
const response = await client.send(new GetRecordsCommand(opts), {
abortSignal: streamOptions.signal
});
const records = response.Records ?? [];

@@ -23,4 +25,4 @@ for (const item of records) {

}
options2.ShardIterator = response.NextShardIterator;
expectMore = pollingActive || records.length > 0;
opts.ShardIterator = response.NextShardIterator;
expectMore = opts.ShardIterator !== null && (pollingActive || records.length > 0);
if (pollingActive && records.length === 0 && pollingDelay > 0) {

@@ -31,3 +33,3 @@ await new Promise((resolve) => setTimeout(resolve, pollingDelay));

}
return command(kinesisOptions);
return command({ ...kinesisOptions });
};

@@ -34,0 +36,0 @@ const awsKinesisPutRecordsStream = (options, streamOptions = {}) => {

{
"version": 3,
"sources": ["kinesis.js"],
"sourcesContent": ["// Copyright 2026 will Farrell, and datastream contributors.\n// SPDX-License-Identifier: MIT\nimport {\n\tGetRecordsCommand,\n\tKinesisClient,\n\tPutRecordsCommand,\n} from \"@aws-sdk/client-kinesis\";\nimport { createWritableStream } from \"@datastream/core\";\nimport { awsClientDefaults } from \"./client.js\";\n\nlet client = new KinesisClient(awsClientDefaults);\nexport const awsKinesisSetClient = (kinesisClient) => {\n\tclient = kinesisClient;\n};\n\nexport const awsKinesisGetRecordsStream = async (\n\toptions,\n\t_streamOptions = {},\n) => {\n\tconst { pollingActive, pollingDelay = 1000, ...kinesisOptions } = options;\n\tasync function* command(options) {\n\t\tlet expectMore = true;\n\t\twhile (expectMore) {\n\t\t\tconst response = await client.send(new GetRecordsCommand(options));\n\t\t\tconst records = response.Records ?? [];\n\t\t\tfor (const item of records) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t\toptions.ShardIterator = response.NextShardIterator;\n\t\t\texpectMore = pollingActive || records.length > 0;\n\t\t\tif (pollingActive && records.length === 0 && pollingDelay > 0) {\n\t\t\t\tawait new Promise((resolve) => setTimeout(resolve, pollingDelay));\n\t\t\t}\n\t\t}\n\t}\n\treturn command(kinesisOptions);\n};\n\nexport const awsKinesisPutRecordsStream = (options, streamOptions = {}) => {\n\tlet batch = [];\n\tconst send = () => {\n\t\toptions.Records = batch;\n\t\tbatch = [];\n\t\treturn client.send(new PutRecordsCommand(options));\n\t};\n\tconst write = async (chunk) => {\n\t\tif (batch.length === 500) {\n\t\t\tawait send();\n\t\t}\n\t\tbatch.push(chunk);\n\t};\n\tconst final = () => (batch.length ? send() : undefined);\n\treturn createWritableStream(write, final, streamOptions);\n};\n\nexport default {\n\tsetClient: awsKinesisSetClient,\n\tgetRecordsStream: awsKinesisGetRecordsStream,\n\tputRecordsStream: awsKinesisPutRecordsStream,\n};\n"],
"mappings": "AAEA;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,4BAA4B;AACrC,SAAS,yBAAyB;AAElC,IAAI,SAAS,IAAI,cAAc,iBAAiB;AACzC,MAAM,sBAAsB,CAAC,kBAAkB;AACrD,WAAS;AACV;AAEO,MAAM,6BAA6B,OACzC,SACA,iBAAiB,CAAC,MACd;AACJ,QAAM,EAAE,eAAe,eAAe,KAAM,GAAG,eAAe,IAAI;AAClE,kBAAgB,QAAQA,UAAS;AAChC,QAAI,aAAa;AACjB,WAAO,YAAY;AAClB,YAAM,WAAW,MAAM,OAAO,KAAK,IAAI,kBAAkBA,QAAO,CAAC;AACjE,YAAM,UAAU,SAAS,WAAW,CAAC;AACrC,iBAAW,QAAQ,SAAS;AAC3B,cAAM;AAAA,MACP;AACA,MAAAA,SAAQ,gBAAgB,SAAS;AACjC,mBAAa,iBAAiB,QAAQ,SAAS;AAC/C,UAAI,iBAAiB,QAAQ,WAAW,KAAK,eAAe,GAAG;AAC9D,cAAM,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,YAAY,CAAC;AAAA,MACjE;AAAA,IACD;AAAA,EACD;AACA,SAAO,QAAQ,cAAc;AAC9B;AAEO,MAAM,6BAA6B,CAAC,SAAS,gBAAgB,CAAC,MAAM;AAC1E,MAAI,QAAQ,CAAC;AACb,QAAM,OAAO,MAAM;AAClB,YAAQ,UAAU;AAClB,YAAQ,CAAC;AACT,WAAO,OAAO,KAAK,IAAI,kBAAkB,OAAO,CAAC;AAAA,EAClD;AACA,QAAM,QAAQ,OAAO,UAAU;AAC9B,QAAI,MAAM,WAAW,KAAK;AACzB,YAAM,KAAK;AAAA,IACZ;AACA,UAAM,KAAK,KAAK;AAAA,EACjB;AACA,QAAM,QAAQ,MAAO,MAAM,SAAS,KAAK,IAAI;AAC7C,SAAO,qBAAqB,OAAO,OAAO,aAAa;AACxD;AAEA,IAAO,kBAAQ;AAAA,EACd,WAAW;AAAA,EACX,kBAAkB;AAAA,EAClB,kBAAkB;AACnB;",
"names": ["options"]
"sourcesContent": ["// Copyright 2026 will Farrell, and datastream contributors.\n// SPDX-License-Identifier: MIT\nimport {\n\tGetRecordsCommand,\n\tKinesisClient,\n\tPutRecordsCommand,\n} from \"@aws-sdk/client-kinesis\";\nimport { createWritableStream } from \"@datastream/core\";\nimport { awsClientDefaults } from \"./client.js\";\n\nlet client = new KinesisClient(awsClientDefaults);\nexport const awsKinesisSetClient = (kinesisClient) => {\n\tclient = kinesisClient;\n};\n\nexport const awsKinesisGetRecordsStream = async (\n\toptions,\n\tstreamOptions = {},\n) => {\n\tconst { pollingActive, pollingDelay = 1000, ...kinesisOptions } = options;\n\tasync function* command(opts) {\n\t\tlet expectMore = true;\n\t\twhile (expectMore) {\n\t\t\tconst response = await client.send(new GetRecordsCommand(opts), {\n\t\t\t\tabortSignal: streamOptions.signal,\n\t\t\t});\n\t\t\tconst records = response.Records ?? [];\n\t\t\tfor (const item of records) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t\topts.ShardIterator = response.NextShardIterator;\n\t\t\texpectMore =\n\t\t\t\topts.ShardIterator !== null && (pollingActive || records.length > 0);\n\t\t\tif (pollingActive && records.length === 0 && pollingDelay > 0) {\n\t\t\t\tawait new Promise((resolve) => setTimeout(resolve, pollingDelay));\n\t\t\t}\n\t\t}\n\t}\n\treturn command({ ...kinesisOptions });\n};\n\nexport const awsKinesisPutRecordsStream = (options, streamOptions = {}) => {\n\tlet batch = [];\n\tconst send = () => {\n\t\toptions.Records = batch;\n\t\tbatch = [];\n\t\treturn client.send(new PutRecordsCommand(options));\n\t};\n\tconst write = async (chunk) => {\n\t\tif (batch.length === 500) {\n\t\t\tawait send();\n\t\t}\n\t\tbatch.push(chunk);\n\t};\n\tconst final = () => (batch.length ? send() : undefined);\n\treturn createWritableStream(write, final, streamOptions);\n};\n\nexport default {\n\tsetClient: awsKinesisSetClient,\n\tgetRecordsStream: awsKinesisGetRecordsStream,\n\tputRecordsStream: awsKinesisPutRecordsStream,\n};\n"],
"mappings": "AAEA;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,4BAA4B;AACrC,SAAS,yBAAyB;AAElC,IAAI,SAAS,IAAI,cAAc,iBAAiB;AACzC,MAAM,sBAAsB,CAAC,kBAAkB;AACrD,WAAS;AACV;AAEO,MAAM,6BAA6B,OACzC,SACA,gBAAgB,CAAC,MACb;AACJ,QAAM,EAAE,eAAe,eAAe,KAAM,GAAG,eAAe,IAAI;AAClE,kBAAgB,QAAQ,MAAM;AAC7B,QAAI,aAAa;AACjB,WAAO,YAAY;AAClB,YAAM,WAAW,MAAM,OAAO,KAAK,IAAI,kBAAkB,IAAI,GAAG;AAAA,QAC/D,aAAa,cAAc;AAAA,MAC5B,CAAC;AACD,YAAM,UAAU,SAAS,WAAW,CAAC;AACrC,iBAAW,QAAQ,SAAS;AAC3B,cAAM;AAAA,MACP;AACA,WAAK,gBAAgB,SAAS;AAC9B,mBACC,KAAK,kBAAkB,SAAS,iBAAiB,QAAQ,SAAS;AACnE,UAAI,iBAAiB,QAAQ,WAAW,KAAK,eAAe,GAAG;AAC9D,cAAM,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,YAAY,CAAC;AAAA,MACjE;AAAA,IACD;AAAA,EACD;AACA,SAAO,QAAQ,EAAE,GAAG,eAAe,CAAC;AACrC;AAEO,MAAM,6BAA6B,CAAC,SAAS,gBAAgB,CAAC,MAAM;AAC1E,MAAI,QAAQ,CAAC;AACb,QAAM,OAAO,MAAM;AAClB,YAAQ,UAAU;AAClB,YAAQ,CAAC;AACT,WAAO,OAAO,KAAK,IAAI,kBAAkB,OAAO,CAAC;AAAA,EAClD;AACA,QAAM,QAAQ,OAAO,UAAU;AAC9B,QAAI,MAAM,WAAW,KAAK;AACzB,YAAM,KAAK;AAAA,IACZ;AACA,UAAM,KAAK,KAAK;AAAA,EACjB;AACA,QAAM,QAAQ,MAAO,MAAM,SAAS,KAAK,IAAI;AAC7C,SAAO,qBAAqB,OAAO,OAAO,aAAa;AACxD;AAEA,IAAO,kBAAQ;AAAA,EACd,WAAW;AAAA,EACX,kBAAkB;AAAA,EAClB,kBAAkB;AACnB;",
"names": []
}

@@ -12,8 +12,10 @@ import {

};
const awsKinesisGetRecordsStream = async (options, _streamOptions = {}) => {
const awsKinesisGetRecordsStream = async (options, streamOptions = {}) => {
const { pollingActive, pollingDelay = 1e3, ...kinesisOptions } = options;
async function* command(options2) {
async function* command(opts) {
let expectMore = true;
while (expectMore) {
const response = await client.send(new GetRecordsCommand(options2));
const response = await client.send(new GetRecordsCommand(opts), {
abortSignal: streamOptions.signal
});
const records = response.Records ?? [];

@@ -23,4 +25,4 @@ for (const item of records) {

}
options2.ShardIterator = response.NextShardIterator;
expectMore = pollingActive || records.length > 0;
opts.ShardIterator = response.NextShardIterator;
expectMore = opts.ShardIterator !== null && (pollingActive || records.length > 0);
if (pollingActive && records.length === 0 && pollingDelay > 0) {

@@ -31,3 +33,3 @@ await new Promise((resolve) => setTimeout(resolve, pollingDelay));

}
return command(kinesisOptions);
return command({ ...kinesisOptions });
};

@@ -34,0 +36,0 @@ const awsKinesisPutRecordsStream = (options, streamOptions = {}) => {

{
"version": 3,
"sources": ["kinesis.js"],
"sourcesContent": ["// Copyright 2026 will Farrell, and datastream contributors.\n// SPDX-License-Identifier: MIT\nimport {\n\tGetRecordsCommand,\n\tKinesisClient,\n\tPutRecordsCommand,\n} from \"@aws-sdk/client-kinesis\";\nimport { createWritableStream } from \"@datastream/core\";\nimport { awsClientDefaults } from \"./client.js\";\n\nlet client = new KinesisClient(awsClientDefaults);\nexport const awsKinesisSetClient = (kinesisClient) => {\n\tclient = kinesisClient;\n};\n\nexport const awsKinesisGetRecordsStream = async (\n\toptions,\n\t_streamOptions = {},\n) => {\n\tconst { pollingActive, pollingDelay = 1000, ...kinesisOptions } = options;\n\tasync function* command(options) {\n\t\tlet expectMore = true;\n\t\twhile (expectMore) {\n\t\t\tconst response = await client.send(new GetRecordsCommand(options));\n\t\t\tconst records = response.Records ?? [];\n\t\t\tfor (const item of records) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t\toptions.ShardIterator = response.NextShardIterator;\n\t\t\texpectMore = pollingActive || records.length > 0;\n\t\t\tif (pollingActive && records.length === 0 && pollingDelay > 0) {\n\t\t\t\tawait new Promise((resolve) => setTimeout(resolve, pollingDelay));\n\t\t\t}\n\t\t}\n\t}\n\treturn command(kinesisOptions);\n};\n\nexport const awsKinesisPutRecordsStream = (options, streamOptions = {}) => {\n\tlet batch = [];\n\tconst send = () => {\n\t\toptions.Records = batch;\n\t\tbatch = [];\n\t\treturn client.send(new PutRecordsCommand(options));\n\t};\n\tconst write = async (chunk) => {\n\t\tif (batch.length === 500) {\n\t\t\tawait send();\n\t\t}\n\t\tbatch.push(chunk);\n\t};\n\tconst final = () => (batch.length ? send() : undefined);\n\treturn createWritableStream(write, final, streamOptions);\n};\n\nexport default {\n\tsetClient: awsKinesisSetClient,\n\tgetRecordsStream: awsKinesisGetRecordsStream,\n\tputRecordsStream: awsKinesisPutRecordsStream,\n};\n"],
"mappings": "AAEA;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,4BAA4B;AACrC,SAAS,yBAAyB;AAElC,IAAI,SAAS,IAAI,cAAc,iBAAiB;AACzC,MAAM,sBAAsB,CAAC,kBAAkB;AACrD,WAAS;AACV;AAEO,MAAM,6BAA6B,OACzC,SACA,iBAAiB,CAAC,MACd;AACJ,QAAM,EAAE,eAAe,eAAe,KAAM,GAAG,eAAe,IAAI;AAClE,kBAAgB,QAAQA,UAAS;AAChC,QAAI,aAAa;AACjB,WAAO,YAAY;AAClB,YAAM,WAAW,MAAM,OAAO,KAAK,IAAI,kBAAkBA,QAAO,CAAC;AACjE,YAAM,UAAU,SAAS,WAAW,CAAC;AACrC,iBAAW,QAAQ,SAAS;AAC3B,cAAM;AAAA,MACP;AACA,MAAAA,SAAQ,gBAAgB,SAAS;AACjC,mBAAa,iBAAiB,QAAQ,SAAS;AAC/C,UAAI,iBAAiB,QAAQ,WAAW,KAAK,eAAe,GAAG;AAC9D,cAAM,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,YAAY,CAAC;AAAA,MACjE;AAAA,IACD;AAAA,EACD;AACA,SAAO,QAAQ,cAAc;AAC9B;AAEO,MAAM,6BAA6B,CAAC,SAAS,gBAAgB,CAAC,MAAM;AAC1E,MAAI,QAAQ,CAAC;AACb,QAAM,OAAO,MAAM;AAClB,YAAQ,UAAU;AAClB,YAAQ,CAAC;AACT,WAAO,OAAO,KAAK,IAAI,kBAAkB,OAAO,CAAC;AAAA,EAClD;AACA,QAAM,QAAQ,OAAO,UAAU;AAC9B,QAAI,MAAM,WAAW,KAAK;AACzB,YAAM,KAAK;AAAA,IACZ;AACA,UAAM,KAAK,KAAK;AAAA,EACjB;AACA,QAAM,QAAQ,MAAO,MAAM,SAAS,KAAK,IAAI;AAC7C,SAAO,qBAAqB,OAAO,OAAO,aAAa;AACxD;AAEA,IAAO,kBAAQ;AAAA,EACd,WAAW;AAAA,EACX,kBAAkB;AAAA,EAClB,kBAAkB;AACnB;",
"names": ["options"]
"sourcesContent": ["// Copyright 2026 will Farrell, and datastream contributors.\n// SPDX-License-Identifier: MIT\nimport {\n\tGetRecordsCommand,\n\tKinesisClient,\n\tPutRecordsCommand,\n} from \"@aws-sdk/client-kinesis\";\nimport { createWritableStream } from \"@datastream/core\";\nimport { awsClientDefaults } from \"./client.js\";\n\nlet client = new KinesisClient(awsClientDefaults);\nexport const awsKinesisSetClient = (kinesisClient) => {\n\tclient = kinesisClient;\n};\n\nexport const awsKinesisGetRecordsStream = async (\n\toptions,\n\tstreamOptions = {},\n) => {\n\tconst { pollingActive, pollingDelay = 1000, ...kinesisOptions } = options;\n\tasync function* command(opts) {\n\t\tlet expectMore = true;\n\t\twhile (expectMore) {\n\t\t\tconst response = await client.send(new GetRecordsCommand(opts), {\n\t\t\t\tabortSignal: streamOptions.signal,\n\t\t\t});\n\t\t\tconst records = response.Records ?? [];\n\t\t\tfor (const item of records) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t\topts.ShardIterator = response.NextShardIterator;\n\t\t\texpectMore =\n\t\t\t\topts.ShardIterator !== null && (pollingActive || records.length > 0);\n\t\t\tif (pollingActive && records.length === 0 && pollingDelay > 0) {\n\t\t\t\tawait new Promise((resolve) => setTimeout(resolve, pollingDelay));\n\t\t\t}\n\t\t}\n\t}\n\treturn command({ ...kinesisOptions });\n};\n\nexport const awsKinesisPutRecordsStream = (options, streamOptions = {}) => {\n\tlet batch = [];\n\tconst send = () => {\n\t\toptions.Records = batch;\n\t\tbatch = [];\n\t\treturn client.send(new PutRecordsCommand(options));\n\t};\n\tconst write = async (chunk) => {\n\t\tif (batch.length === 500) {\n\t\t\tawait send();\n\t\t}\n\t\tbatch.push(chunk);\n\t};\n\tconst final = () => (batch.length ? send() : undefined);\n\treturn createWritableStream(write, final, streamOptions);\n};\n\nexport default {\n\tsetClient: awsKinesisSetClient,\n\tgetRecordsStream: awsKinesisGetRecordsStream,\n\tputRecordsStream: awsKinesisPutRecordsStream,\n};\n"],
"mappings": "AAEA;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,4BAA4B;AACrC,SAAS,yBAAyB;AAElC,IAAI,SAAS,IAAI,cAAc,iBAAiB;AACzC,MAAM,sBAAsB,CAAC,kBAAkB;AACrD,WAAS;AACV;AAEO,MAAM,6BAA6B,OACzC,SACA,gBAAgB,CAAC,MACb;AACJ,QAAM,EAAE,eAAe,eAAe,KAAM,GAAG,eAAe,IAAI;AAClE,kBAAgB,QAAQ,MAAM;AAC7B,QAAI,aAAa;AACjB,WAAO,YAAY;AAClB,YAAM,WAAW,MAAM,OAAO,KAAK,IAAI,kBAAkB,IAAI,GAAG;AAAA,QAC/D,aAAa,cAAc;AAAA,MAC5B,CAAC;AACD,YAAM,UAAU,SAAS,WAAW,CAAC;AACrC,iBAAW,QAAQ,SAAS;AAC3B,cAAM;AAAA,MACP;AACA,WAAK,gBAAgB,SAAS;AAC9B,mBACC,KAAK,kBAAkB,SAAS,iBAAiB,QAAQ,SAAS;AACnE,UAAI,iBAAiB,QAAQ,WAAW,KAAK,eAAe,GAAG;AAC9D,cAAM,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,YAAY,CAAC;AAAA,MACjE;AAAA,IACD;AAAA,EACD;AACA,SAAO,QAAQ,EAAE,GAAG,eAAe,CAAC;AACrC;AAEO,MAAM,6BAA6B,CAAC,SAAS,gBAAgB,CAAC,MAAM;AAC1E,MAAI,QAAQ,CAAC;AACb,QAAM,OAAO,MAAM;AAClB,YAAQ,UAAU;AAClB,YAAQ,CAAC;AACT,WAAO,OAAO,KAAK,IAAI,kBAAkB,OAAO,CAAC;AAAA,EAClD;AACA,QAAM,QAAQ,OAAO,UAAU;AAC9B,QAAI,MAAM,WAAW,KAAK;AACzB,YAAM,KAAK;AAAA,IACZ;AACA,UAAM,KAAK,KAAK;AAAA,EACjB;AACA,QAAM,QAAQ,MAAO,MAAM,SAAS,KAAK,IAAI;AAC7C,SAAO,qBAAqB,OAAO,OAAO,aAAa;AACxD;AAEA,IAAO,kBAAQ;AAAA,EACd,WAAW;AAAA,EACX,kBAAkB;AAAA,EAClB,kBAAkB;AACnB;",
"names": []
}
// Copyright 2026 will Farrell, and datastream contributors.
// SPDX-License-Identifier: MIT
import type { StreamOptions } from "@datastream/core";
import type { DatastreamReadable, StreamOptions } from "@datastream/core";

@@ -10,3 +10,3 @@ export function awsLambdaSetClient(lambdaClient: unknown): void;

streamOptions?: StreamOptions,
): unknown;
): DatastreamReadable;
export { awsLambdaReadableStream as awsLambdaResponseStream };
{
"name": "@datastream/aws",
"version": "0.3.0",
"version": "0.3.1",
"description": "AWS service streaming integrations for CloudWatch Logs, DynamoDB, Kinesis, Lambda, S3, SNS, and SQS",

@@ -151,3 +151,3 @@ "type": "module",

"dependencies": {
"@datastream/core": "0.3.0"
"@datastream/core": "0.3.1"
},

@@ -154,0 +154,0 @@ "peerDependencies": {

+10
-4
// Copyright 2026 will Farrell, and datastream contributors.
// SPDX-License-Identifier: MIT
import type { StreamOptions, StreamResult } from "@datastream/core";
import type {
DatastreamPassThrough,
DatastreamReadable,
DatastreamWritable,
StreamOptions,
StreamResult,
} from "@datastream/core";

@@ -15,3 +21,3 @@ export function awsS3SetClient(s3Client: unknown): void;

streamOptions?: StreamOptions,
): Promise<unknown>;
): Promise<DatastreamReadable>;

@@ -28,3 +34,3 @@ export function awsS3PutObjectStream(

streamOptions?: StreamOptions,
): unknown & {
): DatastreamWritable & {
result: () => Promise<StreamResult<unknown>>;

@@ -40,3 +46,3 @@ };

streamOptions?: StreamOptions,
): unknown & {
): DatastreamPassThrough & {
result: () => StreamResult<{

@@ -43,0 +49,0 @@ checksum: string;

// Copyright 2026 will Farrell, and datastream contributors.
// SPDX-License-Identifier: MIT
import type { StreamOptions } from "@datastream/core";
import type { DatastreamWritable, StreamOptions } from "@datastream/core";

@@ -14,2 +14,2 @@ export function awsSNSSetClient(snsClient: unknown): void;

streamOptions?: StreamOptions,
): unknown;
): DatastreamWritable;
// Copyright 2026 will Farrell, and datastream contributors.
// SPDX-License-Identifier: MIT
import type { StreamOptions } from "@datastream/core";
import type {
DatastreamReadable,
DatastreamWritable,
StreamOptions,
} from "@datastream/core";

@@ -16,3 +20,3 @@ export function awsSQSSetClient(sqsClient: unknown): void;

streamOptions?: StreamOptions,
): Promise<unknown>;
): Promise<DatastreamReadable>;

@@ -26,3 +30,3 @@ export function awsSQSDeleteMessageStream(

streamOptions?: StreamOptions,
): unknown;
): DatastreamWritable;

@@ -36,2 +40,2 @@ export function awsSQSSendMessageStream(

streamOptions?: StreamOptions,
): unknown;
): DatastreamWritable;