@juzi/wechaty-puppet-service 1.0.17 → 1.0.20

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 (47) hide show
  1. package/dist/cjs/src/client/payload-store.d.ts +2 -0
  2. package/dist/cjs/src/client/payload-store.d.ts.map +1 -1
  3. package/dist/cjs/src/client/payload-store.js +10 -0
  4. package/dist/cjs/src/client/payload-store.js.map +1 -1
  5. package/dist/cjs/src/client/puppet-service.d.ts +14 -11
  6. package/dist/cjs/src/client/puppet-service.d.ts.map +1 -1
  7. package/dist/cjs/src/client/puppet-service.js +130 -82
  8. package/dist/cjs/src/client/puppet-service.js.map +1 -1
  9. package/dist/cjs/src/config.d.ts +1 -0
  10. package/dist/cjs/src/config.d.ts.map +1 -1
  11. package/dist/cjs/src/config.js +2 -1
  12. package/dist/cjs/src/config.js.map +1 -1
  13. package/dist/cjs/src/package-json.js +5 -5
  14. package/dist/cjs/src/package-json.js.map +1 -1
  15. package/dist/cjs/src/server/event-stream-manager.d.ts.map +1 -1
  16. package/dist/cjs/src/server/event-stream-manager.js +7 -0
  17. package/dist/cjs/src/server/event-stream-manager.js.map +1 -1
  18. package/dist/cjs/src/server/puppet-implementation.d.ts.map +1 -1
  19. package/dist/cjs/src/server/puppet-implementation.js +98 -58
  20. package/dist/cjs/src/server/puppet-implementation.js.map +1 -1
  21. package/dist/esm/src/client/payload-store.d.ts +2 -0
  22. package/dist/esm/src/client/payload-store.d.ts.map +1 -1
  23. package/dist/esm/src/client/payload-store.js +10 -0
  24. package/dist/esm/src/client/payload-store.js.map +1 -1
  25. package/dist/esm/src/client/puppet-service.d.ts +14 -11
  26. package/dist/esm/src/client/puppet-service.d.ts.map +1 -1
  27. package/dist/esm/src/client/puppet-service.js +131 -83
  28. package/dist/esm/src/client/puppet-service.js.map +1 -1
  29. package/dist/esm/src/config.d.ts +1 -0
  30. package/dist/esm/src/config.d.ts.map +1 -1
  31. package/dist/esm/src/config.js +1 -0
  32. package/dist/esm/src/config.js.map +1 -1
  33. package/dist/esm/src/package-json.js +5 -5
  34. package/dist/esm/src/package-json.js.map +1 -1
  35. package/dist/esm/src/server/event-stream-manager.d.ts.map +1 -1
  36. package/dist/esm/src/server/event-stream-manager.js +7 -0
  37. package/dist/esm/src/server/event-stream-manager.js.map +1 -1
  38. package/dist/esm/src/server/puppet-implementation.d.ts.map +1 -1
  39. package/dist/esm/src/server/puppet-implementation.js +98 -58
  40. package/dist/esm/src/server/puppet-implementation.js.map +1 -1
  41. package/package.json +5 -5
  42. package/src/client/payload-store.ts +10 -0
  43. package/src/client/puppet-service.ts +165 -100
  44. package/src/config.ts +1 -0
  45. package/src/package-json.ts +5 -5
  46. package/src/server/event-stream-manager.ts +7 -0
  47. package/src/server/puppet-implementation.ts +106 -58
@@ -57,6 +57,7 @@ import {
57
57
  } from '../file-box-helper/mod.js'
