@cloudpss/message-stream 0.6.28 → 0.6.30

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/dist/index.d.ts CHANGED
@@ -28,13 +28,13 @@ export type StreamWriteHandler = Tagged<string, 'StreamWriteHandler'>;
28
28
  /**
29
29
  * 消息流,需要使用 {@link StreamToken} 查询
30
30
  */
31
- export interface Stream {
31
+ export interface Stream<T extends StreamType = StreamType> {
32
32
  /** id */
33
33
  readonly id: StreamId;
34
34
  /** token */
35
35
  readonly token: StreamToken;
36
36
  /** 存储流中消息的类型 */
37
- readonly type: StreamType;
37
+ readonly type: T;
38
38
  /** 可选的注释 */
39
39
  readonly comment: string;
40
40
  /** 流的状态 */
@@ -51,9 +51,9 @@ export interface Stream {
51
51
  readonly durability: number;
52
52
  }
53
53
  /** 消息流信息,使用 {@link StreamId} 查询 */
54
- export type StreamInfo = Omit<Stream, 'token' | 'handler'>;
54
+ export type StreamInfo<T extends StreamType = StreamType> = Omit<Stream<T>, 'token' | 'handler'>;
55
55
  /** 创建流需要的数据 */
56
- export type StreamArgs = Simplify<Pick<Stream, 'type'> & Partial<Pick<Stream, 'comment' | 'durability'>>>;
56
+ export type StreamArgs<T extends StreamType = StreamType> = Simplify<Pick<Stream<T>, 'type'> & Partial<Pick<Stream<T>, 'comment' | 'durability'>>>;
57
57
  /** 消息 ID */
58
58
  export type MessageId = Tagged<UUID, 'MessageId'>;
59
59
  /** 原始消息 */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,KAAK,IAAI,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAChD,+CAA+C;AAC/C,eAAO,MAAM,eAAe,EAAe,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAExE;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;AACtD,gDAAgD;AAChD,eAAO,MAAM,kBAAkB,EAAe,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC9E,eAAO,MAAM,UAAU,+BAA+C,CAAC;AACvE;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AACrD;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC3D,iDAAiD;AACjD,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;AAEtE;;GAEG;AACH,MAAM,WAAW,MAAM;IACnB,SAAS;IACT,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;IACtB,YAAY;IACZ,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAE5B,gBAAgB;IAChB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,YAAY;IACZ,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,WAAW;IACX,KAAK,EAAE,WAAW,CAAC;IACnB,iCAAiC;IACjC,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAEnC,WAAW;IACX,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,aAAa;IACb,aAAa,CAAC,EAAE,IAAI,CAAC;IACrB,aAAa;IACb,UAAU,CAAC,EAAE,IAAI,CAAC;IAClB,YAAY;IACZ,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC/B;AAED,mCAAmC;AACnC,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC,CAAC;AAC3D,eAAe;AACf,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AAE1G,YAAY;AACZ,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AAElD,WAAW;AACX,MAAM,WAAW,UAAU;IACvB,YAAY;IACZ,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC;IACvB,aAAa;IACb,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,cAAc;IACd,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;CAC1C;AAED,WAAW;AACX,UAAU,WAAY,SAAQ,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC;IACrD,WAAW;IACX,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,WAAW;IACX,MAAM,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;CACnC;AAED,SAAS;AACT,MAAM,WAAW,OAAO,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,CAAE,SAAQ,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC;IACxF,WAAW;IACX,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;CACjC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/plugin.d.ts CHANGED
@@ -7,17 +7,9 @@ declare class MessageStreamClient {
7
7
  readonly client: HttpClient;
8
8
  constructor(client: HttpClient);
9
9
  /** 创建流 */
10
- create<T extends StreamType>(args: StreamArgs & {
11
- readonly type: T;
12
- }): Promise<Stream & {
13
- readonly type: T;
14
- }>;
10
+ create<T extends StreamType>(args: StreamArgs<T>): Promise<Stream<T>>;
15
11
  /** 批量创建流 */
16
- create<T extends StreamType>(args: ReadonlyArray<StreamArgs & {
17
- readonly type: T;
18
- }>): Promise<Array<Stream & {
19
- readonly type: T;
20
- }>>;
12
+ create<T extends StreamType>(args: ReadonlyArray<StreamArgs<T>>): Promise<Array<Stream<T>>>;
21
13
  /** 冻结流 */
22
14
  freeze(token: StreamToken): Promise<boolean>;
23
15
  /** 删除流 */
@@ -27,17 +19,13 @@ declare class MessageStreamClient {
27
19
  /** 获取流信息 */
28
20
  get(token: StreamToken): Promise<Stream>;
29
21
  /** 读取消息 */
30
- read<T extends StreamType>(stream: {
31
- readonly id: StreamId;
32
- readonly type: T;
33
- }, options?: {
22
+ read<T extends StreamType>(stream: Pick<Stream<T>, 'id' | 'type'>, options?: {
34
23
  from?: Date;
24
+ skip?: number;
25
+ take?: number;
35
26
  }): Observable<Message<T>>;
36
27
  /** 写入消息 */
37
- write<T extends StreamType>(stream: {
38
- readonly token: StreamToken;
39
- readonly type: T;
40
- }, data: ObservableInput<Message<T>['data']>): Promise<void>;
28
+ write<T extends StreamType>(stream: Pick<Stream<T>, 'token' | 'type'>, data: ObservableInput<Message<T>['data']>): Promise<void>;
41
29
  }
42
30
  /**
43
31
  * 添加消息流插件,使得可以通过 `client.stream` 访问消息流相关接口
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAQ,MAAM,MAAM,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG1E,OAAO,KAAK,EACR,OAAO,EACP,UAAU,EACV,MAAM,EACN,UAAU,EACV,QAAQ,EACR,UAAU,EACV,WAAW,EACX,UAAU,EACb,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;AAuBvG,aAAa;AACb,cAAM,mBAAmB;IACT,QAAQ,CAAC,MAAM,EAAE,UAAU;gBAAlB,MAAM,EAAE,UAAU;IAEvC,UAAU;IACJ,MAAM,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG;QAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,GAAG;QAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC;IACnH,YAAY;IACN,MAAM,CAAC,CAAC,SAAS,UAAU,EAC7B,IAAI,EAAE,aAAa,CAAC,UAAU,GAAG;QAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC,GACvD,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG;QAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC,CAAC;IAahD,UAAU;IACJ,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAMlD,UAAU;IACJ,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,YAAY;IACN,IAAI,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IAK7C,YAAY;IACN,GAAG,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAK9C,WAAW;IACX,IAAI,CAAC,CAAC,SAAS,UAAU,EACrB,MAAM,EAAE;QACJ,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;QACtB,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;KACpB,EACD,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,IAAI,CAAA;KAAE,GAC1B,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAkCzB,WAAW;IACL,KAAK,CAAC,CAAC,SAAS,UAAU,EAC5B,MAAM,EAAE;QACJ,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;QAC5B,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;KACpB,EACD,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAC1C,OAAO,CAAC,IAAI,CAAC;CAgEnB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,gBAAgB,CAAC;IAAE,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAA;CAAE,CAAC,CAMhG"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,UAAU,EAAE,KAAK,eAAe,EAAuB,MAAM,MAAM,CAAC;AACpF,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG1E,OAAO,KAAK,EACR,OAAO,EACP,UAAU,EACV,MAAM,EACN,UAAU,EACV,QAAQ,EACR,UAAU,EACV,WAAW,EACX,UAAU,EACb,MAAM,YAAY,CAAC;AAGpB,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;AAuBvG,aAAa;AACb,cAAM,mBAAmB;IACT,QAAQ,CAAC,MAAM,EAAE,UAAU;gBAAlB,MAAM,EAAE,UAAU;IAEvC,UAAU;IACJ,MAAM,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3E,YAAY;IACN,MAAM,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAajG,UAAU;IACJ,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAOlD,UAAU;IACJ,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAK/C,YAAY;IACN,IAAI,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IAK7C,YAAY;IACN,GAAG,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAK9C,WAAW;IACX,IAAI,CAAC,CAAC,SAAS,UAAU,EACrB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,EACtC,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,IAAI,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GACxD,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IA0CzB,WAAW;IACL,KAAK,CAAC,CAAC,SAAS,UAAU,EAC5B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,EACzC,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAC1C,OAAO,CAAC,IAAI,CAAC;CAoEnB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,gBAAgB,CAAC;IAAE,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAA;CAAE,CAAC,CAMhG"}
package/dist/plugin.js CHANGED
@@ -1,6 +1,7 @@
1
- import { Observable, from } from 'rxjs';
1
+ import { EMPTY, Observable, from, lastValueFrom } from 'rxjs';
2
2
  import { connected, disconnected } from '@cloudpss/fetch';
3
3
  import { decode, decodeMany, encodeMany } from '@cloudpss/ubjson';
4
+ import { EMPTY_STREAM_ID, EMPTY_STREAM_TOKEN } from './index.js';
4
5
  /** 解析响应 */
5
6
  function parseStreamInfo(data) {
6
7
  data.createdAt = new Date(data.createdAt);
@@ -40,6 +41,8 @@ class MessageStreamClient {
40
41
  }
41
42
  /** 冻结流 */
42
43
  async freeze(token) {
44
+ if (token === EMPTY_STREAM_TOKEN)
45
+ return false;
43
46
  const result = await this.client.restful(`/streams/token/${token}/freeze`, undefined, { method: 'PUT' });
44
47
  if (result.response.status === 204)
45
48
  return false;
@@ -47,6 +50,8 @@ class MessageStreamClient {
47
50
  }
48
51
  /** 删除流 */
49
52
  async delete(token) {
53
+ if (token === EMPTY_STREAM_TOKEN)
54
+ return;
50
55
  await this.client.restful(`/streams/token/${token}`, undefined, { method: 'DELETE' });
51
56
  }
52
57
  /** 获取流信息 */
@@ -62,9 +67,21 @@ class MessageStreamClient {
62
67
  /** 读取消息 */
63
68
  read(stream, options) {
64
69
  const { id, type } = stream;
65
- const from = options?.from && Number(options.from) ? `?from=${options.from.toISOString()}` : '';
70
+ if (id === EMPTY_STREAM_ID)
71
+ return EMPTY;
72
+ let paramStr = '';
73
+ if (options != null) {
74
+ const params = new URLSearchParams();
75
+ if (options.from)
76
+ params.set('from', options.from.toISOString());
77
+ if (options.skip)
78
+ params.set('skip', String(options.skip));
79
+ if (options.take)
80
+ params.set('take', String(options.take));
81
+ paramStr = `?` + params.toString();
82
+ }
66
83
  return new Observable((subscriber) => {
67
- const ws = this.client.ws(`/streams/id/${id}${from}`);
84
+ const ws = this.client.ws(`/streams/id/${id}${paramStr}`);
68
85
  ws.binaryType = 'arraybuffer';
69
86
  ws.addEventListener('message', (event) => {
70
87
  if (typeof event.data === 'string' || !event.data)
@@ -100,6 +117,10 @@ class MessageStreamClient {
100
117
  /** 写入消息 */
101
118
  async write(stream, data) {
102
119
  const { token, type } = stream;
120
+ if (token === EMPTY_STREAM_TOKEN) {
121
+ await lastValueFrom(from(data), { defaultValue: undefined });
122
+ return;
123
+ }
103
124
  return new Promise((resolve, reject) => {
104
125
  const ws = this.client.ws(`/streams/token/${token}`);
105
126
  let queue = connected(ws).catch((error) => {
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudpss/message-stream",
3
- "version": "0.6.28",
3
+ "version": "0.6.30",
4
4
  "author": "CloudPSS",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -13,13 +13,13 @@
13
13
  },
14
14
  "dependencies": {
15
15
  "rxjs": "^7.8.2",
16
- "type-fest": "^5.5.0",
17
- "@cloudpss/id": "~0.6.28",
18
- "@cloudpss/fetch": "~0.6.28",
19
- "@cloudpss/ubjson": "~0.6.28"
16
+ "type-fest": "^5.6.0",
17
+ "@cloudpss/fetch": "~0.6.30",
18
+ "@cloudpss/id": "~0.6.30",
19
+ "@cloudpss/ubjson": "~0.6.30"
20
20
  },
21
21
  "peerDependencies": {
22
- "@cloudpss/http-client": "~0.6.28"
22
+ "@cloudpss/http-client": "~0.6.30"
23
23
  },
24
24
  "peerDependenciesMeta": {
25
25
  "@cloudpss/http-client": {
@@ -27,7 +27,7 @@
27
27
  }
28
28
  },
29
29
  "devDependencies": {
30
- "@cloudpss/http-client": "~0.6.28"
30
+ "@cloudpss/http-client": "~0.6.30"
31
31
  },
32
32
  "scripts": {
33
33
  "build": "pnpm clean && tsc --build --force",
package/src/index.ts CHANGED
@@ -31,14 +31,14 @@ export type StreamWriteHandler = Tagged<string, 'StreamWriteHandler'>;
31
31
  /**
32
32
  * 消息流,需要使用 {@link StreamToken} 查询
33
33
  */
34
- export interface Stream {
34
+ export interface Stream<T extends StreamType = StreamType> {
35
35
  /** id */
36
36
  readonly id: StreamId;
37
37
  /** token */
38
38
  readonly token: StreamToken;
39
39
 
40
40
  /** 存储流中消息的类型 */
41
- readonly type: StreamType;
41
+ readonly type: T;
42
42
  /** 可选的注释 */
43
43
  readonly comment: string;
44
44
  /** 流的状态 */
@@ -57,9 +57,11 @@ export interface Stream {
57
57
  }
58
58
 
59
59
  /** 消息流信息,使用 {@link StreamId} 查询 */
60
- export type StreamInfo = Omit<Stream, 'token' | 'handler'>;
60
+ export type StreamInfo<T extends StreamType = StreamType> = Omit<Stream<T>, 'token' | 'handler'>;
61
61
  /** 创建流需要的数据 */
62
- export type StreamArgs = Simplify<Pick<Stream, 'type'> & Partial<Pick<Stream, 'comment' | 'durability'>>>;
62
+ export type StreamArgs<T extends StreamType = StreamType> = Simplify<
63
+ Pick<Stream<T>, 'type'> & Partial<Pick<Stream<T>, 'comment' | 'durability'>>
64
+ >;
63
65
 
64
66
  /** 消息 ID */
65
67
  export type MessageId = Tagged<UUID, 'MessageId'>;
package/src/plugin.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { Writable } from 'type-fest';
2
- import { Observable, type ObservableInput, from } from 'rxjs';
2
+ import { EMPTY, Observable, type ObservableInput, from, lastValueFrom } from 'rxjs';
3
3
  import type { HttpClient, HttpClientPlugin } from '@cloudpss/http-client';
4
4
  import { connected, disconnected } from '@cloudpss/fetch';
5
5
  import { decode, decodeMany, encodeMany } from '@cloudpss/ubjson';
@@ -13,6 +13,7 @@ import type {
13
13
  StreamToken,
14
14
  StreamType,
15
15
  } from './index.js';
16
+ import { EMPTY_STREAM_ID, EMPTY_STREAM_TOKEN } from './index.js';
16
17
 
17
18
  export type { Message, RawMessage, Stream, StreamArgs, StreamId, StreamInfo, StreamToken, StreamType };
18
19
 
@@ -42,11 +43,9 @@ class MessageStreamClient {
42
43
  constructor(readonly client: HttpClient) {}
43
44
 
44
45
  /** 创建流 */
45
- async create<T extends StreamType>(args: StreamArgs & { readonly type: T }): Promise<Stream & { readonly type: T }>;
46
+ async create<T extends StreamType>(args: StreamArgs<T>): Promise<Stream<T>>;
46
47
  /** 批量创建流 */
47
- async create<T extends StreamType>(
48
- args: ReadonlyArray<StreamArgs & { readonly type: T }>,
49
- ): Promise<Array<Stream & { readonly type: T }>>;
48
+ async create<T extends StreamType>(args: ReadonlyArray<StreamArgs<T>>): Promise<Array<Stream<T>>>;
50
49
  /** 创建流 */
51
50
  async create(args: StreamArgs | readonly StreamArgs[]): Promise<Stream | Stream[]> {
52
51
  if (Array.isArray(args)) {
@@ -61,6 +60,7 @@ class MessageStreamClient {
61
60
 
62
61
  /** 冻结流 */
63
62
  async freeze(token: StreamToken): Promise<boolean> {
63
+ if (token === EMPTY_STREAM_TOKEN) return false;
64
64
  const result = await this.client.restful(`/streams/token/${token}/freeze`, undefined, { method: 'PUT' });
65
65
  if (result.response.status === 204) return false;
66
66
  return true;
@@ -68,6 +68,7 @@ class MessageStreamClient {
68
68
 
69
69
  /** 删除流 */
70
70
  async delete(token: StreamToken): Promise<void> {
71
+ if (token === EMPTY_STREAM_TOKEN) return;
71
72
  await this.client.restful(`/streams/token/${token}`, undefined, { method: 'DELETE' });
72
73
  }
73
74
 
@@ -85,16 +86,21 @@ class MessageStreamClient {
85
86
 
86
87
  /** 读取消息 */
87
88
  read<T extends StreamType>(
88
- stream: {
89
- readonly id: StreamId;
90
- readonly type: T;
91
- },
92
- options?: { from?: Date },
89
+ stream: Pick<Stream<T>, 'id' | 'type'>,
90
+ options?: { from?: Date; skip?: number; take?: number },
93
91
  ): Observable<Message<T>> {
94
92
  const { id, type } = stream;
95
- const from = options?.from && Number(options.from) ? `?from=${options.from.toISOString()}` : '';
93
+ if (id === EMPTY_STREAM_ID) return EMPTY;
94
+ let paramStr = '';
95
+ if (options != null) {
96
+ const params = new URLSearchParams();
97
+ if (options.from) params.set('from', options.from.toISOString());
98
+ if (options.skip) params.set('skip', String(options.skip));
99
+ if (options.take) params.set('take', String(options.take));
100
+ paramStr = `?` + params.toString();
101
+ }
96
102
  return new Observable<Message<T>>((subscriber) => {
97
- const ws = this.client.ws(`/streams/id/${id}${from}`);
103
+ const ws = this.client.ws(`/streams/id/${id}${paramStr}`);
98
104
  ws.binaryType = 'arraybuffer';
99
105
  ws.addEventListener('message', (event) => {
100
106
  if (typeof event.data === 'string' || !event.data) return;
@@ -126,13 +132,14 @@ class MessageStreamClient {
126
132
 
127
133
  /** 写入消息 */
128
134
  async write<T extends StreamType>(
129
- stream: {
130
- readonly token: StreamToken;
131
- readonly type: T;
132
- },
135
+ stream: Pick<Stream<T>, 'token' | 'type'>,
133
136
  data: ObservableInput<Message<T>['data']>,
134
137
  ): Promise<void> {
135
138
  const { token, type } = stream;
139
+ if (token === EMPTY_STREAM_TOKEN) {
140
+ await lastValueFrom(from(data), { defaultValue: undefined });
141
+ return;
142
+ }
136
143
  return new Promise((resolve, reject) => {
137
144
  const ws = this.client.ws(`/streams/token/${token}`);
138
145
  let queue = connected(ws).catch((error) => {
package/tests/e2e.ts CHANGED
@@ -13,9 +13,9 @@ const source = new Subject();
13
13
 
14
14
  const w = http.stream.write(stream, source);
15
15
  for (const i of Array.from({ length: 5 }).keys()) source.next(new Uint8Array([i]));
16
- source.next(10);
16
+ // source.next(10);
17
17
  for (const i of Array.from({ length: 5 }).keys()) source.next(new Uint8Array([i + 5]));
18
- source.error('xxs');
18
+ // source.error('xxs');
19
19
  source.complete();
20
20
  try {
21
21
  await w;
@@ -25,8 +25,13 @@ try {
25
25
  }
26
26
  await http.stream.freeze(stream.token);
27
27
  console.log(stream);
28
- http.stream.read(stream).subscribe((x) => {
29
- console.log(x.data);
30
- });
31
- await setTimeout(10);
32
- await http.stream.delete(stream.token);
28
+ http.stream
29
+ .read(stream, { skip: 5, take: 2 })
30
+ .subscribe((x) => {
31
+ console.log(x.data);
32
+ })
33
+ .add(() => {
34
+ console.log('read complete');
35
+ void http.stream.delete(stream.token);
36
+ });
37
+ // await setTimeout(10);