@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.
Files changed (98) hide show
  1. package/dist/cjs/src/auth/call-cred.d.ts +2 -2
  2. package/dist/cjs/src/auth/call-cred.d.ts.map +1 -1
  3. package/dist/cjs/src/auth/call-cred.js.map +1 -1
  4. package/dist/cjs/src/client/puppet-service.d.ts +27 -2
  5. package/dist/cjs/src/client/puppet-service.d.ts.map +1 -1
  6. package/dist/cjs/src/client/puppet-service.js +431 -124
  7. package/dist/cjs/src/client/puppet-service.js.map +1 -1
  8. package/dist/cjs/src/client/puppet-service.spec.js +107 -0
  9. package/dist/cjs/src/client/puppet-service.spec.js.map +1 -1
  10. package/dist/cjs/src/client/room-cache-coordinator.d.ts +14 -0
  11. package/dist/cjs/src/client/room-cache-coordinator.d.ts.map +1 -0
  12. package/dist/cjs/src/client/room-cache-coordinator.js +53 -0
  13. package/dist/cjs/src/client/room-cache-coordinator.js.map +1 -0
  14. package/dist/cjs/src/client/room-member-cache.spec.d.ts +2 -0
  15. package/dist/cjs/src/client/room-member-cache.spec.d.ts.map +1 -0
  16. package/dist/cjs/src/client/room-member-cache.spec.js +417 -0
  17. package/dist/cjs/src/client/room-member-cache.spec.js.map +1 -0
  18. package/dist/cjs/src/client/room-member-load.spec.d.ts +2 -0
  19. package/dist/cjs/src/client/room-member-load.spec.d.ts.map +1 -0
  20. package/dist/cjs/src/client/room-member-load.spec.js +324 -0
  21. package/dist/cjs/src/client/room-member-load.spec.js.map +1 -0
  22. package/dist/cjs/src/package-json.js +4 -4
  23. package/dist/cjs/src/server/event-stream-manager.d.ts.map +1 -1
  24. package/dist/cjs/src/server/event-stream-manager.js +30 -0
  25. package/dist/cjs/src/server/event-stream-manager.js.map +1 -1
  26. package/dist/cjs/src/server/event-stream-manager.spec.d.ts +3 -0
  27. package/dist/cjs/src/server/event-stream-manager.spec.d.ts.map +1 -0
  28. package/dist/cjs/src/server/event-stream-manager.spec.js +22 -0
  29. package/dist/cjs/src/server/event-stream-manager.spec.js.map +1 -0
  30. package/dist/cjs/src/server/puppet-implementation.d.ts.map +1 -1
  31. package/dist/cjs/src/server/puppet-implementation.js +135 -28
  32. package/dist/cjs/src/server/puppet-implementation.js.map +1 -1
  33. package/dist/cjs/src/server/puppet-implementation.spec.js +98 -0
  34. package/dist/cjs/src/server/puppet-implementation.spec.js.map +1 -1
  35. package/dist/cjs/src/utils/pb-payload-helper.d.ts +10 -0
  36. package/dist/cjs/src/utils/pb-payload-helper.d.ts.map +1 -1
  37. package/dist/cjs/src/utils/pb-payload-helper.js +180 -1
  38. package/dist/cjs/src/utils/pb-payload-helper.js.map +1 -1
  39. package/dist/cjs/src/utils/room-member-load.spec.d.ts +2 -0
  40. package/dist/cjs/src/utils/room-member-load.spec.d.ts.map +1 -0
  41. package/dist/cjs/src/utils/room-member-load.spec.js +83 -0
  42. package/dist/cjs/src/utils/room-member-load.spec.js.map +1 -0
  43. package/dist/esm/src/auth/call-cred.d.ts +2 -2
  44. package/dist/esm/src/auth/call-cred.d.ts.map +1 -1
  45. package/dist/esm/src/auth/call-cred.js.map +1 -1
  46. package/dist/esm/src/client/puppet-service.d.ts +27 -2
  47. package/dist/esm/src/client/puppet-service.d.ts.map +1 -1
  48. package/dist/esm/src/client/puppet-service.js +432 -125
  49. package/dist/esm/src/client/puppet-service.js.map +1 -1
  50. package/dist/esm/src/client/puppet-service.spec.js +107 -0
  51. package/dist/esm/src/client/puppet-service.spec.js.map +1 -1
  52. package/dist/esm/src/client/room-cache-coordinator.d.ts +14 -0
  53. package/dist/esm/src/client/room-cache-coordinator.d.ts.map +1 -0
  54. package/dist/esm/src/client/room-cache-coordinator.js +49 -0
  55. package/dist/esm/src/client/room-cache-coordinator.js.map +1 -0
  56. package/dist/esm/src/client/room-member-cache.spec.d.ts +2 -0
  57. package/dist/esm/src/client/room-member-cache.spec.d.ts.map +1 -0
  58. package/dist/esm/src/client/room-member-cache.spec.js +415 -0
  59. package/dist/esm/src/client/room-member-cache.spec.js.map +1 -0
  60. package/dist/esm/src/client/room-member-load.spec.d.ts +2 -0
  61. package/dist/esm/src/client/room-member-load.spec.d.ts.map +1 -0
  62. package/dist/esm/src/client/room-member-load.spec.js +296 -0
  63. package/dist/esm/src/client/room-member-load.spec.js.map +1 -0
  64. package/dist/esm/src/package-json.js +4 -4
  65. package/dist/esm/src/server/event-stream-manager.d.ts.map +1 -1
  66. package/dist/esm/src/server/event-stream-manager.js +30 -0
  67. package/dist/esm/src/server/event-stream-manager.js.map +1 -1
  68. package/dist/esm/src/server/event-stream-manager.spec.d.ts +3 -0
  69. package/dist/esm/src/server/event-stream-manager.spec.d.ts.map +1 -0
  70. package/dist/esm/src/server/event-stream-manager.spec.js +20 -0
  71. package/dist/esm/src/server/event-stream-manager.spec.js.map +1 -0
  72. package/dist/esm/src/server/puppet-implementation.d.ts.map +1 -1
  73. package/dist/esm/src/server/puppet-implementation.js +136 -29
  74. package/dist/esm/src/server/puppet-implementation.js.map +1 -1
  75. package/dist/esm/src/server/puppet-implementation.spec.js +98 -0
  76. package/dist/esm/src/server/puppet-implementation.spec.js.map +1 -1
  77. package/dist/esm/src/utils/pb-payload-helper.d.ts +10 -0
  78. package/dist/esm/src/utils/pb-payload-helper.d.ts.map +1 -1
  79. package/dist/esm/src/utils/pb-payload-helper.js +169 -0
  80. package/dist/esm/src/utils/pb-payload-helper.js.map +1 -1
  81. package/dist/esm/src/utils/room-member-load.spec.d.ts +2 -0
  82. package/dist/esm/src/utils/room-member-load.spec.d.ts.map +1 -0
  83. package/dist/esm/src/utils/room-member-load.spec.js +58 -0
  84. package/dist/esm/src/utils/room-member-load.spec.js.map +1 -0
  85. package/package.json +4 -4
  86. package/src/auth/call-cred.ts +1 -1
  87. package/src/client/puppet-service.spec.ts +147 -0
  88. package/src/client/puppet-service.ts +378 -138
  89. package/src/client/room-cache-coordinator.ts +50 -0
  90. package/src/client/room-member-cache.spec.ts +448 -0
  91. package/src/client/room-member-load.spec.ts +319 -0
  92. package/src/package-json.ts +4 -4
  93. package/src/server/event-stream-manager.spec.ts +30 -0
  94. package/src/server/event-stream-manager.ts +29 -0
  95. package/src/server/puppet-implementation.spec.ts +127 -0
  96. package/src/server/puppet-implementation.ts +144 -29
  97. package/src/utils/pb-payload-helper.ts +150 -0
  98. package/src/utils/room-member-load.spec.ts +67 -0