58
58
  import {
59
59
  envVars,
60
+ FOUR_PER_EM_SPACE,
60
61
  log,
61
62
  NO_LOG_EVENTS,
62
63
  VERSION,
@@ -68,6 +69,7 @@ import { packageJson } from '../package-json.js'
68
69
 
69
70
  import { GrpcManager } from './grpc-manager.js'
70
71
  import { PayloadStore } from './payload-store.js'
72
+ import type { TagIdentifier } from '@juzi/wechaty-puppet/filters'
71
73
 
72
74
  export type PuppetServiceOptions = PUPPET.PuppetOptions & {
73
75
  authority? : string
@@ -347,6 +349,9 @@ class PuppetService extends PUPPET.Puppet {
347
349
  case grpcPuppet.EventType.EVENT_TYPE_SCAN:
348
350
  this.emit('scan', JSON.parse(payload) as PUPPET.payloads.EventScan)
349
351
  break
352
+ case grpcPuppet.EventType.EVENT_TYPE_TAG:
353
+ this.emit('tag', JSON.parse(payload) as PUPPET.payloads.EventTag)
354
+ break
350
355
  case grpcPuppet.EventType.EVENT_TYPE_RESET:
351
356
  log.warn('PuppetService', 'onGrpcStreamEvent() got an EventType.EVENT_TYPE_RESET ?')
352
357
  // the `reset` event should be dealed not send out
@@ -439,6 +444,8 @@ class PuppetService extends PUPPET.Puppet {
439
444
  [PUPPET.types.Dirty.Post]: async (_: string) => {},
440
445
  [PUPPET.types.Dirty.Room]: async (id: string) => this._payloadStore.room?.delete(id),
441
446
  [PUPPET.types.Dirty.RoomMember]: async (id: string) => this._payloadStore.roomMember?.delete(id),
447
+ [PUPPET.types.Dirty.Tag]: async (key: string) => this._payloadStore.tag?.delete(key),
448
+ [PUPPET.types.Dirty.TagGroup]: async (id: string) => this._payloadStore.tagGroup?.delete(id),
442
449
  [PUPPET.types.Dirty.Unspecified]: async (id: string) => { throw new Error('Unspecified type with id: ' + id) },
443
450
  }
444
451
 
@@ -1432,13 +1439,20 @@ class PuppetService extends PUPPET.Puppet {
1432
1439
 
1433
1440
  override async roomDel (
1434
1441
  roomId : string,
1435
- contactId : string,
1442
+ contactIds : string | string[],
1436
1443
  ): Promise<void> {
1437
- log.verbose('PuppetService', 'roomDel(%s, %s)', roomId, contactId)
1444
+ log.verbose('PuppetService', 'roomDel(%s, %s)', roomId, contactIds)
1438
1445
 
1439
1446
  const request = new grpcPuppet.RoomDelRequest()
1440
1447
  request.setId(roomId)
1441
- request.setContactId(contactId)
1448
+ if (Array.isArray(contactIds)) {
1449
+ request.setContactIdsList(contactIds)
1450
+ if (contactIds.length === 1) {
1451
+ request.setContactId(contactIds[0] as string)
1452
+ }
1453
+ } else {
1454
+ request.setContactId(contactIds)
1455
+ }
1442
1456
 
1443
1457
  await util.promisify(
1444
1458
  this.grpcManager.client.roomDel
@@ -1922,19 +1936,20 @@ class PuppetService extends PUPPET.Puppet {
1922
1936
  */
1923
1937
 
1924
1938
  override async tagContactTagAdd (
1925
- tagGroupId: string | undefined,
1926
- tagId: string,
1927
- contactId: string,
1939
+ tags: TagIdentifier[],
1940
+ contactIds: string[],
1928
1941
  ): Promise<void> {
1929
- log.verbose('PuppetService', 'tagContactTagAdd(%s, %s, %s)', tagGroupId, tagId, contactId)
1942
+ log.verbose('PuppetService', 'tagContactTagAdd(%s, %s)', JSON.stringify(tags), contactIds)
1930
1943
 
1931
1944
  const request = new grpcPuppet.TagContactTagAddRequest()
1932
1945
 
1933
- if (typeof tagGroupId !== 'undefined') {
1934
- request.setTagGroupId(tagGroupId)
1935
- }
1936
- request.setTagId(tagId)
1937
- request.setContactId(contactId)
1946
+ request.setTagsList(tags.map(t => {
1947
+ const tag = new grpcPuppet.TagIdentifier()
1948
+ t.groupId && tag.setGroupId(t.groupId)
1949
+ tag.setId(t.id)
1950
+ return tag
1951
+ }))
1952
+ request.setContactIdsList(contactIds)
1938
1953
 
1939
1954
  await util.promisify(
1940
1955
  this.grpcManager.client.tagContactTagAdd
@@ -1943,19 +1958,20 @@ class PuppetService extends PUPPET.Puppet {
1943
1958
  }
1944
1959
 
1945
1960
  override async tagContactTagRemove (
1946
- tagGroupId: string | undefined,
1947
- tagId: string,
1948
- contactId: string,
1961
+ tags: TagIdentifier[],
1962
+ contactIds: string[],
1949
1963
  ): Promise<void> {
1950
- log.verbose('PuppetService', 'tagContactTagRemove(%s, %s, %s)', tagGroupId, tagId, contactId)
1964
+ log.verbose('PuppetService', 'tagContactTagRemove(%s, %s)', JSON.stringify(tags), contactIds)
1951
1965
 
1952
1966
  const request = new grpcPuppet.TagContactTagRemoveRequest()
1953
1967
 
1954
- if (typeof tagGroupId !== 'undefined') {
1955
- request.setTagGroupId(tagGroupId)
1956
- }
1957
- request.setTagId(tagId)
1958
- request.setContactId(contactId)
1968
+ request.setTagsList(tags.map(t => {
1969
+ const tag = new grpcPuppet.TagIdentifier()
1970
+ t.groupId && tag.setGroupId(t.groupId)
1971
+ tag.setId(t.id)
1972
+ return tag
1973
+ }))
1974
+ request.setContactIdsList(contactIds)
1959
1975
 
1960
1976
  await util.promisify(
1961
1977
  this.grpcManager.client.tagContactTagRemove
@@ -1965,7 +1981,7 @@ class PuppetService extends PUPPET.Puppet {
1965
1981
 
1966
1982
  override async tagGroupAdd (
1967
1983
  tagGroupName: string,
1968
- ): Promise<PUPPET.payloads.TagGroup | void> {
1984
+ ): Promise<string | void> {
1969
1985
  log.verbose('PuppetService', 'tagGroupAdd(%s)', tagGroupName)
1970
1986
 
1971
1987
  const request = new grpcPuppet.TagGroupAddRequest()
@@ -1977,18 +1993,9 @@ class PuppetService extends PUPPET.Puppet {
1977
1993
  .bind(this.grpcManager.client),
1978
1994
  )(request)
1979
1995
 
1980
- const grpcPayload = result.getPayload()
1981
- const id = grpcPayload?.getId()
1982
- const name = grpcPayload?.getName()
1983
-
1984
- if (id && name) {
1985
- const payload: PUPPET.payloads.TagGroup = {
1986
- id,
1987
- name,
1988
- }
1989
- return payload
1990
- }
1996
+ const id = result.getTagGroupId()
1991
1997
 
1998
+ return id
1992
1999
  }
1993
2000
 
1994
2001
  override async tagGroupDelete (
@@ -2008,10 +2015,10 @@ class PuppetService extends PUPPET.Puppet {
2008
2015
  }
2009
2016
 
2010
2017
  override async tagTagAdd (
2011
- tagGroupId: string | undefined,
2012
2018
  tagName: string,
2013
- ): Promise<PUPPET.payloads.Tag | void> {
2014
- log.verbose('PuppetService', 'tagTagAdd(%s, %s)', tagGroupId, tagName)
2019
+ tagGroupId?: string,
2020
+ ): Promise<PUPPET.filters.TagIdentifier | void> {
2021
+ log.verbose('PuppetService', 'tagTagAdd(%s, %s)', tagName, tagGroupId)
2015
2022
 
2016
2023
  const request = new grpcPuppet.TagTagAddRequest()
2017
2024
 
@@ -2025,36 +2032,31 @@ class PuppetService extends PUPPET.Puppet {
2025
2032
  .bind(this.grpcManager.client),
2026
2033
  )(request)
2027
2034
 
2028
- const grpcPayload = result.getPayload()
2029
- const id = grpcPayload?.getId()
2030
- const name = grpcPayload?.getName()
2031
- const groupId = grpcPayload?.getGroupId()
2032
- const type = grpcPayload?.getType()
2035
+ const tag = result.getTag()
2036
+ const id = tag?.getId()
2037
+ const groupId = tag?.getGroupId()
2033
2038
 
2034
- if (id && name && (typeof type !== 'undefined')) {
2035
- const payload: PUPPET.payloads.Tag = {
2039
+ if (id) {
2040
+ return {
2036
2041
  id,
2037
- name,
2038
2042
  groupId,
2039
- type,
2040
2043
  }
2041
- return payload
2042
2044
  }
2043
-
2044
2045
  }
2045
2046
 
2046
2047
  override async tagTagDelete (
2047
- tagGroupId: string | undefined,
2048
- tagId: string,
2048
+ tag: TagIdentifier,
2049
2049
  ): Promise<void> {
2050
- log.verbose('PuppetService', 'tagTagDelete(%s, %s)', tagGroupId, tagId)
2050
+ log.verbose('PuppetService', 'tagTagDelete(%s)', JSON.stringify(tag))
2051
2051
 
2052
2052
  const request = new grpcPuppet.TagTagDeleteRequest()
2053
+ const tagProb = new grpcPuppet.TagIdentifier()
2053
2054
 
2054
- if (typeof tagGroupId !== 'undefined') {
2055
- request.setTagGroupId(tagGroupId)
2056
- }
2057
- request.setTagId(tagId)
2055
+ tag.groupId && tagProb.setGroupId(tag.groupId)
2056
+ tagProb.setId(tag.id)
2057
+ request.setTag(tagProb)
2058
+
2059
+ request.setTag(tagProb)
2058
2060
 
2059
2061
  await util.promisify(
2060
2062
  this.grpcManager.client.tagTagDelete
@@ -2063,7 +2065,7 @@ class PuppetService extends PUPPET.Puppet {
2063
2065
 
2064
2066
  }
2065
2067
 
2066
- override async tagGroupList (): Promise<PUPPET.payloads.TagGroup[]> {
2068
+ override async tagGroupList (): Promise<string[]> {
2067
2069
  log.verbose('PuppetService', 'tagGroupList()')
2068
2070
 
2069
2071
  const request = new grpcPuppet.TagGroupListRequest()
@@ -2073,19 +2075,13 @@ class PuppetService extends PUPPET.Puppet {
2073
2075
  .bind(this.grpcManager.client),
2074
2076
  )(request)
2075
2077
 
2076
- const grpcPayloads = result.getPayloadsList()
2077
- const payloads: PUPPET.payloads.TagGroup[] = grpcPayloads.map(payload => {
2078
- return {
2079
- id: payload.getId(),
2080
- name: payload.getName(),
2081
- } as PUPPET.payloads.TagGroup
2082
- })
2083
- return payloads
2078
+ const groupIds = result.getTagGroupIdsList()
2079
+ return groupIds
2084
2080
  }
2085
2081
 
2086
2082
  override async tagGroupTagList (
2087
- tagGroupId: string | undefined,
2088
- ): Promise<PUPPET.payloads.Tag[]> {
2083
+ tagGroupId?: string,
2084
+ ): Promise<PUPPET.filters.TagIdentifier[]> {
2089
2085
  log.verbose('PuppetService', 'tagGroupTagList(%s)', tagGroupId)
2090
2086
 
2091
2087
  const request = new grpcPuppet.TagGroupTagListRequest()
@@ -2098,20 +2094,18 @@ class PuppetService extends PUPPET.Puppet {
2098
2094
  .bind(this.grpcManager.client),
2099
2095
  )(request)
2100
2096
 
2101
- const grpcPayloads = result.getPayloadsList()
2102
- const payloads: PUPPET.payloads.Tag[] = grpcPayloads.map(payload => {
2097
+ const tags = result.getTagsList()
2098
+ const tagIdentifiers = tags.map(tag => {
2103
2099
  return {
2104
- id: payload.getId(),
2105
- name: payload.getName(),
2106
- groupId: payload.getGroupId(),
2107
- type: payload.getType(),
2108
- } as PUPPET.payloads.Tag
2100
+ id: tag.getId(),
2101
+ groupId: tag.getGroupId(),
2102
+ }
2109
2103
  })
2110
- return payloads
2104
+ return tagIdentifiers
2111
2105
  }
2112
2106
 
2113
2107
  override async tagTagList (
2114
- ): Promise<PUPPET.payloads.Tag[]> {
2108
+ ): Promise<PUPPET.filters.TagIdentifier[]> {
2115
2109
  log.verbose('PuppetService', 'tagTagList()')
2116
2110
 
2117
2111
  const request = new grpcPuppet.TagTagListRequest()
@@ -2121,21 +2115,19 @@ class PuppetService extends PUPPET.Puppet {
2121
2115
  .bind(this.grpcManager.client),
2122
2116
  )(request)
2123
2117
 
2124
- const grpcPayloads = result.getPayloadsList()
2125
- const payloads: PUPPET.payloads.Tag[] = grpcPayloads.map(payload => {
2118
+ const tags = result.getTagsList()
2119
+ const tagIdentifiers = tags.map(tag => {
2126
2120
  return {
2127
- id: payload.getId(),
2128
- name: payload.getName(),
2129
- groupId: payload.getGroupId(),
2130
- type: payload.getType(),
2131
- } as PUPPET.payloads.Tag
2121
+ id: tag.getId(),
2122
+ groupId: tag.getGroupId(),
2123
+ }
2132
2124
  })
2133
- return payloads
2125
+ return tagIdentifiers
2134
2126
  }
2135
2127
 
2136
2128
  override async tagContactTagList (
2137
2129
  contactId: string,
2138
- ): Promise<PUPPET.payloads.Tag[]> {
2130
+ ): Promise<PUPPET.filters.TagIdentifier[]> {
2139
2131
  log.verbose('PuppetService', 'tagContactTagList(%s)', contactId)
2140
2132
 
2141
2133
  const request = new grpcPuppet.TagContactTagListRequest()
@@ -2146,37 +2138,110 @@ class PuppetService extends PUPPET.Puppet {
2146
2138
  .bind(this.grpcManager.client),
2147
2139
  )(request)
2148
2140
 
2149
- const grpcPayloads = result.getPayloadsList()
2150
- const payloads: PUPPET.payloads.Tag[] = grpcPayloads.map(payload => {
2141
+ const grpcPayloads = result.getTagsList()
2142
+ const tags: PUPPET.filters.TagIdentifier[] = grpcPayloads.map(tag => {
2151
2143
  return {
2152
- id: payload.getId(),
2153
- name: payload.getName(),
2154
- groupId: payload.getGroupId(),
2155
- type: payload.getType(),
2156
- } as PUPPET.payloads.Tag
2144
+ id: tag.getId(),
2145
+ groupId: tag.getGroupId(),
2146
+ }
2157
2147
  })
2158
- return payloads
2148
+ return tags
2159
2149
  }
2160
2150
 
2161
2151
  override async tagTagContactList (
2162
- tagGroupId: string | undefined,
2163
- tagId: string,
2152
+ tag: TagIdentifier,
2164
2153
  ): Promise<string[]> {
2165
- log.verbose('PuppetService', 'tagTagContactList(%s, %s)', tagGroupId, tagId)
2154
+ log.verbose('PuppetService', 'tagTagContactList(%s)', JSON.stringify(tag))
2166
2155
 
2167
2156
  const request = new grpcPuppet.TagTagContactListRequest()
2168
- if (typeof tagGroupId !== 'undefined') {
2169
- request.setTagGroupId(tagGroupId)
2170
- }
2171
- request.setTagId(tagId)
2157
+ const tagProb = new grpcPuppet.TagIdentifier()
2158
+
2159
+ tag.groupId && tagProb.setGroupId(tag.groupId)
2160
+ tagProb.setId(tag.id)
2161
+ request.setTag(tagProb)
2172
2162
 
2173
2163
  const result = await util.promisify(
2174
2164
  this.grpcManager.client.tagTagContactList
2175
2165
  .bind(this.grpcManager.client),
2176
2166
  )(request)
2177
2167
 
2178
- const payloads = result.getPayloadsList()
2179
- return payloads
2168
+ const contactIds = result.getContactIdsList()
2169
+ return contactIds
2170
+ }
2171
+
2172
+ override async tagGroupPayloadPuppet (id: string): Promise<PUPPET.payloads.TagGroup> {
2173
+ log.verbose('PuppetService', 'tagGroupPayload(%s)', id)
2174
+
2175
+ const cachedPayload = await this._payloadStore.tagGroup?.get(id)
2176
+ if (cachedPayload) {
2177
+ log.silly('PuppetService', 'tagGroupPayload(%s) cache HIT', id)
2178
+ return cachedPayload
2179
+ }
2180
+
2181
+ const request = new grpcPuppet.TagGroupPayloadRequest()
2182
+ request.setGroupId(id)
2183
+
2184
+ const response = await util.promisify(
2185
+ this.grpcManager.client.tagGroupPayload
2186
+ .bind(this.grpcManager.client),
2187
+ )(request)
2188
+ const grpcPayload = response.getPayload()
2189
+
2190
+ if (!grpcPayload) {
2191
+ throw new Error(`tagGroup ${id} got no payload!`)
2192
+ }
2193
+
2194
+ const payload: PUPPET.payloads.TagGroup = {
2195
+ id: grpcPayload.getId(),
2196
+ name: grpcPayload.getName(),
2197
+ type: grpcPayload.getType(),
2198
+ }
2199
+
2200
+ await this._payloadStore.tagGroup?.set(id, payload)
2201
+ log.silly('PuppetService', 'tagGroupPayloadPuppet(%s) cache SET', id)
2202
+
2203
+ return payload
2204
+ }
2205
+
2206
+ override async tagPayloadPuppet (tag: PUPPET.filters.TagIdentifier): Promise<PUPPET.payloads.Tag> {
2207
+ log.verbose('PuppetService', 'tagPayloadPuppet(%s)', JSON.stringify(tag))
2208
+
2209
+ const key = tag.groupId || '' + FOUR_PER_EM_SPACE + tag.id
2210
+ const cachedPayload = await this._payloadStore.tag?.get(key)
2211
+ if (cachedPayload) {
2212
+ log.silly('PuppetService', 'tagPayloadPuppet(%s) cache HIT', tag)
2213
+ return cachedPayload
2214
+ }
2215
+
2216
+ const tagIdentifier = new grpcPuppet.TagIdentifier()
2217
+ tagIdentifier.setId(tag.id)
2218
+ if (tag.groupId) {
2219
+ tagIdentifier.setGroupId(tag.groupId)
2220
+ }
2221
+ const request = new grpcPuppet.TagPayloadRequest()
2222
+ request.setTag(tagIdentifier)
2223
+
2224
+ const response = await util.promisify(
2225
+ this.grpcManager.client.tagPayload
2226
+ .bind(this.grpcManager.client),
2227
+ )(request)
2228
+ const grpcPayload = response.getPayload()
2229
+
2230
+ if (!grpcPayload) {
2231
+ throw new Error(`tag ${JSON.stringify(tag)} got no payload!`)
2232
+ }
2233
+
2234
+ const payload: PUPPET.payloads.Tag = {
2235
+ id: grpcPayload.getId(),
2236
+ name: grpcPayload.getName(),
2237
+ groupId: grpcPayload.getGroupId(),
2238
+ type: grpcPayload.getType(),
2239
+ }
2240
+
2241
+ await this._payloadStore.tag?.set(key, payload)
2242
+ log.silly('PuppetService', 'tagPayloadPuppet(%s) cache SET', JSON.stringify(tag))
2243
+
2244
+ return payload
2180
2245
  }
2181
2246
 
2182
2247
  /**
package/src/config.ts CHANGED
@@ -12,6 +12,7 @@ import {
12
12
  } from '@juzi/wechaty-grpc'
13
13
 
14
14
  const VERSION = packageJson.version || '0.0.0'
15
+ export const FOUR_PER_EM_SPACE = String.fromCharCode(0x2005)
15
16
 
16
17
  const envVars = {
17
18
  ...rootEnvVars,
@@ -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.17",
7
+ "version": "1.0.20",
8
8
  "description": "Puppet Service for Wechaty",
9
9
  "type": "module",
10
10
  "exports": {
@@ -55,6 +55,7 @@ export const packageJson: PackageJson = {
55
55
  "@chatie/eslint-config": "^1.0.4",
56
56
  "@chatie/semver": "^0.4.7",
57
57
  "@chatie/tsconfig": "^4.6.3",
58
+ "@juzi/wechaty-puppet-mock": "^1.0.1",
58
59
  "@types/google-protobuf": "^3.15.5",
59
60
  "@types/lru-cache": "^7.5.0",
60
61
  "@types/semver": "^7.3.9",
@@ -65,14 +66,14 @@ export const packageJson: PackageJson = {
65
66
  "temp": "^0.9.4",
66
67
  "typed-emitter": "^1.5.0-from-event",
67
68
  "utility-types": "^3.10.0",
68
- "@juzi/wechaty-puppet-mock": "^1.0.1",
69
69
  "why-is-node-running": "^2.2.1"
70
70
  },
71
71
  "peerDependencies": {
72
- "@juzi/wechaty-puppet": "^1.0.12"
72
+ "@juzi/wechaty-puppet": "^1.0.24"
73
73
  },
74
74
  "dependencies": {
75
- "@juzi/wechaty-grpc": "^1.0.11",
75
+ "@juzi/wechaty-grpc": "^1.0.14",
76
+ "@juzi/wechaty-redux": "^1.0.1",
76
77
  "clone-class": "^1.1.1",
77
78
  "ducks": "^1.0.2",
78
79
  "file-box": "^1.5.5",
@@ -83,7 +84,6 @@ export const packageJson: PackageJson = {
83
84
  "semver": "^7.3.5",
84
85
  "stronger-typed-streams": "^0.2.0",
85
86
  "uuid": "^8.3.2",
86
- "@juzi/wechaty-redux": "^1.0.1",
87
87
  "wechaty-token": "^1.0.6"
88
88
  },
89
89
  "publishConfig": {
@@ -273,6 +273,13 @@ class EventStreamManager {
273
273
  this.offCallbackList.push(off)
274
274
  break
275
275
  }
276
+ case 'tag': {
277
+ const listener = (payload: PUPPET.payloads.EventTag) => this.grpcEmit(grpcPuppet.EventType.EVENT_TYPE_TAG, payload)
278
+ this.puppet.on('tag', listener)
279
+ const off = () => this.puppet.off('tag', listener)
280
+ this.offCallbackList.push(off)
281
+ break
282
+ }
276
283
  case 'reset':
277
284
  // the `reset` event should be dealed internally, should not send out
278
285
  break