@ai-sdk/amazon-bedrock 4.0.20 → 4.0.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -110,70 +110,84 @@ var BedrockErrorSchema = import_v42.z.object({
110
110
  // src/bedrock-event-stream-response-handler.ts
111
111
  var import_provider = require("@ai-sdk/provider");
112
112
  var import_provider_utils = require("@ai-sdk/provider-utils");
113
+
114
+ // src/bedrock-event-stream-decoder.ts
113
115
  var import_eventstream_codec = require("@smithy/eventstream-codec");
114
116
  var import_util_utf8 = require("@smithy/util-utf8");
117
+ function createBedrockEventStreamDecoder(body, processEvent) {
118
+ const codec = new import_eventstream_codec.EventStreamCodec(import_util_utf8.toUtf8, import_util_utf8.fromUtf8);
119
+ let buffer = new Uint8Array(0);
120
+ const textDecoder = new TextDecoder();
121
+ return body.pipeThrough(
122
+ new TransformStream({
123
+ async transform(chunk, controller) {
124
+ var _a, _b;
125
+ const newBuffer = new Uint8Array(buffer.length + chunk.length);
126
+ newBuffer.set(buffer);
127
+ newBuffer.set(chunk, buffer.length);
128
+ buffer = newBuffer;
129
+ while (buffer.length >= 4) {
130
+ const totalLength = new DataView(
131
+ buffer.buffer,
132
+ buffer.byteOffset,
133
+ buffer.byteLength
134
+ ).getUint32(0, false);
135
+ if (buffer.length < totalLength) {
136
+ break;
137
+ }
138
+ try {
139
+ const subView = buffer.subarray(0, totalLength);
140
+ const decoded = codec.decode(subView);
141
+ buffer = buffer.slice(totalLength);
142
+ const messageType = (_a = decoded.headers[":message-type"]) == null ? void 0 : _a.value;
143
+ const eventType = (_b = decoded.headers[":event-type"]) == null ? void 0 : _b.value;
144
+ const data = textDecoder.decode(decoded.body);
145
+ await processEvent({ messageType, eventType, data }, controller);
146
+ } catch (e) {
147
+ break;
148
+ }
149
+ }
150
+ }
151
+ })
152
+ );
153
+ }
154
+
155
+ // src/bedrock-event-stream-response-handler.ts
115
156
  var createBedrockEventStreamResponseHandler = (chunkSchema) => async ({ response }) => {
116
157
  const responseHeaders = (0, import_provider_utils.extractResponseHeaders)(response);
117
158
  if (response.body == null) {
118
159
  throw new import_provider.EmptyResponseBodyError({});
119
160
  }
120
- const codec = new import_eventstream_codec.EventStreamCodec(import_util_utf8.toUtf8, import_util_utf8.fromUtf8);
121
- let buffer = new Uint8Array(0);
122
- const textDecoder = new TextDecoder();
123
161
  return {
124
162
  responseHeaders,
125
- value: response.body.pipeThrough(
126
- new TransformStream({
127
- async transform(chunk, controller) {
128
- var _a, _b;
129
- const newBuffer = new Uint8Array(buffer.length + chunk.length);
130
- newBuffer.set(buffer);
131
- newBuffer.set(chunk, buffer.length);
132
- buffer = newBuffer;
133
- while (buffer.length >= 4) {
134
- const totalLength = new DataView(
135
- buffer.buffer,
136
- buffer.byteOffset,
137
- buffer.byteLength
138
- ).getUint32(0, false);
139
- if (buffer.length < totalLength) {
140
- break;
141
- }
142
- try {
143
- const subView = buffer.subarray(0, totalLength);
144
- const decoded = codec.decode(subView);
145
- buffer = buffer.slice(totalLength);
146
- if (((_a = decoded.headers[":message-type"]) == null ? void 0 : _a.value) === "event") {
147
- const data = textDecoder.decode(decoded.body);
148
- const parsedDataResult = await (0, import_provider_utils.safeParseJSON)({ text: data });
149
- if (!parsedDataResult.success) {
150
- controller.enqueue(parsedDataResult);
151
- break;
152
- }
153
- delete parsedDataResult.value.p;
154
- let wrappedData = {
155
- [(_b = decoded.headers[":event-type"]) == null ? void 0 : _b.value]: parsedDataResult.value
156
- };
157
- const validatedWrappedData = await (0, import_provider_utils.safeValidateTypes)({
158
- value: wrappedData,
159
- schema: chunkSchema
160
- });
161
- if (!validatedWrappedData.success) {
162
- controller.enqueue(validatedWrappedData);
163
- } else {
164
- controller.enqueue({
165
- success: true,
166
- value: validatedWrappedData.value,
167
- rawValue: wrappedData
168
- });
169
- }
170
- }
171
- } catch (e) {
172
- break;
173
- }
163
+ value: createBedrockEventStreamDecoder(
164
+ response.body,
165
+ async (event, controller) => {
166
+ if (event.messageType === "event") {
167
+ const parsedDataResult = await (0, import_provider_utils.safeParseJSON)({ text: event.data });
168
+ if (!parsedDataResult.success) {
169
+ controller.enqueue(parsedDataResult);
170
+ return;
171
+ }
172
+ delete parsedDataResult.value.p;
173
+ const wrappedData = {
174
+ [event.eventType]: parsedDataResult.value
175
+ };
176
+ const validatedWrappedData = await (0, import_provider_utils.safeValidateTypes)({
177
+ value: wrappedData,
178
+ schema: chunkSchema
179
+ });
180
+ if (!validatedWrappedData.success) {
181
+ controller.enqueue(validatedWrappedData);
182
+ } else {
183
+ controller.enqueue({
184
+ success: true,
185
+ value: validatedWrappedData.value,
186
+ rawValue: wrappedData
187
+ });
174
188
  }
175
189
  }
176
- })
190
+ }
177
191
  )
178
192
  };
179
193
  };
@@ -1742,7 +1756,7 @@ var import_provider_utils7 = require("@ai-sdk/provider-utils");
1742
1756
  var import_aws4fetch = require("aws4fetch");
1743
1757
 
1744
1758
  // src/version.ts
1745
- var VERSION = true ? "4.0.20" : "0.0.0-test";
1759
+ var VERSION = true ? "4.0.22" : "0.0.0-test";
1746
1760
 
1747
1761
  // src/bedrock-sigv4-fetch.ts
1748
1762
  function createSigV4FetchFunction(getCredentials, fetch = globalThis.fetch) {