@ahoo-wang/fetcher-eventstream 0.9.9 → 0.11.0

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/README.md CHANGED
@@ -13,7 +13,8 @@ Support for text/event-stream in Fetcher, enabling Server-Sent Events (SSE) func
13
13
  ## 🌟 Features
14
14
 
15
15
  - **📡 Event Stream Conversion**: Converts `text/event-stream` responses to async generators of `ServerSentEvent` objects
16
- - **🔌 Interceptor Integration**: Automatically adds `eventStream()` method to responses with `text/event-stream` content
16
+ - **🔌 Interceptor Integration**: Automatically adds `eventStream()` and `jsonEventStream()` methods to responses with
17
+ `text/event-stream` content
17
18
  type
18
19
  - **📋 SSE Parsing**: Parses Server-Sent Events according to the specification, including data, event, id, and retry
19
20
  fields
@@ -57,6 +58,14 @@ if (response.eventStream) {
57
58
  console.log('Received event:', event);
58
59
  }
59
60
  }
61
+
62
+ // Using the jsonEventStream method for JSON data
63
+ const jsonResponse = await fetcher.get('/json-events');
64
+ if (response.jsonEventStream) {
65
+ for await (const event of response.jsonEventStream<MyDataType>()) {
66
+ console.log('Received JSON event:', event.data);
67
+ }
68
+ }
60
69
  ```
61
70
 
62
71
  ### Manual Conversion
@@ -94,6 +103,46 @@ type.
94
103
  fetcher.interceptors.response.use(new EventStreamInterceptor());
95
104
  ```
96
105
 
106
+ ### toJsonServerSentEventStream
107
+
108
+ Converts a ServerSentEventStream to a JsonServerSentEventStream for consuming server-sent events with JSON data.
109
+
110
+ #### Signature
111
+
112
+ ```typescript
113
+ function toJsonServerSentEventStream<DATA>(
114
+ serverSentEventStream: ServerSentEventStream,
115
+ ): JsonServerSentEventStream<DATA>;
116
+ ```
117
+
118
+ #### Parameters
119
+
120
+ - `serverSentEventStream`: The ServerSentEventStream to convert
121
+
122
+ #### Returns
123
+
124
+ - `JsonServerSentEventStream<DATA>`: A readable stream of ServerSentEvent objects with JSON data
125
+
126
+ ### JsonServerSentEvent
127
+
128
+ Interface defining the structure of a Server-Sent Event with JSON data.
129
+
130
+ ```typescript
131
+ interface JsonServerSentEvent<DATA> extends Omit<ServerSentEvent, 'data'> {
132
+ data: DATA; // Event data as parsed JSON
133
+ }
134
+ ```
135
+
136
+ ### JsonServerSentEventStream
137
+
138
+ Type alias for a readable stream of ServerSentEvent objects with JSON data.
139
+
140
+ ```typescript
141
+ type JsonServerSentEventStream<DATA> = ReadableStream<
142
+ JsonServerSentEvent<DATA>
143
+ >;
144
+ ```
145
+
97
146
  ### toServerSentEventStream
98
147
 
99
148
  Converts a Response object with a `text/event-stream` body to a readable stream of ServerSentEvent objects.
package/README.zh-CN.md CHANGED
@@ -13,7 +13,7 @@
13
13
  ## 🌟 特性
14
14
 
15
15
  - **📡 事件流转换**:将 `text/event-stream` 响应转换为 `ServerSentEvent` 对象的异步生成器
16
- - **🔌 拦截器集成**:自动为 `text/event-stream` 内容类型的响应添加 `eventStream()` 方法
16
+ - **🔌 拦截器集成**:自动为 `text/event-stream` 内容类型的响应添加 `eventStream()` 和 `jsonEventStream()` 方法
17
17
  - **📋 SSE 解析**:根据规范解析服务器发送事件,包括数据、事件、ID 和重试字段
18
18
  - **🔄 流支持**:正确处理分块数据和多行事件
19
19
  - **💬 注释处理**:正确忽略注释行(以 `:` 开头的行)
@@ -55,6 +55,14 @@ if (response.eventStream) {
55
55
  console.log('收到事件:', event);
56
56
  }
57
57
  }
