@netless/forge-rtm 0.1.7 → 0.1.8

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.
@@ -1 +1 @@
1
- {"version":3,"file":"RTM_2_1.d.ts","sourceRoot":"","sources":["../src/RTM_2_1.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAO,MAAM,qBAAqB,CAAC;AAC/E,OAAO,YAAY,MAAM,eAAe,CAAC;AAIzC,OAAO,KAAK,EAAC,SAAS,EAAY,MAAM,WAAW,CAAC;AAIpD,qBAAa,eAAgB,SAAQ,YAAY,CAAC,mBAAmB,CAAE,YAAW,cAAc;IAE5F,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,MAAM,CAAU;IAExB,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,eAAe,CAAkD;IACzE,OAAO,CAAC,cAAc,CAA8B;IAEpD,OAAO,CAAC,UAAU,CAAa;gBAEZ,SAAS,EAAE,SAAS;IAKvC,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,WAAW;IAOnB;;OAEG;IACU,WAAW;IAYX,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgCzD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAUrC,OAAO,CAAC,gBAAgB,CAEtB;IAEF,OAAO,CAAC,YAAY,CAoBnB;IAED,OAAO,CAAC,cAAc,CAYpB;IAEF,OAAO,CAAC,mBAAmB;IAuBpB,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAE,MAAW;IA2B1D,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;CAuBhD"}
1
+ {"version":3,"file":"RTM_2_1.d.ts","sourceRoot":"","sources":["../src/RTM_2_1.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAO,MAAM,qBAAqB,CAAC;AAC/E,OAAO,YAAY,MAAM,eAAe,CAAC;AAIzC,OAAO,KAAK,EAAC,SAAS,EAAY,MAAM,WAAW,CAAC;AAIpD,qBAAa,eAAgB,SAAQ,YAAY,CAAC,mBAAmB,CAAE,YAAW,cAAc;IAE5F,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,MAAM,CAAU;IAExB,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,eAAe,CAAkD;IACzE,OAAO,CAAC,cAAc,CAA8B;IAEpD,OAAO,CAAC,UAAU,CAAa;gBAEZ,SAAS,EAAE,SAAS;IAKvC,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,WAAW;IAOnB;;OAEG;IACU,WAAW;IAYX,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgCzD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAUrC,OAAO,CAAC,gBAAgB,CAUtB;IAEF,OAAO,CAAC,YAAY,CAoBnB;IAED,OAAO,CAAC,cAAc,CAYpB;IAEF,OAAO,CAAC,mBAAmB;IAuBpB,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAE,MAAW;IA2B1D,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;CAuBhD"}
@@ -1 +1 @@
1
- {"version":3,"file":"RTM_2_2.d.ts","sourceRoot":"","sources":["../src/RTM_2_2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAO,MAAM,qBAAqB,CAAC;AAC/E,OAAO,YAAY,MAAM,eAAe,CAAC;AAIzC,OAAO,KAAK,EAAC,SAAS,EAAY,MAAM,WAAW,CAAC;AAGpD,qBAAa,eAAgB,SAAQ,YAAY,CAAC,mBAAmB,CAAE,YAAW,cAAc;IAE5F,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,MAAM,CAAU;IAExB,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,eAAe,CAAkD;IACzE,OAAO,CAAC,cAAc,CAA8B;IAEpD,OAAO,CAAC,UAAU,CAAa;gBAEZ,SAAS,EAAE,SAAS;IAKvC,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,WAAW;IAON,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkCtE;;OAEG;IACU,WAAW;IAYX,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAUrC,OAAO,CAAC,gBAAgB,CAEtB;IAEF,OAAO,CAAC,YAAY,CAqBnB;IAED,OAAO,CAAC,cAAc,CAYpB;IAEF,OAAO,CAAC,mBAAmB;IAuBpB,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAE,MAAW;IA2B1D,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;CAuBhD"}
1
+ {"version":3,"file":"RTM_2_2.d.ts","sourceRoot":"","sources":["../src/RTM_2_2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAO,MAAM,qBAAqB,CAAC;AAC/E,OAAO,YAAY,MAAM,eAAe,CAAC;AAIzC,OAAO,KAAK,EAAC,SAAS,EAAY,MAAM,WAAW,CAAC;AAGpD,qBAAa,eAAgB,SAAQ,YAAY,CAAC,mBAAmB,CAAE,YAAW,cAAc;IAE5F,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,MAAM,CAAU;IAExB,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,eAAe,CAAkD;IACzE,OAAO,CAAC,cAAc,CAA8B;IAEpD,OAAO,CAAC,UAAU,CAAa;gBAEZ,SAAS,EAAE,SAAS;IAKvC,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,WAAW;IAON,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkCtE;;OAEG;IACU,WAAW;IAYX,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAUrC,OAAO,CAAC,gBAAgB,CAUtB;IAEF,OAAO,CAAC,YAAY,CAqBnB;IAED,OAAO,CAAC,cAAc,CAYpB;IAEF,OAAO,CAAC,mBAAmB;IAuBpB,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAE,MAAW;IA2B1D,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;CAuBhD"}
@@ -4,7 +4,8 @@ import EventEmitter from "eventemitter3";
4
4
  import { v4 as uuidv4 } from "uuid";
5
5
 
6
6
  // src/utils.ts
7
- var cyrb53 = (str, seed = 0) => {
7
+ var cyrb53 = function(str) {
8
+ let seed = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
8
9
  let h1 = 3735928559 ^ seed, h2 = 1103547991 ^ seed;
9
10
  for (let i = 0, ch; i < str.length; i++) {
10
11
  ch = str.charCodeAt(i);
@@ -19,6 +20,23 @@ var cyrb53 = (str, seed = 0) => {
19
20
  };
20
21
 
21
22
  // src/ChunkedUpdateMessage.ts
23
+ function _defineProperty(e, r, t) {
24
+ return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e;
25
+ }
26
+ function _toPropertyKey(t) {
27
+ var i = _toPrimitive(t, "string");
28
+ return "symbol" == typeof i ? i : i + "";
29
+ }
30
+ function _toPrimitive(t, r) {
31
+ if ("object" != typeof t || !t) return t;
32
+ var e = t[Symbol.toPrimitive];
33
+ if (void 0 !== e) {
34
+ var i = e.call(t, r || "default");
35
+ if ("object" != typeof i) return i;
36
+ throw new TypeError("@@toPrimitive must return a primitive value.");
37
+ }
38
+ return ("string" === r ? String : Number)(t);
39
+ }
22
40
  var ChunkedUpdateMessage = class _ChunkedUpdateMessage {
23
41
  static fromObject(obj, target, customType) {
24
42
  const msg = new _ChunkedUpdateMessage();
@@ -31,9 +49,7 @@ var ChunkedUpdateMessage = class _ChunkedUpdateMessage {
31
49
  msg.header.setUint32(4, sessionBuf.length, false);
32
50
  msg.header.setUint8(8, obj.index);
33
51
  msg.header.setUint8(9, obj.length);
34
- msg.buffer = new Uint8Array(
35
- obj.buf.length + sessionBuf.length + msg.header.buffer.byteLength
36
- );
52
+ msg.buffer = new Uint8Array(obj.buf.length + sessionBuf.length + msg.header.buffer.byteLength);
37
53
  let len = 0;
38
54
  msg.buffer.set(new Uint8Array(msg.header.buffer), len);
39
55
  len += msg.header.buffer.byteLength;
@@ -50,10 +66,6 @@ var ChunkedUpdateMessage = class _ChunkedUpdateMessage {
50
66
  msg.customType = customType;
51
67
  return msg;
52
68
  }
53
- target;
54
- customType;
55
- buffer;
56
- header;
57
69
  get buf() {
58
70
  const len = this.header.getInt32(0);
59
71
  return this.buffer.slice(0, len);
@@ -71,20 +83,85 @@ var ChunkedUpdateMessage = class _ChunkedUpdateMessage {
71
83
  return textDecoder.decode(sessionBuf);
72
84
  }
73
85
  constructor() {
86
+ _defineProperty(this, "target", void 0);
87
+ _defineProperty(this, "customType", void 0);
88
+ _defineProperty(this, "buffer", void 0);
89
+ _defineProperty(this, "header", void 0);
74
90
  }
75
91
  };
76
92
 
77
93
  // src/RTM_2_1.ts
94
+ function _defineProperty2(e, r, t) {
95
+ return (r = _toPropertyKey2(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e;
96
+ }
97
+ function _toPropertyKey2(t) {
98
+ var i = _toPrimitive2(t, "string");
99
+ return "symbol" == typeof i ? i : i + "";
100
+ }
101
+ function _toPrimitive2(t, r) {
102
+ if ("object" != typeof t || !t) return t;
103
+ var e = t[Symbol.toPrimitive];
104
+ if (void 0 !== e) {
105
+ var i = e.call(t, r || "default");
106
+ if ("object" != typeof i) return i;
107
+ throw new TypeError("@@toPrimitive must return a primitive value.");
108
+ }
109
+ return ("string" === r ? String : Number)(t);
110
+ }
78
111
  var RTMProvider_2_1 = class extends EventEmitter {
79
- rtmClient;
80
- roomId;
81
- userId;
82
- reconnectTimeout = null;
83
- chunkedMessages = /* @__PURE__ */ new Map();
84
- cachedMessages = [];
85
- intervalId = null;
86
112
  constructor(rtmClient) {
87
113
  super();
114
+ _defineProperty2(this, "rtmClient", void 0);
115
+ _defineProperty2(this, "roomId", void 0);
116
+ _defineProperty2(this, "userId", void 0);
117
+ _defineProperty2(this, "reconnectTimeout", null);
118
+ _defineProperty2(this, "chunkedMessages", /* @__PURE__ */ new Map());
119
+ _defineProperty2(this, "cachedMessages", []);
120
+ _defineProperty2(this, "intervalId", null);
121
+ _defineProperty2(this, "handleRtmMessage", (evt) => {
122
+ if (!(evt.message instanceof Uint8Array)) {
123
+ log(`rtm message not Uint8Array`, {
124
+ channel: evt.channelName,
125
+ publisher: evt.publisher,
126
+ message: evt.message
127
+ });
128
+ return;
129
+ }
130
+ this.receiveChunkMessage(ChunkedUpdateMessage.fromBuffer(evt.message, "", evt.customType), evt.publisher);
131
+ });
132
+ _defineProperty2(this, "handleStatus", (connectionStatus) => {
133
+ log(`rtm status update`, {
134
+ state: connectionStatus.state,
135
+ reason: connectionStatus.reason
136
+ });
137
+ if (connectionStatus.state === "RECONNECTING" && this.reconnectTimeout === null) {
138
+ this.reconnectTimeout = window.setTimeout(() => {
139
+ this.emit("error", `reconnecting timeout`);
140
+ this.emit("connectionStatusChange", "DISCONNECTED");
141
+ }, 30 * 1e3);
142
+ } else if (connectionStatus.state === "CONNECTED") {
143
+ window.clearTimeout(this.reconnectTimeout);
144
+ this.emit("connectionStatusChange", "CONNECTED");
145
+ } else if (connectionStatus.state === "FAILED") {
146
+ window.clearTimeout(this.reconnectTimeout);
147
+ this.emit("error", `rtm connection failed, ${connectionStatus.reason}`);
148
+ this.emit("connectionStatusChange", "DISCONNECTED");
149
+ } else if (connectionStatus.state === "CONNECTING") {
150
+ this.emit("connectionStatusChange", "CONNECTING");
151
+ }
152
+ });
153
+ _defineProperty2(this, "handlePresence", (evt) => {
154
+ if (evt.channelName === this.roomChannel()) {
155
+ if (evt.eventType === "REMOTE_JOIN") {
156
+ this.emit("userJoin", evt.publisher);
157
+ } else if (evt.eventType === "REMOTE_LEAVE") {
158
+ this.emit("userLeave", evt.publisher);
159
+ } else if (evt.eventType === "REMOTE_TIMEOUT") {
160
+ this.emit("userLeave", evt.publisher);
161
+ } else if (evt.eventType === "INTERVAL") {
162
+ }
163
+ }
164
+ });
88
165
  this.rtmClient = rtmClient;
89
166
  }
90
167
  roomChannel() {
@@ -130,7 +207,9 @@ var RTMProvider_2_1 = class extends EventEmitter {
130
207
  const msg = this.cachedMessages.shift();
131
208
  if (msg) {
132
209
  const channel = msg.target ? this.userChannel(msg.target) : this.roomChannel();
133
- this.rtmClient.publish(channel, msg.buffer, { customType: msg.customType }).catch((error) => {
210
+ this.rtmClient.publish(channel, msg.buffer, {
211
+ customType: msg.customType
212
+ }).catch((error) => {
134
213
  log(`rtm publish failed`, {
135
214
  channel,
136
215
  code: error.code
@@ -148,42 +227,6 @@ var RTMProvider_2_1 = class extends EventEmitter {
148
227
  await this.rtmClient.unsubscribe(this.userChannel(this.userId));
149
228
  window.clearInterval(this.intervalId);
150
229
  }
151
- handleRtmMessage = (evt) => {
152
- this.receiveChunkMessage(ChunkedUpdateMessage.fromBuffer(evt.message, "", evt.customType), evt.publisher);
153
- };
154
- handleStatus = (connectionStatus) => {
155
- log(`rtm status update`, {
156
- state: connectionStatus.state,
157
- reason: connectionStatus.reason
158
- });
159
- if (connectionStatus.state === "RECONNECTING" && this.reconnectTimeout === null) {
160
- this.reconnectTimeout = window.setTimeout(() => {
161
- this.emit("error", `reconnecting timeout`);
162
- this.emit("connectionStatusChange", "DISCONNECTED");
163
- }, 30 * 1e3);
164
- } else if (connectionStatus.state === "CONNECTED") {
165
- window.clearTimeout(this.reconnectTimeout);
166
- this.emit("connectionStatusChange", "CONNECTED");
167
- } else if (connectionStatus.state === "FAILED") {
168
- window.clearTimeout(this.reconnectTimeout);
169
- this.emit("error", `rtm connection failed, ${connectionStatus.reason}`);
170
- this.emit("connectionStatusChange", "DISCONNECTED");
171
- } else if (connectionStatus.state === "CONNECTING") {
172
- this.emit("connectionStatusChange", "CONNECTING");
173
- }
174
- };
175
- handlePresence = (evt) => {
176
- if (evt.channelName === this.roomChannel()) {
177
- if (evt.eventType === "REMOTE_JOIN") {
178
- this.emit("userJoin", evt.publisher);
179
- } else if (evt.eventType === "REMOTE_LEAVE") {
180
- this.emit("userLeave", evt.publisher);
181
- } else if (evt.eventType === "REMOTE_TIMEOUT") {
182
- this.emit("userLeave", evt.publisher);
183
- } else if (evt.eventType === "INTERVAL") {
184
- }
185
- }
186
- };
187
230
  receiveChunkMessage(msg, publisher) {
188
231
  if (msg.length === 1) {
189
232
  this.emit("message", msg.buf, publisher, msg.customType);
@@ -205,7 +248,8 @@ var RTMProvider_2_1 = class extends EventEmitter {
205
248
  this.chunkedMessages.set(msg.session, chunks);
206
249
  }
207
250
  }
208
- publish(buf, customType, target = "") {
251
+ publish(buf, customType) {
252
+ let target = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "";
209
253
  const session = uuidv4();
210
254
  const size = buf.length * Uint8Array.BYTES_PER_ELEMENT / 1024;
211
255
  if (size < 16) {
@@ -237,7 +281,9 @@ var RTMProvider_2_1 = class extends EventEmitter {
237
281
  });
238
282
  var nextPage = result.nextPage;
239
283
  result.occupants.forEach((userInfo) => {
240
- const { userId } = userInfo;
284
+ const {
285
+ userId
286
+ } = userInfo;
241
287
  output.add(userId);
242
288
  });
243
289
  while (nextPage) {
@@ -247,7 +293,9 @@ var RTMProvider_2_1 = class extends EventEmitter {
247
293
  });
248
294
  nextPage = result2.nextPage;
249
295
  result2.occupants.forEach((userInfo) => {
250
- const { userId } = userInfo;
296
+ const {
297
+ userId
298
+ } = userInfo;
251
299
  output.add(userId);
252
300
  });
253
301
  }
@@ -259,16 +307,78 @@ var RTMProvider_2_1 = class extends EventEmitter {
259
307
  import { log as log2 } from "@netless/forge-room";
260
308
  import EventEmitter2 from "eventemitter3";
261
309
  import { v4 as uuidv42 } from "uuid";
310
+ function _defineProperty3(e, r, t) {
311
+ return (r = _toPropertyKey3(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e;
312
+ }
313
+ function _toPropertyKey3(t) {
314
+ var i = _toPrimitive3(t, "string");
315
+ return "symbol" == typeof i ? i : i + "";
316
+ }
317
+ function _toPrimitive3(t, r) {
318
+ if ("object" != typeof t || !t) return t;
319
+ var e = t[Symbol.toPrimitive];
320
+ if (void 0 !== e) {
321
+ var i = e.call(t, r || "default");
322
+ if ("object" != typeof i) return i;
323
+ throw new TypeError("@@toPrimitive must return a primitive value.");
324
+ }
325
+ return ("string" === r ? String : Number)(t);
326
+ }
262
327
  var RTMProvider_2_2 = class extends EventEmitter2 {
263
- rtmClient;
264
- roomId;
265
- userId;
266
- reconnectTimeout = null;
267
- chunkedMessages = /* @__PURE__ */ new Map();
268
- cachedMessages = [];
269
- intervalId = null;
270
328
  constructor(rtmClient) {
271
329
  super();
330
+ _defineProperty3(this, "rtmClient", void 0);
331
+ _defineProperty3(this, "roomId", void 0);
332
+ _defineProperty3(this, "userId", void 0);
333
+ _defineProperty3(this, "reconnectTimeout", null);
334
+ _defineProperty3(this, "chunkedMessages", /* @__PURE__ */ new Map());
335
+ _defineProperty3(this, "cachedMessages", []);
336
+ _defineProperty3(this, "intervalId", null);
337
+ _defineProperty3(this, "handleRtmMessage", (evt) => {
338
+ if (!(evt.message instanceof Uint8Array)) {
339
+ log2(`rtm message not Uint8Array`, {
340
+ channel: evt.channelName,
341
+ publisher: evt.publisher,
342
+ message: evt.message
343
+ });
344
+ return;
345
+ }
346
+ this.receiveChunkMessage(ChunkedUpdateMessage.fromBuffer(evt.message, "", evt.customType), evt.publisher);
347
+ });
348
+ _defineProperty3(this, "handleStatus", (connectionStatus) => {
349
+ log2(`rtm status update`, {
350
+ state: connectionStatus.state,
351
+ reason: connectionStatus.reason,
352
+ rtm: "2.2"
353
+ });
354
+ if (connectionStatus.state === "RECONNECTING" && this.reconnectTimeout === null) {
355
+ this.reconnectTimeout = window.setTimeout(() => {
356
+ this.emit("error", `reconnecting timeout`);
357
+ this.emit("connectionStatusChange", "DISCONNECTED");
358
+ }, 30 * 1e3);
359
+ } else if (connectionStatus.state === "CONNECTED") {
360
+ window.clearTimeout(this.reconnectTimeout);
361
+ this.emit("connectionStatusChange", "CONNECTED");
362
+ } else if (connectionStatus.state === "FAILED") {
363
+ window.clearTimeout(this.reconnectTimeout);
364
+ this.emit("error", `rtm connection failed, ${connectionStatus.reason}`);
365
+ this.emit("connectionStatusChange", "DISCONNECTED");
366
+ } else if (connectionStatus.state === "CONNECTING") {
367
+ this.emit("connectionStatusChange", "CONNECTING");
368
+ }
369
+ });
370
+ _defineProperty3(this, "handlePresence", (evt) => {
371
+ if (evt.channelName === this.roomChannel()) {
372
+ if (evt.eventType === "REMOTE_JOIN") {
373
+ this.emit("userJoin", evt.publisher);
374
+ } else if (evt.eventType === "REMOTE_LEAVE") {
375
+ this.emit("userLeave", evt.publisher);
376
+ } else if (evt.eventType === "REMOTE_TIMEOUT") {
377
+ this.emit("userLeave", evt.publisher);
378
+ } else if (evt.eventType === "INTERVAL") {
379
+ }
380
+ }
381
+ });
272
382
  this.rtmClient = rtmClient;
273
383
  }
274
384
  roomChannel() {
@@ -301,7 +411,9 @@ var RTMProvider_2_2 = class extends EventEmitter2 {
301
411
  const msg = this.cachedMessages.shift();
302
412
  if (msg) {
303
413
  const channel = msg.target ? this.userChannel(msg.target) : this.roomChannel();
304
- this.rtmClient.publish(channel, msg.buffer, { customType: msg.customType }).catch((error) => {
414
+ this.rtmClient.publish(channel, msg.buffer, {
415
+ customType: msg.customType
416
+ }).catch((error) => {
305
417
  log2(`rtm publish failed`, {
306
418
  channel,
307
419
  code: error.code,
@@ -334,43 +446,6 @@ var RTMProvider_2_2 = class extends EventEmitter2 {
334
446
  await this.rtmClient.unsubscribe(this.userChannel(this.userId));
335
447
  window.clearInterval(this.intervalId);
336
448
  }
337
- handleRtmMessage = (evt) => {
338
- this.receiveChunkMessage(ChunkedUpdateMessage.fromBuffer(evt.message, "", evt.customType), evt.publisher);
339
- };
340
- handleStatus = (connectionStatus) => {
341
- log2(`rtm status update`, {
342
- state: connectionStatus.state,
343
- reason: connectionStatus.reason,
344
- rtm: "2.2"
345
- });
346
- if (connectionStatus.state === "RECONNECTING" && this.reconnectTimeout === null) {
347
- this.reconnectTimeout = window.setTimeout(() => {
348
- this.emit("error", `reconnecting timeout`);
349
- this.emit("connectionStatusChange", "DISCONNECTED");
350
- }, 30 * 1e3);
351
- } else if (connectionStatus.state === "CONNECTED") {
352
- window.clearTimeout(this.reconnectTimeout);
353
- this.emit("connectionStatusChange", "CONNECTED");
354
- } else if (connectionStatus.state === "FAILED") {
355
- window.clearTimeout(this.reconnectTimeout);
356
- this.emit("error", `rtm connection failed, ${connectionStatus.reason}`);
357
- this.emit("connectionStatusChange", "DISCONNECTED");
358
- } else if (connectionStatus.state === "CONNECTING") {
359
- this.emit("connectionStatusChange", "CONNECTING");
360
- }
361
- };
362
- handlePresence = (evt) => {
363
- if (evt.channelName === this.roomChannel()) {
364
- if (evt.eventType === "REMOTE_JOIN") {
365
- this.emit("userJoin", evt.publisher);
366
- } else if (evt.eventType === "REMOTE_LEAVE") {
367
- this.emit("userLeave", evt.publisher);
368
- } else if (evt.eventType === "REMOTE_TIMEOUT") {
369
- this.emit("userLeave", evt.publisher);
370
- } else if (evt.eventType === "INTERVAL") {
371
- }
372
- }
373
- };
374
449
  receiveChunkMessage(msg, publisher) {
375
450
  if (msg.length === 1) {
376
451
  this.emit("message", msg.buf, publisher, msg.customType);
@@ -392,7 +467,8 @@ var RTMProvider_2_2 = class extends EventEmitter2 {
392
467
  this.chunkedMessages.set(msg.session, chunks);
393
468
  }
394
469
  }
395
- publish(buf, customType, target = "") {
470
+ publish(buf, customType) {
471
+ let target = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "";
396
472
  const session = uuidv42();
397
473
  const size = buf.length * Uint8Array.BYTES_PER_ELEMENT / 1024;
398
474
  if (size < 16) {
@@ -424,7 +500,9 @@ var RTMProvider_2_2 = class extends EventEmitter2 {
424
500
  });
425
501
  var nextPage = result.nextPage;
426
502
  result.occupants.forEach((userInfo) => {
427
- const { userId } = userInfo;
503
+ const {
504
+ userId
505
+ } = userInfo;
428
506
  output.add(userId);
429
507
  });
430
508
  while (nextPage) {
@@ -434,7 +512,9 @@ var RTMProvider_2_2 = class extends EventEmitter2 {
434
512
  });
435
513
  nextPage = result2.nextPage;
436
514
  result2.occupants.forEach((userInfo) => {
437
- const { userId } = userInfo;
515
+ const {
516
+ userId
517
+ } = userInfo;
438
518
  output.add(userId);
439
519
  });
440
520
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/RTM_2_1.ts", "../src/utils.ts", "../src/ChunkedUpdateMessage.ts", "../src/RTM_2_2.ts"],
4
- "sourcesContent": ["import { SocketProvider, SocketProviderEvent, log } from \"@netless/forge-room\";\nimport EventEmitter from \"eventemitter3\";\nimport {v4 as uuidv4} from \"uuid\";\nimport {cyrb53} from \"./utils\";\n\nimport type {RTMClient, RTMEvents} from \"agora-rtm\";\n\nimport {ChunkedUpdateMessage} from \"./ChunkedUpdateMessage\";\n\nexport class RTMProvider_2_1 extends EventEmitter<SocketProviderEvent> implements SocketProvider {\n\n private rtmClient!: RTMClient;\n private roomId!: string;\n private userId!: string;\n\n private reconnectTimeout: any = null;\n private chunkedMessages: Map<string, ChunkedUpdateMessage[]> = new Map();\n private cachedMessages: ChunkedUpdateMessage[] = [];\n\n private intervalId: any = null;\n\n public constructor(rtmClient: RTMClient) {\n super();\n this.rtmClient = rtmClient;\n }\n\n private roomChannel(): string {\n return `r_${this.roomId}`;\n }\n\n private userChannel(userId: string): string {\n if (userId.length > 16) {\n userId = `${cyrb53(userId)}`;\n }\n return `${this.roomChannel()}_u_${userId}`;\n }\n\n /**\n * \u91CD\u65B0\u8BA2\u9605\u9891\u9053\n */\n public async resubscribe() {\n try {\n await this.rtmClient.subscribe(this.roomChannel());\n await this.rtmClient.subscribe(this.userChannel(this.userId));\n } catch(error: any) {\n this.emit(\"error\", `rtm subscribe fail, ${error}`);\n log(`rtm subscribe fail`, {\n error: error.toString(),\n }, \"error\");\n }\n }\n\n public async initialize(roomId: string, userId: string): Promise<void> {\n window.clearInterval(this.intervalId);\n this.roomId = roomId;\n this.userId = userId;\n this.rtmClient.addEventListener(\"message\", this.handleRtmMessage);\n this.rtmClient.addEventListener(\"presence\", this.handlePresence);\n // @ts-ignore\n this.rtmClient.addEventListener(\"status\", this.handleStatus);\n try {\n await this.rtmClient.subscribe(this.roomChannel());\n await this.rtmClient.subscribe(this.userChannel(this.userId));\n } catch(error: any) {\n this.emit(\"error\", `rtm subscribe fail, ${error}`);\n log(`rtm subscribe fail`, {\n error: error.toString(),\n }, \"error\");\n }\n this.intervalId = setInterval(() => {\n const msg = this.cachedMessages.shift();\n if (msg) {\n const channel = msg.target ? this.userChannel(msg.target) : this.roomChannel();\n this.rtmClient.publish(channel, msg.buffer, { customType: msg.customType }).catch(error => {\n log(`rtm publish failed`, {\n channel,\n code: error.code\n }, \"warning\");\n this.emit(\"error\", `rtm publish fail, ${error}`);\n });\n }\n }, 32);\n }\n\n public async dispose(): Promise<void> {\n this.rtmClient.removeEventListener(\"message\", this.handleRtmMessage);\n this.rtmClient.removeEventListener(\"presence\", this.handlePresence);\n // @ts-ignore\n this.rtmClient.removeEventListener(\"status\", this.handleStatus);\n await this.rtmClient.unsubscribe(this.roomChannel());\n await this.rtmClient.unsubscribe(this.userChannel(this.userId));\n window.clearInterval(this.intervalId);\n }\n\n private handleRtmMessage = (evt: RTMEvents.MessageEvent) => {\n this.receiveChunkMessage(ChunkedUpdateMessage.fromBuffer(evt.message as Uint8Array, \"\", evt.customType), evt.publisher);\n };\n\n private handleStatus = (connectionStatus: RTMEvents.RTMConnectionStatusChangeEvent) => {\n log(`rtm status update`, {\n state: connectionStatus.state,\n reason: connectionStatus.reason\n });\n if (connectionStatus.state === \"RECONNECTING\" && this.reconnectTimeout === null) {\n this.reconnectTimeout = window.setTimeout(() => {\n this.emit(\"error\", `reconnecting timeout`);\n this.emit(\"connectionStatusChange\", \"DISCONNECTED\");\n }, 30 * 1000);\n } else if (connectionStatus.state === \"CONNECTED\") {\n window.clearTimeout(this.reconnectTimeout);\n this.emit(\"connectionStatusChange\", \"CONNECTED\");\n } else if (connectionStatus.state === \"FAILED\") {\n window.clearTimeout(this.reconnectTimeout);\n this.emit(\"error\", `rtm connection failed, ${connectionStatus.reason}`);\n this.emit(\"connectionStatusChange\", \"DISCONNECTED\");\n } else if (connectionStatus.state === \"CONNECTING\") {\n this.emit(\"connectionStatusChange\", \"CONNECTING\");\n }\n }\n\n private handlePresence = (evt: RTMEvents.PresenceEvent) => {\n if (evt.channelName === this.roomChannel()) {\n if (evt.eventType === \"REMOTE_JOIN\") {\n this.emit(\"userJoin\", evt.publisher);\n } else if (evt.eventType === \"REMOTE_LEAVE\") {\n this.emit(\"userLeave\", evt.publisher);\n } else if (evt.eventType === \"REMOTE_TIMEOUT\") {\n this.emit(\"userLeave\", evt.publisher);\n } else if (evt.eventType === \"INTERVAL\") {\n // evt.interval.join.users\n }\n }\n };\n\n private receiveChunkMessage(msg: ChunkedUpdateMessage, publisher: string) {\n if (msg.length === 1) {\n this.emit(\"message\", msg.buf, publisher, msg.customType);\n return;\n }\n const chunks = this.chunkedMessages.get(msg.session) || [];\n chunks.push(msg);\n if (chunks.length === msg.length) {\n const buffer = chunks.sort((a, b) => a.index - b.index)\n .reduce((result, next) => {\n const buf = next.buf;\n const output = new Uint8Array(result.length + buf.length);\n output.set(result, 0);\n output.set(buf, result.length);\n return output;\n }, new Uint8Array());\n this.emit(\"message\", buffer, publisher, msg.customType);\n this.chunkedMessages.delete(msg.session);\n } else {\n this.chunkedMessages.set(msg.session, chunks);\n }\n }\n\n public publish(buf: Uint8Array, customType: string, target: string = \"\") {\n const session = uuidv4();\n // \u6D88\u606F\u5305\u4F53\u79EF, \u5355\u4F4D kb\n const size = buf.length * Uint8Array.BYTES_PER_ELEMENT / 1024;\n if (size < 16) {\n this.cachedMessages.push(ChunkedUpdateMessage.fromObject({\n buf: buf,\n length: 1,\n index: 0,\n session\n }, target, customType));\n } else {\n const chunkSize = 16 * 1024 / Uint8Array.BYTES_PER_ELEMENT;\n let len = Math.ceil(size / 16);\n let index = 0;\n while (index < len) {\n this.cachedMessages.push(ChunkedUpdateMessage.fromObject({\n buf: buf.slice(index * chunkSize, (index + 1) * chunkSize),\n length: len,\n index: index,\n session,\n }, target, customType));\n index += 1;\n }\n }\n }\n\n public async userList(): Promise<Set<string>> {\n const output = new Set<string>();\n const result = await this.rtmClient.presence.whoNow(this.roomChannel(), \"MESSAGE\", {\n includedState: false,\n });\n var nextPage: string | null = result.nextPage;\n result.occupants.forEach((userInfo) => {\n const { userId } = userInfo;\n output.add(userId);\n });\n while (nextPage) {\n const result = await this.rtmClient.presence.whoNow(this.roomChannel(), \"MESSAGE\", {\n includedState: false,\n page: nextPage,\n });\n nextPage = result.nextPage;\n result.occupants.forEach((userInfo) => {\n const { userId } = userInfo;\n output.add(userId);\n });\n }\n return output;\n }\n}\n", "export const cyrb53 = (str: string, seed = 0) => {\n let h1 = 0xdeadbeef ^ seed, h2 = 0x41c6ce57 ^ seed;\n for(let i = 0, ch; i < str.length; i++) {\n ch = str.charCodeAt(i);\n h1 = Math.imul(h1 ^ ch, 2654435761);\n h2 = Math.imul(h2 ^ ch, 1597334677);\n }\n h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507);\n h1 ^= Math.imul(h2 ^ (h2 >>> 13), 3266489909);\n h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507);\n h2 ^= Math.imul(h1 ^ (h1 >>> 13), 3266489909);\n\n return 4294967296 * (2097151 & h2) + (h1 >>> 0);\n};", "export type ChunkedUpdateMessageType = {\n buf: Uint8Array;\n index: number;\n length: number;\n session: string;\n}\n\nexport class ChunkedUpdateMessage {\n\n static fromObject(obj: ChunkedUpdateMessageType, target: string, customType: string): ChunkedUpdateMessage {\n const msg = new ChunkedUpdateMessage();\n msg.target = target;\n msg.customType = customType;\n\n const encoder = new TextEncoder();\n const sessionBuf = encoder.encode(obj.session);\n\n // header \u6309\u987A\u5E8F\u6307\u793A buf, session, target, customType \u90E8\u5206\u7684 uint8 \u957F\u5EA6\n msg.header = new DataView(new Uint8Array(10).buffer);\n\n msg.header.setUint32(0, obj.buf.length, false);\n msg.header.setUint32(4, sessionBuf.length, false);\n msg.header.setUint8(8, obj.index);\n msg.header.setUint8(9, obj.length);\n\n msg.buffer = new Uint8Array(\n obj.buf.length + sessionBuf.length + msg.header.buffer.byteLength\n );\n\n let len = 0;\n msg.buffer.set(new Uint8Array(msg.header.buffer), len);\n len += msg.header.buffer.byteLength;\n msg.buffer.set(obj.buf, len);\n len += obj.buf.length;\n msg.buffer.set(sessionBuf, len);\n\n return msg;\n }\n\n static fromBuffer(buf: Uint8Array, target: string, customType: string) {\n const msg = new ChunkedUpdateMessage();\n\n msg.header = new DataView(buf.slice(0, 10).buffer);\n msg.buffer = buf.slice(10);\n msg.target = target;\n msg.customType = customType;\n\n return msg;\n }\n\n public target!: string;\n public customType!: string;\n public buffer!: Uint8Array;\n private header!: DataView;\n\n public get buf(): Uint8Array {\n const len = this.header.getInt32(0);\n return this.buffer.slice(0, len);\n }\n\n public get index(): number {\n return this.header.getUint8(8);\n }\n\n public get length(): number {\n return this.header.getUint8(9);\n }\n\n public get session(): string {\n const start = this.header.getInt32(0);\n const sessionBuf = this.buffer.slice(start, start + this.header.getInt32(4));\n const textDecoder = new TextDecoder();\n return textDecoder.decode(sessionBuf);\n }\n\n private constructor() {}\n}", "import { SocketProvider, SocketProviderEvent, log } from \"@netless/forge-room\";\nimport EventEmitter from \"eventemitter3\";\nimport {v4 as uuidv4} from \"uuid\";\nimport {cyrb53} from \"./utils\";\n\nimport type {RTMClient, RTMEvents} from \"agora-rtm\";\nimport {ChunkedUpdateMessage} from \"./ChunkedUpdateMessage\";\n\nexport class RTMProvider_2_2 extends EventEmitter<SocketProviderEvent> implements SocketProvider {\n\n private rtmClient!: RTMClient;\n private roomId!: string;\n private userId!: string;\n\n private reconnectTimeout: any = null;\n private chunkedMessages: Map<string, ChunkedUpdateMessage[]> = new Map();\n private cachedMessages: ChunkedUpdateMessage[] = [];\n\n private intervalId: any = null;\n\n public constructor(rtmClient: RTMClient) {\n super();\n this.rtmClient = rtmClient;\n }\n\n private roomChannel(): string {\n return `r_${this.roomId}`;\n }\n\n private userChannel(userId: string): string {\n if (userId.length > 16) {\n userId = `${cyrb53(userId)}`;\n }\n return `${this.roomChannel()}_u_${userId}`;\n }\n\n public async initialize(roomId: string, userId: string): Promise<void> {\n window.clearInterval(this.intervalId);\n this.roomId = roomId;\n this.userId = userId;\n this.rtmClient.addEventListener(\"message\", this.handleRtmMessage);\n this.rtmClient.addEventListener(\"presence\", this.handlePresence);\n // @ts-ignore\n this.rtmClient.addEventListener(\"status\", this.handleStatus);\n try {\n await this.rtmClient.subscribe(this.roomChannel());\n await this.rtmClient.subscribe(this.userChannel(this.userId));\n } catch(error: any) {\n this.emit(\"error\", `rtm subscribe fail, ${error}`);\n log(`rtm subscribe fail`, {\n error: error.toString(),\n rtm: \"2.2\"\n }, \"error\");\n }\n this.intervalId = setInterval(() => {\n const msg = this.cachedMessages.shift();\n if (msg) {\n const channel = msg.target ? this.userChannel(msg.target) : this.roomChannel();\n this.rtmClient.publish(channel, msg.buffer, { customType: msg.customType }).catch(error => {\n log(`rtm publish failed`, {\n channel,\n code: error.code,\n rtm: \"2.2\"\n }, \"warning\");\n this.emit(\"error\", `rtm publish fail, ${error}`);\n });\n }\n }, 32);\n }\n\n /**\n * \u91CD\u65B0\u8BA2\u9605\u9891\u9053\n */\n public async resubscribe() {\n try {\n await this.rtmClient.subscribe(this.roomChannel());\n await this.rtmClient.subscribe(this.userChannel(this.userId));\n } catch(error: any) {\n this.emit(\"error\", `rtm subscribe fail, ${error}`);\n log(`rtm subscribe fail`, {\n error: error.toString(),\n }, \"error\");\n }\n }\n\n public async dispose(): Promise<void> {\n this.rtmClient.removeEventListener(\"message\", this.handleRtmMessage);\n this.rtmClient.removeEventListener(\"presence\", this.handlePresence);\n // @ts-ignore\n this.rtmClient.removeEventListener(\"status\", this.handleStatus);\n await this.rtmClient.unsubscribe(this.roomChannel());\n await this.rtmClient.unsubscribe(this.userChannel(this.userId));\n window.clearInterval(this.intervalId);\n }\n\n private handleRtmMessage = (evt: RTMEvents.MessageEvent) => {\n this.receiveChunkMessage(ChunkedUpdateMessage.fromBuffer(evt.message as Uint8Array, \"\", evt.customType), evt.publisher);\n };\n\n private handleStatus = (connectionStatus: RTMEvents.RTMConnectionStatusChangeEvent) => {\n log(`rtm status update`, {\n state: connectionStatus.state,\n reason: connectionStatus.reason,\n rtm: \"2.2\"\n });\n if (connectionStatus.state === \"RECONNECTING\" && this.reconnectTimeout === null) {\n this.reconnectTimeout = window.setTimeout(() => {\n this.emit(\"error\", `reconnecting timeout`);\n this.emit(\"connectionStatusChange\", \"DISCONNECTED\");\n }, 30 * 1000);\n } else if (connectionStatus.state === \"CONNECTED\") {\n window.clearTimeout(this.reconnectTimeout);\n this.emit(\"connectionStatusChange\", \"CONNECTED\");\n } else if (connectionStatus.state === \"FAILED\") {\n window.clearTimeout(this.reconnectTimeout);\n this.emit(\"error\", `rtm connection failed, ${connectionStatus.reason}`);\n this.emit(\"connectionStatusChange\", \"DISCONNECTED\");\n } else if (connectionStatus.state === \"CONNECTING\") {\n this.emit(\"connectionStatusChange\", \"CONNECTING\");\n }\n }\n\n private handlePresence = (evt: RTMEvents.PresenceEvent) => {\n if (evt.channelName === this.roomChannel()) {\n if (evt.eventType === \"REMOTE_JOIN\") {\n this.emit(\"userJoin\", evt.publisher);\n } else if (evt.eventType === \"REMOTE_LEAVE\") {\n this.emit(\"userLeave\", evt.publisher);\n } else if (evt.eventType === \"REMOTE_TIMEOUT\") {\n this.emit(\"userLeave\", evt.publisher);\n } else if (evt.eventType === \"INTERVAL\") {\n // evt.interval.join.users\n }\n }\n };\n\n private receiveChunkMessage(msg: ChunkedUpdateMessage, publisher: string) {\n if (msg.length === 1) {\n this.emit(\"message\", msg.buf, publisher, msg.customType);\n return;\n }\n const chunks = this.chunkedMessages.get(msg.session) || [];\n chunks.push(msg);\n if (chunks.length === msg.length) {\n const buffer = chunks.sort((a, b) => a.index - b.index)\n .reduce((result, next) => {\n const buf = next.buf;\n const output = new Uint8Array(result.length + buf.length);\n output.set(result, 0);\n output.set(buf, result.length);\n return output;\n }, new Uint8Array());\n this.emit(\"message\", buffer, publisher, msg.customType);\n this.chunkedMessages.delete(msg.session);\n } else {\n this.chunkedMessages.set(msg.session, chunks);\n }\n }\n\n public publish(buf: Uint8Array, customType: string, target: string = \"\") {\n const session = uuidv4();\n // \u6D88\u606F\u5305\u4F53\u79EF, \u5355\u4F4D kb\n const size = buf.length * Uint8Array.BYTES_PER_ELEMENT / 1024;\n if (size < 16) {\n this.cachedMessages.push(ChunkedUpdateMessage.fromObject({\n buf: buf,\n length: 1,\n index: 0,\n session\n }, target, customType));\n } else {\n const chunkSize = 16 * 1024 / Uint8Array.BYTES_PER_ELEMENT;\n let len = Math.ceil(size / 16);\n let index = 0;\n while (index < len) {\n this.cachedMessages.push(ChunkedUpdateMessage.fromObject({\n buf: buf.slice(index * chunkSize, (index + 1) * chunkSize),\n length: len,\n index: index,\n session,\n }, target, customType));\n index += 1;\n }\n }\n }\n\n public async userList(): Promise<Set<string>> {\n const output = new Set<string>();\n const result = await this.rtmClient.presence.whoNow(this.roomChannel(), \"MESSAGE\", {\n includedState: false,\n });\n var nextPage: string | null = result.nextPage;\n result.occupants.forEach((userInfo) => {\n const { userId } = userInfo;\n output.add(userId);\n });\n while (nextPage) {\n const result = await this.rtmClient.presence.whoNow(this.roomChannel(), \"MESSAGE\", {\n includedState: false,\n page: nextPage,\n });\n nextPage = result.nextPage;\n result.occupants.forEach((userInfo) => {\n const { userId } = userInfo;\n output.add(userId);\n });\n }\n return output;\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["result", "log", "EventEmitter", "uuidv4", "EventEmitter", "log", "uuidv4", "result"]
4
+ "sourcesContent": ["function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { log } from \"@netless/forge-room\";\nimport EventEmitter from \"eventemitter3\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { cyrb53 } from \"./utils\";\nimport { ChunkedUpdateMessage } from \"./ChunkedUpdateMessage\";\nexport class RTMProvider_2_1 extends EventEmitter {\n constructor(rtmClient) {\n super();\n _defineProperty(this, \"rtmClient\", void 0);\n _defineProperty(this, \"roomId\", void 0);\n _defineProperty(this, \"userId\", void 0);\n _defineProperty(this, \"reconnectTimeout\", null);\n _defineProperty(this, \"chunkedMessages\", new Map());\n _defineProperty(this, \"cachedMessages\", []);\n _defineProperty(this, \"intervalId\", null);\n _defineProperty(this, \"handleRtmMessage\", evt => {\n if (!(evt.message instanceof Uint8Array)) {\n log(`rtm message not Uint8Array`, {\n channel: evt.channelName,\n publisher: evt.publisher,\n message: evt.message\n });\n return;\n }\n this.receiveChunkMessage(ChunkedUpdateMessage.fromBuffer(evt.message, \"\", evt.customType), evt.publisher);\n });\n _defineProperty(this, \"handleStatus\", connectionStatus => {\n log(`rtm status update`, {\n state: connectionStatus.state,\n reason: connectionStatus.reason\n });\n if (connectionStatus.state === \"RECONNECTING\" && this.reconnectTimeout === null) {\n this.reconnectTimeout = window.setTimeout(() => {\n this.emit(\"error\", `reconnecting timeout`);\n this.emit(\"connectionStatusChange\", \"DISCONNECTED\");\n }, 30 * 1000);\n } else if (connectionStatus.state === \"CONNECTED\") {\n window.clearTimeout(this.reconnectTimeout);\n this.emit(\"connectionStatusChange\", \"CONNECTED\");\n } else if (connectionStatus.state === \"FAILED\") {\n window.clearTimeout(this.reconnectTimeout);\n this.emit(\"error\", `rtm connection failed, ${connectionStatus.reason}`);\n this.emit(\"connectionStatusChange\", \"DISCONNECTED\");\n } else if (connectionStatus.state === \"CONNECTING\") {\n this.emit(\"connectionStatusChange\", \"CONNECTING\");\n }\n });\n _defineProperty(this, \"handlePresence\", evt => {\n if (evt.channelName === this.roomChannel()) {\n if (evt.eventType === \"REMOTE_JOIN\") {\n this.emit(\"userJoin\", evt.publisher);\n } else if (evt.eventType === \"REMOTE_LEAVE\") {\n this.emit(\"userLeave\", evt.publisher);\n } else if (evt.eventType === \"REMOTE_TIMEOUT\") {\n this.emit(\"userLeave\", evt.publisher);\n } else if (evt.eventType === \"INTERVAL\") {\n // evt.interval.join.users\n }\n }\n });\n this.rtmClient = rtmClient;\n }\n roomChannel() {\n return `r_${this.roomId}`;\n }\n userChannel(userId) {\n if (userId.length > 16) {\n userId = `${cyrb53(userId)}`;\n }\n return `${this.roomChannel()}_u_${userId}`;\n }\n\n /**\n * \u91CD\u65B0\u8BA2\u9605\u9891\u9053\n */\n async resubscribe() {\n try {\n await this.rtmClient.subscribe(this.roomChannel());\n await this.rtmClient.subscribe(this.userChannel(this.userId));\n } catch (error) {\n this.emit(\"error\", `rtm subscribe fail, ${error}`);\n log(`rtm subscribe fail`, {\n error: error.toString()\n }, \"error\");\n }\n }\n async initialize(roomId, userId) {\n window.clearInterval(this.intervalId);\n this.roomId = roomId;\n this.userId = userId;\n this.rtmClient.addEventListener(\"message\", this.handleRtmMessage);\n this.rtmClient.addEventListener(\"presence\", this.handlePresence);\n // @ts-ignore\n this.rtmClient.addEventListener(\"status\", this.handleStatus);\n try {\n await this.rtmClient.subscribe(this.roomChannel());\n await this.rtmClient.subscribe(this.userChannel(this.userId));\n } catch (error) {\n this.emit(\"error\", `rtm subscribe fail, ${error}`);\n log(`rtm subscribe fail`, {\n error: error.toString()\n }, \"error\");\n }\n this.intervalId = setInterval(() => {\n const msg = this.cachedMessages.shift();\n if (msg) {\n const channel = msg.target ? this.userChannel(msg.target) : this.roomChannel();\n this.rtmClient.publish(channel, msg.buffer, {\n customType: msg.customType\n }).catch(error => {\n log(`rtm publish failed`, {\n channel,\n code: error.code\n }, \"warning\");\n this.emit(\"error\", `rtm publish fail, ${error}`);\n });\n }\n }, 32);\n }\n async dispose() {\n this.rtmClient.removeEventListener(\"message\", this.handleRtmMessage);\n this.rtmClient.removeEventListener(\"presence\", this.handlePresence);\n // @ts-ignore\n this.rtmClient.removeEventListener(\"status\", this.handleStatus);\n await this.rtmClient.unsubscribe(this.roomChannel());\n await this.rtmClient.unsubscribe(this.userChannel(this.userId));\n window.clearInterval(this.intervalId);\n }\n receiveChunkMessage(msg, publisher) {\n if (msg.length === 1) {\n this.emit(\"message\", msg.buf, publisher, msg.customType);\n return;\n }\n const chunks = this.chunkedMessages.get(msg.session) || [];\n chunks.push(msg);\n if (chunks.length === msg.length) {\n const buffer = chunks.sort((a, b) => a.index - b.index).reduce((result, next) => {\n const buf = next.buf;\n const output = new Uint8Array(result.length + buf.length);\n output.set(result, 0);\n output.set(buf, result.length);\n return output;\n }, new Uint8Array());\n this.emit(\"message\", buffer, publisher, msg.customType);\n this.chunkedMessages.delete(msg.session);\n } else {\n this.chunkedMessages.set(msg.session, chunks);\n }\n }\n publish(buf, customType) {\n let target = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"\";\n const session = uuidv4();\n // \u6D88\u606F\u5305\u4F53\u79EF, \u5355\u4F4D kb\n const size = buf.length * Uint8Array.BYTES_PER_ELEMENT / 1024;\n if (size < 16) {\n this.cachedMessages.push(ChunkedUpdateMessage.fromObject({\n buf: buf,\n length: 1,\n index: 0,\n session\n }, target, customType));\n } else {\n const chunkSize = 16 * 1024 / Uint8Array.BYTES_PER_ELEMENT;\n let len = Math.ceil(size / 16);\n let index = 0;\n while (index < len) {\n this.cachedMessages.push(ChunkedUpdateMessage.fromObject({\n buf: buf.slice(index * chunkSize, (index + 1) * chunkSize),\n length: len,\n index: index,\n session\n }, target, customType));\n index += 1;\n }\n }\n }\n async userList() {\n const output = new Set();\n const result = await this.rtmClient.presence.whoNow(this.roomChannel(), \"MESSAGE\", {\n includedState: false\n });\n var nextPage = result.nextPage;\n result.occupants.forEach(userInfo => {\n const {\n userId\n } = userInfo;\n output.add(userId);\n });\n while (nextPage) {\n const result = await this.rtmClient.presence.whoNow(this.roomChannel(), \"MESSAGE\", {\n includedState: false,\n page: nextPage\n });\n nextPage = result.nextPage;\n result.occupants.forEach(userInfo => {\n const {\n userId\n } = userInfo;\n output.add(userId);\n });\n }\n return output;\n }\n}", "export const cyrb53 = function (str) {\n let seed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n let h1 = 0xdeadbeef ^ seed,\n h2 = 0x41c6ce57 ^ seed;\n for (let i = 0, ch; i < str.length; i++) {\n ch = str.charCodeAt(i);\n h1 = Math.imul(h1 ^ ch, 2654435761);\n h2 = Math.imul(h2 ^ ch, 1597334677);\n }\n h1 = Math.imul(h1 ^ h1 >>> 16, 2246822507);\n h1 ^= Math.imul(h2 ^ h2 >>> 13, 3266489909);\n h2 = Math.imul(h2 ^ h2 >>> 16, 2246822507);\n h2 ^= Math.imul(h1 ^ h1 >>> 13, 3266489909);\n return 4294967296 * (2097151 & h2) + (h1 >>> 0);\n};", "function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nexport class ChunkedUpdateMessage {\n static fromObject(obj, target, customType) {\n const msg = new ChunkedUpdateMessage();\n msg.target = target;\n msg.customType = customType;\n const encoder = new TextEncoder();\n const sessionBuf = encoder.encode(obj.session);\n\n // header \u6309\u987A\u5E8F\u6307\u793A buf, session, target, customType \u90E8\u5206\u7684 uint8 \u957F\u5EA6\n msg.header = new DataView(new Uint8Array(10).buffer);\n msg.header.setUint32(0, obj.buf.length, false);\n msg.header.setUint32(4, sessionBuf.length, false);\n msg.header.setUint8(8, obj.index);\n msg.header.setUint8(9, obj.length);\n msg.buffer = new Uint8Array(obj.buf.length + sessionBuf.length + msg.header.buffer.byteLength);\n let len = 0;\n msg.buffer.set(new Uint8Array(msg.header.buffer), len);\n len += msg.header.buffer.byteLength;\n msg.buffer.set(obj.buf, len);\n len += obj.buf.length;\n msg.buffer.set(sessionBuf, len);\n return msg;\n }\n static fromBuffer(buf, target, customType) {\n const msg = new ChunkedUpdateMessage();\n msg.header = new DataView(buf.slice(0, 10).buffer);\n msg.buffer = buf.slice(10);\n msg.target = target;\n msg.customType = customType;\n return msg;\n }\n get buf() {\n const len = this.header.getInt32(0);\n return this.buffer.slice(0, len);\n }\n get index() {\n return this.header.getUint8(8);\n }\n get length() {\n return this.header.getUint8(9);\n }\n get session() {\n const start = this.header.getInt32(0);\n const sessionBuf = this.buffer.slice(start, start + this.header.getInt32(4));\n const textDecoder = new TextDecoder();\n return textDecoder.decode(sessionBuf);\n }\n constructor() {\n _defineProperty(this, \"target\", void 0);\n _defineProperty(this, \"customType\", void 0);\n _defineProperty(this, \"buffer\", void 0);\n _defineProperty(this, \"header\", void 0);\n }\n}", "function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { log } from \"@netless/forge-room\";\nimport EventEmitter from \"eventemitter3\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { cyrb53 } from \"./utils\";\nimport { ChunkedUpdateMessage } from \"./ChunkedUpdateMessage\";\nexport class RTMProvider_2_2 extends EventEmitter {\n constructor(rtmClient) {\n super();\n _defineProperty(this, \"rtmClient\", void 0);\n _defineProperty(this, \"roomId\", void 0);\n _defineProperty(this, \"userId\", void 0);\n _defineProperty(this, \"reconnectTimeout\", null);\n _defineProperty(this, \"chunkedMessages\", new Map());\n _defineProperty(this, \"cachedMessages\", []);\n _defineProperty(this, \"intervalId\", null);\n _defineProperty(this, \"handleRtmMessage\", evt => {\n if (!(evt.message instanceof Uint8Array)) {\n log(`rtm message not Uint8Array`, {\n channel: evt.channelName,\n publisher: evt.publisher,\n message: evt.message\n });\n return;\n }\n this.receiveChunkMessage(ChunkedUpdateMessage.fromBuffer(evt.message, \"\", evt.customType), evt.publisher);\n });\n _defineProperty(this, \"handleStatus\", connectionStatus => {\n log(`rtm status update`, {\n state: connectionStatus.state,\n reason: connectionStatus.reason,\n rtm: \"2.2\"\n });\n if (connectionStatus.state === \"RECONNECTING\" && this.reconnectTimeout === null) {\n this.reconnectTimeout = window.setTimeout(() => {\n this.emit(\"error\", `reconnecting timeout`);\n this.emit(\"connectionStatusChange\", \"DISCONNECTED\");\n }, 30 * 1000);\n } else if (connectionStatus.state === \"CONNECTED\") {\n window.clearTimeout(this.reconnectTimeout);\n this.emit(\"connectionStatusChange\", \"CONNECTED\");\n } else if (connectionStatus.state === \"FAILED\") {\n window.clearTimeout(this.reconnectTimeout);\n this.emit(\"error\", `rtm connection failed, ${connectionStatus.reason}`);\n this.emit(\"connectionStatusChange\", \"DISCONNECTED\");\n } else if (connectionStatus.state === \"CONNECTING\") {\n this.emit(\"connectionStatusChange\", \"CONNECTING\");\n }\n });\n _defineProperty(this, \"handlePresence\", evt => {\n if (evt.channelName === this.roomChannel()) {\n if (evt.eventType === \"REMOTE_JOIN\") {\n this.emit(\"userJoin\", evt.publisher);\n } else if (evt.eventType === \"REMOTE_LEAVE\") {\n this.emit(\"userLeave\", evt.publisher);\n } else if (evt.eventType === \"REMOTE_TIMEOUT\") {\n this.emit(\"userLeave\", evt.publisher);\n } else if (evt.eventType === \"INTERVAL\") {\n // evt.interval.join.users\n }\n }\n });\n this.rtmClient = rtmClient;\n }\n roomChannel() {\n return `r_${this.roomId}`;\n }\n userChannel(userId) {\n if (userId.length > 16) {\n userId = `${cyrb53(userId)}`;\n }\n return `${this.roomChannel()}_u_${userId}`;\n }\n async initialize(roomId, userId) {\n window.clearInterval(this.intervalId);\n this.roomId = roomId;\n this.userId = userId;\n this.rtmClient.addEventListener(\"message\", this.handleRtmMessage);\n this.rtmClient.addEventListener(\"presence\", this.handlePresence);\n // @ts-ignore\n this.rtmClient.addEventListener(\"status\", this.handleStatus);\n try {\n await this.rtmClient.subscribe(this.roomChannel());\n await this.rtmClient.subscribe(this.userChannel(this.userId));\n } catch (error) {\n this.emit(\"error\", `rtm subscribe fail, ${error}`);\n log(`rtm subscribe fail`, {\n error: error.toString(),\n rtm: \"2.2\"\n }, \"error\");\n }\n this.intervalId = setInterval(() => {\n const msg = this.cachedMessages.shift();\n if (msg) {\n const channel = msg.target ? this.userChannel(msg.target) : this.roomChannel();\n this.rtmClient.publish(channel, msg.buffer, {\n customType: msg.customType\n }).catch(error => {\n log(`rtm publish failed`, {\n channel,\n code: error.code,\n rtm: \"2.2\"\n }, \"warning\");\n this.emit(\"error\", `rtm publish fail, ${error}`);\n });\n }\n }, 32);\n }\n\n /**\n * \u91CD\u65B0\u8BA2\u9605\u9891\u9053\n */\n async resubscribe() {\n try {\n await this.rtmClient.subscribe(this.roomChannel());\n await this.rtmClient.subscribe(this.userChannel(this.userId));\n } catch (error) {\n this.emit(\"error\", `rtm subscribe fail, ${error}`);\n log(`rtm subscribe fail`, {\n error: error.toString()\n }, \"error\");\n }\n }\n async dispose() {\n this.rtmClient.removeEventListener(\"message\", this.handleRtmMessage);\n this.rtmClient.removeEventListener(\"presence\", this.handlePresence);\n // @ts-ignore\n this.rtmClient.removeEventListener(\"status\", this.handleStatus);\n await this.rtmClient.unsubscribe(this.roomChannel());\n await this.rtmClient.unsubscribe(this.userChannel(this.userId));\n window.clearInterval(this.intervalId);\n }\n receiveChunkMessage(msg, publisher) {\n if (msg.length === 1) {\n this.emit(\"message\", msg.buf, publisher, msg.customType);\n return;\n }\n const chunks = this.chunkedMessages.get(msg.session) || [];\n chunks.push(msg);\n if (chunks.length === msg.length) {\n const buffer = chunks.sort((a, b) => a.index - b.index).reduce((result, next) => {\n const buf = next.buf;\n const output = new Uint8Array(result.length + buf.length);\n output.set(result, 0);\n output.set(buf, result.length);\n return output;\n }, new Uint8Array());\n this.emit(\"message\", buffer, publisher, msg.customType);\n this.chunkedMessages.delete(msg.session);\n } else {\n this.chunkedMessages.set(msg.session, chunks);\n }\n }\n publish(buf, customType) {\n let target = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"\";\n const session = uuidv4();\n // \u6D88\u606F\u5305\u4F53\u79EF, \u5355\u4F4D kb\n const size = buf.length * Uint8Array.BYTES_PER_ELEMENT / 1024;\n if (size < 16) {\n this.cachedMessages.push(ChunkedUpdateMessage.fromObject({\n buf: buf,\n length: 1,\n index: 0,\n session\n }, target, customType));\n } else {\n const chunkSize = 16 * 1024 / Uint8Array.BYTES_PER_ELEMENT;\n let len = Math.ceil(size / 16);\n let index = 0;\n while (index < len) {\n this.cachedMessages.push(ChunkedUpdateMessage.fromObject({\n buf: buf.slice(index * chunkSize, (index + 1) * chunkSize),\n length: len,\n index: index,\n session\n }, target, customType));\n index += 1;\n }\n }\n }\n async userList() {\n const output = new Set();\n const result = await this.rtmClient.presence.whoNow(this.roomChannel(), \"MESSAGE\", {\n includedState: false\n });\n var nextPage = result.nextPage;\n result.occupants.forEach(userInfo => {\n const {\n userId\n } = userInfo;\n output.add(userId);\n });\n while (nextPage) {\n const result = await this.rtmClient.presence.whoNow(this.roomChannel(), \"MESSAGE\", {\n includedState: false,\n page: nextPage\n });\n nextPage = result.nextPage;\n result.occupants.forEach(userInfo => {\n const {\n userId\n } = userInfo;\n output.add(userId);\n });\n }\n return output;\n }\n}"],
5
+ "mappings": "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",
6
+ "names": ["_defineProperty", "_toPropertyKey", "_toPrimitive", "result", "log", "EventEmitter", "uuidv4", "_defineProperty", "_toPropertyKey", "_toPrimitive", "EventEmitter", "log", "uuidv4", "result"]
7
7
  }
@@ -41,7 +41,8 @@ var import_eventemitter3 = __toESM(require("eventemitter3"), 1);
41
41
  var import_uuid = require("uuid");
42
42
 
43
43
  // src/utils.ts
44
- var cyrb53 = (str, seed = 0) => {
44
+ var cyrb53 = function(str) {
45
+ let seed = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
45
46
  let h1 = 3735928559 ^ seed, h2 = 1103547991 ^ seed;
46
47
  for (let i = 0, ch; i < str.length; i++) {
47
48
  ch = str.charCodeAt(i);
@@ -56,6 +57,23 @@ var cyrb53 = (str, seed = 0) => {
56
57
  };
57
58
 
58
59
  // src/ChunkedUpdateMessage.ts
60
+ function _defineProperty(e, r, t) {
61
+ return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e;
62
+ }
63
+ function _toPropertyKey(t) {
64
+ var i = _toPrimitive(t, "string");
65
+ return "symbol" == typeof i ? i : i + "";
66
+ }
67
+ function _toPrimitive(t, r) {
68
+ if ("object" != typeof t || !t) return t;
69
+ var e = t[Symbol.toPrimitive];
70
+ if (void 0 !== e) {
71
+ var i = e.call(t, r || "default");
72
+ if ("object" != typeof i) return i;
73
+ throw new TypeError("@@toPrimitive must return a primitive value.");
74
+ }
75
+ return ("string" === r ? String : Number)(t);
76
+ }
59
77
  var ChunkedUpdateMessage = class _ChunkedUpdateMessage {
60
78
  static fromObject(obj, target, customType) {
61
79
  const msg = new _ChunkedUpdateMessage();
@@ -68,9 +86,7 @@ var ChunkedUpdateMessage = class _ChunkedUpdateMessage {
68
86
  msg.header.setUint32(4, sessionBuf.length, false);
69
87
  msg.header.setUint8(8, obj.index);
70
88
  msg.header.setUint8(9, obj.length);
71
- msg.buffer = new Uint8Array(
72
- obj.buf.length + sessionBuf.length + msg.header.buffer.byteLength
73
- );
89
+ msg.buffer = new Uint8Array(obj.buf.length + sessionBuf.length + msg.header.buffer.byteLength);
74
90
  let len = 0;
75
91
  msg.buffer.set(new Uint8Array(msg.header.buffer), len);
76
92
  len += msg.header.buffer.byteLength;
@@ -87,10 +103,6 @@ var ChunkedUpdateMessage = class _ChunkedUpdateMessage {
87
103
  msg.customType = customType;
88
104
  return msg;
89
105
  }
90
- target;
91
- customType;
92
- buffer;
93
- header;
94
106
  get buf() {
95
107
  const len = this.header.getInt32(0);
96
108
  return this.buffer.slice(0, len);
@@ -108,20 +120,85 @@ var ChunkedUpdateMessage = class _ChunkedUpdateMessage {
108
120
  return textDecoder.decode(sessionBuf);
109
121
  }
110
122
  constructor() {
123
+ _defineProperty(this, "target", void 0);
124
+ _defineProperty(this, "customType", void 0);
125
+ _defineProperty(this, "buffer", void 0);
126
+ _defineProperty(this, "header", void 0);
111
127
  }
112
128
  };
113
129
 
114
130
  // src/RTM_2_1.ts
131
+ function _defineProperty2(e, r, t) {
132
+ return (r = _toPropertyKey2(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e;
133
+ }
134
+ function _toPropertyKey2(t) {
135
+ var i = _toPrimitive2(t, "string");
136
+ return "symbol" == typeof i ? i : i + "";
137
+ }
138
+ function _toPrimitive2(t, r) {
139
+ if ("object" != typeof t || !t) return t;
140
+ var e = t[Symbol.toPrimitive];
141
+ if (void 0 !== e) {
142
+ var i = e.call(t, r || "default");
143
+ if ("object" != typeof i) return i;
144
+ throw new TypeError("@@toPrimitive must return a primitive value.");
145
+ }
146
+ return ("string" === r ? String : Number)(t);
147
+ }
115
148
  var RTMProvider_2_1 = class extends import_eventemitter3.default {
116
- rtmClient;
117
- roomId;
118
- userId;
119
- reconnectTimeout = null;
120
- chunkedMessages = /* @__PURE__ */ new Map();
121
- cachedMessages = [];
122
- intervalId = null;
123
149
  constructor(rtmClient) {
124
150
  super();
151
+ _defineProperty2(this, "rtmClient", void 0);
152
+ _defineProperty2(this, "roomId", void 0);
153
+ _defineProperty2(this, "userId", void 0);
154
+ _defineProperty2(this, "reconnectTimeout", null);
155
+ _defineProperty2(this, "chunkedMessages", /* @__PURE__ */ new Map());
156
+ _defineProperty2(this, "cachedMessages", []);
157
+ _defineProperty2(this, "intervalId", null);
158
+ _defineProperty2(this, "handleRtmMessage", (evt) => {
159
+ if (!(evt.message instanceof Uint8Array)) {
160
+ (0, import_forge_room.log)(`rtm message not Uint8Array`, {
161
+ channel: evt.channelName,
162
+ publisher: evt.publisher,
163
+ message: evt.message
164
+ });
165
+ return;
166
+ }
167
+ this.receiveChunkMessage(ChunkedUpdateMessage.fromBuffer(evt.message, "", evt.customType), evt.publisher);
168
+ });
169
+ _defineProperty2(this, "handleStatus", (connectionStatus) => {
170
+ (0, import_forge_room.log)(`rtm status update`, {
171
+ state: connectionStatus.state,
172
+ reason: connectionStatus.reason
173
+ });
174
+ if (connectionStatus.state === "RECONNECTING" && this.reconnectTimeout === null) {
175
+ this.reconnectTimeout = window.setTimeout(() => {
176
+ this.emit("error", `reconnecting timeout`);
177
+ this.emit("connectionStatusChange", "DISCONNECTED");
178
+ }, 30 * 1e3);
179
+ } else if (connectionStatus.state === "CONNECTED") {
180
+ window.clearTimeout(this.reconnectTimeout);
181
+ this.emit("connectionStatusChange", "CONNECTED");
182
+ } else if (connectionStatus.state === "FAILED") {
183
+ window.clearTimeout(this.reconnectTimeout);
184
+ this.emit("error", `rtm connection failed, ${connectionStatus.reason}`);
185
+ this.emit("connectionStatusChange", "DISCONNECTED");
186
+ } else if (connectionStatus.state === "CONNECTING") {
187
+ this.emit("connectionStatusChange", "CONNECTING");
188
+ }
189
+ });
190
+ _defineProperty2(this, "handlePresence", (evt) => {
191
+ if (evt.channelName === this.roomChannel()) {
192
+ if (evt.eventType === "REMOTE_JOIN") {
193
+ this.emit("userJoin", evt.publisher);
194
+ } else if (evt.eventType === "REMOTE_LEAVE") {
195
+ this.emit("userLeave", evt.publisher);
196
+ } else if (evt.eventType === "REMOTE_TIMEOUT") {
197
+ this.emit("userLeave", evt.publisher);
198
+ } else if (evt.eventType === "INTERVAL") {
199
+ }
200
+ }
201
+ });
125
202
  this.rtmClient = rtmClient;
126
203
  }
127
204
  roomChannel() {
@@ -167,7 +244,9 @@ var RTMProvider_2_1 = class extends import_eventemitter3.default {
167
244
  const msg = this.cachedMessages.shift();
168
245
  if (msg) {
169
246
  const channel = msg.target ? this.userChannel(msg.target) : this.roomChannel();
170
- this.rtmClient.publish(channel, msg.buffer, { customType: msg.customType }).catch((error) => {
247
+ this.rtmClient.publish(channel, msg.buffer, {
248
+ customType: msg.customType
249
+ }).catch((error) => {
171
250
  (0, import_forge_room.log)(`rtm publish failed`, {
172
251
  channel,
173
252
  code: error.code
@@ -185,42 +264,6 @@ var RTMProvider_2_1 = class extends import_eventemitter3.default {
185
264
  await this.rtmClient.unsubscribe(this.userChannel(this.userId));
186
265
  window.clearInterval(this.intervalId);
187
266
  }
188
- handleRtmMessage = (evt) => {
189
- this.receiveChunkMessage(ChunkedUpdateMessage.fromBuffer(evt.message, "", evt.customType), evt.publisher);
190
- };
191
- handleStatus = (connectionStatus) => {
192
- (0, import_forge_room.log)(`rtm status update`, {
193
- state: connectionStatus.state,
194
- reason: connectionStatus.reason
195
- });
196
- if (connectionStatus.state === "RECONNECTING" && this.reconnectTimeout === null) {
197
- this.reconnectTimeout = window.setTimeout(() => {
198
- this.emit("error", `reconnecting timeout`);
199
- this.emit("connectionStatusChange", "DISCONNECTED");
200
- }, 30 * 1e3);
201
- } else if (connectionStatus.state === "CONNECTED") {
202
- window.clearTimeout(this.reconnectTimeout);
203
- this.emit("connectionStatusChange", "CONNECTED");
204
- } else if (connectionStatus.state === "FAILED") {
205
- window.clearTimeout(this.reconnectTimeout);
206
- this.emit("error", `rtm connection failed, ${connectionStatus.reason}`);
207
- this.emit("connectionStatusChange", "DISCONNECTED");
208
- } else if (connectionStatus.state === "CONNECTING") {
209
- this.emit("connectionStatusChange", "CONNECTING");
210
- }
211
- };
212
- handlePresence = (evt) => {
213
- if (evt.channelName === this.roomChannel()) {
214
- if (evt.eventType === "REMOTE_JOIN") {
215
- this.emit("userJoin", evt.publisher);
216
- } else if (evt.eventType === "REMOTE_LEAVE") {
217
- this.emit("userLeave", evt.publisher);
218
- } else if (evt.eventType === "REMOTE_TIMEOUT") {
219
- this.emit("userLeave", evt.publisher);
220
- } else if (evt.eventType === "INTERVAL") {
221
- }
222
- }
223
- };
224
267
  receiveChunkMessage(msg, publisher) {
225
268
  if (msg.length === 1) {
226
269
  this.emit("message", msg.buf, publisher, msg.customType);
@@ -242,7 +285,8 @@ var RTMProvider_2_1 = class extends import_eventemitter3.default {
242
285
  this.chunkedMessages.set(msg.session, chunks);
243
286
  }
244
287
  }
245
- publish(buf, customType, target = "") {
288
+ publish(buf, customType) {
289
+ let target = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "";
246
290
  const session = (0, import_uuid.v4)();
247
291
  const size = buf.length * Uint8Array.BYTES_PER_ELEMENT / 1024;
248
292
  if (size < 16) {
@@ -274,7 +318,9 @@ var RTMProvider_2_1 = class extends import_eventemitter3.default {
274
318
  });
275
319
  var nextPage = result.nextPage;
276
320
  result.occupants.forEach((userInfo) => {
277
- const { userId } = userInfo;
321
+ const {
322
+ userId
323
+ } = userInfo;
278
324
  output.add(userId);
279
325
  });
280
326
  while (nextPage) {
@@ -284,7 +330,9 @@ var RTMProvider_2_1 = class extends import_eventemitter3.default {
284
330
  });
285
331
  nextPage = result2.nextPage;
286
332
  result2.occupants.forEach((userInfo) => {
287
- const { userId } = userInfo;
333
+ const {
334
+ userId
335
+ } = userInfo;
288
336
  output.add(userId);
289
337
  });
290
338
  }
@@ -296,16 +344,78 @@ var RTMProvider_2_1 = class extends import_eventemitter3.default {
296
344
  var import_forge_room2 = require("@netless/forge-room");
297
345
  var import_eventemitter32 = __toESM(require("eventemitter3"), 1);
298
346
  var import_uuid2 = require("uuid");
347
+ function _defineProperty3(e, r, t) {
348
+ return (r = _toPropertyKey3(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e;
349
+ }
350
+ function _toPropertyKey3(t) {
351
+ var i = _toPrimitive3(t, "string");
352
+ return "symbol" == typeof i ? i : i + "";
353
+ }
354
+ function _toPrimitive3(t, r) {
355
+ if ("object" != typeof t || !t) return t;
356
+ var e = t[Symbol.toPrimitive];
357
+ if (void 0 !== e) {
358
+ var i = e.call(t, r || "default");
359
+ if ("object" != typeof i) return i;
360
+ throw new TypeError("@@toPrimitive must return a primitive value.");
361
+ }
362
+ return ("string" === r ? String : Number)(t);
363
+ }
299
364
  var RTMProvider_2_2 = class extends import_eventemitter32.default {
300
- rtmClient;
301
- roomId;
302
- userId;
303
- reconnectTimeout = null;
304
- chunkedMessages = /* @__PURE__ */ new Map();
305
- cachedMessages = [];
306
- intervalId = null;
307
365
  constructor(rtmClient) {
308
366
  super();
367
+ _defineProperty3(this, "rtmClient", void 0);
368
+ _defineProperty3(this, "roomId", void 0);
369
+ _defineProperty3(this, "userId", void 0);
370
+ _defineProperty3(this, "reconnectTimeout", null);
371
+ _defineProperty3(this, "chunkedMessages", /* @__PURE__ */ new Map());
372
+ _defineProperty3(this, "cachedMessages", []);
373
+ _defineProperty3(this, "intervalId", null);
374
+ _defineProperty3(this, "handleRtmMessage", (evt) => {
375
+ if (!(evt.message instanceof Uint8Array)) {
376
+ (0, import_forge_room2.log)(`rtm message not Uint8Array`, {
377
+ channel: evt.channelName,
378
+ publisher: evt.publisher,
379
+ message: evt.message
380
+ });
381
+ return;
382
+ }
383
+ this.receiveChunkMessage(ChunkedUpdateMessage.fromBuffer(evt.message, "", evt.customType), evt.publisher);
384
+ });
385
+ _defineProperty3(this, "handleStatus", (connectionStatus) => {
386
+ (0, import_forge_room2.log)(`rtm status update`, {
387
+ state: connectionStatus.state,
388
+ reason: connectionStatus.reason,
389
+ rtm: "2.2"
390
+ });
391
+ if (connectionStatus.state === "RECONNECTING" && this.reconnectTimeout === null) {
392
+ this.reconnectTimeout = window.setTimeout(() => {
393
+ this.emit("error", `reconnecting timeout`);
394
+ this.emit("connectionStatusChange", "DISCONNECTED");
395
+ }, 30 * 1e3);
396
+ } else if (connectionStatus.state === "CONNECTED") {
397
+ window.clearTimeout(this.reconnectTimeout);
398
+ this.emit("connectionStatusChange", "CONNECTED");
399
+ } else if (connectionStatus.state === "FAILED") {
400
+ window.clearTimeout(this.reconnectTimeout);
401
+ this.emit("error", `rtm connection failed, ${connectionStatus.reason}`);
402
+ this.emit("connectionStatusChange", "DISCONNECTED");
403
+ } else if (connectionStatus.state === "CONNECTING") {
404
+ this.emit("connectionStatusChange", "CONNECTING");
405
+ }
406
+ });
407
+ _defineProperty3(this, "handlePresence", (evt) => {
408
+ if (evt.channelName === this.roomChannel()) {
409
+ if (evt.eventType === "REMOTE_JOIN") {
410
+ this.emit("userJoin", evt.publisher);
411
+ } else if (evt.eventType === "REMOTE_LEAVE") {
412
+ this.emit("userLeave", evt.publisher);
413
+ } else if (evt.eventType === "REMOTE_TIMEOUT") {
414
+ this.emit("userLeave", evt.publisher);
415
+ } else if (evt.eventType === "INTERVAL") {
416
+ }
417
+ }
418
+ });
309
419
  this.rtmClient = rtmClient;
310
420
  }
311
421
  roomChannel() {
@@ -338,7 +448,9 @@ var RTMProvider_2_2 = class extends import_eventemitter32.default {
338
448
  const msg = this.cachedMessages.shift();
339
449
  if (msg) {
340
450
  const channel = msg.target ? this.userChannel(msg.target) : this.roomChannel();
341
- this.rtmClient.publish(channel, msg.buffer, { customType: msg.customType }).catch((error) => {
451
+ this.rtmClient.publish(channel, msg.buffer, {
452
+ customType: msg.customType
453
+ }).catch((error) => {
342
454
  (0, import_forge_room2.log)(`rtm publish failed`, {
343
455
  channel,
344
456
  code: error.code,
@@ -371,43 +483,6 @@ var RTMProvider_2_2 = class extends import_eventemitter32.default {
371
483
  await this.rtmClient.unsubscribe(this.userChannel(this.userId));
372
484
  window.clearInterval(this.intervalId);
373
485
  }
374
- handleRtmMessage = (evt) => {
375
- this.receiveChunkMessage(ChunkedUpdateMessage.fromBuffer(evt.message, "", evt.customType), evt.publisher);
376
- };
377
- handleStatus = (connectionStatus) => {
378
- (0, import_forge_room2.log)(`rtm status update`, {
379
- state: connectionStatus.state,
380
- reason: connectionStatus.reason,
381
- rtm: "2.2"
382
- });
383
- if (connectionStatus.state === "RECONNECTING" && this.reconnectTimeout === null) {
384
- this.reconnectTimeout = window.setTimeout(() => {
385
- this.emit("error", `reconnecting timeout`);
386
- this.emit("connectionStatusChange", "DISCONNECTED");
387
- }, 30 * 1e3);
388
- } else if (connectionStatus.state === "CONNECTED") {
389
- window.clearTimeout(this.reconnectTimeout);
390
- this.emit("connectionStatusChange", "CONNECTED");
391
- } else if (connectionStatus.state === "FAILED") {
392
- window.clearTimeout(this.reconnectTimeout);
393
- this.emit("error", `rtm connection failed, ${connectionStatus.reason}`);
394
- this.emit("connectionStatusChange", "DISCONNECTED");
395
- } else if (connectionStatus.state === "CONNECTING") {
396
- this.emit("connectionStatusChange", "CONNECTING");
397
- }
398
- };
399
- handlePresence = (evt) => {
400
- if (evt.channelName === this.roomChannel()) {
401
- if (evt.eventType === "REMOTE_JOIN") {
402
- this.emit("userJoin", evt.publisher);
403
- } else if (evt.eventType === "REMOTE_LEAVE") {
404
- this.emit("userLeave", evt.publisher);
405
- } else if (evt.eventType === "REMOTE_TIMEOUT") {
406
- this.emit("userLeave", evt.publisher);
407
- } else if (evt.eventType === "INTERVAL") {
408
- }
409
- }
410
- };
411
486
  receiveChunkMessage(msg, publisher) {
412
487
  if (msg.length === 1) {
413
488
  this.emit("message", msg.buf, publisher, msg.customType);
@@ -429,7 +504,8 @@ var RTMProvider_2_2 = class extends import_eventemitter32.default {
429
504
  this.chunkedMessages.set(msg.session, chunks);
430
505
  }
431
506
  }
432
- publish(buf, customType, target = "") {
507
+ publish(buf, customType) {
508
+ let target = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : "";
433
509
  const session = (0, import_uuid2.v4)();
434
510
  const size = buf.length * Uint8Array.BYTES_PER_ELEMENT / 1024;
435
511
  if (size < 16) {
@@ -461,7 +537,9 @@ var RTMProvider_2_2 = class extends import_eventemitter32.default {
461
537
  });
462
538
  var nextPage = result.nextPage;
463
539
  result.occupants.forEach((userInfo) => {
464
- const { userId } = userInfo;
540
+ const {
541
+ userId
542
+ } = userInfo;
465
543
  output.add(userId);
466
544
  });
467
545
  while (nextPage) {
@@ -471,7 +549,9 @@ var RTMProvider_2_2 = class extends import_eventemitter32.default {
471
549
  });
472
550
  nextPage = result2.nextPage;
473
551
  result2.occupants.forEach((userInfo) => {
474
- const { userId } = userInfo;
552
+ const {
553
+ userId
554
+ } = userInfo;
475
555
  output.add(userId);
476
556
  });
477
557
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts", "../src/RTM_2_1.ts", "../src/utils.ts", "../src/ChunkedUpdateMessage.ts", "../src/RTM_2_2.ts"],
4
- "sourcesContent": ["export { RTMProvider_2_1 } from \"./RTM_2_1\";\nexport { RTMProvider_2_2 } from \"./RTM_2_2\";", "import { SocketProvider, SocketProviderEvent, log } from \"@netless/forge-room\";\nimport EventEmitter from \"eventemitter3\";\nimport {v4 as uuidv4} from \"uuid\";\nimport {cyrb53} from \"./utils\";\n\nimport type {RTMClient, RTMEvents} from \"agora-rtm\";\n\nimport {ChunkedUpdateMessage} from \"./ChunkedUpdateMessage\";\n\nexport class RTMProvider_2_1 extends EventEmitter<SocketProviderEvent> implements SocketProvider {\n\n private rtmClient!: RTMClient;\n private roomId!: string;\n private userId!: string;\n\n private reconnectTimeout: any = null;\n private chunkedMessages: Map<string, ChunkedUpdateMessage[]> = new Map();\n private cachedMessages: ChunkedUpdateMessage[] = [];\n\n private intervalId: any = null;\n\n public constructor(rtmClient: RTMClient) {\n super();\n this.rtmClient = rtmClient;\n }\n\n private roomChannel(): string {\n return `r_${this.roomId}`;\n }\n\n private userChannel(userId: string): string {\n if (userId.length > 16) {\n userId = `${cyrb53(userId)}`;\n }\n return `${this.roomChannel()}_u_${userId}`;\n }\n\n /**\n * \u91CD\u65B0\u8BA2\u9605\u9891\u9053\n */\n public async resubscribe() {\n try {\n await this.rtmClient.subscribe(this.roomChannel());\n await this.rtmClient.subscribe(this.userChannel(this.userId));\n } catch(error: any) {\n this.emit(\"error\", `rtm subscribe fail, ${error}`);\n log(`rtm subscribe fail`, {\n error: error.toString(),\n }, \"error\");\n }\n }\n\n public async initialize(roomId: string, userId: string): Promise<void> {\n window.clearInterval(this.intervalId);\n this.roomId = roomId;\n this.userId = userId;\n this.rtmClient.addEventListener(\"message\", this.handleRtmMessage);\n this.rtmClient.addEventListener(\"presence\", this.handlePresence);\n // @ts-ignore\n this.rtmClient.addEventListener(\"status\", this.handleStatus);\n try {\n await this.rtmClient.subscribe(this.roomChannel());\n await this.rtmClient.subscribe(this.userChannel(this.userId));\n } catch(error: any) {\n this.emit(\"error\", `rtm subscribe fail, ${error}`);\n log(`rtm subscribe fail`, {\n error: error.toString(),\n }, \"error\");\n }\n this.intervalId = setInterval(() => {\n const msg = this.cachedMessages.shift();\n if (msg) {\n const channel = msg.target ? this.userChannel(msg.target) : this.roomChannel();\n this.rtmClient.publish(channel, msg.buffer, { customType: msg.customType }).catch(error => {\n log(`rtm publish failed`, {\n channel,\n code: error.code\n }, \"warning\");\n this.emit(\"error\", `rtm publish fail, ${error}`);\n });\n }\n }, 32);\n }\n\n public async dispose(): Promise<void> {\n this.rtmClient.removeEventListener(\"message\", this.handleRtmMessage);\n this.rtmClient.removeEventListener(\"presence\", this.handlePresence);\n // @ts-ignore\n this.rtmClient.removeEventListener(\"status\", this.handleStatus);\n await this.rtmClient.unsubscribe(this.roomChannel());\n await this.rtmClient.unsubscribe(this.userChannel(this.userId));\n window.clearInterval(this.intervalId);\n }\n\n private handleRtmMessage = (evt: RTMEvents.MessageEvent) => {\n this.receiveChunkMessage(ChunkedUpdateMessage.fromBuffer(evt.message as Uint8Array, \"\", evt.customType), evt.publisher);\n };\n\n private handleStatus = (connectionStatus: RTMEvents.RTMConnectionStatusChangeEvent) => {\n log(`rtm status update`, {\n state: connectionStatus.state,\n reason: connectionStatus.reason\n });\n if (connectionStatus.state === \"RECONNECTING\" && this.reconnectTimeout === null) {\n this.reconnectTimeout = window.setTimeout(() => {\n this.emit(\"error\", `reconnecting timeout`);\n this.emit(\"connectionStatusChange\", \"DISCONNECTED\");\n }, 30 * 1000);\n } else if (connectionStatus.state === \"CONNECTED\") {\n window.clearTimeout(this.reconnectTimeout);\n this.emit(\"connectionStatusChange\", \"CONNECTED\");\n } else if (connectionStatus.state === \"FAILED\") {\n window.clearTimeout(this.reconnectTimeout);\n this.emit(\"error\", `rtm connection failed, ${connectionStatus.reason}`);\n this.emit(\"connectionStatusChange\", \"DISCONNECTED\");\n } else if (connectionStatus.state === \"CONNECTING\") {\n this.emit(\"connectionStatusChange\", \"CONNECTING\");\n }\n }\n\n private handlePresence = (evt: RTMEvents.PresenceEvent) => {\n if (evt.channelName === this.roomChannel()) {\n if (evt.eventType === \"REMOTE_JOIN\") {\n this.emit(\"userJoin\", evt.publisher);\n } else if (evt.eventType === \"REMOTE_LEAVE\") {\n this.emit(\"userLeave\", evt.publisher);\n } else if (evt.eventType === \"REMOTE_TIMEOUT\") {\n this.emit(\"userLeave\", evt.publisher);\n } else if (evt.eventType === \"INTERVAL\") {\n // evt.interval.join.users\n }\n }\n };\n\n private receiveChunkMessage(msg: ChunkedUpdateMessage, publisher: string) {\n if (msg.length === 1) {\n this.emit(\"message\", msg.buf, publisher, msg.customType);\n return;\n }\n const chunks = this.chunkedMessages.get(msg.session) || [];\n chunks.push(msg);\n if (chunks.length === msg.length) {\n const buffer = chunks.sort((a, b) => a.index - b.index)\n .reduce((result, next) => {\n const buf = next.buf;\n const output = new Uint8Array(result.length + buf.length);\n output.set(result, 0);\n output.set(buf, result.length);\n return output;\n }, new Uint8Array());\n this.emit(\"message\", buffer, publisher, msg.customType);\n this.chunkedMessages.delete(msg.session);\n } else {\n this.chunkedMessages.set(msg.session, chunks);\n }\n }\n\n public publish(buf: Uint8Array, customType: string, target: string = \"\") {\n const session = uuidv4();\n // \u6D88\u606F\u5305\u4F53\u79EF, \u5355\u4F4D kb\n const size = buf.length * Uint8Array.BYTES_PER_ELEMENT / 1024;\n if (size < 16) {\n this.cachedMessages.push(ChunkedUpdateMessage.fromObject({\n buf: buf,\n length: 1,\n index: 0,\n session\n }, target, customType));\n } else {\n const chunkSize = 16 * 1024 / Uint8Array.BYTES_PER_ELEMENT;\n let len = Math.ceil(size / 16);\n let index = 0;\n while (index < len) {\n this.cachedMessages.push(ChunkedUpdateMessage.fromObject({\n buf: buf.slice(index * chunkSize, (index + 1) * chunkSize),\n length: len,\n index: index,\n session,\n }, target, customType));\n index += 1;\n }\n }\n }\n\n public async userList(): Promise<Set<string>> {\n const output = new Set<string>();\n const result = await this.rtmClient.presence.whoNow(this.roomChannel(), \"MESSAGE\", {\n includedState: false,\n });\n var nextPage: string | null = result.nextPage;\n result.occupants.forEach((userInfo) => {\n const { userId } = userInfo;\n output.add(userId);\n });\n while (nextPage) {\n const result = await this.rtmClient.presence.whoNow(this.roomChannel(), \"MESSAGE\", {\n includedState: false,\n page: nextPage,\n });\n nextPage = result.nextPage;\n result.occupants.forEach((userInfo) => {\n const { userId } = userInfo;\n output.add(userId);\n });\n }\n return output;\n }\n}\n", "export const cyrb53 = (str: string, seed = 0) => {\n let h1 = 0xdeadbeef ^ seed, h2 = 0x41c6ce57 ^ seed;\n for(let i = 0, ch; i < str.length; i++) {\n ch = str.charCodeAt(i);\n h1 = Math.imul(h1 ^ ch, 2654435761);\n h2 = Math.imul(h2 ^ ch, 1597334677);\n }\n h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507);\n h1 ^= Math.imul(h2 ^ (h2 >>> 13), 3266489909);\n h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507);\n h2 ^= Math.imul(h1 ^ (h1 >>> 13), 3266489909);\n\n return 4294967296 * (2097151 & h2) + (h1 >>> 0);\n};", "export type ChunkedUpdateMessageType = {\n buf: Uint8Array;\n index: number;\n length: number;\n session: string;\n}\n\nexport class ChunkedUpdateMessage {\n\n static fromObject(obj: ChunkedUpdateMessageType, target: string, customType: string): ChunkedUpdateMessage {\n const msg = new ChunkedUpdateMessage();\n msg.target = target;\n msg.customType = customType;\n\n const encoder = new TextEncoder();\n const sessionBuf = encoder.encode(obj.session);\n\n // header \u6309\u987A\u5E8F\u6307\u793A buf, session, target, customType \u90E8\u5206\u7684 uint8 \u957F\u5EA6\n msg.header = new DataView(new Uint8Array(10).buffer);\n\n msg.header.setUint32(0, obj.buf.length, false);\n msg.header.setUint32(4, sessionBuf.length, false);\n msg.header.setUint8(8, obj.index);\n msg.header.setUint8(9, obj.length);\n\n msg.buffer = new Uint8Array(\n obj.buf.length + sessionBuf.length + msg.header.buffer.byteLength\n );\n\n let len = 0;\n msg.buffer.set(new Uint8Array(msg.header.buffer), len);\n len += msg.header.buffer.byteLength;\n msg.buffer.set(obj.buf, len);\n len += obj.buf.length;\n msg.buffer.set(sessionBuf, len);\n\n return msg;\n }\n\n static fromBuffer(buf: Uint8Array, target: string, customType: string) {\n const msg = new ChunkedUpdateMessage();\n\n msg.header = new DataView(buf.slice(0, 10).buffer);\n msg.buffer = buf.slice(10);\n msg.target = target;\n msg.customType = customType;\n\n return msg;\n }\n\n public target!: string;\n public customType!: string;\n public buffer!: Uint8Array;\n private header!: DataView;\n\n public get buf(): Uint8Array {\n const len = this.header.getInt32(0);\n return this.buffer.slice(0, len);\n }\n\n public get index(): number {\n return this.header.getUint8(8);\n }\n\n public get length(): number {\n return this.header.getUint8(9);\n }\n\n public get session(): string {\n const start = this.header.getInt32(0);\n const sessionBuf = this.buffer.slice(start, start + this.header.getInt32(4));\n const textDecoder = new TextDecoder();\n return textDecoder.decode(sessionBuf);\n }\n\n private constructor() {}\n}", "import { SocketProvider, SocketProviderEvent, log } from \"@netless/forge-room\";\nimport EventEmitter from \"eventemitter3\";\nimport {v4 as uuidv4} from \"uuid\";\nimport {cyrb53} from \"./utils\";\n\nimport type {RTMClient, RTMEvents} from \"agora-rtm\";\nimport {ChunkedUpdateMessage} from \"./ChunkedUpdateMessage\";\n\nexport class RTMProvider_2_2 extends EventEmitter<SocketProviderEvent> implements SocketProvider {\n\n private rtmClient!: RTMClient;\n private roomId!: string;\n private userId!: string;\n\n private reconnectTimeout: any = null;\n private chunkedMessages: Map<string, ChunkedUpdateMessage[]> = new Map();\n private cachedMessages: ChunkedUpdateMessage[] = [];\n\n private intervalId: any = null;\n\n public constructor(rtmClient: RTMClient) {\n super();\n this.rtmClient = rtmClient;\n }\n\n private roomChannel(): string {\n return `r_${this.roomId}`;\n }\n\n private userChannel(userId: string): string {\n if (userId.length > 16) {\n userId = `${cyrb53(userId)}`;\n }\n return `${this.roomChannel()}_u_${userId}`;\n }\n\n public async initialize(roomId: string, userId: string): Promise<void> {\n window.clearInterval(this.intervalId);\n this.roomId = roomId;\n this.userId = userId;\n this.rtmClient.addEventListener(\"message\", this.handleRtmMessage);\n this.rtmClient.addEventListener(\"presence\", this.handlePresence);\n // @ts-ignore\n this.rtmClient.addEventListener(\"status\", this.handleStatus);\n try {\n await this.rtmClient.subscribe(this.roomChannel());\n await this.rtmClient.subscribe(this.userChannel(this.userId));\n } catch(error: any) {\n this.emit(\"error\", `rtm subscribe fail, ${error}`);\n log(`rtm subscribe fail`, {\n error: error.toString(),\n rtm: \"2.2\"\n }, \"error\");\n }\n this.intervalId = setInterval(() => {\n const msg = this.cachedMessages.shift();\n if (msg) {\n const channel = msg.target ? this.userChannel(msg.target) : this.roomChannel();\n this.rtmClient.publish(channel, msg.buffer, { customType: msg.customType }).catch(error => {\n log(`rtm publish failed`, {\n channel,\n code: error.code,\n rtm: \"2.2\"\n }, \"warning\");\n this.emit(\"error\", `rtm publish fail, ${error}`);\n });\n }\n }, 32);\n }\n\n /**\n * \u91CD\u65B0\u8BA2\u9605\u9891\u9053\n */\n public async resubscribe() {\n try {\n await this.rtmClient.subscribe(this.roomChannel());\n await this.rtmClient.subscribe(this.userChannel(this.userId));\n } catch(error: any) {\n this.emit(\"error\", `rtm subscribe fail, ${error}`);\n log(`rtm subscribe fail`, {\n error: error.toString(),\n }, \"error\");\n }\n }\n\n public async dispose(): Promise<void> {\n this.rtmClient.removeEventListener(\"message\", this.handleRtmMessage);\n this.rtmClient.removeEventListener(\"presence\", this.handlePresence);\n // @ts-ignore\n this.rtmClient.removeEventListener(\"status\", this.handleStatus);\n await this.rtmClient.unsubscribe(this.roomChannel());\n await this.rtmClient.unsubscribe(this.userChannel(this.userId));\n window.clearInterval(this.intervalId);\n }\n\n private handleRtmMessage = (evt: RTMEvents.MessageEvent) => {\n this.receiveChunkMessage(ChunkedUpdateMessage.fromBuffer(evt.message as Uint8Array, \"\", evt.customType), evt.publisher);\n };\n\n private handleStatus = (connectionStatus: RTMEvents.RTMConnectionStatusChangeEvent) => {\n log(`rtm status update`, {\n state: connectionStatus.state,\n reason: connectionStatus.reason,\n rtm: \"2.2\"\n });\n if (connectionStatus.state === \"RECONNECTING\" && this.reconnectTimeout === null) {\n this.reconnectTimeout = window.setTimeout(() => {\n this.emit(\"error\", `reconnecting timeout`);\n this.emit(\"connectionStatusChange\", \"DISCONNECTED\");\n }, 30 * 1000);\n } else if (connectionStatus.state === \"CONNECTED\") {\n window.clearTimeout(this.reconnectTimeout);\n this.emit(\"connectionStatusChange\", \"CONNECTED\");\n } else if (connectionStatus.state === \"FAILED\") {\n window.clearTimeout(this.reconnectTimeout);\n this.emit(\"error\", `rtm connection failed, ${connectionStatus.reason}`);\n this.emit(\"connectionStatusChange\", \"DISCONNECTED\");\n } else if (connectionStatus.state === \"CONNECTING\") {\n this.emit(\"connectionStatusChange\", \"CONNECTING\");\n }\n }\n\n private handlePresence = (evt: RTMEvents.PresenceEvent) => {\n if (evt.channelName === this.roomChannel()) {\n if (evt.eventType === \"REMOTE_JOIN\") {\n this.emit(\"userJoin\", evt.publisher);\n } else if (evt.eventType === \"REMOTE_LEAVE\") {\n this.emit(\"userLeave\", evt.publisher);\n } else if (evt.eventType === \"REMOTE_TIMEOUT\") {\n this.emit(\"userLeave\", evt.publisher);\n } else if (evt.eventType === \"INTERVAL\") {\n // evt.interval.join.users\n }\n }\n };\n\n private receiveChunkMessage(msg: ChunkedUpdateMessage, publisher: string) {\n if (msg.length === 1) {\n this.emit(\"message\", msg.buf, publisher, msg.customType);\n return;\n }\n const chunks = this.chunkedMessages.get(msg.session) || [];\n chunks.push(msg);\n if (chunks.length === msg.length) {\n const buffer = chunks.sort((a, b) => a.index - b.index)\n .reduce((result, next) => {\n const buf = next.buf;\n const output = new Uint8Array(result.length + buf.length);\n output.set(result, 0);\n output.set(buf, result.length);\n return output;\n }, new Uint8Array());\n this.emit(\"message\", buffer, publisher, msg.customType);\n this.chunkedMessages.delete(msg.session);\n } else {\n this.chunkedMessages.set(msg.session, chunks);\n }\n }\n\n public publish(buf: Uint8Array, customType: string, target: string = \"\") {\n const session = uuidv4();\n // \u6D88\u606F\u5305\u4F53\u79EF, \u5355\u4F4D kb\n const size = buf.length * Uint8Array.BYTES_PER_ELEMENT / 1024;\n if (size < 16) {\n this.cachedMessages.push(ChunkedUpdateMessage.fromObject({\n buf: buf,\n length: 1,\n index: 0,\n session\n }, target, customType));\n } else {\n const chunkSize = 16 * 1024 / Uint8Array.BYTES_PER_ELEMENT;\n let len = Math.ceil(size / 16);\n let index = 0;\n while (index < len) {\n this.cachedMessages.push(ChunkedUpdateMessage.fromObject({\n buf: buf.slice(index * chunkSize, (index + 1) * chunkSize),\n length: len,\n index: index,\n session,\n }, target, customType));\n index += 1;\n }\n }\n }\n\n public async userList(): Promise<Set<string>> {\n const output = new Set<string>();\n const result = await this.rtmClient.presence.whoNow(this.roomChannel(), \"MESSAGE\", {\n includedState: false,\n });\n var nextPage: string | null = result.nextPage;\n result.occupants.forEach((userInfo) => {\n const { userId } = userInfo;\n output.add(userId);\n });\n while (nextPage) {\n const result = await this.rtmClient.presence.whoNow(this.roomChannel(), \"MESSAGE\", {\n includedState: false,\n page: nextPage,\n });\n nextPage = result.nextPage;\n result.occupants.forEach((userInfo) => {\n const { userId } = userInfo;\n output.add(userId);\n });\n }\n return output;\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["EventEmitter", "uuidv4", "result", "import_forge_room", "import_eventemitter3", "import_uuid", "EventEmitter", "uuidv4", "result"]
4
+ "sourcesContent": ["export { RTMProvider_2_1 } from \"./RTM_2_1\";\nexport { RTMProvider_2_2 } from \"./RTM_2_2\";", "function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { log } from \"@netless/forge-room\";\nimport EventEmitter from \"eventemitter3\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { cyrb53 } from \"./utils\";\nimport { ChunkedUpdateMessage } from \"./ChunkedUpdateMessage\";\nexport class RTMProvider_2_1 extends EventEmitter {\n constructor(rtmClient) {\n super();\n _defineProperty(this, \"rtmClient\", void 0);\n _defineProperty(this, \"roomId\", void 0);\n _defineProperty(this, \"userId\", void 0);\n _defineProperty(this, \"reconnectTimeout\", null);\n _defineProperty(this, \"chunkedMessages\", new Map());\n _defineProperty(this, \"cachedMessages\", []);\n _defineProperty(this, \"intervalId\", null);\n _defineProperty(this, \"handleRtmMessage\", evt => {\n if (!(evt.message instanceof Uint8Array)) {\n log(`rtm message not Uint8Array`, {\n channel: evt.channelName,\n publisher: evt.publisher,\n message: evt.message\n });\n return;\n }\n this.receiveChunkMessage(ChunkedUpdateMessage.fromBuffer(evt.message, \"\", evt.customType), evt.publisher);\n });\n _defineProperty(this, \"handleStatus\", connectionStatus => {\n log(`rtm status update`, {\n state: connectionStatus.state,\n reason: connectionStatus.reason\n });\n if (connectionStatus.state === \"RECONNECTING\" && this.reconnectTimeout === null) {\n this.reconnectTimeout = window.setTimeout(() => {\n this.emit(\"error\", `reconnecting timeout`);\n this.emit(\"connectionStatusChange\", \"DISCONNECTED\");\n }, 30 * 1000);\n } else if (connectionStatus.state === \"CONNECTED\") {\n window.clearTimeout(this.reconnectTimeout);\n this.emit(\"connectionStatusChange\", \"CONNECTED\");\n } else if (connectionStatus.state === \"FAILED\") {\n window.clearTimeout(this.reconnectTimeout);\n this.emit(\"error\", `rtm connection failed, ${connectionStatus.reason}`);\n this.emit(\"connectionStatusChange\", \"DISCONNECTED\");\n } else if (connectionStatus.state === \"CONNECTING\") {\n this.emit(\"connectionStatusChange\", \"CONNECTING\");\n }\n });\n _defineProperty(this, \"handlePresence\", evt => {\n if (evt.channelName === this.roomChannel()) {\n if (evt.eventType === \"REMOTE_JOIN\") {\n this.emit(\"userJoin\", evt.publisher);\n } else if (evt.eventType === \"REMOTE_LEAVE\") {\n this.emit(\"userLeave\", evt.publisher);\n } else if (evt.eventType === \"REMOTE_TIMEOUT\") {\n this.emit(\"userLeave\", evt.publisher);\n } else if (evt.eventType === \"INTERVAL\") {\n // evt.interval.join.users\n }\n }\n });\n this.rtmClient = rtmClient;\n }\n roomChannel() {\n return `r_${this.roomId}`;\n }\n userChannel(userId) {\n if (userId.length > 16) {\n userId = `${cyrb53(userId)}`;\n }\n return `${this.roomChannel()}_u_${userId}`;\n }\n\n /**\n * \u91CD\u65B0\u8BA2\u9605\u9891\u9053\n */\n async resubscribe() {\n try {\n await this.rtmClient.subscribe(this.roomChannel());\n await this.rtmClient.subscribe(this.userChannel(this.userId));\n } catch (error) {\n this.emit(\"error\", `rtm subscribe fail, ${error}`);\n log(`rtm subscribe fail`, {\n error: error.toString()\n }, \"error\");\n }\n }\n async initialize(roomId, userId) {\n window.clearInterval(this.intervalId);\n this.roomId = roomId;\n this.userId = userId;\n this.rtmClient.addEventListener(\"message\", this.handleRtmMessage);\n this.rtmClient.addEventListener(\"presence\", this.handlePresence);\n // @ts-ignore\n this.rtmClient.addEventListener(\"status\", this.handleStatus);\n try {\n await this.rtmClient.subscribe(this.roomChannel());\n await this.rtmClient.subscribe(this.userChannel(this.userId));\n } catch (error) {\n this.emit(\"error\", `rtm subscribe fail, ${error}`);\n log(`rtm subscribe fail`, {\n error: error.toString()\n }, \"error\");\n }\n this.intervalId = setInterval(() => {\n const msg = this.cachedMessages.shift();\n if (msg) {\n const channel = msg.target ? this.userChannel(msg.target) : this.roomChannel();\n this.rtmClient.publish(channel, msg.buffer, {\n customType: msg.customType\n }).catch(error => {\n log(`rtm publish failed`, {\n channel,\n code: error.code\n }, \"warning\");\n this.emit(\"error\", `rtm publish fail, ${error}`);\n });\n }\n }, 32);\n }\n async dispose() {\n this.rtmClient.removeEventListener(\"message\", this.handleRtmMessage);\n this.rtmClient.removeEventListener(\"presence\", this.handlePresence);\n // @ts-ignore\n this.rtmClient.removeEventListener(\"status\", this.handleStatus);\n await this.rtmClient.unsubscribe(this.roomChannel());\n await this.rtmClient.unsubscribe(this.userChannel(this.userId));\n window.clearInterval(this.intervalId);\n }\n receiveChunkMessage(msg, publisher) {\n if (msg.length === 1) {\n this.emit(\"message\", msg.buf, publisher, msg.customType);\n return;\n }\n const chunks = this.chunkedMessages.get(msg.session) || [];\n chunks.push(msg);\n if (chunks.length === msg.length) {\n const buffer = chunks.sort((a, b) => a.index - b.index).reduce((result, next) => {\n const buf = next.buf;\n const output = new Uint8Array(result.length + buf.length);\n output.set(result, 0);\n output.set(buf, result.length);\n return output;\n }, new Uint8Array());\n this.emit(\"message\", buffer, publisher, msg.customType);\n this.chunkedMessages.delete(msg.session);\n } else {\n this.chunkedMessages.set(msg.session, chunks);\n }\n }\n publish(buf, customType) {\n let target = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"\";\n const session = uuidv4();\n // \u6D88\u606F\u5305\u4F53\u79EF, \u5355\u4F4D kb\n const size = buf.length * Uint8Array.BYTES_PER_ELEMENT / 1024;\n if (size < 16) {\n this.cachedMessages.push(ChunkedUpdateMessage.fromObject({\n buf: buf,\n length: 1,\n index: 0,\n session\n }, target, customType));\n } else {\n const chunkSize = 16 * 1024 / Uint8Array.BYTES_PER_ELEMENT;\n let len = Math.ceil(size / 16);\n let index = 0;\n while (index < len) {\n this.cachedMessages.push(ChunkedUpdateMessage.fromObject({\n buf: buf.slice(index * chunkSize, (index + 1) * chunkSize),\n length: len,\n index: index,\n session\n }, target, customType));\n index += 1;\n }\n }\n }\n async userList() {\n const output = new Set();\n const result = await this.rtmClient.presence.whoNow(this.roomChannel(), \"MESSAGE\", {\n includedState: false\n });\n var nextPage = result.nextPage;\n result.occupants.forEach(userInfo => {\n const {\n userId\n } = userInfo;\n output.add(userId);\n });\n while (nextPage) {\n const result = await this.rtmClient.presence.whoNow(this.roomChannel(), \"MESSAGE\", {\n includedState: false,\n page: nextPage\n });\n nextPage = result.nextPage;\n result.occupants.forEach(userInfo => {\n const {\n userId\n } = userInfo;\n output.add(userId);\n });\n }\n return output;\n }\n}", "export const cyrb53 = function (str) {\n let seed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n let h1 = 0xdeadbeef ^ seed,\n h2 = 0x41c6ce57 ^ seed;\n for (let i = 0, ch; i < str.length; i++) {\n ch = str.charCodeAt(i);\n h1 = Math.imul(h1 ^ ch, 2654435761);\n h2 = Math.imul(h2 ^ ch, 1597334677);\n }\n h1 = Math.imul(h1 ^ h1 >>> 16, 2246822507);\n h1 ^= Math.imul(h2 ^ h2 >>> 13, 3266489909);\n h2 = Math.imul(h2 ^ h2 >>> 16, 2246822507);\n h2 ^= Math.imul(h1 ^ h1 >>> 13, 3266489909);\n return 4294967296 * (2097151 & h2) + (h1 >>> 0);\n};", "function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nexport class ChunkedUpdateMessage {\n static fromObject(obj, target, customType) {\n const msg = new ChunkedUpdateMessage();\n msg.target = target;\n msg.customType = customType;\n const encoder = new TextEncoder();\n const sessionBuf = encoder.encode(obj.session);\n\n // header \u6309\u987A\u5E8F\u6307\u793A buf, session, target, customType \u90E8\u5206\u7684 uint8 \u957F\u5EA6\n msg.header = new DataView(new Uint8Array(10).buffer);\n msg.header.setUint32(0, obj.buf.length, false);\n msg.header.setUint32(4, sessionBuf.length, false);\n msg.header.setUint8(8, obj.index);\n msg.header.setUint8(9, obj.length);\n msg.buffer = new Uint8Array(obj.buf.length + sessionBuf.length + msg.header.buffer.byteLength);\n let len = 0;\n msg.buffer.set(new Uint8Array(msg.header.buffer), len);\n len += msg.header.buffer.byteLength;\n msg.buffer.set(obj.buf, len);\n len += obj.buf.length;\n msg.buffer.set(sessionBuf, len);\n return msg;\n }\n static fromBuffer(buf, target, customType) {\n const msg = new ChunkedUpdateMessage();\n msg.header = new DataView(buf.slice(0, 10).buffer);\n msg.buffer = buf.slice(10);\n msg.target = target;\n msg.customType = customType;\n return msg;\n }\n get buf() {\n const len = this.header.getInt32(0);\n return this.buffer.slice(0, len);\n }\n get index() {\n return this.header.getUint8(8);\n }\n get length() {\n return this.header.getUint8(9);\n }\n get session() {\n const start = this.header.getInt32(0);\n const sessionBuf = this.buffer.slice(start, start + this.header.getInt32(4));\n const textDecoder = new TextDecoder();\n return textDecoder.decode(sessionBuf);\n }\n constructor() {\n _defineProperty(this, \"target\", void 0);\n _defineProperty(this, \"customType\", void 0);\n _defineProperty(this, \"buffer\", void 0);\n _defineProperty(this, \"header\", void 0);\n }\n}", "function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport { log } from \"@netless/forge-room\";\nimport EventEmitter from \"eventemitter3\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { cyrb53 } from \"./utils\";\nimport { ChunkedUpdateMessage } from \"./ChunkedUpdateMessage\";\nexport class RTMProvider_2_2 extends EventEmitter {\n constructor(rtmClient) {\n super();\n _defineProperty(this, \"rtmClient\", void 0);\n _defineProperty(this, \"roomId\", void 0);\n _defineProperty(this, \"userId\", void 0);\n _defineProperty(this, \"reconnectTimeout\", null);\n _defineProperty(this, \"chunkedMessages\", new Map());\n _defineProperty(this, \"cachedMessages\", []);\n _defineProperty(this, \"intervalId\", null);\n _defineProperty(this, \"handleRtmMessage\", evt => {\n if (!(evt.message instanceof Uint8Array)) {\n log(`rtm message not Uint8Array`, {\n channel: evt.channelName,\n publisher: evt.publisher,\n message: evt.message\n });\n return;\n }\n this.receiveChunkMessage(ChunkedUpdateMessage.fromBuffer(evt.message, \"\", evt.customType), evt.publisher);\n });\n _defineProperty(this, \"handleStatus\", connectionStatus => {\n log(`rtm status update`, {\n state: connectionStatus.state,\n reason: connectionStatus.reason,\n rtm: \"2.2\"\n });\n if (connectionStatus.state === \"RECONNECTING\" && this.reconnectTimeout === null) {\n this.reconnectTimeout = window.setTimeout(() => {\n this.emit(\"error\", `reconnecting timeout`);\n this.emit(\"connectionStatusChange\", \"DISCONNECTED\");\n }, 30 * 1000);\n } else if (connectionStatus.state === \"CONNECTED\") {\n window.clearTimeout(this.reconnectTimeout);\n this.emit(\"connectionStatusChange\", \"CONNECTED\");\n } else if (connectionStatus.state === \"FAILED\") {\n window.clearTimeout(this.reconnectTimeout);\n this.emit(\"error\", `rtm connection failed, ${connectionStatus.reason}`);\n this.emit(\"connectionStatusChange\", \"DISCONNECTED\");\n } else if (connectionStatus.state === \"CONNECTING\") {\n this.emit(\"connectionStatusChange\", \"CONNECTING\");\n }\n });\n _defineProperty(this, \"handlePresence\", evt => {\n if (evt.channelName === this.roomChannel()) {\n if (evt.eventType === \"REMOTE_JOIN\") {\n this.emit(\"userJoin\", evt.publisher);\n } else if (evt.eventType === \"REMOTE_LEAVE\") {\n this.emit(\"userLeave\", evt.publisher);\n } else if (evt.eventType === \"REMOTE_TIMEOUT\") {\n this.emit(\"userLeave\", evt.publisher);\n } else if (evt.eventType === \"INTERVAL\") {\n // evt.interval.join.users\n }\n }\n });\n this.rtmClient = rtmClient;\n }\n roomChannel() {\n return `r_${this.roomId}`;\n }\n userChannel(userId) {\n if (userId.length > 16) {\n userId = `${cyrb53(userId)}`;\n }\n return `${this.roomChannel()}_u_${userId}`;\n }\n async initialize(roomId, userId) {\n window.clearInterval(this.intervalId);\n this.roomId = roomId;\n this.userId = userId;\n this.rtmClient.addEventListener(\"message\", this.handleRtmMessage);\n this.rtmClient.addEventListener(\"presence\", this.handlePresence);\n // @ts-ignore\n this.rtmClient.addEventListener(\"status\", this.handleStatus);\n try {\n await this.rtmClient.subscribe(this.roomChannel());\n await this.rtmClient.subscribe(this.userChannel(this.userId));\n } catch (error) {\n this.emit(\"error\", `rtm subscribe fail, ${error}`);\n log(`rtm subscribe fail`, {\n error: error.toString(),\n rtm: \"2.2\"\n }, \"error\");\n }\n this.intervalId = setInterval(() => {\n const msg = this.cachedMessages.shift();\n if (msg) {\n const channel = msg.target ? this.userChannel(msg.target) : this.roomChannel();\n this.rtmClient.publish(channel, msg.buffer, {\n customType: msg.customType\n }).catch(error => {\n log(`rtm publish failed`, {\n channel,\n code: error.code,\n rtm: \"2.2\"\n }, \"warning\");\n this.emit(\"error\", `rtm publish fail, ${error}`);\n });\n }\n }, 32);\n }\n\n /**\n * \u91CD\u65B0\u8BA2\u9605\u9891\u9053\n */\n async resubscribe() {\n try {\n await this.rtmClient.subscribe(this.roomChannel());\n await this.rtmClient.subscribe(this.userChannel(this.userId));\n } catch (error) {\n this.emit(\"error\", `rtm subscribe fail, ${error}`);\n log(`rtm subscribe fail`, {\n error: error.toString()\n }, \"error\");\n }\n }\n async dispose() {\n this.rtmClient.removeEventListener(\"message\", this.handleRtmMessage);\n this.rtmClient.removeEventListener(\"presence\", this.handlePresence);\n // @ts-ignore\n this.rtmClient.removeEventListener(\"status\", this.handleStatus);\n await this.rtmClient.unsubscribe(this.roomChannel());\n await this.rtmClient.unsubscribe(this.userChannel(this.userId));\n window.clearInterval(this.intervalId);\n }\n receiveChunkMessage(msg, publisher) {\n if (msg.length === 1) {\n this.emit(\"message\", msg.buf, publisher, msg.customType);\n return;\n }\n const chunks = this.chunkedMessages.get(msg.session) || [];\n chunks.push(msg);\n if (chunks.length === msg.length) {\n const buffer = chunks.sort((a, b) => a.index - b.index).reduce((result, next) => {\n const buf = next.buf;\n const output = new Uint8Array(result.length + buf.length);\n output.set(result, 0);\n output.set(buf, result.length);\n return output;\n }, new Uint8Array());\n this.emit(\"message\", buffer, publisher, msg.customType);\n this.chunkedMessages.delete(msg.session);\n } else {\n this.chunkedMessages.set(msg.session, chunks);\n }\n }\n publish(buf, customType) {\n let target = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"\";\n const session = uuidv4();\n // \u6D88\u606F\u5305\u4F53\u79EF, \u5355\u4F4D kb\n const size = buf.length * Uint8Array.BYTES_PER_ELEMENT / 1024;\n if (size < 16) {\n this.cachedMessages.push(ChunkedUpdateMessage.fromObject({\n buf: buf,\n length: 1,\n index: 0,\n session\n }, target, customType));\n } else {\n const chunkSize = 16 * 1024 / Uint8Array.BYTES_PER_ELEMENT;\n let len = Math.ceil(size / 16);\n let index = 0;\n while (index < len) {\n this.cachedMessages.push(ChunkedUpdateMessage.fromObject({\n buf: buf.slice(index * chunkSize, (index + 1) * chunkSize),\n length: len,\n index: index,\n session\n }, target, customType));\n index += 1;\n }\n }\n }\n async userList() {\n const output = new Set();\n const result = await this.rtmClient.presence.whoNow(this.roomChannel(), \"MESSAGE\", {\n includedState: false\n });\n var nextPage = result.nextPage;\n result.occupants.forEach(userInfo => {\n const {\n userId\n } = userInfo;\n output.add(userId);\n });\n while (nextPage) {\n const result = await this.rtmClient.presence.whoNow(this.roomChannel(), \"MESSAGE\", {\n includedState: false,\n page: nextPage\n });\n nextPage = result.nextPage;\n result.occupants.forEach(userInfo => {\n const {\n userId\n } = userInfo;\n output.add(userId);\n });\n }\n return output;\n }\n}"],
5
+ "mappings": "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",
6
+ "names": ["_defineProperty", "_toPropertyKey", "_toPrimitive", "EventEmitter", "uuidv4", "result", "import_forge_room", "import_eventemitter3", "import_uuid", "_defineProperty", "_toPropertyKey", "_toPrimitive", "EventEmitter", "uuidv4", "result"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@netless/forge-rtm",
3
- "version": "0.1.7",
3
+ "version": "0.1.8",
4
4
  "description": "",
5
5
  "main": "dist/rtm-provider.js",
6
6
  "module": "dist/rtm-provider.esm.js",
@@ -11,7 +11,7 @@
11
11
  "js-base64": "^3.7.7",
12
12
  "eventemitter3": "^5.0.1",
13
13
  "uuid": "^9.0.1",
14
- "@netless/forge-room": "0.1.4"
14
+ "@netless/forge-room": "0.1.5"
15
15
  },
16
16
  "keywords": [],
17
17
  "author": "",