@@ -1 +1 @@
1
- {"version":3,"file":"puppet-implementation.d.ts","sourceRoot":"","sources":["../../../../src/server/puppet-implementation.ts"],"names":[],"mappings":"AAsBA,OAAO,EAKL,MAAM,IAAI,UAAU,EACrB,MAAgC,oBAAoB,CAAA;AACrD,OAAO,KAAK,EAEV,OAAO,EACR,MAAgC,UAAU,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAe,sBAAsB,CAAA;AA8CvD,iBAAS,oBAAoB,CAC3B,MAAM,EAAQ,MAAM,CAAC,KAAK,CAAC,eAAe,EAC1C,WAAW,EAAG,OAAO,OAAO,GAC3B,UAAU,CAAC,aAAa,CA6mG1B;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAA"}
1
+ {"version":3,"file":"puppet-implementation.d.ts","sourceRoot":"","sources":["../../../../src/server/puppet-implementation.ts"],"names":[],"mappings":"AAuBA,OAAO,EAKL,MAAM,IAAI,UAAU,EACrB,MAAgC,oBAAoB,CAAA;AACrD,OAAO,KAAK,EAEV,OAAO,EACR,MAAgC,UAAU,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAe,sBAAsB,CAAA;AAmEvD,iBAAS,oBAAoB,CAC3B,MAAM,EAAQ,MAAM,CAAC,KAAK,CAAC,eAAe,EAC1C,WAAW,EAAG,OAAO,OAAO,GAC3B,UAAU,CAAC,aAAa,CA0sG1B;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAA"}
@@ -24,6 +24,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.puppetImplementation = void 0;
27
+ const util_1 = require("util");
27
28
  const wechaty_grpc_1 = require("@juzi/wechaty-grpc");
