@juzi/wechaty-puppet-service 1.0.9 → 1.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/cjs/src/client/puppet-service.d.ts.map +1 -1
  2. package/dist/cjs/src/client/puppet-service.js +3 -0
  3. package/dist/cjs/src/client/puppet-service.js.map +1 -1
  4. package/dist/cjs/src/config.d.ts.map +1 -1
  5. package/dist/cjs/src/config.js +1 -0
  6. package/dist/cjs/src/config.js.map +1 -1
  7. package/dist/cjs/src/package-json.js +3 -3
  8. package/dist/cjs/src/package-json.js.map +1 -1
  9. package/dist/cjs/src/server/event-stream-manager.d.ts +3 -1
  10. package/dist/cjs/src/server/event-stream-manager.d.ts.map +1 -1
  11. package/dist/cjs/src/server/event-stream-manager.js +34 -31
  12. package/dist/cjs/src/server/event-stream-manager.js.map +1 -1
  13. package/dist/cjs/src/server/puppet-implementation.d.ts.map +1 -1
  14. package/dist/cjs/src/server/puppet-implementation.js +4 -0
  15. package/dist/cjs/src/server/puppet-implementation.js.map +1 -1
  16. package/dist/esm/src/client/puppet-service.d.ts.map +1 -1
  17. package/dist/esm/src/client/puppet-service.js +3 -0
  18. package/dist/esm/src/client/puppet-service.js.map +1 -1
  19. package/dist/esm/src/config.d.ts.map +1 -1
  20. package/dist/esm/src/config.js +1 -0
  21. package/dist/esm/src/config.js.map +1 -1
  22. package/dist/esm/src/package-json.js +3 -3
  23. package/dist/esm/src/package-json.js.map +1 -1
  24. package/dist/esm/src/server/event-stream-manager.d.ts +3 -1
  25. package/dist/esm/src/server/event-stream-manager.d.ts.map +1 -1
  26. package/dist/esm/src/server/event-stream-manager.js +34 -31
  27. package/dist/esm/src/server/event-stream-manager.js.map +1 -1
  28. package/dist/esm/src/server/puppet-implementation.d.ts.map +1 -1
  29. package/dist/esm/src/server/puppet-implementation.js +4 -0
  30. package/dist/esm/src/server/puppet-implementation.js.map +1 -1
  31. package/package.json +3 -3
  32. package/src/client/puppet-service.ts +16 -13
  33. package/src/config.ts +1 -0
  34. package/src/package-json.ts +3 -3
  35. package/src/server/event-stream-manager.ts +38 -38
  36. package/src/server/puppet-implementation.ts +4 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@juzi/wechaty-puppet-service",
3
- "version": "1.0.9",
3
+ "version": "1.0.12",
4
4
  "description": "Puppet Service for Wechaty",
5
5
  "type": "module",
6
6
  "exports": {
@@ -65,10 +65,10 @@
65
65
  "why-is-node-running": "^2.2.1"
66
66
  },
67
67
  "peerDependencies": {
68
- "@juzi/wechaty-puppet": "1.0.6"
68
+ "@juzi/wechaty-puppet": "1.0.7"
69
69
  },
