@datastream/aws
Advanced tools
@@ -36,3 +36,2 @@ var __create = Object.create; | ||
| var import_client_dynamodb = require("@aws-sdk/client-dynamodb"); | ||
| var import_util_dynamodb = require("@aws-sdk/util-dynamodb"); | ||
| var import_node_https = require("node:https"); | ||
@@ -63,3 +62,5 @@ var import_node_http_handler = require("@aws-sdk/node-http-handler"); | ||
| }; | ||
| let dynamodb = import_aws_xray_sdk_core.default.captureAWSv3Client(new import_client_dynamodb.DynamoDBClient(awsClientDefaults)); | ||
| let dynamodb = import_aws_xray_sdk_core.default.captureAWSv3Client( | ||
| new import_client_dynamodb.DynamoDBClient(awsClientDefaults) | ||
| ); | ||
| let dynamodbDocument = DynamoDBDocumentClient.from(dynamodb); | ||
@@ -185,3 +186,7 @@ const awsDynamoDBSetClient = (client) => { | ||
| await (0, import_core.timeout)(3 ** options.retryCount++); | ||
| return dynamodbBatchWriteItem(options, UnprocessedItems[table], options); | ||
| return dynamodbBatchWrite( | ||
| options, | ||
| UnprocessedItems[options.TableName], | ||
| options | ||
| ); | ||
| } | ||
@@ -188,0 +193,0 @@ options.retryCount = 0; |
| { | ||
| "version": 3, | ||
| "sources": ["dynamodb.js"], | ||
| "sourcesContent": ["import {\n createWritableStream,\n createTransformStream,\n timeout\n} from '@datastream/core'\nimport { DynamoDBClient } from '@aws-sdk/client-dynamodb'\nimport { marshall, unmarshall } from '@aws-sdk/util-dynamodb'\nconst {\n BatchGetCommand,\n BatchWriteCommand,\n QueryCommand,\n ScanCommand,\n DynamoDBDocumentClient\n} = require('@aws-sdk/lib-dynamodb')\n\nimport { Agent } from 'node:https'\nimport { NodeHttpHandler } from '@aws-sdk/node-http-handler'\nimport AWSXRay from 'aws-xray-sdk-core'\n\nconst awsClientDefaults = {\n requestHandler: new NodeHttpHandler({\n httpsAgent: new Agent({\n keepAlive: true,\n secureProtocol: 'TLSv1_2_method'\n })\n }),\n useFipsEndpoint: [\n 'us-east-1',\n 'us-east-2',\n 'us-west-1',\n 'us-west-2',\n 'ca-central-1'\n ].includes(process.env.AWS_REGION)\n}\n\nlet dynamodb = AWSXRay.captureAWSv3Client(new DynamoDBClient(awsClientDefaults))\nlet dynamodbDocument = DynamoDBDocumentClient.from(dynamodb)\nexport const awsDynamoDBSetClient = (client) => {\n dynamodb = client\n dynamodbDocument = DynamoDBDocumentClient.from(dynamodb)\n}\n\n// Docs: https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html\n\n// options = {TableName, ...}\n\nexport const awsDynamoDBQueryStream = (options, streamOptions) => {\n async function* command(options) {\n let count = 1\n while (count) {\n const response = await dynamodbDocument.send(new QueryCommand(options))\n options.ExclusiveStartKey = response.LastEvaluatedKey\n count = response.Count\n for (const item of response.Items) {\n yield item\n }\n }\n }\n return command(options)\n}\n\nexport const awsDynamoDBScanStream = async (options, streamOptions) => {\n async function* command(options) {\n let count = 1\n while (count) {\n const response = await dynamodbDocument.send(new ScanCommand(options))\n options.ExclusiveStartKey = response.LastEvaluatedKey\n count = response.Count\n for (const item of response.Items) {\n yield item\n }\n }\n }\n return command(options)\n}\n\n// max Keys.length = 100\nexport const awsDynamoDBGetStream = async (options, streamOptions) => {\n options.retryCount ??= 0\n options.retryMaxCount ??= 10\n async function* command(options) {\n while (true) {\n const response = await dynamodbDocument.send(\n new BatchGetCommand({\n RequestItems: {\n [options.TableName]: options\n }\n })\n )\n for (const item of response.Responses[options.TableName]) {\n yield item\n }\n const UnprocessedKeys =\n response?.UnprocessedKeys?.[options.TableName]?.Keys ?? []\n\n if (!UnprocessedKeys.length) {\n break\n }\n if (options.retryCount >= options.retryMaxCount) {\n throw new Error('awsDynamoDBBatchGet has UnprocessedKeys', {\n cause: {\n ...options,\n UnprocessedKeysCount: UnprocessedKeys.length\n }\n })\n }\n\n await timeout(3 ** options.retryCount++) // 3^10 == 59sec\n\n options.Keys = UnprocessedKeys\n }\n }\n return command(options)\n}\n\nexport const awsDynamoDBPutItemStream = (options, streamOptions) => {\n options.retryCount ??= 0\n options.retryMaxCount ??= 10\n let batch = []\n const write = async (chunk) => {\n if (batch.length === 10) {\n await dynamodbBatchWrite(options, batch, streamOptions)\n batch = []\n }\n batch.push({\n PutRequest: {\n Item: chunk\n }\n })\n }\n streamOptions.final = () => dynamodbBatchWrite(options, batch, streamOptions)\n return createWritableStream(write, streamOptions)\n}\n\nexport const awsDynamoDBDeleteItemStream = (options, streamOptions) => {\n options.retryCount ??= 0\n options.retryMaxCount ??= 10\n let batch = []\n const write = async (chunk) => {\n if (batch.length === 10) {\n await dynamodbBatchWrite(options, batch, options)\n batch = []\n }\n batch.push({\n DeleteRequest: {\n Key: chunk\n }\n })\n }\n streamOptions.final = () => dynamodbBatchWrite(options, batch, options)\n return createWritableStream(write, streamOptions)\n}\n\nconst dynamodbBatchWrite = async (options, batch, streamOptions) => {\n const { UnprocessedItems } = await dynamodbDocument.send(\n new BatchWriteCommand({\n RequestItems: {\n [options.TableName]: batch\n }\n })\n )\n if (UnprocessedItems.length) {\n if (options.retryCount >= options.retryMaxCount) {\n throw new Error('awsDynamoDBBatchWrite has UnprocessedItems', {\n cause: {\n ...options,\n UnprocessedItemsCount: UnprocessedItems.length\n }\n })\n }\n\n await timeout(3 ** options.retryCount++) // 3^10 == 59sec\n return dynamodbBatchWriteItem(options, UnprocessedItems[table], options)\n }\n options.retryCount = 0 // reset for next batch\n}\n"], | ||
| "mappings": "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", | ||
| "sourcesContent": ["import { createWritableStream, timeout } from '@datastream/core'\nimport { DynamoDBClient } from '@aws-sdk/client-dynamodb'\n\nimport { Agent } from 'node:https'\nimport { NodeHttpHandler } from '@aws-sdk/node-http-handler'\nimport AWSXRay from 'aws-xray-sdk-core'\nconst {\n BatchGetCommand,\n BatchWriteCommand,\n QueryCommand,\n ScanCommand,\n DynamoDBDocumentClient\n} = require('@aws-sdk/lib-dynamodb')\n\nconst awsClientDefaults = {\n requestHandler: new NodeHttpHandler({\n httpsAgent: new Agent({\n keepAlive: true,\n secureProtocol: 'TLSv1_2_method'\n })\n }),\n useFipsEndpoint: [\n 'us-east-1',\n 'us-east-2',\n 'us-west-1',\n 'us-west-2',\n 'ca-central-1'\n ].includes(process.env.AWS_REGION)\n}\n\nlet dynamodb = AWSXRay.captureAWSv3Client(\n new DynamoDBClient(awsClientDefaults)\n)\nlet dynamodbDocument = DynamoDBDocumentClient.from(dynamodb)\nexport const awsDynamoDBSetClient = (client) => {\n dynamodb = client\n dynamodbDocument = DynamoDBDocumentClient.from(dynamodb)\n}\n\n// Docs: https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html\n\n// options = {TableName, ...}\n\nexport const awsDynamoDBQueryStream = (options, streamOptions) => {\n async function * command (options) {\n let count = 1\n while (count) {\n const response = await dynamodbDocument.send(new QueryCommand(options))\n options.ExclusiveStartKey = response.LastEvaluatedKey\n count = response.Count\n for (const item of response.Items) {\n yield item\n }\n }\n }\n return command(options)\n}\n\nexport const awsDynamoDBScanStream = async (options, streamOptions) => {\n async function * command (options) {\n let count = 1\n while (count) {\n const response = await dynamodbDocument.send(new ScanCommand(options))\n options.ExclusiveStartKey = response.LastEvaluatedKey\n count = response.Count\n for (const item of response.Items) {\n yield item\n }\n }\n }\n return command(options)\n}\n\n// max Keys.length = 100\nexport const awsDynamoDBGetStream = async (options, streamOptions) => {\n options.retryCount ??= 0\n options.retryMaxCount ??= 10\n async function * command (options) {\n while (true) {\n const response = await dynamodbDocument.send(\n new BatchGetCommand({\n RequestItems: {\n [options.TableName]: options\n }\n })\n )\n for (const item of response.Responses[options.TableName]) {\n yield item\n }\n const UnprocessedKeys =\n response?.UnprocessedKeys?.[options.TableName]?.Keys ?? []\n\n if (!UnprocessedKeys.length) {\n break\n }\n if (options.retryCount >= options.retryMaxCount) {\n throw new Error('awsDynamoDBBatchGet has UnprocessedKeys', {\n cause: {\n ...options,\n UnprocessedKeysCount: UnprocessedKeys.length\n }\n })\n }\n\n await timeout(3 ** options.retryCount++) // 3^10 == 59sec\n\n options.Keys = UnprocessedKeys\n }\n }\n return command(options)\n}\n\nexport const awsDynamoDBPutItemStream = (options, streamOptions) => {\n options.retryCount ??= 0\n options.retryMaxCount ??= 10\n let batch = []\n const write = async (chunk) => {\n if (batch.length === 10) {\n await dynamodbBatchWrite(options, batch, streamOptions)\n batch = []\n }\n batch.push({\n PutRequest: {\n Item: chunk\n }\n })\n }\n streamOptions.final = () => dynamodbBatchWrite(options, batch, streamOptions)\n return createWritableStream(write, streamOptions)\n}\n\nexport const awsDynamoDBDeleteItemStream = (options, streamOptions) => {\n options.retryCount ??= 0\n options.retryMaxCount ??= 10\n let batch = []\n const write = async (chunk) => {\n if (batch.length === 10) {\n await dynamodbBatchWrite(options, batch, options)\n batch = []\n }\n batch.push({\n DeleteRequest: {\n Key: chunk\n }\n })\n }\n streamOptions.final = () => dynamodbBatchWrite(options, batch, options)\n return createWritableStream(write, streamOptions)\n}\n\nconst dynamodbBatchWrite = async (options, batch, streamOptions) => {\n const { UnprocessedItems } = await dynamodbDocument.send(\n new BatchWriteCommand({\n RequestItems: {\n [options.TableName]: batch\n }\n })\n )\n if (UnprocessedItems.length) {\n if (options.retryCount >= options.retryMaxCount) {\n throw new Error('awsDynamoDBBatchWrite has UnprocessedItems', {\n cause: {\n ...options,\n UnprocessedItemsCount: UnprocessedItems.length\n }\n })\n }\n\n await timeout(3 ** options.retryCount++) // 3^10 == 59sec\n return dynamodbBatchWrite(\n options,\n UnprocessedItems[options.TableName],\n options\n )\n }\n options.retryCount = 0 // reset for next batch\n}\n"], | ||
| "mappings": "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", | ||
| "names": ["AWSXRay", "options"] | ||
| } |
+12
-11
@@ -1,8 +0,6 @@ | ||
| import { | ||
| createWritableStream, | ||
| createTransformStream, | ||
| timeout | ||
| } from "@datastream/core"; | ||
| import { createWritableStream, timeout } from "@datastream/core"; | ||
| import { DynamoDBClient } from "@aws-sdk/client-dynamodb"; | ||
| import { marshall, unmarshall } from "@aws-sdk/util-dynamodb"; | ||
| import { Agent } from "node:https"; | ||
| import { NodeHttpHandler } from "@aws-sdk/node-http-handler"; | ||
| import AWSXRay from "aws-xray-sdk-core"; | ||
| const { | ||
@@ -15,5 +13,2 @@ BatchGetCommand, | ||
| } = require("@aws-sdk/lib-dynamodb"); | ||
| import { Agent } from "node:https"; | ||
| import { NodeHttpHandler } from "@aws-sdk/node-http-handler"; | ||
| import AWSXRay from "aws-xray-sdk-core"; | ||
| const awsClientDefaults = { | ||
@@ -34,3 +29,5 @@ requestHandler: new NodeHttpHandler({ | ||
| }; | ||
| let dynamodb = AWSXRay.captureAWSv3Client(new DynamoDBClient(awsClientDefaults)); | ||
| let dynamodb = AWSXRay.captureAWSv3Client( | ||
| new DynamoDBClient(awsClientDefaults) | ||
| ); | ||
| let dynamodbDocument = DynamoDBDocumentClient.from(dynamodb); | ||
@@ -156,3 +153,7 @@ const awsDynamoDBSetClient = (client) => { | ||
| await timeout(3 ** options.retryCount++); | ||
| return dynamodbBatchWriteItem(options, UnprocessedItems[table], options); | ||
| return dynamodbBatchWrite( | ||
| options, | ||
| UnprocessedItems[options.TableName], | ||
| options | ||
| ); | ||
| } | ||
@@ -159,0 +160,0 @@ options.retryCount = 0; |
| { | ||
| "version": 3, | ||
| "sources": ["dynamodb.js"], | ||
| "sourcesContent": ["import {\n createWritableStream,\n createTransformStream,\n timeout\n} from '@datastream/core'\nimport { DynamoDBClient } from '@aws-sdk/client-dynamodb'\nimport { marshall, unmarshall } from '@aws-sdk/util-dynamodb'\nconst {\n BatchGetCommand,\n BatchWriteCommand,\n QueryCommand,\n ScanCommand,\n DynamoDBDocumentClient\n} = require('@aws-sdk/lib-dynamodb')\n\nimport { Agent } from 'node:https'\nimport { NodeHttpHandler } from '@aws-sdk/node-http-handler'\nimport AWSXRay from 'aws-xray-sdk-core'\n\nconst awsClientDefaults = {\n requestHandler: new NodeHttpHandler({\n httpsAgent: new Agent({\n keepAlive: true,\n secureProtocol: 'TLSv1_2_method'\n })\n }),\n useFipsEndpoint: [\n 'us-east-1',\n 'us-east-2',\n 'us-west-1',\n 'us-west-2',\n 'ca-central-1'\n ].includes(process.env.AWS_REGION)\n}\n\nlet dynamodb = AWSXRay.captureAWSv3Client(new DynamoDBClient(awsClientDefaults))\nlet dynamodbDocument = DynamoDBDocumentClient.from(dynamodb)\nexport const awsDynamoDBSetClient = (client) => {\n dynamodb = client\n dynamodbDocument = DynamoDBDocumentClient.from(dynamodb)\n}\n\n// Docs: https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html\n\n// options = {TableName, ...}\n\nexport const awsDynamoDBQueryStream = (options, streamOptions) => {\n async function* command(options) {\n let count = 1\n while (count) {\n const response = await dynamodbDocument.send(new QueryCommand(options))\n options.ExclusiveStartKey = response.LastEvaluatedKey\n count = response.Count\n for (const item of response.Items) {\n yield item\n }\n }\n }\n return command(options)\n}\n\nexport const awsDynamoDBScanStream = async (options, streamOptions) => {\n async function* command(options) {\n let count = 1\n while (count) {\n const response = await dynamodbDocument.send(new ScanCommand(options))\n options.ExclusiveStartKey = response.LastEvaluatedKey\n count = response.Count\n for (const item of response.Items) {\n yield item\n }\n }\n }\n return command(options)\n}\n\n// max Keys.length = 100\nexport const awsDynamoDBGetStream = async (options, streamOptions) => {\n options.retryCount ??= 0\n options.retryMaxCount ??= 10\n async function* command(options) {\n while (true) {\n const response = await dynamodbDocument.send(\n new BatchGetCommand({\n RequestItems: {\n [options.TableName]: options\n }\n })\n )\n for (const item of response.Responses[options.TableName]) {\n yield item\n }\n const UnprocessedKeys =\n response?.UnprocessedKeys?.[options.TableName]?.Keys ?? []\n\n if (!UnprocessedKeys.length) {\n break\n }\n if (options.retryCount >= options.retryMaxCount) {\n throw new Error('awsDynamoDBBatchGet has UnprocessedKeys', {\n cause: {\n ...options,\n UnprocessedKeysCount: UnprocessedKeys.length\n }\n })\n }\n\n await timeout(3 ** options.retryCount++) // 3^10 == 59sec\n\n options.Keys = UnprocessedKeys\n }\n }\n return command(options)\n}\n\nexport const awsDynamoDBPutItemStream = (options, streamOptions) => {\n options.retryCount ??= 0\n options.retryMaxCount ??= 10\n let batch = []\n const write = async (chunk) => {\n if (batch.length === 10) {\n await dynamodbBatchWrite(options, batch, streamOptions)\n batch = []\n }\n batch.push({\n PutRequest: {\n Item: chunk\n }\n })\n }\n streamOptions.final = () => dynamodbBatchWrite(options, batch, streamOptions)\n return createWritableStream(write, streamOptions)\n}\n\nexport const awsDynamoDBDeleteItemStream = (options, streamOptions) => {\n options.retryCount ??= 0\n options.retryMaxCount ??= 10\n let batch = []\n const write = async (chunk) => {\n if (batch.length === 10) {\n await dynamodbBatchWrite(options, batch, options)\n batch = []\n }\n batch.push({\n DeleteRequest: {\n Key: chunk\n }\n })\n }\n streamOptions.final = () => dynamodbBatchWrite(options, batch, options)\n return createWritableStream(write, streamOptions)\n}\n\nconst dynamodbBatchWrite = async (options, batch, streamOptions) => {\n const { UnprocessedItems } = await dynamodbDocument.send(\n new BatchWriteCommand({\n RequestItems: {\n [options.TableName]: batch\n }\n })\n )\n if (UnprocessedItems.length) {\n if (options.retryCount >= options.retryMaxCount) {\n throw new Error('awsDynamoDBBatchWrite has UnprocessedItems', {\n cause: {\n ...options,\n UnprocessedItemsCount: UnprocessedItems.length\n }\n })\n }\n\n await timeout(3 ** options.retryCount++) // 3^10 == 59sec\n return dynamodbBatchWriteItem(options, UnprocessedItems[table], options)\n }\n options.retryCount = 0 // reset for next batch\n}\n"], | ||
| "mappings": "AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,sBAAsB;AAC/B,SAAS,UAAU,kBAAkB;AACrC,MAAM;AAAA,EACJ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,IAAI,QAAQ,uBAAuB;AAEnC,SAAS,aAAa;AACtB,SAAS,uBAAuB;AAChC,OAAO,aAAa;AAEpB,MAAM,oBAAoB;AAAA,EACxB,gBAAgB,IAAI,gBAAgB;AAAA,IAClC,YAAY,IAAI,MAAM;AAAA,MACpB,WAAW;AAAA,MACX,gBAAgB;AAAA,IAClB,CAAC;AAAA,EACH,CAAC;AAAA,EACD,iBAAiB;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,SAAS,QAAQ,IAAI,UAAU;AACnC;AAEA,IAAI,WAAW,QAAQ,mBAAmB,IAAI,eAAe,iBAAiB,CAAC;AAC/E,IAAI,mBAAmB,uBAAuB,KAAK,QAAQ;AACpD,MAAM,uBAAuB,CAAC,WAAW;AAC9C,aAAW;AACX,qBAAmB,uBAAuB,KAAK,QAAQ;AACzD;AAMO,MAAM,yBAAyB,CAAC,SAAS,kBAAkB;AAChE,kBAAgB,QAAQA,UAAS;AAC/B,QAAI,QAAQ;AACZ,WAAO,OAAO;AACZ,YAAM,WAAW,MAAM,iBAAiB,KAAK,IAAI,aAAaA,QAAO,CAAC;AACtE,MAAAA,SAAQ,oBAAoB,SAAS;AACrC,cAAQ,SAAS;AACjB,iBAAW,QAAQ,SAAS,OAAO;AACjC,cAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,SAAO,QAAQ,OAAO;AACxB;AAEO,MAAM,wBAAwB,OAAO,SAAS,kBAAkB;AACrE,kBAAgB,QAAQA,UAAS;AAC/B,QAAI,QAAQ;AACZ,WAAO,OAAO;AACZ,YAAM,WAAW,MAAM,iBAAiB,KAAK,IAAI,YAAYA,QAAO,CAAC;AACrE,MAAAA,SAAQ,oBAAoB,SAAS;AACrC,cAAQ,SAAS;AACjB,iBAAW,QAAQ,SAAS,OAAO;AACjC,cAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,SAAO,QAAQ,OAAO;AACxB;AAGO,MAAM,uBAAuB,OAAO,SAAS,kBAAkB;AACpE,UAAQ,eAAe;AACvB,UAAQ,kBAAkB;AAC1B,kBAAgB,QAAQA,UAAS;AAC/B,WAAO,MAAM;AACX,YAAM,WAAW,MAAM,iBAAiB;AAAA,QACtC,IAAI,gBAAgB;AAAA,UAClB,cAAc;AAAA,YACZ,CAACA,SAAQ,YAAYA;AAAA,UACvB;AAAA,QACF,CAAC;AAAA,MACH;AACA,iBAAW,QAAQ,SAAS,UAAUA,SAAQ,YAAY;AACxD,cAAM;AAAA,MACR;AACA,YAAM,kBACJ,UAAU,kBAAkBA,SAAQ,YAAY,QAAQ,CAAC;AAE3D,UAAI,CAAC,gBAAgB,QAAQ;AAC3B;AAAA,MACF;AACA,UAAIA,SAAQ,cAAcA,SAAQ,eAAe;AAC/C,cAAM,IAAI,MAAM,2CAA2C;AAAA,UACzD,OAAO;AAAA,YACL,GAAGA;AAAA,YACH,sBAAsB,gBAAgB;AAAA,UACxC;AAAA,QACF,CAAC;AAAA,MACH;AAEA,YAAM,QAAQ,KAAKA,SAAQ,YAAY;AAEvC,MAAAA,SAAQ,OAAO;AAAA,IACjB;AAAA,EACF;AACA,SAAO,QAAQ,OAAO;AACxB;AAEO,MAAM,2BAA2B,CAAC,SAAS,kBAAkB;AAClE,UAAQ,eAAe;AACvB,UAAQ,kBAAkB;AAC1B,MAAI,QAAQ,CAAC;AACb,QAAM,QAAQ,OAAO,UAAU;AAC7B,QAAI,MAAM,WAAW,IAAI;AACvB,YAAM,mBAAmB,SAAS,OAAO,aAAa;AACtD,cAAQ,CAAC;AAAA,IACX;AACA,UAAM,KAAK;AAAA,MACT,YAAY;AAAA,QACV,MAAM;AAAA,MACR;AAAA,IACF,CAAC;AAAA,EACH;AACA,gBAAc,QAAQ,MAAM,mBAAmB,SAAS,OAAO,aAAa;AAC5E,SAAO,qBAAqB,OAAO,aAAa;AAClD;AAEO,MAAM,8BAA8B,CAAC,SAAS,kBAAkB;AACrE,UAAQ,eAAe;AACvB,UAAQ,kBAAkB;AAC1B,MAAI,QAAQ,CAAC;AACb,QAAM,QAAQ,OAAO,UAAU;AAC7B,QAAI,MAAM,WAAW,IAAI;AACvB,YAAM,mBAAmB,SAAS,OAAO,OAAO;AAChD,cAAQ,CAAC;AAAA,IACX;AACA,UAAM,KAAK;AAAA,MACT,eAAe;AAAA,QACb,KAAK;AAAA,MACP;AAAA,IACF,CAAC;AAAA,EACH;AACA,gBAAc,QAAQ,MAAM,mBAAmB,SAAS,OAAO,OAAO;AACtE,SAAO,qBAAqB,OAAO,aAAa;AAClD;AAEA,MAAM,qBAAqB,OAAO,SAAS,OAAO,kBAAkB;AAClE,QAAM,EAAE,iBAAiB,IAAI,MAAM,iBAAiB;AAAA,IAClD,IAAI,kBAAkB;AAAA,MACpB,cAAc;AAAA,QACZ,CAAC,QAAQ,YAAY;AAAA,MACvB;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,iBAAiB,QAAQ;AAC3B,QAAI,QAAQ,cAAc,QAAQ,eAAe;AAC/C,YAAM,IAAI,MAAM,8CAA8C;AAAA,QAC5D,OAAO;AAAA,UACL,GAAG;AAAA,UACH,uBAAuB,iBAAiB;AAAA,QAC1C;AAAA,MACF,CAAC;AAAA,IACH;AAEA,UAAM,QAAQ,KAAK,QAAQ,YAAY;AACvC,WAAO,uBAAuB,SAAS,iBAAiB,QAAQ,OAAO;AAAA,EACzE;AACA,UAAQ,aAAa;AACvB;", | ||
| "sourcesContent": ["import { createWritableStream, timeout } from '@datastream/core'\nimport { DynamoDBClient } from '@aws-sdk/client-dynamodb'\n\nimport { Agent } from 'node:https'\nimport { NodeHttpHandler } from '@aws-sdk/node-http-handler'\nimport AWSXRay from 'aws-xray-sdk-core'\nconst {\n BatchGetCommand,\n BatchWriteCommand,\n QueryCommand,\n ScanCommand,\n DynamoDBDocumentClient\n} = require('@aws-sdk/lib-dynamodb')\n\nconst awsClientDefaults = {\n requestHandler: new NodeHttpHandler({\n httpsAgent: new Agent({\n keepAlive: true,\n secureProtocol: 'TLSv1_2_method'\n })\n }),\n useFipsEndpoint: [\n 'us-east-1',\n 'us-east-2',\n 'us-west-1',\n 'us-west-2',\n 'ca-central-1'\n ].includes(process.env.AWS_REGION)\n}\n\nlet dynamodb = AWSXRay.captureAWSv3Client(\n new DynamoDBClient(awsClientDefaults)\n)\nlet dynamodbDocument = DynamoDBDocumentClient.from(dynamodb)\nexport const awsDynamoDBSetClient = (client) => {\n dynamodb = client\n dynamodbDocument = DynamoDBDocumentClient.from(dynamodb)\n}\n\n// Docs: https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html\n\n// options = {TableName, ...}\n\nexport const awsDynamoDBQueryStream = (options, streamOptions) => {\n async function * command (options) {\n let count = 1\n while (count) {\n const response = await dynamodbDocument.send(new QueryCommand(options))\n options.ExclusiveStartKey = response.LastEvaluatedKey\n count = response.Count\n for (const item of response.Items) {\n yield item\n }\n }\n }\n return command(options)\n}\n\nexport const awsDynamoDBScanStream = async (options, streamOptions) => {\n async function * command (options) {\n let count = 1\n while (count) {\n const response = await dynamodbDocument.send(new ScanCommand(options))\n options.ExclusiveStartKey = response.LastEvaluatedKey\n count = response.Count\n for (const item of response.Items) {\n yield item\n }\n }\n }\n return command(options)\n}\n\n// max Keys.length = 100\nexport const awsDynamoDBGetStream = async (options, streamOptions) => {\n options.retryCount ??= 0\n options.retryMaxCount ??= 10\n async function * command (options) {\n while (true) {\n const response = await dynamodbDocument.send(\n new BatchGetCommand({\n RequestItems: {\n [options.TableName]: options\n }\n })\n )\n for (const item of response.Responses[options.TableName]) {\n yield item\n }\n const UnprocessedKeys =\n response?.UnprocessedKeys?.[options.TableName]?.Keys ?? []\n\n if (!UnprocessedKeys.length) {\n break\n }\n if (options.retryCount >= options.retryMaxCount) {\n throw new Error('awsDynamoDBBatchGet has UnprocessedKeys', {\n cause: {\n ...options,\n UnprocessedKeysCount: UnprocessedKeys.length\n }\n })\n }\n\n await timeout(3 ** options.retryCount++) // 3^10 == 59sec\n\n options.Keys = UnprocessedKeys\n }\n }\n return command(options)\n}\n\nexport const awsDynamoDBPutItemStream = (options, streamOptions) => {\n options.retryCount ??= 0\n options.retryMaxCount ??= 10\n let batch = []\n const write = async (chunk) => {\n if (batch.length === 10) {\n await dynamodbBatchWrite(options, batch, streamOptions)\n batch = []\n }\n batch.push({\n PutRequest: {\n Item: chunk\n }\n })\n }\n streamOptions.final = () => dynamodbBatchWrite(options, batch, streamOptions)\n return createWritableStream(write, streamOptions)\n}\n\nexport const awsDynamoDBDeleteItemStream = (options, streamOptions) => {\n options.retryCount ??= 0\n options.retryMaxCount ??= 10\n let batch = []\n const write = async (chunk) => {\n if (batch.length === 10) {\n await dynamodbBatchWrite(options, batch, options)\n batch = []\n }\n batch.push({\n DeleteRequest: {\n Key: chunk\n }\n })\n }\n streamOptions.final = () => dynamodbBatchWrite(options, batch, options)\n return createWritableStream(write, streamOptions)\n}\n\nconst dynamodbBatchWrite = async (options, batch, streamOptions) => {\n const { UnprocessedItems } = await dynamodbDocument.send(\n new BatchWriteCommand({\n RequestItems: {\n [options.TableName]: batch\n }\n })\n )\n if (UnprocessedItems.length) {\n if (options.retryCount >= options.retryMaxCount) {\n throw new Error('awsDynamoDBBatchWrite has UnprocessedItems', {\n cause: {\n ...options,\n UnprocessedItemsCount: UnprocessedItems.length\n }\n })\n }\n\n await timeout(3 ** options.retryCount++) // 3^10 == 59sec\n return dynamodbBatchWrite(\n options,\n UnprocessedItems[options.TableName],\n options\n )\n }\n options.retryCount = 0 // reset for next batch\n}\n"], | ||
| "mappings": "AAAA,SAAS,sBAAsB,eAAe;AAC9C,SAAS,sBAAsB;AAE/B,SAAS,aAAa;AACtB,SAAS,uBAAuB;AAChC,OAAO,aAAa;AACpB,MAAM;AAAA,EACJ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,IAAI,QAAQ,uBAAuB;AAEnC,MAAM,oBAAoB;AAAA,EACxB,gBAAgB,IAAI,gBAAgB;AAAA,IAClC,YAAY,IAAI,MAAM;AAAA,MACpB,WAAW;AAAA,MACX,gBAAgB;AAAA,IAClB,CAAC;AAAA,EACH,CAAC;AAAA,EACD,iBAAiB;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,SAAS,QAAQ,IAAI,UAAU;AACnC;AAEA,IAAI,WAAW,QAAQ;AAAA,EACrB,IAAI,eAAe,iBAAiB;AACtC;AACA,IAAI,mBAAmB,uBAAuB,KAAK,QAAQ;AACpD,MAAM,uBAAuB,CAAC,WAAW;AAC9C,aAAW;AACX,qBAAmB,uBAAuB,KAAK,QAAQ;AACzD;AAMO,MAAM,yBAAyB,CAAC,SAAS,kBAAkB;AAChE,kBAAiB,QAASA,UAAS;AACjC,QAAI,QAAQ;AACZ,WAAO,OAAO;AACZ,YAAM,WAAW,MAAM,iBAAiB,KAAK,IAAI,aAAaA,QAAO,CAAC;AACtE,MAAAA,SAAQ,oBAAoB,SAAS;AACrC,cAAQ,SAAS;AACjB,iBAAW,QAAQ,SAAS,OAAO;AACjC,cAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,SAAO,QAAQ,OAAO;AACxB;AAEO,MAAM,wBAAwB,OAAO,SAAS,kBAAkB;AACrE,kBAAiB,QAASA,UAAS;AACjC,QAAI,QAAQ;AACZ,WAAO,OAAO;AACZ,YAAM,WAAW,MAAM,iBAAiB,KAAK,IAAI,YAAYA,QAAO,CAAC;AACrE,MAAAA,SAAQ,oBAAoB,SAAS;AACrC,cAAQ,SAAS;AACjB,iBAAW,QAAQ,SAAS,OAAO;AACjC,cAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,SAAO,QAAQ,OAAO;AACxB;AAGO,MAAM,uBAAuB,OAAO,SAAS,kBAAkB;AACpE,UAAQ,eAAe;AACvB,UAAQ,kBAAkB;AAC1B,kBAAiB,QAASA,UAAS;AACjC,WAAO,MAAM;AACX,YAAM,WAAW,MAAM,iBAAiB;AAAA,QACtC,IAAI,gBAAgB;AAAA,UAClB,cAAc;AAAA,YACZ,CAACA,SAAQ,YAAYA;AAAA,UACvB;AAAA,QACF,CAAC;AAAA,MACH;AACA,iBAAW,QAAQ,SAAS,UAAUA,SAAQ,YAAY;AACxD,cAAM;AAAA,MACR;AACA,YAAM,kBACJ,UAAU,kBAAkBA,SAAQ,YAAY,QAAQ,CAAC;AAE3D,UAAI,CAAC,gBAAgB,QAAQ;AAC3B;AAAA,MACF;AACA,UAAIA,SAAQ,cAAcA,SAAQ,eAAe;AAC/C,cAAM,IAAI,MAAM,2CAA2C;AAAA,UACzD,OAAO;AAAA,YACL,GAAGA;AAAA,YACH,sBAAsB,gBAAgB;AAAA,UACxC;AAAA,QACF,CAAC;AAAA,MACH;AAEA,YAAM,QAAQ,KAAKA,SAAQ,YAAY;AAEvC,MAAAA,SAAQ,OAAO;AAAA,IACjB;AAAA,EACF;AACA,SAAO,QAAQ,OAAO;AACxB;AAEO,MAAM,2BAA2B,CAAC,SAAS,kBAAkB;AAClE,UAAQ,eAAe;AACvB,UAAQ,kBAAkB;AAC1B,MAAI,QAAQ,CAAC;AACb,QAAM,QAAQ,OAAO,UAAU;AAC7B,QAAI,MAAM,WAAW,IAAI;AACvB,YAAM,mBAAmB,SAAS,OAAO,aAAa;AACtD,cAAQ,CAAC;AAAA,IACX;AACA,UAAM,KAAK;AAAA,MACT,YAAY;AAAA,QACV,MAAM;AAAA,MACR;AAAA,IACF,CAAC;AAAA,EACH;AACA,gBAAc,QAAQ,MAAM,mBAAmB,SAAS,OAAO,aAAa;AAC5E,SAAO,qBAAqB,OAAO,aAAa;AAClD;AAEO,MAAM,8BAA8B,CAAC,SAAS,kBAAkB;AACrE,UAAQ,eAAe;AACvB,UAAQ,kBAAkB;AAC1B,MAAI,QAAQ,CAAC;AACb,QAAM,QAAQ,OAAO,UAAU;AAC7B,QAAI,MAAM,WAAW,IAAI;AACvB,YAAM,mBAAmB,SAAS,OAAO,OAAO;AAChD,cAAQ,CAAC;AAAA,IACX;AACA,UAAM,KAAK;AAAA,MACT,eAAe;AAAA,QACb,KAAK;AAAA,MACP;AAAA,IACF,CAAC;AAAA,EACH;AACA,gBAAc,QAAQ,MAAM,mBAAmB,SAAS,OAAO,OAAO;AACtE,SAAO,qBAAqB,OAAO,aAAa;AAClD;AAEA,MAAM,qBAAqB,OAAO,SAAS,OAAO,kBAAkB;AAClE,QAAM,EAAE,iBAAiB,IAAI,MAAM,iBAAiB;AAAA,IAClD,IAAI,kBAAkB;AAAA,MACpB,cAAc;AAAA,QACZ,CAAC,QAAQ,YAAY;AAAA,MACvB;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,iBAAiB,QAAQ;AAC3B,QAAI,QAAQ,cAAc,QAAQ,eAAe;AAC/C,YAAM,IAAI,MAAM,8CAA8C;AAAA,QAC5D,OAAO;AAAA,UACL,GAAG;AAAA,UACH,uBAAuB,iBAAiB;AAAA,QAC1C;AAAA,MACF,CAAC;AAAA,IACH;AAEA,UAAM,QAAQ,KAAK,QAAQ,YAAY;AACvC,WAAO;AAAA,MACL;AAAA,MACA,iBAAiB,QAAQ;AAAA,MACzB;AAAA,IACF;AAAA,EACF;AACA,UAAQ,aAAa;AACvB;", | ||
| "names": ["options"] | ||
| } |
+12
-11
@@ -1,8 +0,6 @@ | ||
| import { | ||
| createWritableStream, | ||
| createTransformStream, | ||
| timeout | ||
| } from "@datastream/core"; | ||
| import { createWritableStream, timeout } from "@datastream/core"; | ||
| import { DynamoDBClient } from "@aws-sdk/client-dynamodb"; | ||
| import { marshall, unmarshall } from "@aws-sdk/util-dynamodb"; | ||
| import { Agent } from "node:https"; | ||
| import { NodeHttpHandler } from "@aws-sdk/node-http-handler"; | ||
| import AWSXRay from "aws-xray-sdk-core"; | ||
| const { | ||
@@ -15,5 +13,2 @@ BatchGetCommand, | ||
| } = require("@aws-sdk/lib-dynamodb"); | ||
| import { Agent } from "node:https"; | ||
| import { NodeHttpHandler } from "@aws-sdk/node-http-handler"; | ||
| import AWSXRay from "aws-xray-sdk-core"; | ||
| const awsClientDefaults = { | ||
@@ -34,3 +29,5 @@ requestHandler: new NodeHttpHandler({ | ||
| }; | ||
| let dynamodb = AWSXRay.captureAWSv3Client(new DynamoDBClient(awsClientDefaults)); | ||
| let dynamodb = AWSXRay.captureAWSv3Client( | ||
| new DynamoDBClient(awsClientDefaults) | ||
| ); | ||
| let dynamodbDocument = DynamoDBDocumentClient.from(dynamodb); | ||
@@ -156,3 +153,7 @@ const awsDynamoDBSetClient = (client) => { | ||
| await timeout(3 ** options.retryCount++); | ||
| return dynamodbBatchWriteItem(options, UnprocessedItems[table], options); | ||
| return dynamodbBatchWrite( | ||
| options, | ||
| UnprocessedItems[options.TableName], | ||
| options | ||
| ); | ||
| } | ||
@@ -159,0 +160,0 @@ options.retryCount = 0; |
| { | ||
| "version": 3, | ||
| "sources": ["dynamodb.js"], | ||
| "sourcesContent": ["import {\n createWritableStream,\n createTransformStream,\n timeout\n} from '@datastream/core'\nimport { DynamoDBClient } from '@aws-sdk/client-dynamodb'\nimport { marshall, unmarshall } from '@aws-sdk/util-dynamodb'\nconst {\n BatchGetCommand,\n BatchWriteCommand,\n QueryCommand,\n ScanCommand,\n DynamoDBDocumentClient\n} = require('@aws-sdk/lib-dynamodb')\n\nimport { Agent } from 'node:https'\nimport { NodeHttpHandler } from '@aws-sdk/node-http-handler'\nimport AWSXRay from 'aws-xray-sdk-core'\n\nconst awsClientDefaults = {\n requestHandler: new NodeHttpHandler({\n httpsAgent: new Agent({\n keepAlive: true,\n secureProtocol: 'TLSv1_2_method'\n })\n }),\n useFipsEndpoint: [\n 'us-east-1',\n 'us-east-2',\n 'us-west-1',\n 'us-west-2',\n 'ca-central-1'\n ].includes(process.env.AWS_REGION)\n}\n\nlet dynamodb = AWSXRay.captureAWSv3Client(new DynamoDBClient(awsClientDefaults))\nlet dynamodbDocument = DynamoDBDocumentClient.from(dynamodb)\nexport const awsDynamoDBSetClient = (client) => {\n dynamodb = client\n dynamodbDocument = DynamoDBDocumentClient.from(dynamodb)\n}\n\n// Docs: https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html\n\n// options = {TableName, ...}\n\nexport const awsDynamoDBQueryStream = (options, streamOptions) => {\n async function* command(options) {\n let count = 1\n while (count) {\n const response = await dynamodbDocument.send(new QueryCommand(options))\n options.ExclusiveStartKey = response.LastEvaluatedKey\n count = response.Count\n for (const item of response.Items) {\n yield item\n }\n }\n }\n return command(options)\n}\n\nexport const awsDynamoDBScanStream = async (options, streamOptions) => {\n async function* command(options) {\n let count = 1\n while (count) {\n const response = await dynamodbDocument.send(new ScanCommand(options))\n options.ExclusiveStartKey = response.LastEvaluatedKey\n count = response.Count\n for (const item of response.Items) {\n yield item\n }\n }\n }\n return command(options)\n}\n\n// max Keys.length = 100\nexport const awsDynamoDBGetStream = async (options, streamOptions) => {\n options.retryCount ??= 0\n options.retryMaxCount ??= 10\n async function* command(options) {\n while (true) {\n const response = await dynamodbDocument.send(\n new BatchGetCommand({\n RequestItems: {\n [options.TableName]: options\n }\n })\n )\n for (const item of response.Responses[options.TableName]) {\n yield item\n }\n const UnprocessedKeys =\n response?.UnprocessedKeys?.[options.TableName]?.Keys ?? []\n\n if (!UnprocessedKeys.length) {\n break\n }\n if (options.retryCount >= options.retryMaxCount) {\n throw new Error('awsDynamoDBBatchGet has UnprocessedKeys', {\n cause: {\n ...options,\n UnprocessedKeysCount: UnprocessedKeys.length\n }\n })\n }\n\n await timeout(3 ** options.retryCount++) // 3^10 == 59sec\n\n options.Keys = UnprocessedKeys\n }\n }\n return command(options)\n}\n\nexport const awsDynamoDBPutItemStream = (options, streamOptions) => {\n options.retryCount ??= 0\n options.retryMaxCount ??= 10\n let batch = []\n const write = async (chunk) => {\n if (batch.length === 10) {\n await dynamodbBatchWrite(options, batch, streamOptions)\n batch = []\n }\n batch.push({\n PutRequest: {\n Item: chunk\n }\n })\n }\n streamOptions.final = () => dynamodbBatchWrite(options, batch, streamOptions)\n return createWritableStream(write, streamOptions)\n}\n\nexport const awsDynamoDBDeleteItemStream = (options, streamOptions) => {\n options.retryCount ??= 0\n options.retryMaxCount ??= 10\n let batch = []\n const write = async (chunk) => {\n if (batch.length === 10) {\n await dynamodbBatchWrite(options, batch, options)\n batch = []\n }\n batch.push({\n DeleteRequest: {\n Key: chunk\n }\n })\n }\n streamOptions.final = () => dynamodbBatchWrite(options, batch, options)\n return createWritableStream(write, streamOptions)\n}\n\nconst dynamodbBatchWrite = async (options, batch, streamOptions) => {\n const { UnprocessedItems } = await dynamodbDocument.send(\n new BatchWriteCommand({\n RequestItems: {\n [options.TableName]: batch\n }\n })\n )\n if (UnprocessedItems.length) {\n if (options.retryCount >= options.retryMaxCount) {\n throw new Error('awsDynamoDBBatchWrite has UnprocessedItems', {\n cause: {\n ...options,\n UnprocessedItemsCount: UnprocessedItems.length\n }\n })\n }\n\n await timeout(3 ** options.retryCount++) // 3^10 == 59sec\n return dynamodbBatchWriteItem(options, UnprocessedItems[table], options)\n }\n options.retryCount = 0 // reset for next batch\n}\n"], | ||
| "mappings": "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", | ||
| "sourcesContent": ["import { createWritableStream, timeout } from '@datastream/core'\nimport { DynamoDBClient } from '@aws-sdk/client-dynamodb'\n\nimport { Agent } from 'node:https'\nimport { NodeHttpHandler } from '@aws-sdk/node-http-handler'\nimport AWSXRay from 'aws-xray-sdk-core'\nconst {\n BatchGetCommand,\n BatchWriteCommand,\n QueryCommand,\n ScanCommand,\n DynamoDBDocumentClient\n} = require('@aws-sdk/lib-dynamodb')\n\nconst awsClientDefaults = {\n requestHandler: new NodeHttpHandler({\n httpsAgent: new Agent({\n keepAlive: true,\n secureProtocol: 'TLSv1_2_method'\n })\n }),\n useFipsEndpoint: [\n 'us-east-1',\n 'us-east-2',\n 'us-west-1',\n 'us-west-2',\n 'ca-central-1'\n ].includes(process.env.AWS_REGION)\n}\n\nlet dynamodb = AWSXRay.captureAWSv3Client(\n new DynamoDBClient(awsClientDefaults)\n)\nlet dynamodbDocument = DynamoDBDocumentClient.from(dynamodb)\nexport const awsDynamoDBSetClient = (client) => {\n dynamodb = client\n dynamodbDocument = DynamoDBDocumentClient.from(dynamodb)\n}\n\n// Docs: https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html\n\n// options = {TableName, ...}\n\nexport const awsDynamoDBQueryStream = (options, streamOptions) => {\n async function * command (options) {\n let count = 1\n while (count) {\n const response = await dynamodbDocument.send(new QueryCommand(options))\n options.ExclusiveStartKey = response.LastEvaluatedKey\n count = response.Count\n for (const item of response.Items) {\n yield item\n }\n }\n }\n return command(options)\n}\n\nexport const awsDynamoDBScanStream = async (options, streamOptions) => {\n async function * command (options) {\n let count = 1\n while (count) {\n const response = await dynamodbDocument.send(new ScanCommand(options))\n options.ExclusiveStartKey = response.LastEvaluatedKey\n count = response.Count\n for (const item of response.Items) {\n yield item\n }\n }\n }\n return command(options)\n}\n\n// max Keys.length = 100\nexport const awsDynamoDBGetStream = async (options, streamOptions) => {\n options.retryCount ??= 0\n options.retryMaxCount ??= 10\n async function * command (options) {\n while (true) {\n const response = await dynamodbDocument.send(\n new BatchGetCommand({\n RequestItems: {\n [options.TableName]: options\n }\n })\n )\n for (const item of response.Responses[options.TableName]) {\n yield item\n }\n const UnprocessedKeys =\n response?.UnprocessedKeys?.[options.TableName]?.Keys ?? []\n\n if (!UnprocessedKeys.length) {\n break\n }\n if (options.retryCount >= options.retryMaxCount) {\n throw new Error('awsDynamoDBBatchGet has UnprocessedKeys', {\n cause: {\n ...options,\n UnprocessedKeysCount: UnprocessedKeys.length\n }\n })\n }\n\n await timeout(3 ** options.retryCount++) // 3^10 == 59sec\n\n options.Keys = UnprocessedKeys\n }\n }\n return command(options)\n}\n\nexport const awsDynamoDBPutItemStream = (options, streamOptions) => {\n options.retryCount ??= 0\n options.retryMaxCount ??= 10\n let batch = []\n const write = async (chunk) => {\n if (batch.length === 10) {\n await dynamodbBatchWrite(options, batch, streamOptions)\n batch = []\n }\n batch.push({\n PutRequest: {\n Item: chunk\n }\n })\n }\n streamOptions.final = () => dynamodbBatchWrite(options, batch, streamOptions)\n return createWritableStream(write, streamOptions)\n}\n\nexport const awsDynamoDBDeleteItemStream = (options, streamOptions) => {\n options.retryCount ??= 0\n options.retryMaxCount ??= 10\n let batch = []\n const write = async (chunk) => {\n if (batch.length === 10) {\n await dynamodbBatchWrite(options, batch, options)\n batch = []\n }\n batch.push({\n DeleteRequest: {\n Key: chunk\n }\n })\n }\n streamOptions.final = () => dynamodbBatchWrite(options, batch, options)\n return createWritableStream(write, streamOptions)\n}\n\nconst dynamodbBatchWrite = async (options, batch, streamOptions) => {\n const { UnprocessedItems } = await dynamodbDocument.send(\n new BatchWriteCommand({\n RequestItems: {\n [options.TableName]: batch\n }\n })\n )\n if (UnprocessedItems.length) {\n if (options.retryCount >= options.retryMaxCount) {\n throw new Error('awsDynamoDBBatchWrite has UnprocessedItems', {\n cause: {\n ...options,\n UnprocessedItemsCount: UnprocessedItems.length\n }\n })\n }\n\n await timeout(3 ** options.retryCount++) // 3^10 == 59sec\n return dynamodbBatchWrite(\n options,\n UnprocessedItems[options.TableName],\n options\n )\n }\n options.retryCount = 0 // reset for next batch\n}\n"], | ||
| "mappings": "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", | ||
| "names": ["options"] | ||
| } |
+31
-2
@@ -26,4 +26,11 @@ var __create = Object.create; | ||
| __export(aws_exports, { | ||
| awsDynamoDBDeleteStream: () => awsDynamoDBDeleteStream, | ||
| awsDynamoDBGetStream: () => awsDynamoDBGetStream, | ||
| awsDynamoDBPutStream: () => awsDynamoDBPutStream, | ||
| awsDynamoDBQueryStream: () => awsDynamoDBQueryStream, | ||
| awsDynamoDBScanStream: () => awsDynamoDBScanStream, | ||
| awsDynamoDBSetClient: () => awsDynamoDBSetClient, | ||
| awsS3GetStream: () => awsS3GetStream, | ||
| awsS3PutStream: () => awsS3PutStream, | ||
| awsS3SetClient: () => awsS3SetClient, | ||
| default: () => aws_default | ||
@@ -33,12 +40,34 @@ }); | ||
| var import_s3 = __toESM(require("@datastream/aws/s3"), 1); | ||
| var import_dynamodb = __toESM(require("@datastream/aws/dynamodb"), 1); | ||
| const awsS3SetClient = import_s3.default.setClient; | ||
| const awsS3GetStream = import_s3.default.getStream; | ||
| const awsS3PutStream = import_s3.default.putStream; | ||
| const awsDynamoDBSetClient = import_dynamodb.default.setClient; | ||
| const awsDynamoDBGetStream = import_dynamodb.default.getStream; | ||
| const awsDynamoDBQueryStream = import_dynamodb.default.queryStream; | ||
| const awsDynamoDBScanStream = import_dynamodb.default.scanStream; | ||
| const awsDynamoDBPutStream = import_dynamodb.default.putStream; | ||
| const awsDynamoDBDeleteStream = import_dynamodb.default.Stream; | ||
| var aws_default = { | ||
| s3SetClient: awsS3SetClient, | ||
| s3GetStream: awsS3GetStream, | ||
| s3PutStream: awsS3PutStream | ||
| s3PutStream: awsS3PutStream, | ||
| dynamodbSetClient: awsDynamoDBSetClient, | ||
| dynamodbGetStream: awsDynamoDBGetStream, | ||
| dynamodbQueryStream: awsDynamoDBQueryStream, | ||
| dynamodbScanStream: awsDynamoDBScanStream, | ||
| dynamodbPutStream: awsDynamoDBPutStream, | ||
| dynamodbDeleteStream: awsDynamoDBDeleteStream | ||
| }; | ||
| // Annotate the CommonJS export names for ESM import in node: | ||
| 0 && (module.exports = { | ||
| awsDynamoDBDeleteStream, | ||
| awsDynamoDBGetStream, | ||
| awsDynamoDBPutStream, | ||
| awsDynamoDBQueryStream, | ||
| awsDynamoDBScanStream, | ||
| awsDynamoDBSetClient, | ||
| awsS3GetStream, | ||
| awsS3PutStream | ||
| awsS3PutStream, | ||
| awsS3SetClient | ||
| }); |
| { | ||
| "version": 3, | ||
| "sources": ["index.js"], | ||
| "sourcesContent": ["import s3 from '@datastream/aws/s3'\n\nexport const awsS3GetStream = s3.getStream\nexport const awsS3PutStream = s3.putStream\n\nexport default {\n s3GetStream: awsS3GetStream,\n s3PutStream: awsS3PutStream,\n}\n"], | ||
| "mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAe;AAER,MAAM,iBAAiB,UAAAA,QAAG;AAC1B,MAAM,iBAAiB,UAAAA,QAAG;AAEjC,IAAO,cAAQ;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AACf;", | ||
| "names": ["s3"] | ||
| "sourcesContent": ["import s3 from '@datastream/aws/s3'\nimport dynamodb from '@datastream/aws/dynamodb'\n\nexport const awsS3SetClient = s3.setClient\nexport const awsS3GetStream = s3.getStream\nexport const awsS3PutStream = s3.putStream\nexport const awsDynamoDBSetClient = dynamodb.setClient\nexport const awsDynamoDBGetStream = dynamodb.getStream\nexport const awsDynamoDBQueryStream = dynamodb.queryStream\nexport const awsDynamoDBScanStream = dynamodb.scanStream\nexport const awsDynamoDBPutStream = dynamodb.putStream\nexport const awsDynamoDBDeleteStream = dynamodb.Stream\n\nexport default {\n s3SetClient: awsS3SetClient,\n s3GetStream: awsS3GetStream,\n s3PutStream: awsS3PutStream,\n dynamodbSetClient: awsDynamoDBSetClient,\n dynamodbGetStream: awsDynamoDBGetStream,\n dynamodbQueryStream: awsDynamoDBQueryStream,\n dynamodbScanStream: awsDynamoDBScanStream,\n dynamodbPutStream: awsDynamoDBPutStream,\n dynamodbDeleteStream: awsDynamoDBDeleteStream\n}\n"], | ||
| "mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAe;AACf,sBAAqB;AAEd,MAAM,iBAAiB,UAAAA,QAAG;AAC1B,MAAM,iBAAiB,UAAAA,QAAG;AAC1B,MAAM,iBAAiB,UAAAA,QAAG;AAC1B,MAAM,uBAAuB,gBAAAC,QAAS;AACtC,MAAM,uBAAuB,gBAAAA,QAAS;AACtC,MAAM,yBAAyB,gBAAAA,QAAS;AACxC,MAAM,wBAAwB,gBAAAA,QAAS;AACvC,MAAM,uBAAuB,gBAAAA,QAAS;AACtC,MAAM,0BAA0B,gBAAAA,QAAS;AAEhD,IAAO,cAAQ;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,qBAAqB;AAAA,EACrB,oBAAoB;AAAA,EACpB,mBAAmB;AAAA,EACnB,sBAAsB;AACxB;", | ||
| "names": ["s3", "dynamodb"] | ||
| } |
+23
-1
| import s3 from "@datastream/aws/s3"; | ||
| import dynamodb from "@datastream/aws/dynamodb"; | ||
| const awsS3SetClient = s3.setClient; | ||
| const awsS3GetStream = s3.getStream; | ||
| const awsS3PutStream = s3.putStream; | ||
| const awsDynamoDBSetClient = dynamodb.setClient; | ||
| const awsDynamoDBGetStream = dynamodb.getStream; | ||
| const awsDynamoDBQueryStream = dynamodb.queryStream; | ||
| const awsDynamoDBScanStream = dynamodb.scanStream; | ||
| const awsDynamoDBPutStream = dynamodb.putStream; | ||
| const awsDynamoDBDeleteStream = dynamodb.Stream; | ||
| var aws_default = { | ||
| s3SetClient: awsS3SetClient, | ||
| s3GetStream: awsS3GetStream, | ||
| s3PutStream: awsS3PutStream | ||
| s3PutStream: awsS3PutStream, | ||
| dynamodbSetClient: awsDynamoDBSetClient, | ||
| dynamodbGetStream: awsDynamoDBGetStream, | ||
| dynamodbQueryStream: awsDynamoDBQueryStream, | ||
| dynamodbScanStream: awsDynamoDBScanStream, | ||
| dynamodbPutStream: awsDynamoDBPutStream, | ||
| dynamodbDeleteStream: awsDynamoDBDeleteStream | ||
| }; | ||
| export { | ||
| awsDynamoDBDeleteStream, | ||
| awsDynamoDBGetStream, | ||
| awsDynamoDBPutStream, | ||
| awsDynamoDBQueryStream, | ||
| awsDynamoDBScanStream, | ||
| awsDynamoDBSetClient, | ||
| awsS3GetStream, | ||
| awsS3PutStream, | ||
| awsS3SetClient, | ||
| aws_default as default | ||
| }; |
| { | ||
| "version": 3, | ||
| "sources": ["index.js"], | ||
| "sourcesContent": ["import s3 from '@datastream/aws/s3'\n\nexport const awsS3GetStream = s3.getStream\nexport const awsS3PutStream = s3.putStream\n\nexport default {\n s3GetStream: awsS3GetStream,\n s3PutStream: awsS3PutStream,\n}\n"], | ||
| "mappings": "AAAA,OAAO,QAAQ;AAER,MAAM,iBAAiB,GAAG;AAC1B,MAAM,iBAAiB,GAAG;AAEjC,IAAO,cAAQ;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AACf;", | ||
| "sourcesContent": ["import s3 from '@datastream/aws/s3'\nimport dynamodb from '@datastream/aws/dynamodb'\n\nexport const awsS3SetClient = s3.setClient\nexport const awsS3GetStream = s3.getStream\nexport const awsS3PutStream = s3.putStream\nexport const awsDynamoDBSetClient = dynamodb.setClient\nexport const awsDynamoDBGetStream = dynamodb.getStream\nexport const awsDynamoDBQueryStream = dynamodb.queryStream\nexport const awsDynamoDBScanStream = dynamodb.scanStream\nexport const awsDynamoDBPutStream = dynamodb.putStream\nexport const awsDynamoDBDeleteStream = dynamodb.Stream\n\nexport default {\n s3SetClient: awsS3SetClient,\n s3GetStream: awsS3GetStream,\n s3PutStream: awsS3PutStream,\n dynamodbSetClient: awsDynamoDBSetClient,\n dynamodbGetStream: awsDynamoDBGetStream,\n dynamodbQueryStream: awsDynamoDBQueryStream,\n dynamodbScanStream: awsDynamoDBScanStream,\n dynamodbPutStream: awsDynamoDBPutStream,\n dynamodbDeleteStream: awsDynamoDBDeleteStream\n}\n"], | ||
| "mappings": "AAAA,OAAO,QAAQ;AACf,OAAO,cAAc;AAEd,MAAM,iBAAiB,GAAG;AAC1B,MAAM,iBAAiB,GAAG;AAC1B,MAAM,iBAAiB,GAAG;AAC1B,MAAM,uBAAuB,SAAS;AACtC,MAAM,uBAAuB,SAAS;AACtC,MAAM,yBAAyB,SAAS;AACxC,MAAM,wBAAwB,SAAS;AACvC,MAAM,uBAAuB,SAAS;AACtC,MAAM,0BAA0B,SAAS;AAEhD,IAAO,cAAQ;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,qBAAqB;AAAA,EACrB,oBAAoB;AAAA,EACpB,mBAAmB;AAAA,EACnB,sBAAsB;AACxB;", | ||
| "names": [] | ||
| } |
+23
-1
| import s3 from "@datastream/aws/s3"; | ||
| import dynamodb from "@datastream/aws/dynamodb"; | ||
| const awsS3SetClient = s3.setClient; | ||
| const awsS3GetStream = s3.getStream; | ||
| const awsS3PutStream = s3.putStream; | ||
| const awsDynamoDBSetClient = dynamodb.setClient; | ||
| const awsDynamoDBGetStream = dynamodb.getStream; | ||
| const awsDynamoDBQueryStream = dynamodb.queryStream; | ||
| const awsDynamoDBScanStream = dynamodb.scanStream; | ||
| const awsDynamoDBPutStream = dynamodb.putStream; | ||
| const awsDynamoDBDeleteStream = dynamodb.Stream; | ||
| var aws_default = { | ||
| s3SetClient: awsS3SetClient, | ||
| s3GetStream: awsS3GetStream, | ||
| s3PutStream: awsS3PutStream | ||
| s3PutStream: awsS3PutStream, | ||
| dynamodbSetClient: awsDynamoDBSetClient, | ||
| dynamodbGetStream: awsDynamoDBGetStream, | ||
| dynamodbQueryStream: awsDynamoDBQueryStream, | ||
| dynamodbScanStream: awsDynamoDBScanStream, | ||
| dynamodbPutStream: awsDynamoDBPutStream, | ||
| dynamodbDeleteStream: awsDynamoDBDeleteStream | ||
| }; | ||
| export { | ||
| awsDynamoDBDeleteStream, | ||
| awsDynamoDBGetStream, | ||
| awsDynamoDBPutStream, | ||
| awsDynamoDBQueryStream, | ||
| awsDynamoDBScanStream, | ||
| awsDynamoDBSetClient, | ||
| awsS3GetStream, | ||
| awsS3PutStream, | ||
| awsS3SetClient, | ||
| aws_default as default | ||
| }; |
| { | ||
| "version": 3, | ||
| "sources": ["index.js"], | ||
| "sourcesContent": ["import s3 from '@datastream/aws/s3'\n\nexport const awsS3GetStream = s3.getStream\nexport const awsS3PutStream = s3.putStream\n\nexport default {\n s3GetStream: awsS3GetStream,\n s3PutStream: awsS3PutStream,\n}\n"], | ||
| "mappings": "AAAA,OAAO,QAAQ;AAER,MAAM,iBAAiB,GAAG;AAC1B,MAAM,iBAAiB,GAAG;AAEjC,IAAO,cAAQ;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AACf;", | ||
| "sourcesContent": ["import s3 from '@datastream/aws/s3'\nimport dynamodb from '@datastream/aws/dynamodb'\n\nexport const awsS3SetClient = s3.setClient\nexport const awsS3GetStream = s3.getStream\nexport const awsS3PutStream = s3.putStream\nexport const awsDynamoDBSetClient = dynamodb.setClient\nexport const awsDynamoDBGetStream = dynamodb.getStream\nexport const awsDynamoDBQueryStream = dynamodb.queryStream\nexport const awsDynamoDBScanStream = dynamodb.scanStream\nexport const awsDynamoDBPutStream = dynamodb.putStream\nexport const awsDynamoDBDeleteStream = dynamodb.Stream\n\nexport default {\n s3SetClient: awsS3SetClient,\n s3GetStream: awsS3GetStream,\n s3PutStream: awsS3PutStream,\n dynamodbSetClient: awsDynamoDBSetClient,\n dynamodbGetStream: awsDynamoDBGetStream,\n dynamodbQueryStream: awsDynamoDBQueryStream,\n dynamodbScanStream: awsDynamoDBScanStream,\n dynamodbPutStream: awsDynamoDBPutStream,\n dynamodbDeleteStream: awsDynamoDBDeleteStream\n}\n"], | ||
| "mappings": "AAAA,OAAO,QAAQ;AACf,OAAO,cAAc;AAEd,MAAM,iBAAiB,GAAG;AAC1B,MAAM,iBAAiB,GAAG;AAC1B,MAAM,iBAAiB,GAAG;AAC1B,MAAM,uBAAuB,SAAS;AACtC,MAAM,uBAAuB,SAAS;AACtC,MAAM,yBAAyB,SAAS;AACxC,MAAM,wBAAwB,SAAS;AACvC,MAAM,uBAAuB,SAAS;AACtC,MAAM,0BAA0B,SAAS;AAEhD,IAAO,cAAQ;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,aAAa;AAAA,EACb,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,qBAAqB;AAAA,EACrB,oBAAoB;AAAA,EACpB,mBAAmB;AAAA,EACnB,sBAAsB;AACxB;", | ||
| "names": [] | ||
| } |
+2
-3
| { | ||
| "name": "@datastream/aws", | ||
| "version": "0.0.4", | ||
| "version": "0.0.5", | ||
| "description": "", | ||
@@ -101,4 +101,3 @@ "type": "module", | ||
| "@aws-sdk/lib-storage": "3.159.0", | ||
| "@aws-sdk/util-dynamodb": "3.159.0", | ||
| "@datastream/core": "0.0.4", | ||
| "@datastream/core": "0.0.5", | ||
| "aws-xray-sdk-core": "3.3.7" | ||
@@ -105,0 +104,0 @@ }, |
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
66653
9.76%7
-12.5%861
10.24%+ Added
- Removed
- Removed
Updated