openai 4.12.0 → 4.12.2

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.
Files changed (147) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +3 -3
  3. package/_shims/auto/types.d.ts +3 -1
  4. package/_shims/index.d.ts +2 -0
  5. package/_shims/node-runtime.d.ts.map +1 -1
  6. package/_shims/node-runtime.js +2 -0
  7. package/_shims/node-runtime.js.map +1 -1
  8. package/_shims/node-runtime.mjs +2 -0
  9. package/_shims/node-runtime.mjs.map +1 -1
  10. package/_shims/node-types.d.ts +1 -1
  11. package/_shims/registry.d.ts +2 -0
  12. package/_shims/registry.d.ts.map +1 -1
  13. package/_shims/registry.js +3 -1
  14. package/_shims/registry.js.map +1 -1
  15. package/_shims/registry.mjs +2 -0
  16. package/_shims/registry.mjs.map +1 -1
  17. package/_shims/web-runtime.d.ts.map +1 -1
  18. package/_shims/web-runtime.js +8 -0
  19. package/_shims/web-runtime.js.map +1 -1
  20. package/_shims/web-runtime.mjs +8 -0
  21. package/_shims/web-runtime.mjs.map +1 -1
  22. package/_shims/web-types.d.ts +2 -1
  23. package/core.d.ts +1 -1
  24. package/core.d.ts.map +1 -1
  25. package/core.js +28 -14
  26. package/core.js.map +1 -1
  27. package/core.mjs +26 -12
  28. package/core.mjs.map +1 -1
  29. package/error.d.ts.map +1 -1
  30. package/error.js +14 -4
  31. package/error.js.map +1 -1
  32. package/error.mjs +14 -4
  33. package/error.mjs.map +1 -1
  34. package/index.d.mts +48 -45
  35. package/index.d.ts +48 -45
  36. package/index.d.ts.map +1 -1
  37. package/index.js +3 -3
  38. package/index.js.map +1 -1
  39. package/index.mjs +3 -3
  40. package/index.mjs.map +1 -1
  41. package/package.json +3 -2
  42. package/resources/audio/audio.d.ts +4 -4
  43. package/resources/audio/audio.d.ts.map +1 -1
  44. package/resources/audio/transcriptions.d.ts +2 -2
  45. package/resources/audio/transcriptions.d.ts.map +1 -1
  46. package/resources/audio/transcriptions.js +2 -0
  47. package/resources/audio/transcriptions.js.map +1 -1
  48. package/resources/audio/transcriptions.mjs +2 -0
  49. package/resources/audio/transcriptions.mjs.map +1 -1
  50. package/resources/audio/translations.d.ts +2 -2
  51. package/resources/audio/translations.d.ts.map +1 -1
  52. package/resources/audio/translations.js +2 -0
  53. package/resources/audio/translations.js.map +1 -1
  54. package/resources/audio/translations.mjs +2 -0
  55. package/resources/audio/translations.mjs.map +1 -1
  56. package/resources/chat/chat.d.ts +15 -12
  57. package/resources/chat/chat.d.ts.map +1 -1
  58. package/resources/chat/chat.js.map +1 -1
  59. package/resources/chat/chat.mjs.map +1 -1
  60. package/resources/chat/completions.d.ts +15 -12
  61. package/resources/chat/completions.d.ts.map +1 -1
  62. package/resources/chat/completions.js +2 -0
  63. package/resources/chat/completions.js.map +1 -1
  64. package/resources/chat/completions.mjs +2 -0
  65. package/resources/chat/completions.mjs.map +1 -1
  66. package/resources/completions.d.ts +6 -6
  67. package/resources/completions.d.ts.map +1 -1
  68. package/resources/completions.js +2 -0
  69. package/resources/completions.js.map +1 -1
  70. package/resources/completions.mjs +2 -0
  71. package/resources/completions.mjs.map +1 -1
  72. package/resources/edits.d.ts +2 -2
  73. package/resources/edits.d.ts.map +1 -1
  74. package/resources/edits.js +2 -0
  75. package/resources/edits.js.map +1 -1
  76. package/resources/edits.mjs +2 -0
  77. package/resources/edits.mjs.map +1 -1
  78. package/resources/embeddings.d.ts +3 -3
  79. package/resources/embeddings.d.ts.map +1 -1
  80. package/resources/embeddings.js +2 -0
  81. package/resources/embeddings.js.map +1 -1
  82. package/resources/embeddings.mjs +2 -0
  83. package/resources/embeddings.mjs.map +1 -1
  84. package/resources/files.d.ts +4 -4
  85. package/resources/files.d.ts.map +1 -1
  86. package/resources/fine-tunes.d.ts +7 -7
  87. package/resources/fine-tunes.d.ts.map +1 -1
  88. package/resources/fine-tuning/fine-tuning.d.ts +5 -5
  89. package/resources/fine-tuning/fine-tuning.d.ts.map +1 -1
  90. package/resources/fine-tuning/jobs.d.ts +5 -5
  91. package/resources/fine-tuning/jobs.d.ts.map +1 -1
  92. package/resources/images.d.ts +5 -5
  93. package/resources/images.d.ts.map +1 -1
  94. package/resources/images.js +2 -0
  95. package/resources/images.js.map +1 -1
  96. package/resources/images.mjs +2 -0
  97. package/resources/images.mjs.map +1 -1
  98. package/resources/models.d.ts +2 -2
  99. package/resources/models.d.ts.map +1 -1
  100. package/resources/moderations.d.ts +3 -3
  101. package/resources/moderations.d.ts.map +1 -1
  102. package/resources/moderations.js +2 -0
  103. package/resources/moderations.js.map +1 -1
  104. package/resources/moderations.mjs +2 -0
  105. package/resources/moderations.mjs.map +1 -1
  106. package/shims/node.d.ts +1 -1
  107. package/shims/node.d.ts.map +1 -1
  108. package/shims/web.d.ts +1 -1
  109. package/shims/web.d.ts.map +1 -1
  110. package/src/_shims/auto/types.d.ts +3 -1
  111. package/src/_shims/index.d.ts +2 -0
  112. package/src/_shims/node-runtime.ts +2 -0
  113. package/src/_shims/node-types.d.ts +1 -1
  114. package/src/_shims/registry.ts +3 -0
  115. package/src/_shims/web-runtime.ts +12 -0
  116. package/src/_shims/web-types.d.ts +2 -1
  117. package/src/core.ts +29 -10
  118. package/src/error.ts +15 -5
  119. package/src/index.ts +50 -47
  120. package/src/resources/audio/audio.ts +4 -4
  121. package/src/resources/audio/transcriptions.ts +2 -2
  122. package/src/resources/audio/translations.ts +2 -2
  123. package/src/resources/chat/chat.ts +15 -12
  124. package/src/resources/chat/completions.ts +15 -13
  125. package/src/resources/completions.ts +6 -6
  126. package/src/resources/edits.ts +2 -2
  127. package/src/resources/embeddings.ts +3 -3
  128. package/src/resources/files.ts +4 -4
  129. package/src/resources/fine-tunes.ts +7 -7
  130. package/src/resources/fine-tuning/fine-tuning.ts +5 -5
  131. package/src/resources/fine-tuning/jobs.ts +5 -5
  132. package/src/resources/images.ts +5 -5
  133. package/src/resources/models.ts +2 -2
  134. package/src/resources/moderations.ts +3 -3
  135. package/src/shims/node.ts +1 -1
  136. package/src/shims/web.ts +1 -1
  137. package/src/streaming.ts +162 -44
  138. package/src/version.ts +1 -1
  139. package/streaming.d.ts +8 -6
  140. package/streaming.d.ts.map +1 -1
  141. package/streaming.js +157 -46
  142. package/streaming.js.map +1 -1
  143. package/streaming.mjs +157 -46
  144. package/streaming.mjs.map +1 -1
  145. package/version.d.ts +1 -1
  146. package/version.js +1 -1
  147. package/version.mjs +1 -1