70
70
  "dependencies": {
71
- "@juzi/wechaty-grpc": "1.0.6",
71
+ "@juzi/wechaty-grpc": "1.0.7",
72
72
  "clone-class": "^1.1.1",
73
73
  "ducks": "^1.0.2",
74
74
  "file-box": "^1.5.5",
@@ -689,7 +689,8 @@ class PuppetService extends PUPPET.Puppet {
689
689
  * `weixin` is deprecated, will be removed after Dec 31, 2022
690
690
  * use `handle` instead.
691
691
  */
692
- weixin : response.getWeixin(),
692
+ weixin : response.getWeixin(),
693
+ additionalInfo: response.getAdditionalInfo(),
693
694
  }
694
695
 
695
696
  await this._payloadStore.contact?.set(id, payload)
@@ -1380,13 +1381,14 @@ class PuppetService extends PUPPET.Puppet {
1380
1381
  )(request)
1381
1382
 
1382
1383
  const payload: PUPPET.payloads.Room = {
1383
- adminIdList : response.getAdminIdsList(),
1384
- avatar : response.getAvatar(),
1385
- handle : response.getHandle(),
1386
- id : response.getId(),
1387
- memberIdList : response.getMemberIdsList(),
1388
- ownerId : response.getOwnerId(),
1389
- topic : response.getTopic(),
1384
+ adminIdList : response.getAdminIdsList(),
1385
+ avatar : response.getAvatar(),
1386
+ handle : response.getHandle(),
1387
+ id : response.getId(),
1388
+ memberIdList : response.getMemberIdsList(),
1389
+ ownerId : response.getOwnerId(),
1390
+ topic : response.getTopic(),
1391
+ additionalInfo: response.getAdditionalInfo(),
1390
1392
  }
1391
1393
 
1392
1394
  await this._payloadStore.room?.set(id, payload)
@@ -1598,11 +1600,12 @@ class PuppetService extends PUPPET.Puppet {
1598
1600
  )(request)
1599
1601
 
1600
1602
  const payload: PUPPET.payloads.RoomMember = {
1601
- avatar : response.getAvatar(),
1602
- id : response.getId(),
1603
- inviterId : response.getInviterId(),
1604
- name : response.getName(),
1605
- roomAlias : response.getRoomAlias(),
1603
+ avatar : response.getAvatar(),
1604
+ id : response.getId(),
1605
+ inviterId : response.getInviterId(),
1606
+ name : response.getName(),
1607
+ roomAlias : response.getRoomAlias(),
1608
+ additionalInfo: response.getAdditionalInfo(),
1606
1609
  }
1607
1610
 
1608
1611
  await this._payloadStore.roomMember?.set(roomId, {
package/src/config.ts CHANGED
@@ -30,6 +30,7 @@ const GRPC_OPTIONS = {
30
30
  export const NO_LOG_EVENTS: grpcPuppet.EventTypeMap[keyof grpcPuppet.EventTypeMap][] = [
31
31
  grpcPuppet.EventType.EVENT_TYPE_HEARTBEAT,
32
32
  grpcPuppet.EventType.EVENT_TYPE_DONG,
33
+ grpcPuppet.EventType.EVENT_TYPE_DIRTY,
33
34
  ]
34
35
 
35
36
  export {
@@ -4,7 +4,7 @@
4
4
  import type { PackageJson } from 'type-fest'
5
5
  export const packageJson: PackageJson = {
6
6
  "name": "@juzi/wechaty-puppet-service",
7
- "version": "1.0.9",
7
+ "version": "1.0.12",
8
8
  "description": "Puppet Service for Wechaty",
9
9
  "type": "module",
10
10
  "exports": {
@@ -69,10 +69,10 @@ export const packageJson: PackageJson = {
69
69
  "why-is-node-running": "^2.2.1"
70
70
  },
71
71
  "peerDependencies": {
72
- "@juzi/wechaty-puppet": "1.0.6"
72
+ "@juzi/wechaty-puppet": "1.0.7"
73
73
  },
74
74
  "dependencies": {
75
- "@juzi/wechaty-grpc": "1.0.6",
75
+ "@juzi/wechaty-grpc": "1.0.7",
76
76
  "clone-class": "^1.1.1",
77
77
  "ducks": "^1.0.2",
78
78
  "file-box": "^1.5.5",
@@ -34,6 +34,7 @@ class EventStreamManager {
34
34
  protected eventStream: undefined | grpc.ServerWritableStream<grpcPuppet.EventRequest, grpcPuppet.EventResponse>
35
35
 
36
36
  private puppetListening = false
37
+ private offCallbackList: (() => void)[] = []
37
38
 
38
39
  constructor (
39
40
  public puppet: PUPPET.impls.PuppetInterface,
@@ -53,10 +54,14 @@ class EventStreamManager {
53
54
  if (this.eventStream) {
54
55
  throw new Error('can not set twice')
55
56
  }
57
+
58
+ // clear all listeners before load new ones
59
+ this.removePuppetListeners()
60
+
56
61
  this.eventStream = stream
57
62
 
58
- const removeAllListeners = this.connectPuppetEventToStreamingCall()
59
- this.onStreamingCallEnd(removeAllListeners)
63
+ this.connectPuppetEventToStreamingCall()
64
+ this.onStreamingCallEnd()
60
65
 
61
66
  /**
62
67
  * Huan(202108):
@@ -112,6 +117,7 @@ class EventStreamManager {
112
117
  throw new Error('no this.eventStream')
113
118
  }
114
119
 
120
+ this.removePuppetListeners()
115
121
  this.eventStream.end()
116
122
  this.eventStream = undefined
117
123
  }
@@ -150,19 +156,9 @@ class EventStreamManager {
150
156
  }
151
157
  }
152
158
 
153
- public connectPuppetEventToStreamingCall (): () => void {
159
+ public connectPuppetEventToStreamingCall () {
154
160
  log.verbose('EventStreamManager', 'connectPuppetEventToStreamingCall() for %s', this.puppet)
155
161
 
156
- const offCallbackList = [] as (() => void)[]
157
- const offAll = () => {
158
- log.verbose('EventStreamManager',
159
- 'connectPuppetEventToStreamingCall() offAll() %s callbacks',
160
- offCallbackList.length,
161
- )
162
- offCallbackList.forEach(off => off())
163
- this.puppetListening = false
164
- }
165
-
166
162
  const eventNameList: PUPPET.types.PuppetEventName[] = Object.keys(PUPPET.types.PUPPET_EVENT_DICT) as PUPPET.types.PuppetEventName[]
167
163
  for (const eventName of eventNameList) {
168
164
  log.verbose('EventStreamManager',
@@ -176,105 +172,105 @@ class EventStreamManager {
176
172
  const listener = (payload: PUPPET.payloads.EventDong) => this.grpcEmit(grpcPuppet.EventType.EVENT_TYPE_DONG, payload)
177
173
  this.puppet.on('dong', listener)
178
174
  const off = () => this.puppet.off('dong', listener)
179
- offCallbackList.push(off)
175
+ this.offCallbackList.push(off)
180
176
  break
181
177
  }
182
178
  case 'dirty': {
183
179
  const listener = (payload: PUPPET.payloads.EventDirty) => this.grpcEmit(grpcPuppet.EventType.EVENT_TYPE_DIRTY, payload)
184
180
  this.puppet.on('dirty', listener)
185
181
  const off = () => this.puppet.off('dirty', listener)
186
- offCallbackList.push(off)
182
+ this.offCallbackList.push(off)
187
183
  break
188
184
  }
189
185
  case 'error': {
190
186
  const listener = (payload: PUPPET.payloads.EventError) => this.grpcEmit(grpcPuppet.EventType.EVENT_TYPE_ERROR, payload)
191
187
  this.puppet.on('error', listener)
192
188
  const off = () => this.puppet.off('error', listener)
193
- offCallbackList.push(off)
189
+ this.offCallbackList.push(off)
194
190
  break
195
191
  }
196
192
  case 'heartbeat': {
197
193
  const listener = (payload: PUPPET.payloads.EventHeartbeat) => this.grpcEmit(grpcPuppet.EventType.EVENT_TYPE_HEARTBEAT, payload)
198
194
  this.puppet.on('heartbeat', listener)
199
195
  const off = () => this.puppet.off('heartbeat', listener)
200
- offCallbackList.push(off)
196
+ this.offCallbackList.push(off)
201
197
  break
202
198
  }
203
199
  case 'friendship': {
204
200
  const listener = (payload: PUPPET.payloads.EventFriendship) => this.grpcEmit(grpcPuppet.EventType.EVENT_TYPE_FRIENDSHIP, payload)
205
201
  this.puppet.on('friendship', listener)
206
202
  const off = () => this.puppet.off('friendship', listener)
207
- offCallbackList.push(off)
203
+ this.offCallbackList.push(off)
208
204
  break
209
205
  }
210
206
  case 'login': {
211
207
  const listener = (payload: PUPPET.payloads.EventLogin) => this.grpcEmit(grpcPuppet.EventType.EVENT_TYPE_LOGIN, payload)
212
208
  this.puppet.on('login', listener)
213
209
  const off = () => this.puppet.off('login', listener)
214
- offCallbackList.push(off)
210
+ this.offCallbackList.push(off)
215
211
  break
216
212
  }
217
213
  case 'logout': {
218
214
  const listener = (payload: PUPPET.payloads.EventLogout) => this.grpcEmit(grpcPuppet.EventType.EVENT_TYPE_LOGOUT, payload)
219
215
  this.puppet.on('logout', listener)
220
216
  const off = () => this.puppet.off('logout', listener)
221
- offCallbackList.push(off)
217
+ this.offCallbackList.push(off)
222
218
  break
223
219
  }
224
220
  case 'message': {
225
221
  const listener = (payload: PUPPET.payloads.EventMessage) => this.grpcEmit(grpcPuppet.EventType.EVENT_TYPE_MESSAGE, payload)
226
222
  this.puppet.on('message', listener)
227
223
  const off = () => this.puppet.off('message', listener)
228
- offCallbackList.push(off)
224
+ this.offCallbackList.push(off)
229
225
  break
230
226
  }
231
227
  case 'post': {
232
228
  const listener = (payload: PUPPET.payloads.EventPost) => this.grpcEmit(grpcPuppet.EventType.EVENT_TYPE_POST, payload)
233
229
  this.puppet.on('post', listener)
234
230
  const off = () => this.puppet.off('post', listener)
235
- offCallbackList.push(off)
231
+ this.offCallbackList.push(off)
236
232
  break
237
233
  }
238
234
  case 'ready': {
239
235
  const listener = (payload: PUPPET.payloads.EventReady) => this.grpcEmit(grpcPuppet.EventType.EVENT_TYPE_READY, payload)
240
236
  this.puppet.on('ready', listener)
241
237
  const off = () => this.puppet.off('ready', listener)
242
- offCallbackList.push(off)
238
+ this.offCallbackList.push(off)
243
239
  break
244
240
  }
245
241
  case 'room-invite': {
246
242
  const listener = (payload: PUPPET.payloads.EventRoomInvite) => this.grpcEmit(grpcPuppet.EventType.EVENT_TYPE_ROOM_INVITE, payload)
247
243
  this.puppet.on('room-invite', listener)
248
244
  const off = () => this.puppet.off('room-invite', listener)
249
- offCallbackList.push(off)
245
+ this.offCallbackList.push(off)
250
246
  break
251
247
  }
252
248
  case 'room-join': {
253
249
  const listener = (payload: PUPPET.payloads.EventRoomJoin) => this.grpcEmit(grpcPuppet.EventType.EVENT_TYPE_ROOM_JOIN, payload)
254
250
  this.puppet.on('room-join', listener)
255
251
  const off = () => this.puppet.off('room-join', listener)
256
- offCallbackList.push(off)
252
+ this.offCallbackList.push(off)
257
253
  break
258
254
  }
259
255
  case 'room-leave': {
260
256
  const listener = (payload: PUPPET.payloads.EventRoomLeave) => this.grpcEmit(grpcPuppet.EventType.EVENT_TYPE_ROOM_LEAVE, payload)
261
257
  this.puppet.on('room-leave', listener)
262
258
  const off = () => this.puppet.off('room-leave', listener)
263
- offCallbackList.push(off)
259
+ this.offCallbackList.push(off)
264
260
  break
265
261
  }
266
262
  case 'room-topic': {
267
263
  const listener = (payload: PUPPET.payloads.EventRoomTopic) => this.grpcEmit(grpcPuppet.EventType.EVENT_TYPE_ROOM_TOPIC, payload)
268
264
  this.puppet.on('room-topic', listener)
269
265
  const off = () => this.puppet.off('room-topic', listener)
270
- offCallbackList.push(off)
266
+ this.offCallbackList.push(off)
271
267
  break
272
268
  }
273
269
  case 'scan': {
274
270
  const listener = (payload: PUPPET.payloads.EventScan) => this.grpcEmit(grpcPuppet.EventType.EVENT_TYPE_SCAN, payload)
275
271
  this.puppet.on('scan', listener)
276
272
  const off = () => this.puppet.off('scan', listener)
277
- offCallbackList.push(off)
273
+ this.offCallbackList.push(off)
278
274
  break
279
275
  }
280
276
  case 'reset':
@@ -288,17 +284,14 @@ class EventStreamManager {
288
284
  }
289
285
 
290
286
  this.puppetListening = true
291
- return offAll
292
287
  }
293
288
 
294
289
  /**
295
290
  * Detect if the streaming call was gone (GRPC disconnects)
296
291
  * https://github.com/grpc/grpc/issues/8117#issuecomment-362198092
297
292
  */
298
- private onStreamingCallEnd (
299
- removePuppetListeners: () => void,
300
- ): void {
301
- log.verbose('EventStreamManager', 'onStreamingCallEnd(callback)')
293
+ private onStreamingCallEnd () {
294
+ log.verbose('EventStreamManager', 'onStreamingCallEnd()')
302
295
 
303
296
  if (!this.eventStream) {
304
297
  throw new Error('no this.eventStream found')
@@ -324,7 +317,7 @@ class EventStreamManager {
324
317
  )
325
318
 
326
319
  if (this.puppetListening) {
327
- removePuppetListeners()
320
+ this.removePuppetListeners()
328
321
  }
329
322
  if (this.eventStream) {
330
323
  this.eventStream = undefined
@@ -336,7 +329,7 @@ class EventStreamManager {
336
329
  this.eventStream.on('error', err => {
337
330
  log.verbose('EventStreamManager', 'this.onStreamingCallEnd() this.eventStream.on(error) fired: %s', err)
338
331
  if (this.puppetListening) {
339
- removePuppetListeners()
332
+ this.removePuppetListeners()
340
333
  }
341
334
  if (this.eventStream) {
342
335
  this.eventStream = undefined
@@ -348,7 +341,7 @@ class EventStreamManager {
348
341
  this.eventStream.on('finish', () => {
349
342
  log.verbose('EventStreamManager', 'this.onStreamingCallEnd() this.eventStream.on(finish) fired')
350
343
  if (this.puppetListening) {
351
- removePuppetListeners()
344
+ this.removePuppetListeners()
352
345
  }
353
346
  if (this.eventStream) {
354
347
  this.eventStream = undefined
@@ -360,7 +353,7 @@ class EventStreamManager {
360
353
  this.eventStream.on('end', () => {
361
354
  log.verbose('EventStreamManager', 'this.onStreamingCallEnd() this.eventStream.on(end) fired')
362
355
  if (this.puppetListening) {
363
- removePuppetListeners()
356
+ this.removePuppetListeners()
364
357
  }
365
358
  if (this.eventStream) {
366
359
  this.eventStream = undefined
@@ -372,7 +365,7 @@ class EventStreamManager {
372
365
  this.eventStream.on('close', () => {
373
366
  log.verbose('EventStreamManager', 'this.onStreamingCallEnd() this.eventStream.on(close) fired')
374
367
  if (this.puppetListening) {
375
- removePuppetListeners()
368
+ this.removePuppetListeners()
376
369
  }
377
370
  if (this.eventStream) {
378
371
  this.eventStream = undefined
@@ -382,6 +375,13 @@ class EventStreamManager {
382
375
  })
383
376
  }
384
377
 
378
+ removePuppetListeners () {
379
+ while (this.offCallbackList.length > 0) {
380
+ const func = this.offCallbackList.pop()
381
+ func && func()
382
+ }
383
+ }
384
+
385
385
  }
386
386
 
387
387
  export { EventStreamManager }
@@ -255,6 +255,7 @@ function puppetImplementation (
255
255
  response.setCorporation(payload.corporation || '')
256
256
  response.setTitle(payload.title || '')
257
257
  response.setDescription(payload.description || '')
258
+ response.setAdditionalInfo(payload.additionalInfo || '')
258
259
 
259
260
  return callback(null, response)
260
261
  } catch (e) {
@@ -769,6 +770,7 @@ function puppetImplementation (
769
770
  */
770
771
  response.setListenerId(payload.listenerId || payload.toId || '')
771
772
  response.setType(payload.type as grpcPuppet.MessageTypeMap[keyof grpcPuppet.MessageTypeMap])
773
+ response.setQuoteId(payload.quoteId || '')
772
774
 
773
775
  return callback(null, response)
774
776
 
@@ -1349,6 +1351,7 @@ function puppetImplementation (
1349
1351
  response.setInviterId(payload.inviterId || '')
1350
1352
  response.setName(payload.name)
1351
1353
  response.setRoomAlias(payload.roomAlias || '')
1354
+ response.setAdditionalInfo(payload.additionalInfo || '')
1352
1355
 
1353
1356
  return callback(null, response)
1354
1357
 
@@ -1373,6 +1376,7 @@ function puppetImplementation (
1373
1376
  response.setMemberIdsList(payload.memberIdList)
1374
1377
  response.setOwnerId(payload.ownerId || '')
1375
1378
  response.setTopic(payload.topic)
1379
+ response.setAdditionalInfo(payload.additionalInfo || '')
1376
1380
 
1377
1381
  return callback(null, response)
1378
1382