@juzi/wechaty-puppet-service 1.0.106 → 1.0.108
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/src/client/puppet-service.d.ts +1 -0
- package/dist/cjs/src/client/puppet-service.d.ts.map +1 -1
- package/dist/cjs/src/client/puppet-service.js +44 -4
- package/dist/cjs/src/client/puppet-service.js.map +1 -1
- package/dist/cjs/src/config.js +2 -2
- package/dist/cjs/src/package-json.js +3 -3
- package/dist/cjs/src/server/puppet-implementation.d.ts.map +1 -1
- package/dist/cjs/src/server/puppet-implementation.js +48 -3
- package/dist/cjs/src/server/puppet-implementation.js.map +1 -1
- package/dist/cjs/src/utils/pb-payload-helper.d.ts +1 -0
- package/dist/cjs/src/utils/pb-payload-helper.d.ts.map +1 -1
- package/dist/cjs/src/utils/pb-payload-helper.js +44 -1
- package/dist/cjs/src/utils/pb-payload-helper.js.map +1 -1
- package/dist/esm/src/client/puppet-service.d.ts +1 -0
- package/dist/esm/src/client/puppet-service.d.ts.map +1 -1
- package/dist/esm/src/client/puppet-service.js +45 -5
- package/dist/esm/src/client/puppet-service.js.map +1 -1
- package/dist/esm/src/config.js +2 -2
- package/dist/esm/src/package-json.js +3 -3
- package/dist/esm/src/server/puppet-implementation.d.ts.map +1 -1
- package/dist/esm/src/server/puppet-implementation.js +48 -3
- package/dist/esm/src/server/puppet-implementation.js.map +1 -1
- package/dist/esm/src/utils/pb-payload-helper.d.ts +1 -0
- package/dist/esm/src/utils/pb-payload-helper.d.ts.map +1 -1
- package/dist/esm/src/utils/pb-payload-helper.js +42 -0
- package/dist/esm/src/utils/pb-payload-helper.js.map +1 -1
- package/package.json +3 -3
- package/src/client/puppet-service.ts +50 -5
- package/src/config.ts +2 -2
- package/src/package-json.ts +3 -3
- package/src/server/puppet-implementation.ts +57 -3
- package/src/utils/pb-payload-helper.ts +39 -0
|
@@ -50,7 +50,7 @@ import { packageJson } from '../package-json.js'
|
|
|
50
50
|
|
|
51
51
|
import { GrpcManager } from './grpc-manager.js'
|
|
52
52
|
import { PayloadStore } from './payload-store.js'
|
|
53
|
-
import { OptionalBooleanUnwrapper, OptionalBooleanWrapper, callRecordPbToPayload, channelPayloadToPb, channelPbToPayload, chatHistoryPbToPayload, postPayloadToPb, roomMemberPbToPayload, urlLinkPbToPayload } from '../utils/pb-payload-helper.js'
|
|
53
|
+
import { OptionalBooleanUnwrapper, OptionalBooleanWrapper, callRecordPbToPayload, channelPayloadToPb, channelPbToPayload, chatHistoryPbToPayload, contactPbToPayload, postPayloadToPb, roomMemberPbToPayload, urlLinkPbToPayload } from '../utils/pb-payload-helper.js'
|
|
54
54
|
import type { MessageBroadcastTargets } from '@juzi/wechaty-puppet/dist/esm/src/schemas/message.js'
|
|
55
55
|
import { timeoutPromise } from 'gerror'
|
|
56
56
|
import { BooleanIndicator } from 'state-switch'
|
|
@@ -763,6 +763,49 @@ class PuppetService extends PUPPET.Puppet {
|
|
|
763
763
|
return payload
|
|
764
764
|
}
|
|
765
765
|
|
|
766
|
+
override async batchContactRawPayload (contactIdList: string[]): Promise<Map<string, PUPPET.payloads.Contact>> {
|
|
767
|
+
log.verbose('PuppetService', 'batchContactRawPayload(%s)', contactIdList)
|
|
768
|
+
|
|
769
|
+
const result = new Map<string, PUPPET.payloads.Contact>()
|
|
770
|
+
const contactIdSet = new Set<string>(contactIdList)
|
|
771
|
+
const needGetSet = new Set<string>()
|
|
772
|
+
for (const contactId of contactIdSet) {
|
|
773
|
+
const cachedContactPayload = await this._payloadStore.contact?.get(contactId)
|
|
774
|
+
if (cachedContactPayload) {
|
|
775
|
+
result.set(contactId, cachedContactPayload)
|
|
776
|
+
} else {
|
|
777
|
+
needGetSet.add(contactId)
|
|
778
|
+
}
|
|
779
|
+
}
|
|
780
|
+
|
|
781
|
+
if (needGetSet.size > 0) {
|
|
782
|
+
try {
|
|
783
|
+
const request = new grpcPuppet.BatchContactPayloadRequest()
|
|
784
|
+
request.setIdsList(Array.from(needGetSet))
|
|
785
|
+
|
|
786
|
+
const response = await util.promisify(
|
|
787
|
+
this.grpcManager.client.batchContactPayload
|
|
788
|
+
.bind(this.grpcManager.client),
|
|
789
|
+
)(request)
|
|
790
|
+
|
|
791
|
+
const payloads = response.getContactPayloadsList()
|
|
792
|
+
for (const payload of payloads) {
|
|
793
|
+
const contactId = payload.getId()
|
|
794
|
+
const puppetPayload = contactPbToPayload(payload)
|
|
795
|
+
result.set(contactId, puppetPayload)
|
|
796
|
+
await this._payloadStore.contact?.set(contactId, puppetPayload)
|
|
797
|
+
}
|
|
798
|
+
} catch (e) {
|
|
799
|
+
log.error('PuppetService', 'batchContactRawPayload(%s, %s) error: %s, use one by one method', contactIdList, needGetSet, e)
|
|
800
|
+
for (const contactId of needGetSet) {
|
|
801
|
+
const payload = await this.contactRawPayload(contactId)
|
|
802
|
+
result.set(contactId, payload)
|
|
803
|
+
}
|
|
804
|
+
}
|
|
805
|
+
}
|
|
806
|
+
return result
|
|
807
|
+
}
|
|
808
|
+
|
|
766
809
|
override async contactPayloadModify (contactId: string, payload: Partial<PUPPET.payloads.Contact>): Promise<void> {
|
|
767
810
|
log.verbose('PuppetService', 'contactPayloadModify(%s, %s)', contactId, JSON.stringify(payload))
|
|
768
811
|
|
|
@@ -1973,10 +2016,12 @@ class PuppetService extends PUPPET.Puppet {
|
|
|
1973
2016
|
.bind(this.grpcManager.client),
|
|
1974
2017
|
)(request)
|
|
1975
2018
|
|
|
1976
|
-
const
|
|
1977
|
-
for (const
|
|
1978
|
-
|
|
1979
|
-
|
|
2019
|
+
const payloads = response.getMemberPayloadsList()
|
|
2020
|
+
for (const payload of payloads) {
|
|
2021
|
+
const contactId = payload.getId()
|
|
2022
|
+
const puppetPayload = roomMemberPbToPayload(payload)
|
|
2023
|
+
result.set(contactId, puppetPayload)
|
|
2024
|
+
cachedPayload[contactId] = puppetPayload
|
|
1980
2025
|
}
|
|
1981
2026
|
await this._payloadStore.roomMember?.set(roomId, cachedPayload)
|
|
1982
2027
|
} catch (e) {
|
package/src/config.ts
CHANGED
|
@@ -24,8 +24,8 @@ const envVars = {
|
|
|
24
24
|
*/
|
|
25
25
|
const GRPC_OPTIONS = {
|
|
26
26
|
// https://github.com/wechaty/wechaty-puppet-service/issues/86
|
|
27
|
-
'grpc.max_receive_message_length': 1024 * 1024 *
|
|
28
|
-
'grpc.max_send_message_length': 1024 * 1024 *
|
|
27
|
+
'grpc.max_receive_message_length': 1024 * 1024 * 80,
|
|
28
|
+
'grpc.max_send_message_length': 1024 * 1024 * 80,
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
export const NO_LOG_EVENTS: grpcPuppet.EventTypeMap[keyof grpcPuppet.EventTypeMap][] = [
|
package/src/package-json.ts
CHANGED
|
@@ -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.
|
|
7
|
+
"version": "1.0.108",
|
|
8
8
|
"description": "Puppet Service for Wechaty",
|
|
9
9
|
"type": "module",
|
|
10
10
|
"exports": {
|
|
@@ -55,7 +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": "^1.0.
|
|
58
|
+
"@juzi/wechaty-puppet": "^1.0.106",
|
|
59
59
|
"@juzi/wechaty-puppet-mock": "^1.0.1",
|
|
60
60
|
"@swc/core": "1.3.39",
|
|
61
61
|
"@types/google-protobuf": "^3.15.5",
|
|
@@ -77,7 +77,7 @@ export const packageJson: PackageJson = {
|
|
|
77
77
|
"@juzi/wechaty-puppet": "^1.0.84"
|
|
78
78
|
},
|
|
79
79
|
"dependencies": {
|
|
80
|
-
"@juzi/wechaty-grpc": "^1.0.
|
|
80
|
+
"@juzi/wechaty-grpc": "^1.0.94",
|
|
81
81
|
"clone-class": "^1.1.1",
|
|
82
82
|
"ducks": "^1.0.2",
|
|
83
83
|
"file-box": "^1.5.5",
|
|
@@ -293,6 +293,57 @@ function puppetImplementation (
|
|
|
293
293
|
}
|
|
294
294
|
},
|
|
295
295
|
|
|
296
|
+
batchContactPayload: async (call, callback) => {
|
|
297
|
+
log.verbose('PuppetServiceImpl', 'batchContactPayload()')
|
|
298
|
+
|
|
299
|
+
try {
|
|
300
|
+
const contactIdList = call.request.getIdsList()
|
|
301
|
+
|
|
302
|
+
const payloadMap = await puppet.batchContactPayload(contactIdList)
|
|
303
|
+
|
|
304
|
+
const response = new grpcPuppet.BatchContactPayloadResponse()
|
|
305
|
+
|
|
306
|
+
const payloads: grpcPuppet.ContactPayloadResponse[] = []
|
|
307
|
+
for (const [ _, payload ] of payloadMap.entries()) {
|
|
308
|
+
const pb = new grpcPuppet.ContactPayloadResponse()
|
|
309
|
+
pb.setAddress(payload.address || '')
|
|
310
|
+
pb.setAlias(payload.alias || '')
|
|
311
|
+
pb.setAvatar(payload.avatar)
|
|
312
|
+
pb.setCity(payload.city || '')
|
|
313
|
+
pb.setFriend(payload.friend || false)
|
|
314
|
+
pb.setGender(payload.gender)
|
|
315
|
+
pb.setId(payload.id)
|
|
316
|
+
pb.setName(payload.name)
|
|
317
|
+
pb.setProvince(payload.province || '')
|
|
318
|
+
pb.setSignature(payload.signature || '')
|
|
319
|
+
pb.setStar(payload.star || false)
|
|
320
|
+
pb.setType(payload.type)
|
|
321
|
+
/**
|
|
322
|
+
* @deprecated `payload.weixin` will be removed in v2.0
|
|
323
|
+
* @link https://github.com/wechaty/grpc/issues/174
|
|
324
|
+
*/
|
|
325
|
+
pb.setWeixin(payload.handle || payload.weixin || '')
|
|
326
|
+
pb.setPhonesList(payload.phone)
|
|
327
|
+
pb.setCoworker(payload.coworker || false)
|
|
328
|
+
pb.setCorporation(payload.corporation || '')
|
|
329
|
+
pb.setTitle(payload.title || '')
|
|
330
|
+
pb.setDescription(payload.description || '')
|
|
331
|
+
pb.setAdditionalInfo(payload.additionalInfo || '')
|
|
332
|
+
pb.setTagIdsList(payload.tags || [])
|
|
333
|
+
pb.setRealName(payload.realName || '')
|
|
334
|
+
pb.setAka(payload.aka || '')
|
|
335
|
+
payloads.push(pb)
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
response.setContactPayloadsList(payloads)
|
|
339
|
+
|
|
340
|
+
return callback(null, response)
|
|
341
|
+
|
|
342
|
+
} catch (e) {
|
|
343
|
+
return grpcError('batchContactPayload', e, callback)
|
|
344
|
+
}
|
|
345
|
+
},
|
|
346
|
+
|
|
296
347
|
contactPayloadModify: async (call, callback) => {
|
|
297
348
|
log.verbose('PuppetServiceImpl', 'contactPayloadModify()')
|
|
298
349
|
|
|
@@ -1663,8 +1714,9 @@ function puppetImplementation (
|
|
|
1663
1714
|
const payloadMap = await puppet.batchRoomMemberPayload(roomId, contactIdList)
|
|
1664
1715
|
|
|
1665
1716
|
const response = new grpcPuppet.BatchRoomMemberPayloadResponse()
|
|
1666
|
-
|
|
1667
|
-
|
|
1717
|
+
|
|
1718
|
+
const payloads: grpcPuppet.RoomMemberPayloadResponse[] = []
|
|
1719
|
+
for (const [ _, payload ] of payloadMap.entries()) {
|
|
1668
1720
|
const pb = new grpcPuppet.RoomMemberPayloadResponse()
|
|
1669
1721
|
pb.setAvatar(payload.avatar)
|
|
1670
1722
|
pb.setId(payload.id)
|
|
@@ -1674,9 +1726,11 @@ function puppetImplementation (
|
|
|
1674
1726
|
pb.setAdditionalInfo(payload.additionalInfo || '')
|
|
1675
1727
|
pb.setJoinScene(payload.joinScene || PUPPET.types.RoomMemberJoinScene.Unknown)
|
|
1676
1728
|
pb.setJoinTime(payload.joinTime || 0)
|
|
1677
|
-
|
|
1729
|
+
payloads.push(pb)
|
|
1678
1730
|
}
|
|
1679
1731
|
|
|
1732
|
+
response.setMemberPayloadsList(payloads)
|
|
1733
|
+
|
|
1680
1734
|
return callback(null, response)
|
|
1681
1735
|
|
|
1682
1736
|
} catch (e) {
|
|
@@ -79,6 +79,8 @@ export const channelPayloadToPb = (grpcPuppet: grpcPuppet, channelPayload: PUPPE
|
|
|
79
79
|
if (channelPayload.url) { pbChannelPayload.setUrl(channelPayload.url) }
|
|
80
80
|
if (channelPayload.objectId) { pbChannelPayload.setObjectId(channelPayload.objectId) }
|
|
81
81
|
if (channelPayload.objectNonceId) { pbChannelPayload.setObjectNonceId(channelPayload.objectNonceId) }
|
|
82
|
+
if (channelPayload.authIconUrl) { pbChannelPayload.setAuthIconUrl(channelPayload.authIconUrl) }
|
|
83
|
+
if (channelPayload.authJob) { pbChannelPayload.setAuthJob(channelPayload.authJob) }
|
|
82
84
|
return pbChannelPayload
|
|
83
85
|
}
|
|
84
86
|
|
|
@@ -389,3 +391,40 @@ export const roomMemberPbToPayload = (pb: puppet.RoomMemberPayloadResponse) => {
|
|
|
389
391
|
|
|
390
392
|
return payload
|
|
391
393
|
}
|
|
394
|
+
|
|
395
|
+
export const contactPbToPayload = (pb: puppet.ContactPayloadResponse) => {
|
|
396
|
+
const payload: PUPPET.payloads.Contact = {
|
|
397
|
+
address : pb.getAddress(),
|
|
398
|
+
alias : pb.getAlias(),
|
|
399
|
+
avatar : pb.getAvatar(),
|
|
400
|
+
city : pb.getCity(),
|
|
401
|
+
corporation : pb.getCorporation(),
|
|
402
|
+
coworker : pb.getCoworker(),
|
|
403
|
+
description : pb.getDescription(),
|
|
404
|
+
friend : pb.getFriend(),
|
|
405
|
+
gender : pb.getGender() as number,
|
|
406
|
+
/**
|
|
407
|
+
* Huan(202203): rename `getWeixin()` to `getHandle()` in v2.0.0
|
|
408
|
+
* @link https://github.com/wechaty/grpc/issues/174
|
|
409
|
+
*/
|
|
410
|
+
handle : pb.getWeixin(),
|
|
411
|
+
id : pb.getId(),
|
|
412
|
+
name : pb.getName(),
|
|
413
|
+
phone : pb.getPhonesList(),
|
|
414
|
+
province : pb.getProvince(),
|
|
415
|
+
signature : pb.getSignature(),
|
|
416
|
+
star : pb.getStar(),
|
|
417
|
+
title : pb.getTitle(),
|
|
418
|
+
type : pb.getType() as number,
|
|
419
|
+
/**
|
|
420
|
+
* `weixin` is deprecated, will be removed after Dec 31, 2022
|
|
421
|
+
* use `handle` instead.
|
|
422
|
+
*/
|
|
423
|
+
weixin : pb.getWeixin(),
|
|
424
|
+
additionalInfo: pb.getAdditionalInfo(),
|
|
425
|
+
tags : pb.getTagIdsList(),
|
|
426
|
+
realName : pb.getRealName(),
|
|
427
|
+
aka : pb.getAka(),
|
|
428
|
+
}
|
|
429
|
+
return payload
|
|
430
|
+
}
|