package/src/streaming.ts CHANGED
@@ -1,6 +1,8 @@
1
- import { type Response } from './_shims/index';
1
+ import { ReadableStream, type Response } from './_shims/index';
2
2
  import { OpenAIError } from './error';
3
3
 
4
+ import { APIError } from "./error";
5
+
4
6
  type Bytes = string | ArrayBuffer | Uint8Array | Buffer | null | undefined;
5
7
 
6
8
  type ServerSentEvent = {
@@ -12,67 +14,183 @@ type ServerSentEvent = {
12
14
  export class Stream<Item> implements AsyncIterable<Item> {
13
15
  controller: AbortController;
14
16
 
15
- private response: Response;
16
- private decoder: SSEDecoder;
17
-
18
- constructor(response: Response, controller: AbortController) {
19
- this.response = response;
17
+ constructor(private iterator: () => AsyncIterator<Item>, controller: AbortController) {
20
18
  this.controller = controller;
21
- this.decoder = new SSEDecoder();
22
19
  }
23
20
 
24
- private async *iterMessages(): AsyncGenerator<ServerSentEvent, void, unknown> {
25
- if (!this.response.body) {
26
- this.controller.abort();
27
- throw new OpenAIError(`Attempted to iterate over a response with no body`);
28
- }
21
+ static fromSSEResponse<Item>(response: Response, controller: AbortController) {
22
+ let consumed = false;
23
+ const decoder = new SSEDecoder();
29
24
 
30
- const lineDecoder = new LineDecoder();
25
+ async function* iterMessages(): AsyncGenerator<ServerSentEvent, void, unknown> {
26
+ if (!response.body) {
27
+ controller.abort();
28
+ throw new OpenAIError(`Attempted to iterate over a response with no body`);
29
+ }
30
+
31
+ const lineDecoder = new LineDecoder();
31
32
 
32
- const iter = readableStreamAsyncIterable<Bytes>(this.response.body);
33
- for await (const chunk of iter) {
34
- for (const line of lineDecoder.decode(chunk)) {
35
- const sse = this.decoder.decode(line);
33
+ const iter = readableStreamAsyncIterable<Bytes>(response.body);
34
+ for await (const chunk of iter) {
35
+ for (const line of lineDecoder.decode(chunk)) {
36
+ const sse = decoder.decode(line);
37
+ if (sse) yield sse;
38
+ }
39
+ }
40
+
41
+ for (const line of lineDecoder.flush()) {
42
+ const sse = decoder.decode(line);
36
43
  if (sse) yield sse;
37
44
  }
38
45
  }
39
46
 
40
- for (const line of lineDecoder.flush()) {
41
- const sse = this.decoder.decode(line);
42
- if (sse) yield sse;
47
+ async function* iterator(): AsyncIterator<Item, any, undefined> {
48
+ if (consumed) {
49
+ throw new Error('Cannot iterate over a consumed stream, use `.tee()` to split the stream.');
50
+ }
51
+ consumed = true;
52
+ let done = false;
53
+ try {
54
+ for await (const sse of iterMessages()) {
55
+ if (done) continue;
56
+
57
+ if (sse.data.startsWith('[DONE]')) {
58
+ done = true;
59
+ continue;
60
+ }
61
+
62
+ if (sse.event === null) {
63
+ let data;
64
+
65
+ try {
66
+ data = JSON.parse(sse.data);
67
+ } catch (e) {
68
+ console.error(`Could not parse message into JSON:`, sse.data);
69
+ console.error(`From chunk:`, sse.raw);
70
+ throw e;
71
+ }
72
+
73
+ if (data && data.error) {
74
+ throw new APIError(undefined, data.error, undefined, undefined);
75
+ }
76
+
77
+ yield data;
78
+ }
79
+ }
80
+ done = true;
81
+ } catch (e) {
82
+ // If the user calls `stream.controller.abort()`, we should exit without throwing.
83
+ if (e instanceof Error && e.name === 'AbortError') return;
84
+ throw e;
85
+ } finally {
86
+ // If the user `break`s, abort the ongoing request.
87
+ if (!done) controller.abort();
88
+ }
43
89
  }
90
+
91
+ return new Stream(iterator, controller);
44
92
  }
45
93
 
46
- async *[Symbol.asyncIterator](): AsyncIterator<Item, any, undefined> {
47
- let done = false;
48
- try {
49
- for await (const sse of this.iterMessages()) {
50
- if (done) continue;
94
+ // Generates a Stream from a newline-separated ReadableStream where each item
95
+ // is a JSON Value.
96
+ static fromReadableStream<Item>(readableStream: ReadableStream, controller: AbortController) {
97
+ let consumed = false;
51
98
 
52
- if (sse.data.startsWith('[DONE]')) {
53
- done = true;
54
- continue;
99
+ async function* iterLines(): AsyncGenerator<string, void, unknown> {
100
+ const lineDecoder = new LineDecoder();
101
+
102
+ const iter = readableStreamAsyncIterable<Bytes>(readableStream);
103
+ for await (const chunk of iter) {
104
+ for (const line of lineDecoder.decode(chunk)) {
105
+ yield line;
55
106
  }
107
+ }
56
108
 
57
- if (sse.event === null) {
58
- try {
59
- yield JSON.parse(sse.data);
60
- } catch (e) {
61
- console.error(`Could not parse message into JSON:`, sse.data);
62
- console.error(`From chunk:`, sse.raw);
63
- throw e;
64
- }
109
+ for (const line of lineDecoder.flush()) {
110
+ yield line;
111
+ }
112
+ }
113
+
114
+ async function* iterator(): AsyncIterator<Item, any, undefined> {
115
+ if (consumed) {
116
+ throw new Error('Cannot iterate over a consumed stream, use `.tee()` to split the stream.');
117
+ }
118
+ consumed = true;
119
+ let done = false;
120
+ try {
121
+ for await (const line of iterLines()) {
122
+ if (done) continue;
123
+ if (line) yield JSON.parse(line);
65
124
  }
125
+ done = true;
126
+ } catch (e) {
127
+ // If the user calls `stream.controller.abort()`, we should exit without throwing.
128
+ if (e instanceof Error && e.name === 'AbortError') return;
129
+ throw e;
130
+ } finally {
131
+ // If the user `break`s, abort the ongoing request.
132
+ if (!done) controller.abort();
66
133
  }
67
- done = true;
68
- } catch (e) {
69
- // If the user calls `stream.controller.abort()`, we should exit without throwing.
70
- if (e instanceof Error && e.name === 'AbortError') return;
71
- throw e;
72
- } finally {
73
- // If the user `break`s, abort the ongoing request.
74
- if (!done) this.controller.abort();
75
134
  }
135
+
136
+ return new Stream(iterator, controller);
137
+ }
138
+
139
+ [Symbol.asyncIterator](): AsyncIterator<Item> {
140
+ return this.iterator();
141
+ }
142
+
143
+ tee(): [Stream<Item>, Stream<Item>] {
144
+ const left: Array<Promise<IteratorResult<Item>>> = [];
145
+ const right: Array<Promise<IteratorResult<Item>>> = [];
146
+ const iterator = this.iterator();
147
+
148
+ const teeIterator = (queue: Array<Promise<IteratorResult<Item>>>): AsyncIterator<Item> => {
149
+ return {
150
+ next: () => {
151
+ if (queue.length === 0) {
152
+ const result = iterator.next();
153
+ left.push(result);
154
+ right.push(result);
155
+ }
156
+ return queue.shift()!;
157
+ },
158
+ };
159
+ };
160
+
161
+ return [
162
+ new Stream(() => teeIterator(left), this.controller),
163
+ new Stream(() => teeIterator(right), this.controller),
164
+ ];
165
+ }
166
+
167
+ // Converts this stream to a newline-separated ReadableStream of JSON Stringified values in the stream
168
+ // which can be turned back into a Stream with Stream.fromReadableStream.
169
+ toReadableStream(): ReadableStream {
170
+ const self = this;
171
+ let iter: AsyncIterator<Item>;
172
+ const encoder = new TextEncoder();
173
+
174
+ return new ReadableStream({
175
+ async start() {
176
+ iter = self[Symbol.asyncIterator]();
177
+ },
178
+ async pull(ctrl) {
179
+ try {
180
+ const { value, done } = await iter.next();
181
+ if (done) return ctrl.close();
182
+
183
+ const bytes = encoder.encode(JSON.stringify(value) + '\n');
184
+
185
+ ctrl.enqueue(bytes);
186
+ } catch (err) {
187
+ ctrl.error(err);
188
+ }
189
+ },
190
+ async cancel() {
191
+ await iter.return?.();
192
+ },
193
+ });
76
194
  }
77
195
  }
78
196
 
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const VERSION = '4.12.0'; // x-release-please-version
1
+ export const VERSION = '4.12.2'; // x-release-please-version
package/streaming.d.ts CHANGED
@@ -1,11 +1,13 @@
1
1
 
2
- import { type Response } from "./_shims/index.js";
2
+ import { ReadableStream, type Response } from "./_shims/index.js";
3
3
  export declare class Stream<Item> implements AsyncIterable<Item> {
4
+ private iterator;
4
5
  controller: AbortController;
5
- private response;
6
- private decoder;
7
- constructor(response: Response, controller: AbortController);
8
- private iterMessages;
9
- [Symbol.asyncIterator](): AsyncIterator<Item, any, undefined>;
6
+ constructor(iterator: () => AsyncIterator<Item>, controller: AbortController);
7
+ static fromSSEResponse<Item>(response: Response, controller: AbortController): Stream<Item>;
8
+ static fromReadableStream<Item>(readableStream: ReadableStream, controller: AbortController): Stream<Item>;
9
+ [Symbol.asyncIterator](): AsyncIterator<Item>;
10
+ tee(): [Stream<Item>, Stream<Item>];
11
+ toReadableStream(): ReadableStream;
10
12
  }
11
13
  //# sourceMappingURL=streaming.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"streaming.d.ts","sourceRoot":"","sources":["src/streaming.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAW/C,qBAAa,MAAM,CAAC,IAAI,CAAE,YAAW,aAAa,CAAC,IAAI,CAAC;IACtD,UAAU,EAAE,eAAe,CAAC;IAE5B,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,OAAO,CAAa;gBAEhB,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe;YAM5C,YAAY;IAsBpB,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC;CA+BrE"}
1
+ {"version":3,"file":"streaming.d.ts","sourceRoot":"","sources":["src/streaming.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAa/D,qBAAa,MAAM,CAAC,IAAI,CAAE,YAAW,aAAa,CAAC,IAAI,CAAC;IAG1C,OAAO,CAAC,QAAQ;IAF5B,UAAU,EAAE,eAAe,CAAC;gBAER,QAAQ,EAAE,MAAM,aAAa,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,eAAe;IAIpF,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe;IA2E5E,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,eAAe;IA2C3F,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC;IAI7C,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IA0BnC,gBAAgB,IAAI,cAAc;CA0BnC"}
package/streaming.js CHANGED
@@ -1,67 +1,178 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Stream = void 0;
4
+ const index_1 = require("./_shims/index.js");
4
5
  const error_1 = require("./error.js");
6
+ const error_2 = require("openai/error");
5
7
  class Stream {
6
- constructor(response, controller) {
7
- this.response = response;
8
+ constructor(iterator, controller) {
9
+ this.iterator = iterator;
8
10
  this.controller = controller;
9
- this.decoder = new SSEDecoder();
10
11
  }
11
- async *iterMessages() {
12
- if (!this.response.body) {
13
- this.controller.abort();
14
- throw new error_1.OpenAIError(`Attempted to iterate over a response with no body`);
15
- }
16
- const lineDecoder = new LineDecoder();
17
- const iter = readableStreamAsyncIterable(this.response.body);
18
- for await (const chunk of iter) {
19
- for (const line of lineDecoder.decode(chunk)) {
20
- const sse = this.decoder.decode(line);
12
+ static fromSSEResponse(response, controller) {
13
+ let consumed = false;
14
+ const decoder = new SSEDecoder();
15
+ async function* iterMessages() {
16
+ if (!response.body) {
17
+ controller.abort();
18
+ throw new error_1.OpenAIError(`Attempted to iterate over a response with no body`);
19
+ }
20
+ const lineDecoder = new LineDecoder();
21
+ const iter = readableStreamAsyncIterable(response.body);
22
+ for await (const chunk of iter) {
23
+ for (const line of lineDecoder.decode(chunk)) {
24
+ const sse = decoder.decode(line);
25
+ if (sse)
26
+ yield sse;
27
+ }
28
+ }
29
+ for (const line of lineDecoder.flush()) {
30
+ const sse = decoder.decode(line);
21
31
  if (sse)
22
32
  yield sse;
23
33
  }
24
34
  }
25
- for (const line of lineDecoder.flush()) {
26
- const sse = this.decoder.decode(line);
27
- if (sse)
28
- yield sse;
29
- }
30
- }
31
- async *[Symbol.asyncIterator]() {
32
- let done = false;
33
- try {
34
- for await (const sse of this.iterMessages()) {
35
- if (done)
36
- continue;
37
- if (sse.data.startsWith('[DONE]')) {
38
- done = true;
39
- continue;
40
- }
41
- if (sse.event === null) {
42
- try {
43
- yield JSON.parse(sse.data);
35
+ async function* iterator() {
36
+ if (consumed) {
37
+ throw new Error('Cannot iterate over a consumed stream, use `.tee()` to split the stream.');
38
+ }
39
+ consumed = true;
40
+ let done = false;
41
+ try {
42
+ for await (const sse of iterMessages()) {
43
+ if (done)
44
+ continue;
45
+ if (sse.data.startsWith('[DONE]')) {
46
+ done = true;
47
+ continue;
44
48
  }
45
- catch (e) {
46
- console.error(`Could not parse message into JSON:`, sse.data);
47
- console.error(`From chunk:`, sse.raw);
48
- throw e;
49
+ if (sse.event === null) {
50
+ let data;
51
+ try {
52
+ data = JSON.parse(sse.data);
53
+ }
54
+ catch (e) {
55
+ console.error(`Could not parse message into JSON:`, sse.data);
56
+ console.error(`From chunk:`, sse.raw);
57
+ throw e;
58
+ }
59
+ if (data && data.error) {
60
+ throw new error_2.APIError(undefined, data.error, undefined, undefined);
61
+ }
62
+ yield data;
49
63
  }
50
64
  }
65
+ done = true;
66
+ }
67
+ catch (e) {
68
+ // If the user calls `stream.controller.abort()`, we should exit without throwing.
69
+ if (e instanceof Error && e.name === 'AbortError')
70
+ return;
71
+ throw e;
72
+ }
73
+ finally {
74
+ // If the user `break`s, abort the ongoing request.
75
+ if (!done)
76
+ controller.abort();
51
77
  }
52
- done = true;
53
78
  }
54
- catch (e) {
55
- // If the user calls `stream.controller.abort()`, we should exit without throwing.
56
- if (e instanceof Error && e.name === 'AbortError')
57
- return;
58
- throw e;
79
+ return new Stream(iterator, controller);
80
+ }
81
+ // Generates a Stream from a newline-separated ReadableStream where each item
82
+ // is a JSON Value.
83
+ static fromReadableStream(readableStream, controller) {
84
+ let consumed = false;
85
+ async function* iterLines() {
86
+ const lineDecoder = new LineDecoder();
87
+ const iter = readableStreamAsyncIterable(readableStream);
88
+ for await (const chunk of iter) {
89
+ for (const line of lineDecoder.decode(chunk)) {
90
+ yield line;
91
+ }
92
+ }
93
+ for (const line of lineDecoder.flush()) {
94
+ yield line;
95
+ }
59
96
  }
60
- finally {
61
- // If the user `break`s, abort the ongoing request.
62
- if (!done)
63
- this.controller.abort();
97
+ async function* iterator() {
98
+ if (consumed) {
99
+ throw new Error('Cannot iterate over a consumed stream, use `.tee()` to split the stream.');
100
+ }
101
+ consumed = true;
102
+ let done = false;
103
+ try {
104
+ for await (const line of iterLines()) {
105
+ if (done)
106
+ continue;
107
+ if (line)
108
+ yield JSON.parse(line);
109
+ }
110
+ done = true;
111
+ }
112
+ catch (e) {
113
+ // If the user calls `stream.controller.abort()`, we should exit without throwing.
114
+ if (e instanceof Error && e.name === 'AbortError')
115
+ return;
116
+ throw e;
117
+ }
118
+ finally {
119
+ // If the user `break`s, abort the ongoing request.
120
+ if (!done)
121
+ controller.abort();
122
+ }
64
123
  }
124
+ return new Stream(iterator, controller);
125
+ }
126
+ [Symbol.asyncIterator]() {
127
+ return this.iterator();
128
+ }
129
+ tee() {
130
+ const left = [];
131
+ const right = [];
132
+ const iterator = this.iterator();
133
+ const teeIterator = (queue) => {
134
+ return {
135
+ next: () => {
136
+ if (queue.length === 0) {
137
+ const result = iterator.next();
138
+ left.push(result);
139
+ right.push(result);
140
+ }
141
+ return queue.shift();
142
+ },
143
+ };
144
+ };
145
+ return [
146
+ new Stream(() => teeIterator(left), this.controller),
147
+ new Stream(() => teeIterator(right), this.controller),
148
+ ];
149
+ }
150
+ // Converts this stream to a newline-separated ReadableStream of JSON Stringified values in the stream
151
+ // which can be turned back into a Stream with Stream.fromReadableStream.
152
+ toReadableStream() {
153
+ const self = this;
154
+ let iter;
155
+ const encoder = new TextEncoder();
156
+ return new index_1.ReadableStream({
157
+ async start() {
158
+ iter = self[Symbol.asyncIterator]();
159
+ },
160
+ async pull(ctrl) {
161
+ try {
162
+ const { value, done } = await iter.next();
163
+ if (done)
164
+ return ctrl.close();
165
+ const bytes = encoder.encode(JSON.stringify(value) + '\n');
166
+ ctrl.enqueue(bytes);
167
+ }
168
+ catch (err) {
169
+ ctrl.error(err);
170
+ }
171
+ },
172
+ async cancel() {
173
+ await iter.return?.();
174
+ },
175
+ });
65
176
  }
66
177
  }
67
178
  exports.Stream = Stream;
package/streaming.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"streaming.js","sourceRoot":"","sources":["src/streaming.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"streaming.js","sourceRoot":"","sources":["src/streaming.ts"],"names":[],"mappings":";;;AAAA,6CAA+D;AAC/D,sCAAsC;AAEtC,wCAAwC;AAUxC,MAAa,MAAM;IAGjB,YAAoB,QAAmC,EAAE,UAA2B;QAAhE,aAAQ,GAAR,QAAQ,CAA2B;QACrD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,eAAe,CAAO,QAAkB,EAAE,UAA2B;QAC1E,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,MAAM,OAAO,GAAG,IAAI,UAAU,EAAE,CAAC;QAEjC,KAAK,SAAS,CAAC,CAAC,YAAY;YAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;gBAClB,UAAU,CAAC,KAAK,EAAE,CAAC;gBACnB,MAAM,IAAI,mBAAW,CAAC,mDAAmD,CAAC,CAAC;aAC5E;YAED,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;YAEtC,MAAM,IAAI,GAAG,2BAA2B,CAAQ,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC/D,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,EAAE;gBAC9B,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;oBAC5C,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBACjC,IAAI,GAAG;wBAAE,MAAM,GAAG,CAAC;iBACpB;aACF;YAED,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,KAAK,EAAE,EAAE;gBACtC,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACjC,IAAI,GAAG;oBAAE,MAAM,GAAG,CAAC;aACpB;QACH,CAAC;QAED,KAAK,SAAS,CAAC,CAAC,QAAQ;YACtB,IAAI,QAAQ,EAAE;gBACZ,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;aAC7F;YACD,QAAQ,GAAG,IAAI,CAAC;YAChB,IAAI,IAAI,GAAG,KAAK,CAAC;YACjB,IAAI;gBACF,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,YAAY,EAAE,EAAE;oBACtC,IAAI,IAAI;wBAAE,SAAS;oBAEnB,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;wBACjC,IAAI,GAAG,IAAI,CAAC;wBACZ,SAAS;qBACV;oBAED,IAAI,GAAG,CAAC,KAAK,KAAK,IAAI,EAAE;wBACtB,IAAI,IAAI,CAAC;wBAET,IAAI;4BACF,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;yBAC7B;wBAAC,OAAO,CAAC,EAAE;4BACV,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;4BAC9D,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;4BACtC,MAAM,CAAC,CAAC;yBACT;wBAED,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;4BACtB,MAAM,IAAI,gBAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;yBACjE;wBAED,MAAM,IAAI,CAAC;qBACZ;iBACF;gBACD,IAAI,GAAG,IAAI,CAAC;aACb;YAAC,OAAO,CAAC,EAAE;gBACV,kFAAkF;gBAClF,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY;oBAAE,OAAO;gBAC1D,MAAM,CAAC,CAAC;aACT;oBAAS;gBACR,mDAAmD;gBACnD,IAAI,CAAC,IAAI;oBAAE,UAAU,CAAC,KAAK,EAAE,CAAC;aAC/B;QACH,CAAC;QAED,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC1C,CAAC;IAED,6EAA6E;IAC7E,mBAAmB;IACnB,MAAM,CAAC,kBAAkB,CAAO,cAA8B,EAAE,UAA2B;QACzF,IAAI,QAAQ,GAAG,KAAK,CAAC;QAErB,KAAK,SAAS,CAAC,CAAC,SAAS;YACvB,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;YAEtC,MAAM,IAAI,GAAG,2BAA2B,CAAQ,cAAc,CAAC,CAAC;YAChE,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,EAAE;gBAC9B,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;oBAC5C,MAAM,IAAI,CAAC;iBACZ;aACF;YAED,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,KAAK,EAAE,EAAE;gBACtC,MAAM,IAAI,CAAC;aACZ;QACH,CAAC;QAED,KAAK,SAAS,CAAC,CAAC,QAAQ;YACtB,IAAI,QAAQ,EAAE;gBACZ,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;aAC7F;YACD,QAAQ,GAAG,IAAI,CAAC;YAChB,IAAI,IAAI,GAAG,KAAK,CAAC;YACjB,IAAI;gBACF,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,SAAS,EAAE,EAAE;oBACpC,IAAI,IAAI;wBAAE,SAAS;oBACnB,IAAI,IAAI;wBAAE,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;iBAClC;gBACD,IAAI,GAAG,IAAI,CAAC;aACb;YAAC,OAAO,CAAC,EAAE;gBACV,kFAAkF;gBAClF,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY;oBAAE,OAAO;gBAC1D,MAAM,CAAC,CAAC;aACT;oBAAS;gBACR,mDAAmD;gBACnD,IAAI,CAAC,IAAI;oBAAE,UAAU,CAAC,KAAK,EAAE,CAAC;aAC/B;QACH,CAAC;QAED,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC1C,CAAC;IAED,CAAC,MAAM,CAAC,aAAa,CAAC;QACpB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED,GAAG;QACD,MAAM,IAAI,GAAyC,EAAE,CAAC;QACtD,MAAM,KAAK,GAAyC,EAAE,CAAC;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEjC,MAAM,WAAW,GAAG,CAAC,KAA2C,EAAuB,EAAE;YACvF,OAAO;gBACL,IAAI,EAAE,GAAG,EAAE;oBACT,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;wBACtB,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;wBAC/B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBAClB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;qBACpB;oBACD,OAAO,KAAK,CAAC,KAAK,EAAG,CAAC;gBACxB,CAAC;aACF,CAAC;QACJ,CAAC,CAAC;QAEF,OAAO;YACL,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC;YACpD,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC;SACtD,CAAC;IACJ,CAAC;IAED,sGAAsG;IACtG,yEAAyE;IACzE,gBAAgB;QACd,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,IAAyB,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAElC,OAAO,IAAI,sBAAc,CAAC;YACxB,KAAK,CAAC,KAAK;gBACT,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;YACtC,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,IAAI;gBACb,IAAI;oBACF,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC1C,IAAI,IAAI;wBAAE,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;oBAE9B,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;oBAE3D,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;iBACrB;gBAAC,OAAO,GAAG,EAAE;oBACZ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;iBACjB;YACH,CAAC;YACD,KAAK,CAAC,MAAM;gBACV,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACxB,CAAC;SACF,CAAC,CAAC;IACL,CAAC;CACF;AArLD,wBAqLC;AAED,MAAM,UAAU;IAKd;QACE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACvB,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SAC3C;QAED,IAAI,CAAC,IAAI,EAAE;YACT,6DAA6D;YAC7D,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO,IAAI,CAAC;YAElD,MAAM,GAAG,GAAoB;gBAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC1B,GAAG,EAAE,IAAI,CAAC,MAAM;aACjB,CAAC;YAEF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;YAEjB,OAAO,GAAG,CAAC;SACZ;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEvB,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YACxB,OAAO,IAAI,CAAC;SACb;QAED,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAEjD,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YACzB,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;SAC5B;QAED,IAAI,SAAS,KAAK,OAAO,EAAE;YACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;SACpB;aAAM,IAAI,SAAS,KAAK,MAAM,EAAE;YAC/B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACvB;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,WAAW;IASf;QACE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,KAAY;QACjB,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAElC,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;SACzB;QACD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SAC1B;QAED,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,EAAE,CAAC;SACX;QAED,MAAM,eAAe,GAAG,WAAW,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACnF,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAEnD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE;YAC1C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;YAC5B,OAAO,EAAE,CAAC;SACX;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1B,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7D,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;SAClB;QAED,IAAI,CAAC,eAAe,EAAE;YACpB,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;SACnC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,UAAU,CAAC,KAAY;QACrB,IAAI,KAAK,IAAI,IAAI;YAAE,OAAO,EAAE,CAAC;QAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAE5C,QAAQ;QACR,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;YACjC,IAAI,KAAK,YAAY,MAAM,EAAE;gBAC3B,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;aACzB;YACD,IAAI,KAAK,YAAY,UAAU,EAAE;gBAC/B,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;aACtC;YAED,MAAM,IAAI,mBAAW,CACnB,wCAAwC,KAAK,CAAC,WAAW,CAAC,IAAI,mIAAmI,CAClM,CAAC;SACH;QAED,UAAU;QACV,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE;YACtC,IAAI,KAAK,YAAY,UAAU,IAAI,KAAK,YAAY,WAAW,EAAE;gBAC/D,IAAI,CAAC,WAAW,KAAhB,IAAI,CAAC,WAAW,GAAK,IAAI,WAAW,CAAC,MAAM,CAAC,EAAC;gBAC7C,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aACvC;YAED,MAAM,IAAI,mBAAW,CACnB,oDACG,KAAa,CAAC,WAAW,CAAC,IAC7B,gDAAgD,CACjD,CAAC;SACH;QAED,MAAM,IAAI,mBAAW,CACnB,gGAAgG,CACjG,CAAC;IACJ,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAC3C,OAAO,EAAE,CAAC;SACX;QAED,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,OAAO,KAAK,CAAC;IACf,CAAC;;AA/FD,kBAAkB;AACX,yBAAa,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC1G,0BAAc,GAAG,kDAAkD,CAAC;AAgG7E,SAAS,SAAS,CAAC,GAAW,EAAE,SAAiB;IAC/C,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACrC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;QAChB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;KACtF;IAED,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACvB,CAAC;AAED;;;;;GAKG;AACH,SAAS,2BAA2B,CAAI,MAAW;IACjD,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;QAAE,OAAO,MAAM,CAAC;IAEhD,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;IAClC,OAAO;QACL,KAAK,CAAC,IAAI;YACR,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;gBACnC,IAAI,MAAM,EAAE,IAAI;oBAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,0CAA0C;gBAClF,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,CAAC,EAAE;gBACV,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,2CAA2C;gBACjE,MAAM,CAAC,CAAC;aACT;QACH,CAAC;QACD,KAAK,CAAC,MAAM;YACV,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;YACtC,MAAM,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,aAAa,CAAC;YACpB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAC1C,CAAC;QACD,CAAC,MAAM,CAAC,aAAa,CAAC;YACpB,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC;AACJ,CAAC"}