58
+
59
+ // 使用 jsonEventStream 方法处理 JSON 数据
60
+ const jsonResponse = await fetcher.get('/json-events');
61
+ if (response.jsonEventStream) {
62
+ for await (const event of response.jsonEventStream<MyDataType>()) {
63
+ console.log('收到 JSON 事件:', event.data);
64
+ }
65
+ }
58
66
  ```
59
67
 
60
68
  ### 手动转换
@@ -91,6 +99,46 @@ try {
91
99
  fetcher.interceptors.response.use(new EventStreamInterceptor());
92
100
  ```
93
101
 
102
+ ### toJsonServerSentEventStream
103
+
104
+ 将 ServerSentEventStream 转换为 JsonServerSentEventStream,用于处理带有 JSON 数据的服务器发送事件。
105
+
106
+ #### 签名
107
+
108
+ ```typescript
109
+ function toJsonServerSentEventStream<DATA>(
110
+ serverSentEventStream: ServerSentEventStream,
111
+ ): JsonServerSentEventStream<DATA>;
112
+ ```
113
+
114
+ #### 参数
115
+
116
+ - `serverSentEventStream`:要转换的 ServerSentEventStream
117
+
118
+ #### 返回
119
+
120
+ - `JsonServerSentEventStream<DATA>`:带有 JSON 数据的 ServerSentEvent 对象的可读流
121
+
122
+ ### JsonServerSentEvent
123
+
124
+ 定义带有 JSON 数据的服务器发送事件结构的接口。
125
+
126
+ ```typescript
127
+ interface JsonServerSentEvent<DATA> extends Omit<ServerSentEvent, 'data'> {
128
+ data: DATA; // 作为解析 JSON 的事件数据
129
+ }
130
+ ```
131
+
132
+ ### JsonServerSentEventStream
133
+
134
+ 带有 JSON 数据的 ServerSentEvent 对象的可读流的类型别名。
135
+
136
+ ```typescript
137
+ type JsonServerSentEventStream<DATA> = ReadableStream<
138
+ JsonServerSentEvent<DATA>
139
+ >;
140
+ ```
141
+
94
142
  ### toServerSentEventStream
95
143
 
96
144
  将带有 `text/event-stream` 主体的 Response 对象转换为 ServerSentEvent 对象的可读流。
