@ai-sdk/provider-utils 1.0.2 → 1.0.3

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-sdk/provider-utils",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "license": "Apache-2.0",
5
5
  "sideEffects": false,
6
6
  "main": "./dist/index.js",
@@ -25,7 +25,7 @@
25
25
  }
26
26
  },
27
27
  "dependencies": {
28
- "@ai-sdk/provider": "0.0.12",
28
+ "@ai-sdk/provider": "0.0.13",
29
29
  "eventsource-parser": "1.1.2",
30
30
  "nanoid": "3.3.6",
31
31
  "secure-json-parse": "2.7.0"
@@ -9,6 +9,8 @@ declare function convertAsyncIterableToArray<T>(iterable: AsyncIterable<T>): Pro
9
9
 
10
10
  declare function convertReadableStreamToArray<T>(stream: ReadableStream<T>): Promise<T[]>;
11
11
 
12
+ declare function convertResponseStreamToArray(response: Response): Promise<string[]>;
13
+
12
14
  declare class JsonTestServer {
13
15
  readonly server: SetupServer;
14
16
  responseHeaders: Record<string, string>;
@@ -18,6 +20,7 @@ declare class JsonTestServer {
18
20
  getRequestBodyJson(): Promise<any>;
19
21
  getRequestHeaders(): Promise<Record<string, string>>;
20
22
  getRequestUrlSearchParams(): Promise<URLSearchParams>;
23
+ getRequestUrl(): Promise<string>;
21
24
  setupTestEnvironment(): void;
22
25
  }
23
26
 
@@ -76,4 +79,4 @@ declare function describeWithTestServer(description: string, responses: Array<Te
76
79
  */
77
80
  declare const convertStreamToArray: typeof convertReadableStreamToArray;
78
81
 
79
- export { JsonTestServer, StreamingTestServer, type TestServerJsonBodyType, type TestServerResponse, convertArrayToAsyncIterable, convertArrayToReadableStream, convertAsyncIterableToArray, convertReadableStreamToArray, convertStreamToArray, describeWithTestServer, withTestServer };
82
+ export { JsonTestServer, StreamingTestServer, type TestServerJsonBodyType, type TestServerResponse, convertArrayToAsyncIterable, convertArrayToReadableStream, convertAsyncIterableToArray, convertReadableStreamToArray, convertResponseStreamToArray, convertStreamToArray, describeWithTestServer, withTestServer };
@@ -9,6 +9,8 @@ declare function convertAsyncIterableToArray<T>(iterable: AsyncIterable<T>): Pro
9
9
 
10
10
  declare function convertReadableStreamToArray<T>(stream: ReadableStream<T>): Promise<T[]>;
11
11
 
12
+ declare function convertResponseStreamToArray(response: Response): Promise<string[]>;
13
+
12
14
  declare class JsonTestServer {
13
15
  readonly server: SetupServer;
14
16
  responseHeaders: Record<string, string>;
@@ -18,6 +20,7 @@ declare class JsonTestServer {
18
20
  getRequestBodyJson(): Promise<any>;
19
21
  getRequestHeaders(): Promise<Record<string, string>>;
20
22
  getRequestUrlSearchParams(): Promise<URLSearchParams>;
23
+ getRequestUrl(): Promise<string>;
21
24
  setupTestEnvironment(): void;
22
25
  }
23
26
 
@@ -76,4 +79,4 @@ declare function describeWithTestServer(description: string, responses: Array<Te
76
79
  */
77
80
  declare const convertStreamToArray: typeof convertReadableStreamToArray;
78
81
 
79
- export { JsonTestServer, StreamingTestServer, type TestServerJsonBodyType, type TestServerResponse, convertArrayToAsyncIterable, convertArrayToReadableStream, convertAsyncIterableToArray, convertReadableStreamToArray, convertStreamToArray, describeWithTestServer, withTestServer };
82
+ export { JsonTestServer, StreamingTestServer, type TestServerJsonBodyType, type TestServerResponse, convertArrayToAsyncIterable, convertArrayToReadableStream, convertAsyncIterableToArray, convertReadableStreamToArray, convertResponseStreamToArray, convertStreamToArray, describeWithTestServer, withTestServer };
@@ -63,6 +63,7 @@ __export(test_exports, {
63
63
  convertArrayToReadableStream: () => convertArrayToReadableStream,
64
64
  convertAsyncIterableToArray: () => convertAsyncIterableToArray,
65
65
  convertReadableStreamToArray: () => convertReadableStreamToArray,
66
+ convertResponseStreamToArray: () => convertResponseStreamToArray,
66
67
  convertStreamToArray: () => convertStreamToArray,
67
68
  describeWithTestServer: () => describeWithTestServer,
68
69
  withTestServer: () => withTestServer
@@ -117,6 +118,13 @@ async function convertReadableStreamToArray(stream) {
117
118
  return result;
118
119
  }
119
120
 
121
+ // src/test/convert-response-stream-to-array.ts
122
+ async function convertResponseStreamToArray(response) {
123
+ return convertReadableStreamToArray(
124
+ response.body.pipeThrough(new TextDecoderStream())
125
+ );
126
+ }
127
+
120
128
  // ../../node_modules/.pnpm/outvariant@1.4.2/node_modules/outvariant/lib/index.mjs
121
129
  var POSITIONALS_EXP = /(%?)(%([sdijo]))/g;
122
130
  function serializePositional(positional, flag) {
@@ -5236,6 +5244,10 @@ var JsonTestServer = class {
5236
5244
  expect(this.request).toBeDefined();
5237
5245
  return new URL(this.request.url).searchParams;
5238
5246
  }
5247
+ async getRequestUrl() {
5248
+ expect(this.request).toBeDefined();
5249
+ return new URL(this.request.url).toString();
5250
+ }
5239
5251
  setupTestEnvironment() {
5240
5252
  beforeAll(() => this.server.listen());
5241
5253
  beforeEach(() => {
@@ -5336,13 +5348,40 @@ function createServer({
5336
5348
  pushCall,
5337
5349
  pushController
5338
5350
  }) {
5351
+ const responsesArray = Array.isArray(responses) ? responses : [responses];
5352
+ const responsesByUrl = responsesArray.reduce((responsesByUrl2, response) => {
5353
+ if (!responsesByUrl2[response.url]) {
5354
+ responsesByUrl2[response.url] = [];
5355
+ }
5356
+ responsesByUrl2[response.url].push(response);
5357
+ return responsesByUrl2;
5358
+ }, {});
5359
+ const streams = {};
5360
+ responsesArray.filter(
5361
+ (response) => response.type === "controlled-stream"
5362
+ ).forEach((response) => {
5363
+ var _a3, _b2;
5364
+ let streamController;
5365
+ const stream = new ReadableStream({
5366
+ start(controller) {
5367
+ streamController = controller;
5368
+ }
5369
+ });
5370
+ pushController((_a3 = response.id) != null ? _a3 : "", () => streamController);
5371
+ streams[(_b2 = response.id) != null ? _b2 : ""] = stream;
5372
+ });
5373
+ const urlInvocationCounts = Object.fromEntries(
5374
+ Object.entries(responsesByUrl).map(([url]) => [url, 0])
5375
+ );
5339
5376
  return setupServer(
5340
- ...(Array.isArray(responses) ? responses : [responses]).map((response) => {
5341
- var _a3;
5342
- switch (response.type) {
5343
- case "json-value": {
5344
- return http.post(response.url, ({ request: request2 }) => {
5345
- pushCall(new TestServerCall(request2));
5377
+ ...Object.entries(responsesByUrl).map(([url, responses2]) => {
5378
+ return http.post(url, ({ request: request2 }) => {
5379
+ var _a3, _b2;
5380
+ pushCall(new TestServerCall(request2));
5381
+ const invocationCount = urlInvocationCounts[url]++;
5382
+ const response = responses2[invocationCount > responses2.length ? responses2.length - 1 : invocationCount];
5383
+ switch (response.type) {
5384
+ case "json-value":
5346
5385
  return HttpResponse.json(response.content, {
5347
5386
  status: 200,
5348
5387
  headers: {
@@ -5350,11 +5389,7 @@ function createServer({
5350
5389
  ...response.headers
5351
5390
  }
5352
5391
  });
5353
- });
5354
- }
5355
- case "stream-values": {
5356
- return http.post(response.url, ({ request: request2 }) => {
5357
- pushCall(new TestServerCall(request2));
5392
+ case "stream-values":
5358
5393
  return new HttpResponse(
5359
5394
  convertArrayToReadableStream(response.content).pipeThrough(
5360
5395
  new TextEncoderStream()
@@ -5369,20 +5404,9 @@ function createServer({
5369
5404
  }
5370
5405
  }
5371
5406
  );
5372
- });
5373
- }
5374
- case "controlled-stream": {
5375
- let streamController;
5376
- const stream = new ReadableStream({
5377
- start(controller) {
5378
- streamController = controller;
5379
- }
5380
- });
5381
- pushController((_a3 = response.id) != null ? _a3 : "", () => streamController);
5382
- return http.post(response.url, ({ request: request2 }) => {
5383
- pushCall(new TestServerCall(request2));
5407
+ case "controlled-stream": {
5384
5408
  return new HttpResponse(
5385
- stream.pipeThrough(new TextEncoderStream()),
5409
+ streams[(_a3 = response.id) != null ? _a3 : ""].pipeThrough(new TextEncoderStream()),
5386
5410
  {
5387
5411
  status: 200,
5388
5412
  headers: {
@@ -5393,21 +5417,16 @@ function createServer({
5393
5417
  }
5394
5418
  }
5395
5419
  );
5396
- });
5397
- }
5398
- case "error": {
5399
- return http.post(response.url, ({ request: request2 }) => {
5400
- var _a4;
5401
- pushCall(new TestServerCall(request2));
5402
- return HttpResponse.text((_a4 = response.content) != null ? _a4 : "Error", {
5420
+ }
5421
+ case "error":
5422
+ return HttpResponse.text((_b2 = response.content) != null ? _b2 : "Error", {
5403
5423
  status: response.status,
5404
5424
  headers: {
5405
5425
  ...response.headers
5406
5426
  }
5407
5427
  });
5408
- });
5409
5428
  }
5410
- }
5429
+ });
5411
5430
  })
5412
5431
  );
5413
5432
  }
@@ -5483,6 +5502,7 @@ var convertStreamToArray = convertReadableStreamToArray;
5483
5502
  convertArrayToReadableStream,
5484
5503
  convertAsyncIterableToArray,
5485
5504
  convertReadableStreamToArray,
5505
+ convertResponseStreamToArray,
5486
5506
  convertStreamToArray,
5487
5507
  describeWithTestServer,
5488
5508
  withTestServer