28
29
  const PUPPET = __importStar(require("@juzi/wechaty-puppet"));
29
30
  const gerror_1 = require("gerror");
@@ -35,6 +36,24 @@ const event_stream_manager_js_1 = require("./event-stream-manager.js");
35
36
  const pb_payload_helper_js_1 = require("../utils/pb-payload-helper.js");
36
37
  const call_media_mapping_js_1 = require("../utils/call-media-mapping.js");
37
38
  const types_1 = require("@juzi/wechaty-puppet/types");
39
+ function roomMemberRpcError(method, error, callback) {
40
+ config_js_1.log.error('PuppetServiceImpl', 'roomMemberRpcError() %s() rejection: %s', method, (0, util_1.inspect)(error));
41
+ if (typeof error === 'object' && error !== null && 'code' in error) {
42
+ const status = error;
43
+ const code = status['code'];
44
+ if (typeof code === 'number' && Number.isInteger(code) && code > 0 && code <= 16) {
45
+ const details = typeof status['details'] === 'string' ? status['details']
46
+ : error instanceof Error ? error.message : 'Room member RPC failed';
47
+ callback({ code, details }, null);
48
+ return;
49
+ }
50
+ }
51
+ if (error instanceof Error && /unsupported/i.test(error.message)) {
52
+ callback({ code: wechaty_grpc_1.grpc.status.UNIMPLEMENTED, details: error.message }, null);
53
+ return;
54
+ }
55
+ (0, grpc_error_js_1.grpcError)(method, error, callback);
56
+ }
38
57
  const setGrpcBatchResults = (response, ResultClass, payload) => {
39
58
  response.setResultsList(payload.results.map(result => {
40
59
  const pbResult = new ResultClass();
@@ -1598,6 +1617,76 @@ function puppetImplementation(puppet, FileBoxUuid) {
1598
1617
  return (0, grpc_error_js_1.grpcError)('roomList', e, callback);
1599
1618
  }
1600
1619
  },
1620
+ roomMemberSync: async (call, callback) => {
1621
+ try {
1622
+ const roomId = call.request.getId();
1623
+ if (!roomId) {
1624
+ return callback({ code: wechaty_grpc_1.grpc.status.INVALID_ARGUMENT, details: 'roomId is required' }, null);
1625
+ }
1626
+ const options = call.request.getForce() ? { force: true } : undefined;
1627
+ if (typeof puppet.roomMemberSync !== 'function') {
1628
+ throw new Error('roomMemberSync unsupported by adapter');
1629
+ }
1630
+ const state = await puppet.roomMemberSync(roomId, options);
1631
+ (0, pb_payload_helper_js_1.validateRoomMemberLoadState)(state, roomId);
1632
+ return callback(null, (0, pb_payload_helper_js_1.roomMemberLoadStateToPb)(state));
1633
+ }
1634
+ catch (error) {
1635
+ return roomMemberRpcError('roomMemberSync', error, callback);
1636
+ }
1637
+ },
1638
+ roomMemberLoadState: async (call, callback) => {
1639
+ try {
1640
+ const roomId = call.request.getId();
1641
+ if (!roomId) {
1642
+ return callback({ code: wechaty_grpc_1.grpc.status.INVALID_ARGUMENT, details: 'roomId is required' }, null);
1643
+ }
1644
+ if (typeof puppet.roomMemberLoadState !== 'function') {
1645
+ throw new Error('roomMemberLoadState unsupported by adapter');
1646
+ }
1647
+ const state = await puppet.roomMemberLoadState(roomId);
1648
+ (0, pb_payload_helper_js_1.validateRoomMemberLoadState)(state, roomId);
1649
+ return callback(null, (0, pb_payload_helper_js_1.roomMemberLoadStateToPb)(state));
1650
+ }
1651
+ catch (error) {
1652
+ return roomMemberRpcError('roomMemberLoadState', error, callback);
1653
+ }
1654
+ },
1655
+ roomMemberSnapshot: async (call, callback) => {
1656
+ try {
1657
+ const roomId = call.request.getId();
1658
+ const revision = call.request.getRevision();
1659
+ const pageSize = call.request.getPageSize();
1660
+ try {
1661
+ if (!roomId) {
1662
+ throw new Error('roomId is required');
1663
+ }
1664
+ (0, pb_payload_helper_js_1.validateRoomMemberRevision)(revision);
1665
+ if (!Number.isInteger(pageSize) || pageSize < 0 || pageSize > 500) {
1666
+ throw new Error('pageSize must be an integer between 0 and 500');
1667
+ }
1668
+ }
1669
+ catch (error) {
1670
+ return callback({ code: wechaty_grpc_1.grpc.status.INVALID_ARGUMENT, details: error.message }, null);
1671
+ }
1672
+ if (typeof puppet.roomMemberSnapshot !== 'function') {
1673
+ throw new Error('roomMemberSnapshot unsupported by adapter');
1674
+ }
1675
+ const snapshot = await puppet.roomMemberSnapshot(roomId, revision, {
1676
+ pageToken: call.request.getPageToken(), pageSize,
1677
+ });
1678
+ try {
1679
+ (0, pb_payload_helper_js_1.validateRoomMemberSnapshot)(snapshot, roomId, revision);
1680
+ }
1681
+ catch (error) {
1682
+ return callback({ code: wechaty_grpc_1.grpc.status.FAILED_PRECONDITION, details: error.message }, null);
1683
+ }
1684
+ return callback(null, (0, pb_payload_helper_js_1.roomMemberSnapshotToPb)(snapshot));
1685
+ }
1686
+ catch (error) {
1687
+ return roomMemberRpcError('roomMemberSnapshot', error, callback);
1688
+ }
1689
+ },
1601
1690
  roomMemberList: async (call, callback) => {
1602
1691
  config_js_1.log.verbose('PuppetServiceImpl', 'roomMemberList()');
1603
1692
  try {
@@ -1666,20 +1755,7 @@ function puppetImplementation(puppet, FileBoxUuid) {
1666
1755
  try {
1667
1756
  const roomId = call.request.getId();
1668
1757
  const payload = await puppet.roomPayload(roomId);
1669
- const response = new wechaty_grpc_1.puppet.RoomPayloadResponse();
1670
- response.setAdminIdsList(payload.adminIdList);
1671
- response.setAvatar(payload.avatar || '');
1672
- response.setHandle(payload.handle || '');
1673
- response.setId(payload.id);
1674
- response.setMemberIdsList(payload.memberIdList);
1675
- response.setOwnerId(payload.ownerId || '');
1676
- response.setTopic(payload.topic);
1677
- response.setAdditionalInfo(payload.additionalInfo || '');
1678
- response.setRoomRemark(payload.remark || '');
1679
- response.setExternal(!!payload.external);
1680
- if (payload.createTime) {
1681
- response.setCreateTime((0, timestamp_js_1.timestampFromMilliseconds)(payload.createTime));
1682
- }
1758
+ const response = (0, pb_payload_helper_js_1.roomPayloadToPb)(payload);
1683
1759
  return callback(null, response);
1684
1760
  }
1685
1761
  catch (e) {
@@ -1694,20 +1770,7 @@ function puppetImplementation(puppet, FileBoxUuid) {
1694
1770
  const response = new wechaty_grpc_1.puppet.BatchRoomPayloadResponse();
1695
1771
  const payloads = [];
1696
1772
  for (const [_, payload] of payloadMap.entries()) {
1697
- const pb = new wechaty_grpc_1.puppet.RoomPayloadResponse();
1698
- pb.setAdminIdsList(payload.adminIdList);
1699
- pb.setAvatar(payload.avatar || '');
1700
- pb.setHandle(payload.handle || '');
1701
- pb.setId(payload.id);
1702
- pb.setMemberIdsList(payload.memberIdList);
1703
- pb.setOwnerId(payload.ownerId || '');
1704
- pb.setTopic(payload.topic);
1705
- pb.setAdditionalInfo(payload.additionalInfo || '');
1706
- pb.setRoomRemark(payload.remark || '');
1707
- pb.setExternal(!!payload.external);
1708
- if (payload.createTime) {
1709
- pb.setCreateTime((0, timestamp_js_1.timestampFromMilliseconds)(payload.createTime));
1710
- }
1773
+ const pb = (0, pb_payload_helper_js_1.roomPayloadToPb)(payload);
1711
1774
  payloads.push(pb);
1712
1775
  }
1713
1776
  response.setRoomPayloadsList(payloads);
@@ -2429,6 +2492,50 @@ function puppetImplementation(puppet, FileBoxUuid) {
2429
2492
  return (0, grpc_error_js_1.grpcError)('applyRoomAntiSpamStrategy', e, callback);
2430
2493
  }
2431
2494
  },
2495
+ orgBroadcastPayload: async (call, callback) => {
2496
+ config_js_1.log.verbose('PuppetServiceImpl', 'orgBroadcastPayload()');
2497
+ try {
2498
+ const orgBroadcastId = call.request.getId();
2499
+ const payload = await puppet.orgBroadcastPayload(orgBroadcastId);
2500
+ const response = new wechaty_grpc_1.puppet.OrgBroadcastPayloadResponse();
2501
+ response.setId(payload.id);
2502
+ response.setSendType(payload.sendType);
2503
+ response.setConversationType(payload.conversationType);
2504
+ response.setCreatorId(payload.creatorId ?? '');
2505
+ response.setExecTime(payload.execTime);
2506
+ response.setStatus(payload.status);
2507
+ response.setCanCancel(payload.canCancel);
2508
+ response.setAllowSelect(payload.allowSelect);
2509
+ response.setSent(payload.sent);
2510
+ response.setTotalCount(payload.totalCount);
2511
+ response.setSentCount(payload.sentCount);
2512
+ response.setContentListJson(payload.contentListJson);
2513
+ response.setTargetsList(payload.targets.map(target => {
2514
+ const targetPb = new wechaty_grpc_1.puppet.OrgBroadcastTarget();
2515
+ targetPb.setContactId(target.contactId ?? '');
2516
+ targetPb.setRoomId(target.roomId ?? '');
2517
+ targetPb.setStatus(target.status);
2518
+ return targetPb;
2519
+ }));
2520
+ return callback(null, response);
2521
+ }
2522
+ catch (e) {
2523
+ return (0, grpc_error_js_1.grpcError)('orgBroadcastPayload', e, callback);
2524
+ }
2525
+ },
2526
+ orgBroadcastExecute: async (call, callback) => {
2527
+ config_js_1.log.verbose('PuppetServiceImpl', 'orgBroadcastExecute()');
2528
+ try {
2529
+ const orgBroadcastId = call.request.getId();
2530
+ const targetIds = call.request.getTargetIdsList();
2531
+ // an empty target_ids on the wire means all targets of the org broadcast
2532
+ await puppet.orgBroadcastExecute(orgBroadcastId, targetIds.length ? targetIds : undefined);
2533
+ return callback(null, new wechaty_grpc_1.puppet.OrgBroadcastExecuteResponse());
2534
+ }
2535
+ catch (e) {
2536
+ return (0, grpc_error_js_1.grpcError)('orgBroadcastExecute', e, callback);
2537
+ }
2538
+ },
2432
2539
  download: async (call) => {
2433
2540
  config_js_1.log.verbose('PuppetServiceImpl', 'download()');
2434
2541
  try {