@@ -1 +1 @@
1
- {"version":3,"file":"eventStreamInterceptor.d.ts","sourceRoot":"","sources":["../src/eventStreamInterceptor.ts"],"names":[],"mappings":"AAcA,OAAO,EAGL,aAAa,EACb,mBAAmB,EACpB,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,eAAO,MAAM,6BAA6B,2BAA2B,CAAC;AAEtE;;;GAGG;AACH,eAAO,MAAM,8BAA8B,QAAiC,CAAC;AAE7E;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,sBAAuB,YAAW,mBAAmB;IAChE,QAAQ,CAAC,IAAI,4BAAiC;IAC9C,QAAQ,CAAC,KAAK,SAAkC;IAEhD;;;;;;;;;;;;;;;;;OAiBG;IACH,SAAS,CAAC,QAAQ,EAAE,aAAa;CAWlC"}
1
+ {"version":3,"file":"eventStreamInterceptor.d.ts","sourceRoot":"","sources":["../src/eventStreamInterceptor.ts"],"names":[],"mappings":"AAcA,OAAO,EAGL,aAAa,EACb,mBAAmB,EACpB,MAAM,oBAAoB,CAAC;AAG5B;;GAEG;AACH,eAAO,MAAM,6BAA6B,2BAA2B,CAAC;AAEtE;;;GAGG;AACH,eAAO,MAAM,8BAA8B,QAAiC,CAAC;AAE7E;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,sBAAuB,YAAW,mBAAmB;IAChE,QAAQ,CAAC,IAAI,4BAAiC;IAC9C,QAAQ,CAAC,KAAK,SAAkC;IAEhD;;;;;;;;;;;;;;;;;OAiBG;IACH,SAAS,CAAC,QAAQ,EAAE,aAAa;CAYlC"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from './eventStreamConverter';
2
2
  export * from './eventStreamInterceptor';
3
+ export * from './jsonServerSentEventTransformStream';
3
4
  export * from './serverSentEventTransformStream';
4
5
  export * from './textLineTransformStream';
5
6
  export * from './types';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAaA,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAaA,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sCAAsC,CAAC;AACrD,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,SAAS,CAAC"}
package/dist/index.es.js CHANGED
@@ -1,5 +1,5 @@
1
- import { ContentTypeHeader as c, ContentTypeValues as f } from "@ahoo-wang/fetcher";
2
- class d {
1
+ import { ContentTypeHeader as c, ContentTypeValues as d } from "@ahoo-wang/fetcher";
2
+ class u {
3
3
  constructor() {
4
4
  this.buffer = "";
5
5
  }
@@ -34,13 +34,13 @@ class d {
34
34
  }
35
35
  }
36
36
  }
37
- class u extends TransformStream {
37
+ class E extends TransformStream {
38
38
  constructor() {
39
- super(new d());
39
+ super(new u());
40
40
  }
41
41
  }
42
- var E = /* @__PURE__ */ ((n) => (n.ID = "id", n.RETRY = "retry", n.EVENT = "event", n.DATA = "data", n))(E || {});
43
- function T(n, t, e) {
42
+ var T = /* @__PURE__ */ ((n) => (n.ID = "id", n.RETRY = "retry", n.EVENT = "event", n.DATA = "data", n))(T || {});
43
+ function m(n, t, e) {
44
44
  switch (n) {
45
45
  case "event":
46
46
  e.event = t;
@@ -59,7 +59,7 @@ function T(n, t, e) {
59
59
  }
60
60
  }
61
61
  const a = "message";
62
- class h {
62
+ class v {
63
63
  constructor() {
64
64
  this.currentEvent = {
65
65
  event: a,
@@ -91,7 +91,7 @@ class h {
91
91
  return;
92
92
  const s = t.indexOf(":");
93
93
  let i, o;
94
- s === -1 ? (i = t.toLowerCase(), o = "") : (i = t.substring(0, s).toLowerCase(), o = t.substring(s + 1), o.startsWith(" ") && (o = o.substring(1))), i = i.trim(), o = o.trim(), T(i, o, r);
94
+ s === -1 ? (i = t.toLowerCase(), o = "") : (i = t.substring(0, s).toLowerCase(), o = t.substring(s + 1), o.startsWith(" ") && (o = o.substring(1))), i = i.trim(), o = o.trim(), m(i, o, r);
95
95
  } catch (s) {
96
96
  e.error(
97
97
  s instanceof Error ? s : new Error(String(s))
@@ -122,20 +122,39 @@ class h {
122
122
  }
123
123
  }
124
124
  }
125
- class m extends TransformStream {
125
+ class p extends TransformStream {
126
126
  constructor() {
127
- super(new h());
127
+ super(new v());
128
128
  }
129
129
  }
130
- function p(n) {
130
+ function f(n) {
131
131
  if (!n.body)
132
132
  throw new Error("Response body is null");
133
- return n.body.pipeThrough(new TextDecoderStream("utf-8")).pipeThrough(new u()).pipeThrough(new m());
133
+ return n.body.pipeThrough(new TextDecoderStream("utf-8")).pipeThrough(new E()).pipeThrough(new p());
134
134
  }
135
- const y = "EventStreamInterceptor", v = Number.MAX_SAFE_INTEGER - 1e3;
136
135
  class S {
136
+ transform(t, e) {
137
+ const r = JSON.parse(t.data);
138
+ e.enqueue({
139
+ data: r,
140
+ event: t.event,
141
+ id: t.id,
142
+ retry: t.retry
143
+ });
144
+ }
145
+ }
146
+ class h extends TransformStream {
147
+ constructor() {
148
+ super(new S());
149
+ }
150
+ }
151
+ function y(n) {
152
+ return n.pipeThrough(new h());
153
+ }
154
+ const b = "EventStreamInterceptor", l = Number.MAX_SAFE_INTEGER - 1e3;
155
+ class g {
137
156
  constructor() {
138
- this.name = y, this.order = v;
157
+ this.name = b, this.order = l;
139
158
  }
140
159
  /**
141
160
  * Intercepts responses to add event stream capabilities.
@@ -159,17 +178,20 @@ class S {
159
178
  const e = t.response;
160
179
  if (!e)
161
180
  return;
162
- e.headers.get(c)?.includes(f.TEXT_EVENT_STREAM) && (e.eventStream = () => p(e));
181
+ e.headers.get(c)?.includes(d.TEXT_EVENT_STREAM) && (e.eventStream = () => f(e), e.jsonEventStream = () => y(f(e)));
163
182
  }
164
183
  }
165
184
  export {
166
- y as EVENT_STREAM_INTERCEPTOR_NAME,
167
- v as EVENT_STREAM_INTERCEPTOR_ORDER,
168
- S as EventStreamInterceptor,
169
- E as ServerSentEventField,
170
- m as ServerSentEventTransformStream,
171
- h as ServerSentEventTransformer,
172
- u as TextLineTransformStream,
173
- d as TextLineTransformer,
174
- p as toServerSentEventStream
185
+ b as EVENT_STREAM_INTERCEPTOR_NAME,
186
+ l as EVENT_STREAM_INTERCEPTOR_ORDER,
187
+ g as EventStreamInterceptor,
188
+ S as JsonServerSentEventTransform,
189
+ h as JsonServerSentEventTransformStream,
190
+ T as ServerSentEventField,
191
+ p as ServerSentEventTransformStream,
192
+ v as ServerSentEventTransformer,
193
+ E as TextLineTransformStream,
194
+ u as TextLineTransformer,
195
+ y as toJsonServerSentEventStream,
196
+ f as toServerSentEventStream
175
197
  };
package/dist/index.umd.js CHANGED
@@ -1,4 +1,4 @@
1
- (function(n,i){typeof exports=="object"&&typeof module<"u"?i(exports,require("@ahoo-wang/fetcher")):typeof define=="function"&&define.amd?define(["exports","@ahoo-wang/fetcher"],i):(n=typeof globalThis<"u"?globalThis:n||self,i(n.FetcherEventStream={},n.Fetcher))})(this,(function(n,i){"use strict";class E{constructor(){this.buffer=""}transform(t,e){try{this.buffer+=t;const r=this.buffer.split(`
2
- `);this.buffer=r.pop()||"";for(const a of r)e.enqueue(a)}catch(r){e.error(r)}}flush(t){try{this.buffer&&t.enqueue(this.buffer)}catch(e){t.error(e)}}}class d extends TransformStream{constructor(){super(new E)}}var T=(s=>(s.ID="id",s.RETRY="retry",s.EVENT="event",s.DATA="data",s))(T||{});function y(s,t,e){switch(s){case"event":e.event=t;break;case"data":e.data.push(t);break;case"id":e.id=t;break;case"retry":{const r=parseInt(t,10);isNaN(r)||(e.retry=r);break}}}const f="message";class u{constructor(){this.currentEvent={event:f,id:void 0,retry:void 0,data:[]}}transform(t,e){const r=this.currentEvent;try{if(t.trim()===""){r.data.length>0&&(e.enqueue({event:r.event||f,data:r.data.join(`
3
- `),id:r.id||"",retry:r.retry}),r.event=f,r.data=[]);return}if(t.startsWith(":"))return;const a=t.indexOf(":");let c,o;a===-1?(c=t.toLowerCase(),o=""):(c=t.substring(0,a).toLowerCase(),o=t.substring(a+1),o.startsWith(" ")&&(o=o.substring(1))),c=c.trim(),o=o.trim(),y(c,o,r)}catch(a){e.error(a instanceof Error?a:new Error(String(a))),r.event=f,r.id=void 0,r.retry=void 0,r.data=[]}}flush(t){const e=this.currentEvent;try{e.data.length>0&&t.enqueue({event:e.event||f,data:e.data.join(`
4
- `),id:e.id||"",retry:e.retry})}catch(r){t.error(r instanceof Error?r:new Error(String(r)))}finally{e.event=f,e.id=void 0,e.retry=void 0,e.data=[]}}}class m extends TransformStream{constructor(){super(new u)}}function h(s){if(!s.body)throw new Error("Response body is null");return s.body.pipeThrough(new TextDecoderStream("utf-8")).pipeThrough(new d).pipeThrough(new m)}const v="EventStreamInterceptor",S=Number.MAX_SAFE_INTEGER-1e3;class p{constructor(){this.name=v,this.order=S}intercept(t){const e=t.response;if(!e)return;e.headers.get(i.ContentTypeHeader)?.includes(i.ContentTypeValues.TEXT_EVENT_STREAM)&&(e.eventStream=()=>h(e))}}n.EVENT_STREAM_INTERCEPTOR_NAME=v,n.EVENT_STREAM_INTERCEPTOR_ORDER=S,n.EventStreamInterceptor=p,n.ServerSentEventField=T,n.ServerSentEventTransformStream=m,n.ServerSentEventTransformer=u,n.TextLineTransformStream=d,n.TextLineTransformer=E,n.toServerSentEventStream=h,Object.defineProperty(n,Symbol.toStringTag,{value:"Module"})}));
1
+ (function(s,i){typeof exports=="object"&&typeof module<"u"?i(exports,require("@ahoo-wang/fetcher")):typeof define=="function"&&define.amd?define(["exports","@ahoo-wang/fetcher"],i):(s=typeof globalThis<"u"?globalThis:s||self,i(s.FetcherEventStream={},s.Fetcher))})(this,(function(s,i){"use strict";class d{constructor(){this.buffer=""}transform(t,e){try{this.buffer+=t;const r=this.buffer.split(`
2
+ `);this.buffer=r.pop()||"";for(const a of r)e.enqueue(a)}catch(r){e.error(r)}}flush(t){try{this.buffer&&t.enqueue(this.buffer)}catch(e){t.error(e)}}}class c extends TransformStream{constructor(){super(new d)}}var u=(n=>(n.ID="id",n.RETRY="retry",n.EVENT="event",n.DATA="data",n))(u||{});function b(n,t,e){switch(n){case"event":e.event=t;break;case"data":e.data.push(t);break;case"id":e.id=t;break;case"retry":{const r=parseInt(t,10);isNaN(r)||(e.retry=r);break}}}const f="message";class S{constructor(){this.currentEvent={event:f,id:void 0,retry:void 0,data:[]}}transform(t,e){const r=this.currentEvent;try{if(t.trim()===""){r.data.length>0&&(e.enqueue({event:r.event||f,data:r.data.join(`
3
+ `),id:r.id||"",retry:r.retry}),r.event=f,r.data=[]);return}if(t.startsWith(":"))return;const a=t.indexOf(":");let E,o;a===-1?(E=t.toLowerCase(),o=""):(E=t.substring(0,a).toLowerCase(),o=t.substring(a+1),o.startsWith(" ")&&(o=o.substring(1))),E=E.trim(),o=o.trim(),b(E,o,r)}catch(a){e.error(a instanceof Error?a:new Error(String(a))),r.event=f,r.id=void 0,r.retry=void 0,r.data=[]}}flush(t){const e=this.currentEvent;try{e.data.length>0&&t.enqueue({event:e.event||f,data:e.data.join(`
4
+ `),id:e.id||"",retry:e.retry})}catch(r){t.error(r instanceof Error?r:new Error(String(r)))}finally{e.event=f,e.id=void 0,e.retry=void 0,e.data=[]}}}class m extends TransformStream{constructor(){super(new S)}}function T(n){if(!n.body)throw new Error("Response body is null");return n.body.pipeThrough(new TextDecoderStream("utf-8")).pipeThrough(new c).pipeThrough(new m)}class v{transform(t,e){const r=JSON.parse(t.data);e.enqueue({data:r,event:t.event,id:t.id,retry:t.retry})}}class h extends TransformStream{constructor(){super(new v)}}function y(n){return n.pipeThrough(new h)}const p="EventStreamInterceptor",R=Number.MAX_SAFE_INTEGER-1e3;class l{constructor(){this.name=p,this.order=R}intercept(t){const e=t.response;if(!e)return;e.headers.get(i.ContentTypeHeader)?.includes(i.ContentTypeValues.TEXT_EVENT_STREAM)&&(e.eventStream=()=>T(e),e.jsonEventStream=()=>y(T(e)))}}s.EVENT_STREAM_INTERCEPTOR_NAME=p,s.EVENT_STREAM_INTERCEPTOR_ORDER=R,s.EventStreamInterceptor=l,s.JsonServerSentEventTransform=v,s.JsonServerSentEventTransformStream=h,s.ServerSentEventField=u,s.ServerSentEventTransformStream=m,s.ServerSentEventTransformer=S,s.TextLineTransformStream=c,s.TextLineTransformer=d,s.toJsonServerSentEventStream=y,s.toServerSentEventStream=T,Object.defineProperty(s,Symbol.toStringTag,{value:"Module"})}));
@@ -0,0 +1,14 @@
1
+ import { ServerSentEvent } from './serverSentEventTransformStream';
2
+ import { ServerSentEventStream } from './eventStreamConverter';
3
+ export interface JsonServerSentEvent<DATA> extends Omit<ServerSentEvent, 'data'> {
4
+ data: DATA;
5
+ }
6
+ export declare class JsonServerSentEventTransform<DATA> implements Transformer<ServerSentEvent, JsonServerSentEvent<DATA>> {
7
+ transform(chunk: ServerSentEvent, controller: TransformStreamDefaultController<JsonServerSentEvent<DATA>>): void;
8
+ }
9
+ export declare class JsonServerSentEventTransformStream<DATA> extends TransformStream<ServerSentEvent, JsonServerSentEvent<DATA>> {
10
+ constructor();
11
+ }
12
+ export type JsonServerSentEventStream<DATA> = ReadableStream<JsonServerSentEvent<DATA>>;
13
+ export declare function toJsonServerSentEventStream<DATA>(serverSentEventStream: ServerSentEventStream): JsonServerSentEventStream<DATA>;
14
+ //# sourceMappingURL=jsonServerSentEventTransformStream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonServerSentEventTransformStream.d.ts","sourceRoot":"","sources":["../src/jsonServerSentEventTransformStream.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,MAAM,WAAW,mBAAmB,CAAC,IAAI,CAAE,SAAQ,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC;IAC9E,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,qBAAa,4BAA4B,CAAC,IAAI,CAAE,YAAW,WAAW,CAAC,eAAe,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAChH,SAAS,CACP,KAAK,EAAE,eAAe,EACtB,UAAU,EAAE,gCAAgC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;CAU1E;AAED,qBAAa,kCAAkC,CAAC,IAAI,CAAE,SAAQ,eAAe,CAAC,eAAe,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;;CAIxH;AAED,MAAM,MAAM,yBAAyB,CAAC,IAAI,IAAI,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC;AAExF,wBAAgB,2BAA2B,CAAC,IAAI,EAC9C,qBAAqB,EAAE,qBAAqB,GAC3C,yBAAyB,CAAC,IAAI,CAAC,CAEjC"}
package/dist/types.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { ServerSentEventStream } from './eventStreamConverter';
2
+ import { JsonServerSentEventStream } from './jsonServerSentEventTransformStream';
2
3
  declare global {
3
4
  interface Response {
4
5
  /**
@@ -10,6 +11,16 @@ declare global {
10
11
  * @returns A ReadableStream of ServerSentEvent objects
11
12
  */
12
13
  eventStream?(): ServerSentEventStream;
14
+ /**
15
+ * Returns a JsonServerSentEventStream for consuming server-sent events with JSON data.
16
+ *
17
+ * This method is added to Response objects by the EventStreamInterceptor
18
+ * when the response content type indicates a server-sent event stream.
19
+ *
20
+ * @template DATA - The type of the JSON data in the server-sent events
21
+ * @returns A ReadableStream of ServerSentEvent objects with JSON data
22
+ */
23
+ jsonEventStream?<DATA>(): JsonServerSentEventStream<DATA>;
13
24
  }
14
25
  interface ReadableStream<R = any> {
15
26
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,QAAQ;QAChB;;;;;;;WAOG;QACH,WAAW,CAAC,IAAI,qBAAqB,CAAC;KACvC;IAED,UAAU,cAAc,CAAC,CAAC,GAAG,GAAG;QAC9B;;WAEG;QACH,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;KAC5C;CACF"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AAEjF,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,QAAQ;QAChB;;;;;;;WAOG;QACH,WAAW,CAAC,IAAI,qBAAqB,CAAC;QAEtC;;;;;;;;WAQG;QACH,eAAe,CAAC,CAAC,IAAI,KAAK,yBAAyB,CAAC,IAAI,CAAC,CAAC;KAC3D;IAED,UAAU,cAAc,CAAC,CAAC,GAAG,GAAG;QAC9B;;WAEG;QACH,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;KAC5C;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ahoo-wang/fetcher-eventstream",
3
- "version": "0.9.9",
3
+ "version": "0.11.0",
4
4
  "description": "Server-Sent Events (SSE) support for Fetcher HTTP client",
5
5
  "keywords": [
6
6
  "fetch",
@@ -34,7 +34,7 @@
34
34
  "dist"
35
35
  ],
36
36
  "dependencies": {
37
- "@ahoo-wang/fetcher": "0.9.9"
37
+ "@ahoo-wang/fetcher": "0.11.0"
38
38
  },
39
39
  "devDependencies": {
40
40
  "@vitest/coverage-v8": "^3.2.4",