@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 +50 -1
- package/README.zh-CN.md +49 -1
- package/dist/eventStreamInterceptor.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.es.js +46 -24
- package/dist/index.umd.js +4 -4
- package/dist/jsonServerSentEventTransformStream.d.ts +14 -0
- package/dist/jsonServerSentEventTransformStream.d.ts.map +1 -0
- package/dist/types.d.ts +11 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
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()`
|
|
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;
|
|
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
package/dist/index.d.ts.map
CHANGED
|
@@ -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
|
|
2
|
-
class
|
|
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
|
|
37
|
+
class E extends TransformStream {
|
|
38
38
|
constructor() {
|
|
39
|
-
super(new
|
|
39
|
+
super(new u());
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
|
-
var
|
|
43
|
-
function
|
|
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
|
|
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(),
|
|
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
|
|
125
|
+
class p extends TransformStream {
|
|
126
126
|
constructor() {
|
|
127
|
-
super(new
|
|
127
|
+
super(new v());
|
|
128
128
|
}
|
|
129
129
|
}
|
|
130
|
-
function
|
|
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
|
|
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 =
|
|
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(
|
|
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
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
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(
|
|
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
|
|
3
|
-
`),id:r.id||"",retry:r.retry}),r.event=f,r.data=[]);return}if(t.startsWith(":"))return;const a=t.indexOf(":");let
|
|
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
|
|
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
|
/**
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;
|
|
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.
|
|
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.
|
|
37
|
+
"@ahoo-wang/fetcher": "0.11.0"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@vitest/coverage-v8": "^3.2.4",
|