@aws-sdk/eventstream-serde-universal
Advanced tools
Comparing version 3.178.0 to 3.183.0
@@ -6,2 +6,10 @@ # Change Log | ||
# [3.183.0](https://github.com/aws/aws-sdk-js-v3/compare/v3.182.0...v3.183.0) (2022-10-03) | ||
**Note:** Version bump only for package @aws-sdk/eventstream-serde-universal | ||
# [3.178.0](https://github.com/aws/aws-sdk-js-v3/compare/v3.177.0...v3.178.0) (2022-09-23) | ||
@@ -8,0 +16,0 @@ |
@@ -1,76 +0,31 @@ | ||
import { __asyncGenerator, __asyncValues, __await, __generator } from "tslib"; | ||
import { EventStreamCodec } from "@aws-sdk/eventstream-codec"; | ||
import { getChunkedStream } from "./getChunkedStream"; | ||
import { getUnmarshalledStream } from "./getUnmarshalledStream"; | ||
var EventStreamMarshaller = (function () { | ||
function EventStreamMarshaller(_a) { | ||
var utf8Encoder = _a.utf8Encoder, utf8Decoder = _a.utf8Decoder; | ||
export class EventStreamMarshaller { | ||
constructor({ utf8Encoder, utf8Decoder }) { | ||
this.eventStreamCodec = new EventStreamCodec(utf8Encoder, utf8Decoder); | ||
this.utfEncoder = utf8Encoder; | ||
} | ||
EventStreamMarshaller.prototype.deserialize = function (body, deserializer) { | ||
var chunkedStream = getChunkedStream(body); | ||
var unmarshalledStream = getUnmarshalledStream(chunkedStream, { | ||
deserialize(body, deserializer) { | ||
const chunkedStream = getChunkedStream(body); | ||
const unmarshalledStream = getUnmarshalledStream(chunkedStream, { | ||
eventStreamCodec: this.eventStreamCodec, | ||
deserializer: deserializer, | ||
deserializer, | ||
toUtf8: this.utfEncoder, | ||
}); | ||
return unmarshalledStream; | ||
}; | ||
EventStreamMarshaller.prototype.serialize = function (input, serializer) { | ||
var _a; | ||
var self = this; | ||
var serializedIterator = function () { | ||
return __asyncGenerator(this, arguments, function () { | ||
var input_1, input_1_1, chunk, payloadBuf, e_1_1; | ||
var e_1, _a; | ||
return __generator(this, function (_b) { | ||
switch (_b.label) { | ||
case 0: | ||
_b.trys.push([0, 7, 8, 13]); | ||
input_1 = __asyncValues(input); | ||
_b.label = 1; | ||
case 1: return [4, __await(input_1.next())]; | ||
case 2: | ||
if (!(input_1_1 = _b.sent(), !input_1_1.done)) return [3, 6]; | ||
chunk = input_1_1.value; | ||
payloadBuf = self.eventStreamCodec.encode(serializer(chunk)); | ||
return [4, __await(payloadBuf)]; | ||
case 3: return [4, _b.sent()]; | ||
case 4: | ||
_b.sent(); | ||
_b.label = 5; | ||
case 5: return [3, 1]; | ||
case 6: return [3, 13]; | ||
case 7: | ||
e_1_1 = _b.sent(); | ||
e_1 = { error: e_1_1 }; | ||
return [3, 13]; | ||
case 8: | ||
_b.trys.push([8, , 11, 12]); | ||
if (!(input_1_1 && !input_1_1.done && (_a = input_1.return))) return [3, 10]; | ||
return [4, __await(_a.call(input_1))]; | ||
case 9: | ||
_b.sent(); | ||
_b.label = 10; | ||
case 10: return [3, 12]; | ||
case 11: | ||
if (e_1) throw e_1.error; | ||
return [7]; | ||
case 12: return [7]; | ||
case 13: return [4, __await(new Uint8Array(0))]; | ||
case 14: return [4, _b.sent()]; | ||
case 15: | ||
_b.sent(); | ||
return [2]; | ||
} | ||
}); | ||
}); | ||
} | ||
serialize(input, serializer) { | ||
const self = this; | ||
const serializedIterator = async function* () { | ||
for await (const chunk of input) { | ||
const payloadBuf = self.eventStreamCodec.encode(serializer(chunk)); | ||
yield payloadBuf; | ||
} | ||
yield new Uint8Array(0); | ||
}; | ||
return _a = {}, | ||
_a[Symbol.asyncIterator] = serializedIterator, | ||
_a; | ||
}; | ||
return EventStreamMarshaller; | ||
}()); | ||
export { EventStreamMarshaller }; | ||
return { | ||
[Symbol.asyncIterator]: serializedIterator, | ||
}; | ||
} | ||
} |
@@ -1,4 +0,4 @@ | ||
export var recordEventMessage = Buffer.from("AAAA0AAAAFX31gVLDTptZXNzYWdlLXR5cGUHAAVldmVudAs6ZXZlbnQtdHlwZQcAB1JlY29yZHMNOmNvbnRlbnQtdHlwZQcAGGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTEsRm9vLFdoZW4gbGlmZSBnaXZlcyB5b3UgZm9vLi4uCjIsQmFyLG1ha2UgQmFyIQozLEZpenosU29tZXRpbWVzIHBhaXJlZCB3aXRoLi4uCjQsQnV6eix0aGUgaW5mYW1vdXMgQnV6eiEKzxKeSw==", "base64"); | ||
export var statsEventMessage = Buffer.from("AAAA0QAAAEM+YpmqDTptZXNzYWdlLXR5cGUHAAVldmVudAs6ZXZlbnQtdHlwZQcABVN0YXRzDTpjb250ZW50LXR5cGUHAAh0ZXh0L3htbDxTdGF0cyB4bWxucz0iIj48Qnl0ZXNTY2FubmVkPjEyNjwvQnl0ZXNTY2FubmVkPjxCeXRlc1Byb2Nlc3NlZD4xMjY8L0J5dGVzUHJvY2Vzc2VkPjxCeXRlc1JldHVybmVkPjEwNzwvQnl0ZXNSZXR1cm5lZD48L1N0YXRzPiJ0pLk=", "base64"); | ||
export var endEventMessage = Buffer.from("AAAAOAAAACjBxoTUDTptZXNzYWdlLXR5cGUHAAVldmVudAs6ZXZlbnQtdHlwZQcAA0VuZM+X05I=", "base64"); | ||
export var exception = Buffer.from("AAAAtgAAAF8BcW64DTpjb250ZW50LXR5cGUHABhhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0NOm1lc3NhZ2UtdHlwZQcACWV4Y2VwdGlvbg86ZXhjZXB0aW9uLXR5cGUHAAlFeGNlcHRpb25UaGlzIGlzIGEgbW9kZWxlZCBleGNlcHRpb24gZXZlbnQgdGhhdCB3b3VsZCBiZSB0aHJvd24gaW4gZGVzZXJpYWxpemVyLj6Gc60=", "base64"); | ||
export const recordEventMessage = Buffer.from("AAAA0AAAAFX31gVLDTptZXNzYWdlLXR5cGUHAAVldmVudAs6ZXZlbnQtdHlwZQcAB1JlY29yZHMNOmNvbnRlbnQtdHlwZQcAGGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTEsRm9vLFdoZW4gbGlmZSBnaXZlcyB5b3UgZm9vLi4uCjIsQmFyLG1ha2UgQmFyIQozLEZpenosU29tZXRpbWVzIHBhaXJlZCB3aXRoLi4uCjQsQnV6eix0aGUgaW5mYW1vdXMgQnV6eiEKzxKeSw==", "base64"); | ||
export const statsEventMessage = Buffer.from("AAAA0QAAAEM+YpmqDTptZXNzYWdlLXR5cGUHAAVldmVudAs6ZXZlbnQtdHlwZQcABVN0YXRzDTpjb250ZW50LXR5cGUHAAh0ZXh0L3htbDxTdGF0cyB4bWxucz0iIj48Qnl0ZXNTY2FubmVkPjEyNjwvQnl0ZXNTY2FubmVkPjxCeXRlc1Byb2Nlc3NlZD4xMjY8L0J5dGVzUHJvY2Vzc2VkPjxCeXRlc1JldHVybmVkPjEwNzwvQnl0ZXNSZXR1cm5lZD48L1N0YXRzPiJ0pLk=", "base64"); | ||
export const endEventMessage = Buffer.from("AAAAOAAAACjBxoTUDTptZXNzYWdlLXR5cGUHAAVldmVudAs6ZXZlbnQtdHlwZQcAA0VuZM+X05I=", "base64"); | ||
export const exception = Buffer.from("AAAAtgAAAF8BcW64DTpjb250ZW50LXR5cGUHABhhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0NOm1lc3NhZ2UtdHlwZQcACWV4Y2VwdGlvbg86ZXhjZXB0aW9uLXR5cGUHAAlFeGNlcHRpb25UaGlzIGlzIGEgbW9kZWxlZCBleGNlcHRpb24gZXZlbnQgdGhhdCB3b3VsZCBiZSB0aHJvd24gaW4gZGVzZXJpYWxpemVyLj6Gc60=", "base64"); |
@@ -1,15 +0,12 @@ | ||
import { __extends } from "tslib"; | ||
import { Readable } from "stream"; | ||
var MockEventMessageSource = (function (_super) { | ||
__extends(MockEventMessageSource, _super); | ||
function MockEventMessageSource(options) { | ||
var _this = _super.call(this, options) || this; | ||
_this.readCount = 0; | ||
_this.data = Buffer.concat(options.messages); | ||
_this.emitSize = options.emitSize; | ||
_this.throwError = options.throwError; | ||
return _this; | ||
export class MockEventMessageSource extends Readable { | ||
constructor(options) { | ||
super(options); | ||
this.readCount = 0; | ||
this.data = Buffer.concat(options.messages); | ||
this.emitSize = options.emitSize; | ||
this.throwError = options.throwError; | ||
} | ||
MockEventMessageSource.prototype._read = function () { | ||
var self = this; | ||
_read() { | ||
const self = this; | ||
if (this.readCount === this.data.length) { | ||
@@ -27,10 +24,8 @@ if (this.throwError) { | ||
} | ||
var bytesLeft = this.data.length - this.readCount; | ||
var numBytesToSend = Math.min(bytesLeft, this.emitSize); | ||
var chunk = this.data.slice(this.readCount, this.readCount + numBytesToSend); | ||
const bytesLeft = this.data.length - this.readCount; | ||
const numBytesToSend = Math.min(bytesLeft, this.emitSize); | ||
const chunk = this.data.slice(this.readCount, this.readCount + numBytesToSend); | ||
this.readCount += numBytesToSend; | ||
this.push(chunk); | ||
}; | ||
return MockEventMessageSource; | ||
}(Readable)); | ||
export { MockEventMessageSource }; | ||
} | ||
} |
@@ -1,9 +0,7 @@ | ||
import { __asyncGenerator, __await, __generator } from "tslib"; | ||
export function getChunkedStream(source) { | ||
var _a; | ||
var currentMessageTotalLength = 0; | ||
var currentMessagePendingLength = 0; | ||
var currentMessage = null; | ||
var messageLengthBuffer = null; | ||
var allocateMessage = function (size) { | ||
let currentMessageTotalLength = 0; | ||
let currentMessagePendingLength = 0; | ||
let currentMessage = null; | ||
let messageLengthBuffer = null; | ||
const allocateMessage = (size) => { | ||
if (typeof size !== "number") { | ||
@@ -15,76 +13,55 @@ throw new Error("Attempted to allocate an event message where size was not a number: " + size); | ||
currentMessage = new Uint8Array(size); | ||
var currentMessageView = new DataView(currentMessage.buffer); | ||
const currentMessageView = new DataView(currentMessage.buffer); | ||
currentMessageView.setUint32(0, size, false); | ||
}; | ||
var iterator = function () { | ||
return __asyncGenerator(this, arguments, function () { | ||
var sourceIterator, _a, value, done, chunkLength, currentOffset, bytesRemaining, numBytesForTotal, numBytesToWrite; | ||
return __generator(this, function (_b) { | ||
switch (_b.label) { | ||
case 0: | ||
sourceIterator = source[Symbol.asyncIterator](); | ||
_b.label = 1; | ||
case 1: | ||
if (!true) return [3, 16]; | ||
return [4, __await(sourceIterator.next())]; | ||
case 2: | ||
_a = _b.sent(), value = _a.value, done = _a.done; | ||
if (!done) return [3, 10]; | ||
if (!!currentMessageTotalLength) return [3, 4]; | ||
return [4, __await(void 0)]; | ||
case 3: return [2, _b.sent()]; | ||
case 4: | ||
if (!(currentMessageTotalLength === currentMessagePendingLength)) return [3, 7]; | ||
return [4, __await(currentMessage)]; | ||
case 5: return [4, _b.sent()]; | ||
case 6: | ||
_b.sent(); | ||
return [3, 8]; | ||
case 7: throw new Error("Truncated event message received."); | ||
case 8: return [4, __await(void 0)]; | ||
case 9: return [2, _b.sent()]; | ||
case 10: | ||
chunkLength = value.length; | ||
currentOffset = 0; | ||
_b.label = 11; | ||
case 11: | ||
if (!(currentOffset < chunkLength)) return [3, 15]; | ||
if (!currentMessage) { | ||
bytesRemaining = chunkLength - currentOffset; | ||
if (!messageLengthBuffer) { | ||
messageLengthBuffer = new Uint8Array(4); | ||
} | ||
numBytesForTotal = Math.min(4 - currentMessagePendingLength, bytesRemaining); | ||
messageLengthBuffer.set(value.slice(currentOffset, currentOffset + numBytesForTotal), currentMessagePendingLength); | ||
currentMessagePendingLength += numBytesForTotal; | ||
currentOffset += numBytesForTotal; | ||
if (currentMessagePendingLength < 4) { | ||
return [3, 15]; | ||
} | ||
allocateMessage(new DataView(messageLengthBuffer.buffer).getUint32(0, false)); | ||
messageLengthBuffer = null; | ||
} | ||
numBytesToWrite = Math.min(currentMessageTotalLength - currentMessagePendingLength, chunkLength - currentOffset); | ||
currentMessage.set(value.slice(currentOffset, currentOffset + numBytesToWrite), currentMessagePendingLength); | ||
currentMessagePendingLength += numBytesToWrite; | ||
currentOffset += numBytesToWrite; | ||
if (!(currentMessageTotalLength && currentMessageTotalLength === currentMessagePendingLength)) return [3, 14]; | ||
return [4, __await(currentMessage)]; | ||
case 12: return [4, _b.sent()]; | ||
case 13: | ||
_b.sent(); | ||
currentMessage = null; | ||
currentMessageTotalLength = 0; | ||
currentMessagePendingLength = 0; | ||
_b.label = 14; | ||
case 14: return [3, 11]; | ||
case 15: return [3, 1]; | ||
case 16: return [2]; | ||
const iterator = async function* () { | ||
const sourceIterator = source[Symbol.asyncIterator](); | ||
while (true) { | ||
const { value, done } = await sourceIterator.next(); | ||
if (done) { | ||
if (!currentMessageTotalLength) { | ||
return; | ||
} | ||
}); | ||
}); | ||
else if (currentMessageTotalLength === currentMessagePendingLength) { | ||
yield currentMessage; | ||
} | ||
else { | ||
throw new Error("Truncated event message received."); | ||
} | ||
return; | ||
} | ||
const chunkLength = value.length; | ||
let currentOffset = 0; | ||
while (currentOffset < chunkLength) { | ||
if (!currentMessage) { | ||
const bytesRemaining = chunkLength - currentOffset; | ||
if (!messageLengthBuffer) { | ||
messageLengthBuffer = new Uint8Array(4); | ||
} | ||
const numBytesForTotal = Math.min(4 - currentMessagePendingLength, bytesRemaining); | ||
messageLengthBuffer.set(value.slice(currentOffset, currentOffset + numBytesForTotal), currentMessagePendingLength); | ||
currentMessagePendingLength += numBytesForTotal; | ||
currentOffset += numBytesForTotal; | ||
if (currentMessagePendingLength < 4) { | ||
break; | ||
} | ||
allocateMessage(new DataView(messageLengthBuffer.buffer).getUint32(0, false)); | ||
messageLengthBuffer = null; | ||
} | ||
const numBytesToWrite = Math.min(currentMessageTotalLength - currentMessagePendingLength, chunkLength - currentOffset); | ||
currentMessage.set(value.slice(currentOffset, currentOffset + numBytesToWrite), currentMessagePendingLength); | ||
currentMessagePendingLength += numBytesToWrite; | ||
currentOffset += numBytesToWrite; | ||
if (currentMessageTotalLength && currentMessageTotalLength === currentMessagePendingLength) { | ||
yield currentMessage; | ||
currentMessage = null; | ||
currentMessageTotalLength = 0; | ||
currentMessagePendingLength = 0; | ||
} | ||
} | ||
} | ||
}; | ||
return _a = {}, | ||
_a[Symbol.asyncIterator] = iterator, | ||
_a; | ||
return { | ||
[Symbol.asyncIterator]: iterator, | ||
}; | ||
} |
@@ -1,79 +0,38 @@ | ||
import { __asyncGenerator, __asyncValues, __await, __generator } from "tslib"; | ||
export function getUnmarshalledStream(source, options) { | ||
var _a; | ||
return _a = {}, | ||
_a[Symbol.asyncIterator] = function () { | ||
return __asyncGenerator(this, arguments, function () { | ||
var source_1, source_1_1, chunk, message, messageType, unmodeledError, code, exception, deserializedException, error, event_1, deserialized, e_1_1; | ||
var _a, _b; | ||
var e_1, _c; | ||
return __generator(this, function (_d) { | ||
switch (_d.label) { | ||
case 0: | ||
_d.trys.push([0, 12, 13, 18]); | ||
source_1 = __asyncValues(source); | ||
_d.label = 1; | ||
case 1: return [4, __await(source_1.next())]; | ||
case 2: | ||
if (!(source_1_1 = _d.sent(), !source_1_1.done)) return [3, 11]; | ||
chunk = source_1_1.value; | ||
message = options.eventStreamCodec.decode(chunk); | ||
messageType = message.headers[":message-type"].value; | ||
if (!(messageType === "error")) return [3, 3]; | ||
unmodeledError = new Error(message.headers[":error-message"].value || "UnknownError"); | ||
unmodeledError.name = message.headers[":error-code"].value; | ||
throw unmodeledError; | ||
case 3: | ||
if (!(messageType === "exception")) return [3, 5]; | ||
code = message.headers[":exception-type"].value; | ||
exception = (_a = {}, _a[code] = message, _a); | ||
return [4, __await(options.deserializer(exception))]; | ||
case 4: | ||
deserializedException = _d.sent(); | ||
if (deserializedException.$unknown) { | ||
error = new Error(options.toUtf8(message.body)); | ||
error.name = code; | ||
throw error; | ||
} | ||
throw deserializedException[code]; | ||
case 5: | ||
if (!(messageType === "event")) return [3, 9]; | ||
event_1 = (_b = {}, | ||
_b[message.headers[":event-type"].value] = message, | ||
_b); | ||
return [4, __await(options.deserializer(event_1))]; | ||
case 6: | ||
deserialized = _d.sent(); | ||
if (deserialized.$unknown) | ||
return [3, 10]; | ||
return [4, __await(deserialized)]; | ||
case 7: return [4, _d.sent()]; | ||
case 8: | ||
_d.sent(); | ||
return [3, 10]; | ||
case 9: throw Error("Unrecognizable event type: ".concat(message.headers[":event-type"].value)); | ||
case 10: return [3, 1]; | ||
case 11: return [3, 18]; | ||
case 12: | ||
e_1_1 = _d.sent(); | ||
e_1 = { error: e_1_1 }; | ||
return [3, 18]; | ||
case 13: | ||
_d.trys.push([13, , 16, 17]); | ||
if (!(source_1_1 && !source_1_1.done && (_c = source_1.return))) return [3, 15]; | ||
return [4, __await(_c.call(source_1))]; | ||
case 14: | ||
_d.sent(); | ||
_d.label = 15; | ||
case 15: return [3, 17]; | ||
case 16: | ||
if (e_1) throw e_1.error; | ||
return [7]; | ||
case 17: return [7]; | ||
case 18: return [2]; | ||
return { | ||
[Symbol.asyncIterator]: async function* () { | ||
for await (const chunk of source) { | ||
const message = options.eventStreamCodec.decode(chunk); | ||
const { value: messageType } = message.headers[":message-type"]; | ||
if (messageType === "error") { | ||
const unmodeledError = new Error(message.headers[":error-message"].value || "UnknownError"); | ||
unmodeledError.name = message.headers[":error-code"].value; | ||
throw unmodeledError; | ||
} | ||
else if (messageType === "exception") { | ||
const code = message.headers[":exception-type"].value; | ||
const exception = { [code]: message }; | ||
const deserializedException = await options.deserializer(exception); | ||
if (deserializedException.$unknown) { | ||
const error = new Error(options.toUtf8(message.body)); | ||
error.name = code; | ||
throw error; | ||
} | ||
}); | ||
}); | ||
throw deserializedException[code]; | ||
} | ||
else if (messageType === "event") { | ||
const event = { | ||
[message.headers[":event-type"].value]: message, | ||
}; | ||
const deserialized = await options.deserializer(event); | ||
if (deserialized.$unknown) | ||
continue; | ||
yield deserialized; | ||
} | ||
else { | ||
throw Error(`Unrecognizable event type: ${message.headers[":event-type"].value}`); | ||
} | ||
} | ||
}, | ||
_a; | ||
}; | ||
} |
import { EventStreamMarshaller } from "./EventStreamMarshaller"; | ||
export var eventStreamSerdeProvider = function (options) { return new EventStreamMarshaller(options); }; | ||
export const eventStreamSerdeProvider = (options) => new EventStreamMarshaller(options); |
{ | ||
"name": "@aws-sdk/eventstream-serde-universal", | ||
"version": "3.178.0", | ||
"version": "3.183.0", | ||
"scripts": { | ||
@@ -23,8 +23,8 @@ "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types'", | ||
"dependencies": { | ||
"@aws-sdk/eventstream-codec": "3.178.0", | ||
"@aws-sdk/types": "3.178.0", | ||
"@aws-sdk/eventstream-codec": "3.183.0", | ||
"@aws-sdk/types": "3.183.0", | ||
"tslib": "^2.3.1" | ||
}, | ||
"devDependencies": { | ||
"@aws-sdk/util-utf8-node": "3.170.0", | ||
"@aws-sdk/util-utf8-node": "3.183.0", | ||
"@tsconfig/recommended": "1.0.1", | ||
@@ -31,0 +31,0 @@ "@types/node": "^10.0.0", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
51426
486
+ Added@aws-sdk/eventstream-codec@3.183.0(transitive)
+ Added@aws-sdk/types@3.183.0(transitive)
+ Added@aws-sdk/util-hex-encoding@3.183.0(transitive)
- Removed@aws-sdk/eventstream-codec@3.178.0(transitive)
- Removed@aws-sdk/types@3.178.0(transitive)
- Removed@aws-sdk/util-hex-encoding@3.170.0(transitive)
Updated@aws-sdk/types@3.183.0