@juzi/wechaty-puppet-service 1.0.129 → 1.0.131
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/auth/call-cred.d.ts +2 -2
- package/dist/cjs/src/auth/call-cred.d.ts.map +1 -1
- package/dist/cjs/src/auth/call-cred.js.map +1 -1
- package/dist/cjs/src/client/puppet-service.d.ts +27 -2
- package/dist/cjs/src/client/puppet-service.d.ts.map +1 -1
- package/dist/cjs/src/client/puppet-service.js +431 -124
- package/dist/cjs/src/client/puppet-service.js.map +1 -1
- package/dist/cjs/src/client/puppet-service.spec.js +107 -0
- package/dist/cjs/src/client/puppet-service.spec.js.map +1 -1
- package/dist/cjs/src/client/room-cache-coordinator.d.ts +14 -0
- package/dist/cjs/src/client/room-cache-coordinator.d.ts.map +1 -0
- package/dist/cjs/src/client/room-cache-coordinator.js +53 -0
- package/dist/cjs/src/client/room-cache-coordinator.js.map +1 -0
- package/dist/cjs/src/client/room-member-cache.spec.d.ts +2 -0
- package/dist/cjs/src/client/room-member-cache.spec.d.ts.map +1 -0
- package/dist/cjs/src/client/room-member-cache.spec.js +417 -0
- package/dist/cjs/src/client/room-member-cache.spec.js.map +1 -0
- package/dist/cjs/src/client/room-member-load.spec.d.ts +2 -0
- package/dist/cjs/src/client/room-member-load.spec.d.ts.map +1 -0
- package/dist/cjs/src/client/room-member-load.spec.js +324 -0
- package/dist/cjs/src/client/room-member-load.spec.js.map +1 -0
- package/dist/cjs/src/package-json.js +4 -4
- package/dist/cjs/src/server/event-stream-manager.d.ts.map +1 -1
- package/dist/cjs/src/server/event-stream-manager.js +30 -0
- package/dist/cjs/src/server/event-stream-manager.js.map +1 -1
- package/dist/cjs/src/server/event-stream-manager.spec.d.ts +3 -0
- package/dist/cjs/src/server/event-stream-manager.spec.d.ts.map +1 -0
- package/dist/cjs/src/server/event-stream-manager.spec.js +22 -0
- package/dist/cjs/src/server/event-stream-manager.spec.js.map +1 -0
- package/dist/cjs/src/server/puppet-implementation.d.ts.map +1 -1
- package/dist/cjs/src/server/puppet-implementation.js +135 -28
- package/dist/cjs/src/server/puppet-implementation.js.map +1 -1
- package/dist/cjs/src/server/puppet-implementation.spec.js +98 -0
- package/dist/cjs/src/server/puppet-implementation.spec.js.map +1 -1
- package/dist/cjs/src/utils/pb-payload-helper.d.ts +10 -0
- package/dist/cjs/src/utils/pb-payload-helper.d.ts.map +1 -1
- package/dist/cjs/src/utils/pb-payload-helper.js +180 -1
- package/dist/cjs/src/utils/pb-payload-helper.js.map +1 -1
- package/dist/cjs/src/utils/room-member-load.spec.d.ts +2 -0
- package/dist/cjs/src/utils/room-member-load.spec.d.ts.map +1 -0
- package/dist/cjs/src/utils/room-member-load.spec.js +83 -0
- package/dist/cjs/src/utils/room-member-load.spec.js.map +1 -0
- package/dist/esm/src/auth/call-cred.d.ts +2 -2
- package/dist/esm/src/auth/call-cred.d.ts.map +1 -1
- package/dist/esm/src/auth/call-cred.js.map +1 -1
- package/dist/esm/src/client/puppet-service.d.ts +27 -2
- package/dist/esm/src/client/puppet-service.d.ts.map +1 -1
- package/dist/esm/src/client/puppet-service.js +432 -125
- package/dist/esm/src/client/puppet-service.js.map +1 -1
- package/dist/esm/src/client/puppet-service.spec.js +107 -0
- package/dist/esm/src/client/puppet-service.spec.js.map +1 -1
- package/dist/esm/src/client/room-cache-coordinator.d.ts +14 -0
- package/dist/esm/src/client/room-cache-coordinator.d.ts.map +1 -0
- package/dist/esm/src/client/room-cache-coordinator.js +49 -0
- package/dist/esm/src/client/room-cache-coordinator.js.map +1 -0
- package/dist/esm/src/client/room-member-cache.spec.d.ts +2 -0
- package/dist/esm/src/client/room-member-cache.spec.d.ts.map +1 -0
- package/dist/esm/src/client/room-member-cache.spec.js +415 -0
- package/dist/esm/src/client/room-member-cache.spec.js.map +1 -0
- package/dist/esm/src/client/room-member-load.spec.d.ts +2 -0
- package/dist/esm/src/client/room-member-load.spec.d.ts.map +1 -0
- package/dist/esm/src/client/room-member-load.spec.js +296 -0
- package/dist/esm/src/client/room-member-load.spec.js.map +1 -0
- package/dist/esm/src/package-json.js +4 -4
- package/dist/esm/src/server/event-stream-manager.d.ts.map +1 -1
- package/dist/esm/src/server/event-stream-manager.js +30 -0
- package/dist/esm/src/server/event-stream-manager.js.map +1 -1
- package/dist/esm/src/server/event-stream-manager.spec.d.ts +3 -0
- package/dist/esm/src/server/event-stream-manager.spec.d.ts.map +1 -0
- package/dist/esm/src/server/event-stream-manager.spec.js +20 -0
- package/dist/esm/src/server/event-stream-manager.spec.js.map +1 -0
- package/dist/esm/src/server/puppet-implementation.d.ts.map +1 -1
- package/dist/esm/src/server/puppet-implementation.js +136 -29
- package/dist/esm/src/server/puppet-implementation.js.map +1 -1
- package/dist/esm/src/server/puppet-implementation.spec.js +98 -0
- package/dist/esm/src/server/puppet-implementation.spec.js.map +1 -1
- package/dist/esm/src/utils/pb-payload-helper.d.ts +10 -0
- package/dist/esm/src/utils/pb-payload-helper.d.ts.map +1 -1
- package/dist/esm/src/utils/pb-payload-helper.js +169 -0
- package/dist/esm/src/utils/pb-payload-helper.js.map +1 -1
- package/dist/esm/src/utils/room-member-load.spec.d.ts +2 -0
- package/dist/esm/src/utils/room-member-load.spec.d.ts.map +1 -0
- package/dist/esm/src/utils/room-member-load.spec.js +58 -0
- package/dist/esm/src/utils/room-member-load.spec.js.map +1 -0
- package/package.json +4 -4
- package/src/auth/call-cred.ts +1 -1
- package/src/client/puppet-service.spec.ts +147 -0
- package/src/client/puppet-service.ts +378 -138
- package/src/client/room-cache-coordinator.ts +50 -0
- package/src/client/room-member-cache.spec.ts +448 -0
- package/src/client/room-member-load.spec.ts +319 -0
- package/src/package-json.ts +4 -4
- package/src/server/event-stream-manager.spec.ts +30 -0
- package/src/server/event-stream-manager.ts +29 -0
- package/src/server/puppet-implementation.spec.ts +127 -0
- package/src/server/puppet-implementation.ts +144 -29
- package/src/utils/pb-payload-helper.ts +150 -0
- package/src/utils/room-member-load.spec.ts +67 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { inspect } from 'util';
|
|
1
2
|
import { chunkDecoder, chunkEncoder, StringValue, grpc, puppet as grpcPuppet, } from '@juzi/wechaty-grpc';
|
|
2
3
|
import * as PUPPET from '@juzi/wechaty-puppet';
|
|
3
4
|
import { timeoutPromise } from 'gerror';
|
|
@@ -6,9 +7,27 @@ import { normalizeFileBoxUuid, } from '../file-box-helper/mod.js';
|
|
|
6
7
|
import { log } from '../config.js';
|
|
7
8
|
import { grpcError } from './grpc-error.js';
|
|
8
9
|
import { EventStreamManager } from './event-stream-manager.js';
|
|
9
|
-
import { OptionalBooleanUnwrapper, OptionalBooleanWrapper, callRecordPayloadToPb, channelPayloadToPb, channelPbToPayload, chatHistoryPayloadToPb, postPbToPayload, urlLinkPayloadToPb, channelCardPayloadToPb } from '../utils/pb-payload-helper.js';
|
|
10
|
+
import { OptionalBooleanUnwrapper, OptionalBooleanWrapper, callRecordPayloadToPb, channelPayloadToPb, channelPbToPayload, chatHistoryPayloadToPb, postPbToPayload, urlLinkPayloadToPb, channelCardPayloadToPb, roomPayloadToPb, roomMemberLoadStateToPb, roomMemberSnapshotToPb, validateRoomMemberLoadState, validateRoomMemberSnapshot, validateRoomMemberRevision } from '../utils/pb-payload-helper.js';
|
|
10
11
|
import { grpcCallTypeToPuppetMedia, puppetCallMediaTypeToGrpc } from '../utils/call-media-mapping.js';
|
|
11
12
|
import { TextContentType } from '@juzi/wechaty-puppet/types';
|
|
13
|
+
function roomMemberRpcError(method, error, callback) {
|
|
14
|
+
log.error('PuppetServiceImpl', 'roomMemberRpcError() %s() rejection: %s', method, inspect(error));
|
|
15
|
+
if (typeof error === 'object' && error !== null && 'code' in error) {
|
|
16
|
+
const status = error;
|
|
17
|
+
const code = status['code'];
|
|
18
|
+
if (typeof code === 'number' && Number.isInteger(code) && code > 0 && code <= 16) {
|
|
19
|
+
const details = typeof status['details'] === 'string' ? status['details']
|
|
20
|
+
: error instanceof Error ? error.message : 'Room member RPC failed';
|
|
21
|
+
callback({ code, details }, null);
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (error instanceof Error && /unsupported/i.test(error.message)) {
|
|
26
|
+
callback({ code: grpc.status.UNIMPLEMENTED, details: error.message }, null);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
grpcError(method, error, callback);
|
|
30
|
+
}
|
|
12
31
|
const setGrpcBatchResults = (response, ResultClass, payload) => {
|
|
13
32
|
response.setResultsList(payload.results.map(result => {
|
|
14
33
|
const pbResult = new ResultClass();
|
|
@@ -1572,6 +1591,76 @@ function puppetImplementation(puppet, FileBoxUuid) {
|
|
|
1572
1591
|
return grpcError('roomList', e, callback);
|
|
1573
1592
|
}
|
|
1574
1593
|
},
|
|
1594
|
+
roomMemberSync: async (call, callback) => {
|
|
1595
|
+
try {
|
|
1596
|
+
const roomId = call.request.getId();
|
|
1597
|
+
if (!roomId) {
|
|
1598
|
+
return callback({ code: grpc.status.INVALID_ARGUMENT, details: 'roomId is required' }, null);
|
|
1599
|
+
}
|
|
1600
|
+
const options = call.request.getForce() ? { force: true } : undefined;
|
|
1601
|
+
if (typeof puppet.roomMemberSync !== 'function') {
|
|
1602
|
+
throw new Error('roomMemberSync unsupported by adapter');
|
|
1603
|
+
}
|
|
1604
|
+
const state = await puppet.roomMemberSync(roomId, options);
|
|
1605
|
+
validateRoomMemberLoadState(state, roomId);
|
|
1606
|
+
return callback(null, roomMemberLoadStateToPb(state));
|
|
1607
|
+
}
|
|
1608
|
+
catch (error) {
|
|
1609
|
+
return roomMemberRpcError('roomMemberSync', error, callback);
|
|
1610
|
+
}
|
|
1611
|
+
},
|
|
1612
|
+
roomMemberLoadState: async (call, callback) => {
|
|
1613
|
+
try {
|
|
1614
|
+
const roomId = call.request.getId();
|
|
1615
|
+
if (!roomId) {
|
|
1616
|
+
return callback({ code: grpc.status.INVALID_ARGUMENT, details: 'roomId is required' }, null);
|
|
1617
|
+
}
|
|
1618
|
+
if (typeof puppet.roomMemberLoadState !== 'function') {
|
|
1619
|
+
throw new Error('roomMemberLoadState unsupported by adapter');
|
|
1620
|
+
}
|
|
1621
|
+
const state = await puppet.roomMemberLoadState(roomId);
|
|
1622
|
+
validateRoomMemberLoadState(state, roomId);
|
|
1623
|
+
return callback(null, roomMemberLoadStateToPb(state));
|
|
1624
|
+
}
|
|
1625
|
+
catch (error) {
|
|
1626
|
+
return roomMemberRpcError('roomMemberLoadState', error, callback);
|
|
1627
|
+
}
|
|
1628
|
+
},
|
|
1629
|
+
roomMemberSnapshot: async (call, callback) => {
|
|
1630
|
+
try {
|
|
1631
|
+
const roomId = call.request.getId();
|
|
1632
|
+
const revision = call.request.getRevision();
|
|
1633
|
+
const pageSize = call.request.getPageSize();
|
|
1634
|
+
try {
|
|
1635
|
+
if (!roomId) {
|
|
1636
|
+
throw new Error('roomId is required');
|
|
1637
|
+
}
|
|
1638
|
+
validateRoomMemberRevision(revision);
|
|
1639
|
+
if (!Number.isInteger(pageSize) || pageSize < 0 || pageSize > 500) {
|
|
1640
|
+
throw new Error('pageSize must be an integer between 0 and 500');
|
|
1641
|
+
}
|
|
1642
|
+
}
|
|
1643
|
+
catch (error) {
|
|
1644
|
+
return callback({ code: grpc.status.INVALID_ARGUMENT, details: error.message }, null);
|
|
1645
|
+
}
|
|
1646
|
+
if (typeof puppet.roomMemberSnapshot !== 'function') {
|
|
1647
|
+
throw new Error('roomMemberSnapshot unsupported by adapter');
|
|
1648
|
+
}
|
|
1649
|
+
const snapshot = await puppet.roomMemberSnapshot(roomId, revision, {
|
|
1650
|
+
pageToken: call.request.getPageToken(), pageSize,
|
|
1651
|
+
});
|
|
1652
|
+
try {
|
|
1653
|
+
validateRoomMemberSnapshot(snapshot, roomId, revision);
|
|
1654
|
+
}
|
|
1655
|
+
catch (error) {
|
|
1656
|
+
return callback({ code: grpc.status.FAILED_PRECONDITION, details: error.message }, null);
|
|
1657
|
+
}
|
|
1658
|
+
return callback(null, roomMemberSnapshotToPb(snapshot));
|
|
1659
|
+
}
|
|
1660
|
+
catch (error) {
|
|
1661
|
+
return roomMemberRpcError('roomMemberSnapshot', error, callback);
|
|
1662
|
+
}
|
|
1663
|
+
},
|
|
1575
1664
|
roomMemberList: async (call, callback) => {
|
|
1576
1665
|
log.verbose('PuppetServiceImpl', 'roomMemberList()');
|
|
1577
1666
|
try {
|
|
@@ -1640,20 +1729,7 @@ function puppetImplementation(puppet, FileBoxUuid) {
|
|
|
1640
1729
|
try {
|
|
1641
1730
|
const roomId = call.request.getId();
|
|
1642
1731
|
const payload = await puppet.roomPayload(roomId);
|
|
1643
|
-
const response =
|
|
1644
|
-
response.setAdminIdsList(payload.adminIdList);
|
|
1645
|
-
response.setAvatar(payload.avatar || '');
|
|
1646
|
-
response.setHandle(payload.handle || '');
|
|
1647
|
-
response.setId(payload.id);
|
|
1648
|
-
response.setMemberIdsList(payload.memberIdList);
|
|
1649
|
-
response.setOwnerId(payload.ownerId || '');
|
|
1650
|
-
response.setTopic(payload.topic);
|
|
1651
|
-
response.setAdditionalInfo(payload.additionalInfo || '');
|
|
1652
|
-
response.setRoomRemark(payload.remark || '');
|
|
1653
|
-
response.setExternal(!!payload.external);
|
|
1654
|
-
if (payload.createTime) {
|
|
1655
|
-
response.setCreateTime(timestampFromMilliseconds(payload.createTime));
|
|
1656
|
-
}
|
|
1732
|
+
const response = roomPayloadToPb(payload);
|
|
1657
1733
|
return callback(null, response);
|
|
1658
1734
|
}
|
|
1659
1735
|
catch (e) {
|
|
@@ -1668,20 +1744,7 @@ function puppetImplementation(puppet, FileBoxUuid) {
|
|
|
1668
1744
|
const response = new grpcPuppet.BatchRoomPayloadResponse();
|
|
1669
1745
|
const payloads = [];
|
|
1670
1746
|
for (const [_, payload] of payloadMap.entries()) {
|
|
1671
|
-
const pb =
|
|
1672
|
-
pb.setAdminIdsList(payload.adminIdList);
|
|
1673
|
-
pb.setAvatar(payload.avatar || '');
|
|
1674
|
-
pb.setHandle(payload.handle || '');
|
|
1675
|
-
pb.setId(payload.id);
|
|
1676
|
-
pb.setMemberIdsList(payload.memberIdList);
|
|
1677
|
-
pb.setOwnerId(payload.ownerId || '');
|
|
1678
|
-
pb.setTopic(payload.topic);
|
|
1679
|
-
pb.setAdditionalInfo(payload.additionalInfo || '');
|
|
1680
|
-
pb.setRoomRemark(payload.remark || '');
|
|
1681
|
-
pb.setExternal(!!payload.external);
|
|
1682
|
-
if (payload.createTime) {
|
|
1683
|
-
pb.setCreateTime(timestampFromMilliseconds(payload.createTime));
|
|
1684
|
-
}
|
|
1747
|
+
const pb = roomPayloadToPb(payload);
|
|
1685
1748
|
payloads.push(pb);
|
|
1686
1749
|
}
|
|
1687
1750
|
response.setRoomPayloadsList(payloads);
|
|
@@ -2403,6 +2466,50 @@ function puppetImplementation(puppet, FileBoxUuid) {
|
|
|
2403
2466
|
return grpcError('applyRoomAntiSpamStrategy', e, callback);
|
|
2404
2467
|
}
|
|
2405
2468
|
},
|
|
2469
|
+
orgBroadcastPayload: async (call, callback) => {
|
|
2470
|
+
log.verbose('PuppetServiceImpl', 'orgBroadcastPayload()');
|
|
2471
|
+
try {
|
|
2472
|
+
const orgBroadcastId = call.request.getId();
|
|
2473
|
+
const payload = await puppet.orgBroadcastPayload(orgBroadcastId);
|
|
2474
|
+
const response = new grpcPuppet.OrgBroadcastPayloadResponse();
|
|
2475
|
+
response.setId(payload.id);
|
|
2476
|
+
response.setSendType(payload.sendType);
|
|
2477
|
+
response.setConversationType(payload.conversationType);
|
|
2478
|
+
response.setCreatorId(payload.creatorId ?? '');
|
|
2479
|
+
response.setExecTime(payload.execTime);
|
|
2480
|
+
response.setStatus(payload.status);
|
|
2481
|
+
response.setCanCancel(payload.canCancel);
|
|
2482
|
+
response.setAllowSelect(payload.allowSelect);
|
|
2483
|
+
response.setSent(payload.sent);
|
|
2484
|
+
response.setTotalCount(payload.totalCount);
|
|
2485
|
+
response.setSentCount(payload.sentCount);
|
|
2486
|
+
response.setContentListJson(payload.contentListJson);
|
|
2487
|
+
response.setTargetsList(payload.targets.map(target => {
|
|
2488
|
+
const targetPb = new grpcPuppet.OrgBroadcastTarget();
|
|
2489
|
+
targetPb.setContactId(target.contactId ?? '');
|
|
2490
|
+
targetPb.setRoomId(target.roomId ?? '');
|
|
2491
|
+
targetPb.setStatus(target.status);
|
|
2492
|
+
return targetPb;
|
|
2493
|
+
}));
|
|
2494
|
+
return callback(null, response);
|
|
2495
|
+
}
|
|
2496
|
+
catch (e) {
|
|
2497
|
+
return grpcError('orgBroadcastPayload', e, callback);
|
|
2498
|
+
}
|
|
2499
|
+
},
|
|
2500
|
+
orgBroadcastExecute: async (call, callback) => {
|
|
2501
|
+
log.verbose('PuppetServiceImpl', 'orgBroadcastExecute()');
|
|
2502
|
+
try {
|
|
2503
|
+
const orgBroadcastId = call.request.getId();
|
|
2504
|
+
const targetIds = call.request.getTargetIdsList();
|
|
2505
|
+
// an empty target_ids on the wire means all targets of the org broadcast
|
|
2506
|
+
await puppet.orgBroadcastExecute(orgBroadcastId, targetIds.length ? targetIds : undefined);
|
|
2507
|
+
return callback(null, new grpcPuppet.OrgBroadcastExecuteResponse());
|
|
2508
|
+
}
|
|
2509
|
+
catch (e) {
|
|
2510
|
+
return grpcError('orgBroadcastExecute', e, callback);
|
|
2511
|
+
}
|
|
2512
|
+
},
|
|
2406
2513
|
download: async (call) => {
|
|
2407
2514
|
log.verbose('PuppetServiceImpl', 'download()');
|
|
2408
2515
|
try {
|