@ai-sdk/provider-utils 2.2.4 → 3.0.0-canary.1

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": "2.2.4",
3
+ "version": "3.0.0-canary.1",
4
4
  "license": "Apache-2.0",
5
5
  "sideEffects": false,
6
6
  "main": "./dist/index.js",
@@ -26,8 +26,7 @@
26
26
  }
27
27
  },
28
28
  "dependencies": {
29
- "@ai-sdk/provider": "1.1.0",
30
- "nanoid": "^3.3.8",
29
+ "@ai-sdk/provider": "2.0.0-canary.0",
31
30
  "secure-json-parse": "^2.7.0"
32
31
  },
33
32
  "devDependencies": {
@@ -1,4 +1,3 @@
1
- import { SetupServer } from 'msw/node';
2
1
  import { JsonBodyType } from 'msw';
3
2
 
4
3
  declare function convertArrayToAsyncIterable<T>(values: T[]): AsyncIterable<T>;
@@ -11,86 +10,10 @@ declare function convertReadableStreamToArray<T>(stream: ReadableStream<T>): Pro
11
10
 
12
11
  declare function convertResponseStreamToArray(response: Response): Promise<string[]>;
13
12
 
14
- /**
15
- * @deprecated Use createTestServer instead
16
- */
17
- declare class JsonTestServer {
18
- readonly server: SetupServer;
19
- responseHeaders: Record<string, string>;
20
- responseBodyJson: any;
21
- request: Request | undefined;
22
- /**
23
- * @deprecated Use createTestServer instead
24
- */
25
- constructor(url: string);
26
- getRequestBodyJson(): Promise<any>;
27
- getRequestHeaders(): Promise<Record<string, string>>;
28
- getRequestUrlSearchParams(): Promise<URLSearchParams>;
29
- getRequestUrl(): Promise<string>;
30
- setupTestEnvironment(): void;
31
- }
32
-
33
13
  declare function mockId({ prefix, }?: {
34
14
  prefix?: string;
35
15
  }): () => string;
36
16
 
37
- /**
38
- * @deprecated Use createTestServer instead
39
- */
40
- declare class StreamingTestServer {
41
- readonly server: SetupServer;
42
- responseHeaders: Record<string, string>;
43
- responseChunks: any[];
44
- request: Request | undefined;
45
- /**
46
- * @deprecated Use createTestServer instead
47
- */
48
- constructor(url: string);
49
- getRequestBodyJson(): Promise<any>;
50
- getRequestHeaders(): Promise<Record<string, string>>;
51
- getRequestUrlSearchParams(): Promise<URLSearchParams>;
52
- setupTestEnvironment(): void;
53
- }
54
-
55
- type TestServerJsonBodyType = JsonBodyType;
56
- type TestServerResponse = {
57
- url: string;
58
- headers?: Record<string, string>;
59
- } & ({
60
- type: 'json-value';
61
- content: TestServerJsonBodyType;
62
- } | {
63
- type: 'stream-values';
64
- content: Array<string>;
65
- } | {
66
- type: 'controlled-stream';
67
- id?: string;
68
- } | {
69
- type: 'error';
70
- status: number;
71
- content?: string;
72
- });
73
- declare class TestServerCall$1 {
74
- private request;
75
- constructor(request: Request);
76
- getRequestBodyJson(): Promise<any>;
77
- getRequestCredentials(): RequestCredentials;
78
- getRequestHeaders(): Record<string, string>;
79
- getRequestUrlSearchParams(): URLSearchParams;
80
- }
81
- declare function withTestServer(responses: Array<TestServerResponse> | TestServerResponse, testFunction: (options: {
82
- calls: () => Array<TestServerCall$1>;
83
- call: (index: number) => TestServerCall$1;
84
- getStreamController: (id: string) => ReadableStreamDefaultController<string>;
85
- streamController: ReadableStreamDefaultController<string>;
86
- }) => Promise<void>): () => Promise<void>;
87
- declare function describeWithTestServer(description: string, responses: Array<TestServerResponse> | TestServerResponse, testFunction: (options: {
88
- calls: () => Array<TestServerCall$1>;
89
- call: (index: number) => TestServerCall$1;
90
- getStreamController: (id: string) => ReadableStreamDefaultController<string>;
91
- streamController: ReadableStreamDefaultController<string>;
92
- }) => void): void;
93
-
94
17
  type UrlResponse = {
95
18
  type: 'json-value';
96
19
  headers?: Record<string, string>;
@@ -158,4 +81,4 @@ declare class TestResponseController {
158
81
  close(): Promise<void>;
159
82
  }
160
83
 
161
- export { JsonTestServer, StreamingTestServer, TestResponseController, type TestServerJsonBodyType, type TestServerResponse, type UrlHandler, type UrlHandlers, type UrlResponse, convertArrayToAsyncIterable, convertArrayToReadableStream, convertAsyncIterableToArray, convertReadableStreamToArray, convertResponseStreamToArray, createTestServer, describeWithTestServer, mockId, withTestServer };
84
+ export { TestResponseController, type UrlHandler, type UrlHandlers, type UrlResponse, convertArrayToAsyncIterable, convertArrayToReadableStream, convertAsyncIterableToArray, convertReadableStreamToArray, convertResponseStreamToArray, createTestServer, mockId };
@@ -1,4 +1,3 @@
1
- import { SetupServer } from 'msw/node';
2
1
  import { JsonBodyType } from 'msw';
3
2
 
4
3
  declare function convertArrayToAsyncIterable<T>(values: T[]): AsyncIterable<T>;
@@ -11,86 +10,10 @@ declare function convertReadableStreamToArray<T>(stream: ReadableStream<T>): Pro
11
10
 
12
11
  declare function convertResponseStreamToArray(response: Response): Promise<string[]>;
13
12
 
14
- /**
15
- * @deprecated Use createTestServer instead
16
- */
17
- declare class JsonTestServer {
18
- readonly server: SetupServer;
19
- responseHeaders: Record<string, string>;
20
- responseBodyJson: any;
21
- request: Request | undefined;
22
- /**
23
- * @deprecated Use createTestServer instead
24
- */
25
- constructor(url: string);
26
- getRequestBodyJson(): Promise<any>;
27
- getRequestHeaders(): Promise<Record<string, string>>;
28
- getRequestUrlSearchParams(): Promise<URLSearchParams>;
29
- getRequestUrl(): Promise<string>;
30
- setupTestEnvironment(): void;
31
- }
32
-
33
13
  declare function mockId({ prefix, }?: {
34
14
  prefix?: string;
35
15
  }): () => string;
36
16
 
37
- /**
38
- * @deprecated Use createTestServer instead
39
- */
40
- declare class StreamingTestServer {
41
- readonly server: SetupServer;
42
- responseHeaders: Record<string, string>;
43
- responseChunks: any[];
44
- request: Request | undefined;
45
- /**
46
- * @deprecated Use createTestServer instead
47
- */
48
- constructor(url: string);
49
- getRequestBodyJson(): Promise<any>;
50
- getRequestHeaders(): Promise<Record<string, string>>;
51
- getRequestUrlSearchParams(): Promise<URLSearchParams>;
52
- setupTestEnvironment(): void;
53
- }
54
-
55
- type TestServerJsonBodyType = JsonBodyType;
56
- type TestServerResponse = {
57
- url: string;
58
- headers?: Record<string, string>;
59
- } & ({
60
- type: 'json-value';
61
- content: TestServerJsonBodyType;
62
- } | {
63
- type: 'stream-values';
64
- content: Array<string>;
65
- } | {
66
- type: 'controlled-stream';
67
- id?: string;
68
- } | {
69
- type: 'error';
70
- status: number;
71
- content?: string;
72
- });
73
- declare class TestServerCall$1 {
74
- private request;
75
- constructor(request: Request);
76
- getRequestBodyJson(): Promise<any>;
77
- getRequestCredentials(): RequestCredentials;
78
- getRequestHeaders(): Record<string, string>;
79
- getRequestUrlSearchParams(): URLSearchParams;
80
- }
81
- declare function withTestServer(responses: Array<TestServerResponse> | TestServerResponse, testFunction: (options: {
82
- calls: () => Array<TestServerCall$1>;
83
- call: (index: number) => TestServerCall$1;
84
- getStreamController: (id: string) => ReadableStreamDefaultController<string>;
85
- streamController: ReadableStreamDefaultController<string>;
86
- }) => Promise<void>): () => Promise<void>;
87
- declare function describeWithTestServer(description: string, responses: Array<TestServerResponse> | TestServerResponse, testFunction: (options: {
88
- calls: () => Array<TestServerCall$1>;
89
- call: (index: number) => TestServerCall$1;
90
- getStreamController: (id: string) => ReadableStreamDefaultController<string>;
91
- streamController: ReadableStreamDefaultController<string>;
92
- }) => void): void;
93
-
94
17
  type UrlResponse = {
95
18
  type: 'json-value';
96
19
  headers?: Record<string, string>;
@@ -158,4 +81,4 @@ declare class TestResponseController {
158
81
  close(): Promise<void>;
159
82
  }
160
83
 
161
- export { JsonTestServer, StreamingTestServer, TestResponseController, type TestServerJsonBodyType, type TestServerResponse, type UrlHandler, type UrlHandlers, type UrlResponse, convertArrayToAsyncIterable, convertArrayToReadableStream, convertAsyncIterableToArray, convertReadableStreamToArray, convertResponseStreamToArray, createTestServer, describeWithTestServer, mockId, withTestServer };
84
+ export { TestResponseController, type UrlHandler, type UrlHandlers, type UrlResponse, convertArrayToAsyncIterable, convertArrayToReadableStream, convertAsyncIterableToArray, convertReadableStreamToArray, convertResponseStreamToArray, createTestServer, mockId };
@@ -57,8 +57,6 @@ var __privateMethod = (obj, member, method) => {
57
57
  // src/test/index.ts
58
58
  var test_exports = {};
59
59
  __export(test_exports, {
60
- JsonTestServer: () => JsonTestServer,
61
- StreamingTestServer: () => StreamingTestServer,
62
60
  TestResponseController: () => TestResponseController,
63
61
  convertArrayToAsyncIterable: () => convertArrayToAsyncIterable,
64
62
  convertArrayToReadableStream: () => convertArrayToReadableStream,
@@ -66,9 +64,7 @@ __export(test_exports, {
66
64
  convertReadableStreamToArray: () => convertReadableStreamToArray,
67
65
  convertResponseStreamToArray: () => convertResponseStreamToArray,
68
66
  createTestServer: () => createTestServer,
69
- describeWithTestServer: () => describeWithTestServer,
70
- mockId: () => mockId,
71
- withTestServer: () => withTestServer
67
+ mockId: () => mockId
72
68
  });
73
69
  module.exports = __toCommonJS(test_exports);
74
70
 
@@ -127,6 +123,14 @@ async function convertResponseStreamToArray(response) {
127
123
  );
128
124
  }
129
125
 
126
+ // src/test/mock-id.ts
127
+ function mockId({
128
+ prefix = "id"
129
+ } = {}) {
130
+ let counter = 0;
131
+ return () => `${prefix}-${counter++}`;
132
+ }
133
+
130
134
  // ../../node_modules/.pnpm/outvariant@1.4.3/node_modules/outvariant/lib/index.mjs
131
135
  var POSITIONALS_EXP = /(%?)(%([sdijo]))/g;
132
136
  function serializePositional(positional, flag) {
@@ -18489,315 +18493,8 @@ var setupServer = (...handlers) => {
18489
18493
  return new SetupServerApi(handlers);
18490
18494
  };
18491
18495
 
18492
- // src/test/json-test-server.ts
18493
- var JsonTestServer = class {
18494
- /**
18495
- * @deprecated Use createTestServer instead
18496
- */
18497
- constructor(url) {
18498
- this.responseHeaders = {};
18499
- this.responseBodyJson = {};
18500
- const responseBodyJson = () => this.responseBodyJson;
18501
- this.server = setupServer(
18502
- http.post(url, ({ request }) => {
18503
- this.request = request;
18504
- return HttpResponse.json(responseBodyJson(), {
18505
- headers: {
18506
- "Content-Type": "application/json",
18507
- ...this.responseHeaders
18508
- }
18509
- });
18510
- })
18511
- );
18512
- }
18513
- async getRequestBodyJson() {
18514
- expect(this.request).toBeDefined();
18515
- return JSON.parse(await this.request.text());
18516
- }
18517
- async getRequestHeaders() {
18518
- expect(this.request).toBeDefined();
18519
- const requestHeaders = this.request.headers;
18520
- const headersObject = {};
18521
- requestHeaders.forEach((value, key) => {
18522
- headersObject[key] = value;
18523
- });
18524
- return headersObject;
18525
- }
18526
- async getRequestUrlSearchParams() {
18527
- expect(this.request).toBeDefined();
18528
- return new URL(this.request.url).searchParams;
18529
- }
18530
- async getRequestUrl() {
18531
- expect(this.request).toBeDefined();
18532
- return new URL(this.request.url).toString();
18533
- }
18534
- setupTestEnvironment() {
18535
- beforeAll(() => this.server.listen());
18536
- beforeEach(() => {
18537
- this.responseBodyJson = {};
18538
- this.request = void 0;
18539
- });
18540
- afterEach(() => this.server.resetHandlers());
18541
- afterAll(() => this.server.close());
18542
- }
18543
- };
18544
-
18545
- // src/test/mock-id.ts
18546
- function mockId({
18547
- prefix = "id"
18548
- } = {}) {
18549
- let counter = 0;
18550
- return () => `${prefix}-${counter++}`;
18551
- }
18552
-
18553
- // src/test/streaming-test-server.ts
18554
- var StreamingTestServer = class {
18555
- /**
18556
- * @deprecated Use createTestServer instead
18557
- */
18558
- constructor(url) {
18559
- this.responseHeaders = {};
18560
- this.responseChunks = [];
18561
- const responseChunks = () => this.responseChunks;
18562
- this.server = setupServer(
18563
- http.post(url, ({ request }) => {
18564
- this.request = request;
18565
- const encoder2 = new TextEncoder();
18566
- const stream = new ReadableStream({
18567
- async start(controller) {
18568
- try {
18569
- for (const chunk of responseChunks()) {
18570
- controller.enqueue(encoder2.encode(chunk));
18571
- }
18572
- } finally {
18573
- controller.close();
18574
- }
18575
- }
18576
- });
18577
- return new HttpResponse(stream, {
18578
- status: 200,
18579
- headers: {
18580
- "Content-Type": "text/event-stream",
18581
- "Cache-Control": "no-cache",
18582
- Connection: "keep-alive",
18583
- ...this.responseHeaders
18584
- }
18585
- });
18586
- })
18587
- );
18588
- }
18589
- async getRequestBodyJson() {
18590
- expect(this.request).toBeDefined();
18591
- return JSON.parse(await this.request.text());
18592
- }
18593
- async getRequestHeaders() {
18594
- expect(this.request).toBeDefined();
18595
- const requestHeaders = this.request.headers;
18596
- const headersObject = {};
18597
- requestHeaders.forEach((value, key) => {
18598
- headersObject[key] = value;
18599
- });
18600
- return headersObject;
18601
- }
18602
- async getRequestUrlSearchParams() {
18603
- expect(this.request).toBeDefined();
18604
- return new URL(this.request.url).searchParams;
18605
- }
18606
- setupTestEnvironment() {
18607
- beforeAll(() => this.server.listen());
18608
- beforeEach(() => {
18609
- this.responseChunks = [];
18610
- this.request = void 0;
18611
- });
18612
- afterEach(() => this.server.resetHandlers());
18613
- afterAll(() => this.server.close());
18614
- }
18615
- };
18616
-
18617
18496
  // src/test/test-server.ts
18618
18497
  var TestServerCall = class {
18619
- constructor(request) {
18620
- this.request = request;
18621
- }
18622
- async getRequestBodyJson() {
18623
- expect(this.request).toBeDefined();
18624
- return JSON.parse(await this.request.text());
18625
- }
18626
- getRequestCredentials() {
18627
- expect(this.request).toBeDefined();
18628
- return this.request.credentials;
18629
- }
18630
- getRequestHeaders() {
18631
- expect(this.request).toBeDefined();
18632
- const requestHeaders = this.request.headers;
18633
- const headersObject = {};
18634
- requestHeaders.forEach((value, key) => {
18635
- headersObject[key] = value;
18636
- });
18637
- return headersObject;
18638
- }
18639
- getRequestUrlSearchParams() {
18640
- expect(this.request).toBeDefined();
18641
- return new URL(this.request.url).searchParams;
18642
- }
18643
- };
18644
- function createServer({
18645
- responses,
18646
- pushCall,
18647
- pushController
18648
- }) {
18649
- const responsesArray = Array.isArray(responses) ? responses : [responses];
18650
- const responsesByUrl = responsesArray.reduce(
18651
- (responsesByUrl2, response) => {
18652
- if (!responsesByUrl2[response.url]) {
18653
- responsesByUrl2[response.url] = [];
18654
- }
18655
- responsesByUrl2[response.url].push(response);
18656
- return responsesByUrl2;
18657
- },
18658
- {}
18659
- );
18660
- const streams = {};
18661
- responsesArray.filter(
18662
- (response) => response.type === "controlled-stream"
18663
- ).forEach((response) => {
18664
- var _a4, _b2;
18665
- let streamController;
18666
- const stream = new ReadableStream({
18667
- start(controller) {
18668
- streamController = controller;
18669
- }
18670
- });
18671
- pushController((_a4 = response.id) != null ? _a4 : "", () => streamController);
18672
- streams[(_b2 = response.id) != null ? _b2 : ""] = stream;
18673
- });
18674
- const urlInvocationCounts = Object.fromEntries(
18675
- Object.entries(responsesByUrl).map(([url]) => [url, 0])
18676
- );
18677
- return setupServer(
18678
- ...Object.entries(responsesByUrl).map(([url, responses2]) => {
18679
- return http.post(url, ({ request }) => {
18680
- var _a4, _b2;
18681
- pushCall(new TestServerCall(request));
18682
- const invocationCount = urlInvocationCounts[url]++;
18683
- const response = responses2[
18684
- // TODO bug needs to be >=
18685
- invocationCount > responses2.length ? responses2.length - 1 : invocationCount
18686
- ];
18687
- switch (response.type) {
18688
- case "json-value":
18689
- return HttpResponse.json(response.content, {
18690
- status: 200,
18691
- headers: {
18692
- "Content-Type": "application/json",
18693
- ...response.headers
18694
- }
18695
- });
18696
- case "stream-values":
18697
- return new HttpResponse(
18698
- convertArrayToReadableStream(response.content).pipeThrough(
18699
- new TextEncoderStream()
18700
- ),
18701
- {
18702
- status: 200,
18703
- headers: {
18704
- "Content-Type": "text/event-stream",
18705
- "Cache-Control": "no-cache",
18706
- Connection: "keep-alive",
18707
- ...response.headers
18708
- }
18709
- }
18710
- );
18711
- case "controlled-stream": {
18712
- return new HttpResponse(
18713
- streams[(_a4 = response.id) != null ? _a4 : ""].pipeThrough(new TextEncoderStream()),
18714
- {
18715
- status: 200,
18716
- headers: {
18717
- "Content-Type": "text/event-stream",
18718
- "Cache-Control": "no-cache",
18719
- Connection: "keep-alive",
18720
- ...response.headers
18721
- }
18722
- }
18723
- );
18724
- }
18725
- case "error":
18726
- return HttpResponse.text((_b2 = response.content) != null ? _b2 : "Error", {
18727
- status: response.status,
18728
- headers: {
18729
- ...response.headers
18730
- }
18731
- });
18732
- }
18733
- });
18734
- })
18735
- );
18736
- }
18737
- function withTestServer(responses, testFunction) {
18738
- return async () => {
18739
- const calls = [];
18740
- const controllers = {};
18741
- const server = createServer({
18742
- responses,
18743
- pushCall: (call) => calls.push(call),
18744
- pushController: (id, controller) => {
18745
- controllers[id] = controller;
18746
- }
18747
- });
18748
- try {
18749
- server.listen();
18750
- await testFunction({
18751
- calls: () => calls,
18752
- call: (index) => calls[index],
18753
- getStreamController: (id) => {
18754
- return controllers[id]();
18755
- },
18756
- get streamController() {
18757
- return controllers[""]();
18758
- }
18759
- });
18760
- } finally {
18761
- server.close();
18762
- }
18763
- };
18764
- }
18765
- function describeWithTestServer(description, responses, testFunction) {
18766
- describe(description, () => {
18767
- let calls;
18768
- let controllers;
18769
- let server;
18770
- beforeAll(() => {
18771
- server = createServer({
18772
- responses,
18773
- pushCall: (call) => calls.push(call),
18774
- pushController: (id, controller) => {
18775
- controllers[id] = controller;
18776
- }
18777
- });
18778
- server.listen();
18779
- });
18780
- beforeEach(() => {
18781
- calls = [];
18782
- controllers = {};
18783
- server.resetHandlers();
18784
- });
18785
- afterAll(() => {
18786
- server.close();
18787
- });
18788
- testFunction({
18789
- calls: () => calls,
18790
- call: (index) => calls[index],
18791
- getStreamController: (id) => controllers[id](),
18792
- get streamController() {
18793
- return controllers[""]();
18794
- }
18795
- });
18796
- });
18797
- }
18798
-
18799
- // src/test/unified-test-server.ts
18800
- var TestServerCall2 = class {
18801
18498
  constructor(request) {
18802
18499
  this.request = request;
18803
18500
  }
@@ -18832,7 +18529,7 @@ function createTestServer(routes) {
18832
18529
  return http.all(url, ({ request }) => {
18833
18530
  var _a4, _b2, _c2;
18834
18531
  const callNumber = calls.length;
18835
- calls.push(new TestServerCall2(request));
18532
+ calls.push(new TestServerCall(request));
18836
18533
  const response = typeof handler.response === "function" ? handler.response({ callNumber }) : Array.isArray(handler.response) ? handler.response[callNumber] : handler.response;
18837
18534
  if (response === void 0) {
18838
18535
  return HttpResponse.json({ error: "Not Found" }, { status: 404 });
@@ -18940,8 +18637,6 @@ var TestResponseController = class {
18940
18637
  };
18941
18638
  // Annotate the CommonJS export names for ESM import in node:
18942
18639
  0 && (module.exports = {
18943
- JsonTestServer,
18944
- StreamingTestServer,
18945
18640
  TestResponseController,
18946
18641
  convertArrayToAsyncIterable,
18947
18642
  convertArrayToReadableStream,
@@ -18949,9 +18644,7 @@ var TestResponseController = class {
18949
18644
  convertReadableStreamToArray,
18950
18645
  convertResponseStreamToArray,
18951
18646
  createTestServer,
18952
- describeWithTestServer,
18953
- mockId,
18954
- withTestServer
18647
+ mockId
18955
18648
  });
18956
18649
  /*! Bundled license information:
18957
18650