@juzi/wechaty-puppet-service 1.0.121 → 1.0.123

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 (32) hide show
  1. package/dist/cjs/src/client/puppet-service.d.ts +14 -0
  2. package/dist/cjs/src/client/puppet-service.d.ts.map +1 -1
  3. package/dist/cjs/src/client/puppet-service.js +63 -3
  4. package/dist/cjs/src/client/puppet-service.js.map +1 -1
  5. package/dist/cjs/src/package-json.js +3 -3
  6. package/dist/cjs/src/utils/pb-payload-helper.d.ts.map +1 -1
  7. package/dist/cjs/src/utils/pb-payload-helper.js +7 -0
  8. package/dist/cjs/src/utils/pb-payload-helper.js.map +1 -1
  9. package/dist/cjs/tests/fast-dirty-room-member.spec.js +123 -21
  10. package/dist/cjs/tests/fast-dirty-room-member.spec.js.map +1 -1
  11. package/dist/cjs/tests/grpc-stream-dirty-order.spec.d.ts +3 -0
  12. package/dist/cjs/tests/grpc-stream-dirty-order.spec.d.ts.map +1 -0
  13. package/dist/cjs/tests/grpc-stream-dirty-order.spec.js +135 -0
  14. package/dist/cjs/tests/grpc-stream-dirty-order.spec.js.map +1 -0
  15. package/dist/esm/src/client/puppet-service.d.ts +14 -0
  16. package/dist/esm/src/client/puppet-service.d.ts.map +1 -1
  17. package/dist/esm/src/client/puppet-service.js +63 -3
  18. package/dist/esm/src/client/puppet-service.js.map +1 -1
  19. package/dist/esm/src/package-json.js +3 -3
  20. package/dist/esm/src/utils/pb-payload-helper.d.ts.map +1 -1
  21. package/dist/esm/src/utils/pb-payload-helper.js +7 -0
  22. package/dist/esm/src/utils/pb-payload-helper.js.map +1 -1
  23. package/dist/esm/tests/fast-dirty-room-member.spec.js +123 -21
  24. package/dist/esm/tests/fast-dirty-room-member.spec.js.map +1 -1
  25. package/dist/esm/tests/grpc-stream-dirty-order.spec.d.ts +3 -0
  26. package/dist/esm/tests/grpc-stream-dirty-order.spec.d.ts.map +1 -0
  27. package/dist/esm/tests/grpc-stream-dirty-order.spec.js +110 -0
  28. package/dist/esm/tests/grpc-stream-dirty-order.spec.js.map +1 -0
  29. package/package.json +3 -3
  30. package/src/client/puppet-service.ts +61 -3
  31. package/src/package-json.ts +3 -3
  32. package/src/utils/pb-payload-helper.ts +3 -0
@@ -1 +1 @@
1
- {"version":3,"file":"pb-payload-helper.js","sourceRoot":"","sources":["../../../../src/utils/pb-payload-helper.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,EACL,MAAM,GACP,MAAM,oBAAoB,CAAA;AAE3B,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAA;AAK9C,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,UAAsB,EAAE,kBAA+C,EAAE,EAAE;IAChH,MAAM,oBAAoB,GAAG,IAAI,UAAU,CAAC,kBAAkB,EAAE,CAAA;IAChE,IAAI,kBAAkB,CAAC,KAAK,EAAE;QAAE,oBAAoB,CAAC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAA;KAAE;IACzF,IAAI,kBAAkB,CAAC,WAAW,EAAE;QAAE,oBAAoB,CAAC,cAAc,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAA;KAAE;IAC3G,IAAI,kBAAkB,CAAC,OAAO,EAAE;QAAE,oBAAoB,CAAC,UAAU,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAA;KAAE;IAC/F,IAAI,kBAAkB,CAAC,QAAQ,EAAE;QAAE,oBAAoB,CAAC,WAAW,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAA;KAAE;IAClG,IAAI,kBAAkB,CAAC,OAAO,EAAE;QAAE,oBAAoB,CAAC,UAAU,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAA;KAAE;IAC/F,IAAI,kBAAkB,CAAC,QAAQ,EAAE;QAAE,oBAAoB,CAAC,WAAW,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAA;KAAE;IAClG,IAAI,kBAAkB,CAAC,QAAQ,EAAE;QAAE,oBAAoB,CAAC,WAAW,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAA;KAAE;IAClG,IAAI,kBAAkB,CAAC,KAAK,EAAE;QAAE,oBAAoB,CAAC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAA;KAAE;IACzF,IAAI,kBAAkB,CAAC,QAAQ,EAAE;QAAE,oBAAoB,CAAC,WAAW,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAA;KAAE;IAElG,OAAO,oBAAoB,CAAA;AAC7B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,oBAA+C,EAAE,EAAE;IACxF,MAAM,qBAAqB,GAAG,oBAAoB,CAAC,QAAQ,EAAE,CAAA;IAC7D,MAAM,kBAAkB,GAAgC;QACtD,GAAG,qBAAqB;KACzB,CAAA;IACD,OAAO,kBAAkB,CAAA;AAC3B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,UAAsB,EAAE,cAAuC,EAAE,EAAE;IACpG,MAAM,gBAAgB,GAAG,IAAI,UAAU,CAAC,cAAc,EAAE,CAAA;IACxD,gBAAgB,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;IAC3C,gBAAgB,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;IAC/C,IAAI,cAAc,CAAC,WAAW,EAAE;QAAE,gBAAgB,CAAC,cAAc,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;KAAE;IAC/F,IAAI,cAAc,CAAC,YAAY,EAAE;QAAE,gBAAgB,CAAC,eAAe,CAAC,cAAc,CAAC,YAAY,CAAC,CAAA;KAAE;IAClG,OAAO,gBAAgB,CAAA;AACzB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,UAAsB,EAAE,eAAyC,EAAE,EAAE;IACvG,MAAM,iBAAiB,GAAG,IAAI,UAAU,CAAC,eAAe,EAAE,CAAA;IAC1D,iBAAiB,CAAC,WAAW,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;IACvD,iBAAiB,CAAC,YAAY,CAAC,eAAe,CAAC,SAAS,CAAC,CAAA;IACzD,iBAAiB,CAAC,WAAW,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;IACvD,iBAAiB,CAAC,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;IACrD,iBAAiB,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;IAC/C,OAAO,iBAAiB,CAAA;AAC1B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,iBAAyC,EAAE,EAAE;IAC/E,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,QAAQ,EAAE,CAAA;IACvD,MAAM,OAAO,GAA6B;QACxC,GAAG,kBAAkB;KACtB,CAAA;IAED,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,gBAAuC,EAAE,EAAE;IAC5E,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,QAAQ,EAAE,CAAA;IACrD,MAAM,cAAc,GAA4B;QAC9C,GAAG,iBAAiB;KACrB,CAAA;IACD,OAAO,cAAc,CAAA;AACvB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,UAAsB,EAAE,cAAuC,EAAE,EAAE;IACpG,MAAM,gBAAgB,GAAG,IAAI,UAAU,CAAC,cAAc,EAAE,CAAA;IACxD,IAAI,cAAc,CAAC,MAAM,EAAE;QAAE,gBAAgB,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;KAAE;IAChF,IAAI,cAAc,CAAC,QAAQ,EAAE;QAAE,gBAAgB,CAAC,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;KAAE;IACtF,IAAI,cAAc,CAAC,IAAI,EAAE;QAAE,gBAAgB,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;KAAE;IAC1E,IAAI,cAAc,CAAC,MAAM,EAAE;QAAE,gBAAgB,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;KAAE;IAChF,IAAI,cAAc,CAAC,QAAQ,EAAE;QAAE,gBAAgB,CAAC,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;KAAE;IACtF,IAAI,cAAc,CAAC,QAAQ,EAAE;QAAE,gBAAgB,CAAC,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;KAAE;IACtF,IAAI,cAAc,CAAC,QAAQ,EAAE;QAAE,gBAAgB,CAAC,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;KAAE;IACtF,IAAI,cAAc,CAAC,GAAG,EAAE;QAAE,gBAAgB,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;KAAE;IACvE,IAAI,cAAc,CAAC,QAAQ,EAAE;QAAE,gBAAgB,CAAC,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;KAAE;IACtF,IAAI,cAAc,CAAC,aAAa,EAAE;QAAE,gBAAgB,CAAC,gBAAgB,CAAC,cAAc,CAAC,aAAa,CAAC,CAAA;KAAE;IACrG,gBAAgB;IAChB,IAAI,cAAc,CAAC,QAAQ,EAAE;QAAE,gBAAgB,CAAC,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;KAAE;IACtF,IAAI,cAAc,CAAC,YAAY,EAAE;QAAE,gBAAgB,CAAC,eAAe,CAAC,cAAc,CAAC,YAAY,CAAC,CAAA;KAAE;IAClG,IAAI,cAAc,CAAC,WAAW,EAAE;QAAE,gBAAgB,CAAC,cAAc,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;KAAE;IAC/F,IAAI,cAAc,CAAC,YAAY,EAAE;QAAE,gBAAgB,CAAC,eAAe,CAAC,cAAc,CAAC,YAAY,CAAC,CAAA;KAAE;IAClG,IAAI,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE;QACpC,gBAAgB,CAAC,gBAAgB,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACrE,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,YAAY,EAAE,CAAA;YAC7C,IAAI,KAAK,CAAC,SAAS,EAAE;gBAAE,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;aAAE;YAC9D,IAAI,KAAK,CAAC,GAAG,EAAE;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;aAAE;YAC5C,IAAI,KAAK,CAAC,QAAQ,EAAE;gBAAE,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;aAAE;YAC3D,IAAI,KAAK,CAAC,YAAY,EAAE;gBAAE,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;aAAE;YACvE,IAAI,KAAK,CAAC,QAAQ,EAAE;gBAAE,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;aAAE;YAC3D,IAAI,KAAK,CAAC,KAAK,EAAE;gBAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;aAAE;YAClD,IAAI,KAAK,CAAC,MAAM,EAAE;gBAAE,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;aAAE;YACrD,IAAI,KAAK,CAAC,iBAAiB,EAAE;gBAAE,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;aAAE;YACtF,OAAO,OAAO,CAAA;QAChB,CAAC,CAAC,CAAC,CAAA;KACJ;IACD,OAAO,gBAAgB,CAAA;AACzB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,gBAAuC,EAAE,EAAE;IAC5E,MAAM,EAAE,aAAa,EAAE,GAAG,iBAAiB,EAAE,GAAG,gBAAgB,CAAC,QAAQ,EAAE,CAAA;IAC3E,MAAM,cAAc,GAA4B;QAC9C,GAAG,iBAAiB;QACpB,SAAS,EAAE,aAAa;KACzB,CAAA;IACD,OAAO,cAAc,CAAA;AACvB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,UAAsB,EAAE,kBAA+C,EAAE,EAAE;IAChH,MAAM,oBAAoB,GAAG,IAAI,UAAU,CAAC,kBAAkB,EAAE,CAAA;IAChE,IAAI,kBAAkB,CAAC,MAAM,EAAE;QAAE,oBAAoB,CAAC,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAA;KAAE;IAC5F,IAAI,kBAAkB,CAAC,MAAM,EAAE;QAAE,oBAAoB,CAAC,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAA;KAAE;IAC5F,IAAI,kBAAkB,CAAC,QAAQ,EAAE;QAAE,oBAAoB,CAAC,WAAW,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAA;KAAE;IAClG,IAAI,kBAAkB,CAAC,GAAG,EAAE;QAAE,oBAAoB,CAAC,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAA;KAAE;IACnF,IAAI,kBAAkB,CAAC,WAAW,EAAE;QAAE,oBAAoB,CAAC,cAAc,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAA;KAAE;IAC3G,IAAI,kBAAkB,CAAC,OAAO,EAAE;QAAE,oBAAoB,CAAC,UAAU,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAA;KAAE;IAC/F,OAAO,oBAAoB,CAAA;AAC7B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,oBAA+C,EAAE,EAAE;IACxF,MAAM,qBAAqB,GAAG,oBAAoB,CAAC,QAAQ,EAAE,CAAA;IAC7D,MAAM,kBAAkB,GAAgC;QACtD,GAAG,qBAAqB;KACzB,CAAA;IACD,OAAO,kBAAkB,CAAA;AAC3B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,UAAsB,EAAE,OAAmC,EAAE,gBAAgE,EAAE,EAAE;IACrK,MAAM,EAAE,GAAG,IAAI,UAAU,CAAC,iBAAiB,EAAE,CAAA;IAC7C,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAA;IAC7B,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE;QACtC,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,WAAW,EAAE,CAAA;QAC5C,QAAQ,IAAI,CAAC,IAAI,EAAE;YACjB,KAAK,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI;gBAC5B,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAA;gBACzD,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;gBAClC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;gBACnD,MAAK;YACP,KAAK,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBACpC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAA;gBACzD,MAAM,iBAAiB,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;gBAC1I,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAA;gBACrC,MAAK;aACN;YACD,KAAK,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC7B,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAA;gBACxD,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAA;gBACnC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,UAAU,EAAE,cAAc,CAAC,CAAA;gBACvE,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;gBACpC,MAAK;aACN;YACD,KAAK,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBACjC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAA;gBAC5D,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAA;gBACnC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,UAAU,EAAE,cAAc,CAAC,CAAA;gBACvE,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;gBACpC,MAAK;aACN;YACD,KAAK,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBACrC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAA;gBAChE,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAA;gBACvC,MAAM,oBAAoB,GAAG,sBAAsB,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAA;gBACnF,OAAO,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAA;gBAC5C,MAAK;aACN;YACD;gBACE,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;SAC/D;QACD,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;KAC3B;IACD,IAAI,OAAO,CAAC,MAAM,EAAE;QAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;KAAE;IACpD,IAAI,OAAO,CAAC,QAAQ,EAAE;QAAE,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;KAAE;IAC1D,IAAI,OAAO,CAAC,QAAQ,EAAE;QACpB,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;QAC3E,EAAE,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAA;KAClC;IACD,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,CAAA;IAChD,OAAO,EAAE,CAAA;AACX,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAA8B,EAAE,WAA2B,EAAE,EAAE;IAC7F,MAAM,OAAO,GAA+B;QAC1C,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE;QACpB,WAAW,EAAE,EAAE;QACf,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE;QACxB,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE;QAC5B,WAAW,EAAE,IAAI,CAAC,kBAAkB,EAAE;KACvC,CAAA;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAA;IAC7C,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE;QACjC,IAAI,cAAmD,CAAA;QACvD,QAAQ,OAAO,CAAC,OAAO,EAAE,EAAE;YACzB,KAAK,MAAM,CAAC,WAAW,CAAC,iBAAiB;gBACvC,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAA;gBACtG,MAAK;YACP,KAAK,MAAM,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;gBACzC,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU,EAAE,CAAA;gBACxC,IAAI,CAAC,WAAW,EAAE;oBAChB,MAAK;iBACN;gBACD,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;gBAC9C,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;gBACzD,MAAK;aACN;YACD,KAAK,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;gBACxC,MAAM,gBAAgB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAA;gBAC7C,IAAI,CAAC,gBAAgB,EAAE;oBACrB,MAAK;iBACN;gBACD,MAAM,cAAc,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,CAAA;gBAC3D,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;gBAC5D,MAAK;aACN;YACD,KAAK,MAAM,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;gBAC5C,MAAM,gBAAgB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAA;gBAC7C,IAAI,CAAC,gBAAgB,EAAE;oBACrB,MAAK;iBACN;gBACD,MAAM,cAAc,GAAG,kBAAkB,CAAC,gBAAiB,CAAC,CAAA;gBAC5D,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;gBAChE,MAAK;aACN;YACD,KAAK,MAAM,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;gBAChD,MAAM,oBAAoB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAA;gBACrD,IAAI,CAAC,oBAAoB,EAAE;oBACzB,MAAK;iBACN;gBACD,MAAM,kBAAkB,GAAG,sBAAsB,CAAC,oBAAoB,CAAC,CAAA;gBACvE,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAA;gBACxE,MAAK;aACN;YACD;gBACE,MAAM,IAAI,KAAK,CAAC,oCAAoC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;SAC3E;QACD,IAAI,cAAc,EAAE;YAClB,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;SACzC;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAA;SACtF;KACF;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;IACnC,IAAI,QAAQ,EAAE;QACZ,OAAO,CAAC,QAAQ,GAAG;YACjB,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE;YAC9B,QAAQ,EAAE,QAAQ,CAAC,WAAW,EAAE,IAAI,EAAE;YACtC,OAAO,EAAE,QAAQ,CAAC,UAAU,EAAE,IAAI,EAAE;YACpC,QAAQ,EAAE,QAAQ,CAAC,WAAW,EAAE;YAChC,SAAS,EAAE,QAAQ,CAAC,WAAW,EAAE;SAClC,CAAA;KACF;IACD,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,GAAa,EAAE,EAAE;IACtD,IAAI,OAAO,GAAG,KAAK,SAAS,EAAE;QAC5B,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,CAAA;KAClF;SAAM;QACL,OAAO,MAAM,CAAC,eAAe,CAAC,UAAU,CAAA;KACzC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,GAA+D,EAAE,EAAE;IAC1G,QAAQ,GAAG,EAAE;QACX,KAAK,MAAM,CAAC,eAAe,CAAC,SAAS;YACnC,OAAO,IAAI,CAAA;QACb,KAAK,MAAM,CAAC,eAAe,CAAC,UAAU;YACpC,OAAO,KAAK,CAAA;QACd,KAAK,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC;QACvC;YACE,OAAO,SAAS,CAAA;KACnB;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,YAAsC,EAAE,EAAE;IAC9E,MAAM,iBAAiB,GAA+B;QACpD,OAAO,EAAE,YAAY,CAAC,YAAY,EAAE;QACpC,YAAY,EAAE,YAAY,CAAC,qBAAqB,EAAE;QAClD,MAAM,EAAE,YAAY,CAAC,SAAS,EAAE;QAChC,IAAI,EAAE,YAAY,CAAC,OAAO,EAAE;QAC5B,MAAM,EAAE,YAAY,CAAC,SAAS,EAAE;KACjC,CAAA;IACD,OAAO,iBAAiB,CAAA;AAC1B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,UAAsB,EAAE,iBAA6C,EAAE,EAAE;IAC7G,MAAM,mBAAmB,GAAG,IAAI,UAAU,CAAC,iBAAiB,EAAE,CAAA;IAC9D,mBAAmB,CAAC,YAAY,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAA;IAC3D,mBAAmB,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAA;IACzE,mBAAmB,CAAC,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAA;IACvD,mBAAmB,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;IACnD,mBAAmB,CAAC,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAEvD,OAAO,mBAAmB,CAAA;AAC5B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,WAA2B,EAAE,aAA0C,EAAE,EAAE;IAChH,MAAM,sBAAsB,GAAkC,EAAE,CAAA;IAChE,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE;QACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,EAAE,CAAA;QAEpC,MAAM,kBAAkB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAA;QAE/C,IAAI,CAAC,kBAAkB,EAAE;YACvB,SAAQ;SACT;QAED,IAAI,OAAY,CAAA;QAChB,QAAQ,kBAAkB,CAAC,OAAO,EAAE,EAAE;YACpC,KAAK,MAAM,CAAC,sBAAsB,CAAC,IAAI;gBACrC,OAAO,GAAG,kBAAkB,CAAC,OAAO,EAAG,CAAA;gBACvC,MAAK;YACP,KAAK,MAAM,CAAC,sBAAsB,CAAC,IAAI;gBACrC,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC,UAAU,EAAG,CAAC,CAAA;gBAChE,MAAK;YACP,KAAK,MAAM,CAAC,sBAAsB,CAAC,QAAQ;gBACzC,OAAO,GAAG,mBAAmB,CAAC,kBAAkB,CAAC,WAAW,EAAG,CAAC,CAAA;gBAChE,MAAK;YACP,KAAK,MAAM,CAAC,sBAAsB,CAAC,GAAG;gBACpC,OAAO,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,UAAU,EAAG,CAAC,CAAA;gBAC9D,MAAK;YACP,KAAK,MAAM,CAAC,sBAAsB,CAAC,YAAY;gBAC7C,OAAO,GAAG,sBAAsB,CAAC,kBAAkB,CAAC,cAAc,EAAG,CAAC,CAAA;gBACtE,MAAK;YACP,KAAK,MAAM,CAAC,sBAAsB,CAAC,OAAO;gBACxC,OAAO,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,UAAU,EAAG,CAAC,CAAA;gBAC9D,MAAK;YACP,KAAK,MAAM,CAAC,sBAAsB,CAAC,YAAY;gBAC7C,OAAO,GAAG,sBAAsB,CAAC,WAAW,EAAE,kBAAkB,CAAC,kBAAkB,EAAG,CAAC,CAAA;gBACvF,MAAK;YACP,KAAK,MAAM,CAAC,sBAAsB,CAAC,YAAY;gBAC7C,OAAO,GAAG,sBAAsB,CAAC,kBAAkB,CAAC,cAAc,EAAG,CAAC,CAAA;gBACtE,MAAK;YACP;gBACE,MAAM,IAAI,KAAK,CAAC,sCAAsC,kBAAkB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;SACxF;QAED,MAAM,kBAAkB,GAAgC;YACtD,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE;YACvB,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACtC,UAAU,EAAE,OAAO,CAAC,aAAa,EAAE;YACnC,QAAQ,EAAE,OAAO,CAAC,WAAW,EAAE;YAC/B,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE;YACvB,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE;YACzB,OAAO;SACR,CAAA;QACD,sBAAsB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;KAChD;IACD,OAAO,sBAAsB,CAAA;AAC/B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EAAE,UAAsB,EAAE,sBAAqD,EAAE,gBAAgE,EAAE,EAAE;IAC9L,MAAM,IAAI,GAAG,EAAE,CAAA;IACf,KAAK,MAAM,kBAAkB,IAAI,sBAAsB,EAAE;QACvD,MAAM,oBAAoB,GAAG,IAAI,UAAU,CAAC,kBAAkB,EAAE,CAAA;QAEhE,oBAAoB,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;QACrD,MAAM,uBAAuB,GAAG,MAAM,gBAAgB,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAA;QACjF,oBAAoB,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAA;QACvD,oBAAoB,CAAC,aAAa,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAA;QACjE,oBAAoB,CAAC,WAAW,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAA;QAC7D,oBAAoB,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;QACrD,IAAI,kBAAkB,CAAC,KAAK,EAAE;YAC5B,oBAAoB,CAAC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAA;SACxD;QAED,MAAM,oBAAoB,GAAG,IAAI,UAAU,CAAC,kBAAkB,EAAE,CAAA;QAChE,QAAQ,kBAAkB,CAAC,IAAI,EAAE;YAC/B,KAAK,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAC/B,KAAK,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO;gBAC/B,oBAAoB,CAAC,OAAO,CAAC,UAAU,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAA;gBACpE,oBAAoB,CAAC,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAA;gBACxD,MAAK;YACP,KAAK,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAChC,KAAK,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;YACrC,KAAK,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK;gBAC7B,oBAAoB,CAAC,OAAO,CAAC,UAAU,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAA;gBACpE,oBAAoB,CAAC,UAAU,CAAC,MAAM,gBAAgB,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAA;gBACnF,MAAK;YACP,KAAK,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ;gBAChC,oBAAoB,CAAC,OAAO,CAAC,UAAU,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAA;gBACxE,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,UAAU,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAA;gBACrF,oBAAoB,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAA;gBACnD,MAAK;YACP,KAAK,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG;gBAC3B,oBAAoB,CAAC,OAAO,CAAC,UAAU,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAA;gBACnE,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,UAAU,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAA;gBACnF,oBAAoB,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;gBACjD,MAAK;YACP,KAAK,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW;gBACnC,oBAAoB,CAAC,OAAO,CAAC,UAAU,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAA;gBAC5E,MAAM,oBAAoB,GAAG,sBAAsB,CAAC,UAAU,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAA;gBAC3F,oBAAoB,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAA;gBACzD,MAAK;YACP,KAAK,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO;gBAC/B,oBAAoB,CAAC,OAAO,CAAC,UAAU,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAA;gBACvE,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,UAAU,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAA;gBACnF,oBAAoB,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;gBACjD,MAAK;YACP,KAAK,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW;gBACnC,oBAAoB,CAAC,OAAO,CAAC,UAAU,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAA;gBAC5E,MAAM,oBAAoB,GAAG,MAAM,sBAAsB,CAAC,UAAU,EAAE,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAA;gBACnH,oBAAoB,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,CAAA;gBAC7D,MAAK;YACP,KAAK,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW;gBACnC,oBAAoB,CAAC,OAAO,CAAC,UAAU,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAA;gBAC5E,MAAM,oBAAoB,GAAG,sBAAsB,CAAC,UAAU,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAA;gBAC3F,oBAAoB,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAA;gBACzD,MAAK;YACP;gBACE,MAAM,IAAI,KAAK,CAAC,uCAAuC,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAA;SACpF;QACD,oBAAoB,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAA;QAErD,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;KAChC;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,EAAoC,EAAE,EAAE;IAC5E,MAAM,OAAO,GAA+B;QAC1C,MAAM,EAAU,EAAE,CAAC,SAAS,EAAE;QAC9B,EAAE,EAAc,EAAE,CAAC,KAAK,EAAE;QAC1B,SAAS,EAAO,EAAE,CAAC,YAAY,EAAE;QACjC,IAAI,EAAY,EAAE,CAAC,OAAO,EAAE;QAC5B,SAAS,EAAO,EAAE,CAAC,YAAY,EAAE;QACjC,cAAc,EAAE,EAAE,CAAC,iBAAiB,EAAE;QACtC,SAAS,EAAO,EAAE,CAAC,YAAY,EAAE;QACjC,QAAQ,EAAQ,EAAE,CAAC,WAAW,EAAE;KACjC,CAAA;IAED,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,EAAiC,EAAE,EAAE;IACtE,MAAM,OAAO,GAA4B;QACvC,OAAO,EAAO,EAAE,CAAC,UAAU,EAAE;QAC7B,KAAK,EAAS,EAAE,CAAC,QAAQ,EAAE;QAC3B,MAAM,EAAQ,EAAE,CAAC,SAAS,EAAE;QAC5B,IAAI,EAAU,EAAE,CAAC,OAAO,EAAE;QAC1B,WAAW,EAAG,EAAE,CAAC,cAAc,EAAE;QACjC,QAAQ,EAAM,EAAE,CAAC,WAAW,EAAE;QAC9B,WAAW,EAAG,EAAE,CAAC,cAAc,EAAE;QACjC,MAAM,EAAQ,EAAE,CAAC,SAAS,EAAE;QAC5B,MAAM,EAAQ,EAAE,CAAC,SAAS,EAAY;QACtC;;;WAGG;QACH,MAAM,EAAQ,EAAE,CAAC,SAAS,EAAE;QAC5B,EAAE,EAAY,EAAE,CAAC,KAAK,EAAE;QACxB,IAAI,EAAU,EAAE,CAAC,OAAO,EAAE;QAC1B,KAAK,EAAS,EAAE,CAAC,aAAa,EAAE;QAChC,QAAQ,EAAM,EAAE,CAAC,WAAW,EAAE;QAC9B,SAAS,EAAK,EAAE,CAAC,YAAY,EAAE;QAC/B,IAAI,EAAU,EAAE,CAAC,OAAO,EAAE;QAC1B,KAAK,EAAS,EAAE,CAAC,QAAQ,EAAE;QAC3B,IAAI,EAAU,EAAE,CAAC,OAAO,EAAY;QACpC;;;WAGG;QACH,MAAM,EAAU,EAAE,CAAC,SAAS,EAAE;QAC9B,cAAc,EAAE,EAAE,CAAC,iBAAiB,EAAE;QACtC,IAAI,EAAY,EAAE,CAAC,aAAa,EAAE;QAClC,QAAQ,EAAQ,EAAE,CAAC,WAAW,EAAE;QAChC,GAAG,EAAa,EAAE,CAAC,MAAM,EAAE;KAC5B,CAAA;IACD,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
1
+ {"version":3,"file":"pb-payload-helper.js","sourceRoot":"","sources":["../../../../src/utils/pb-payload-helper.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,24 @@
1
1
  #!/usr/bin/env -S node --no-warnings --loader ts-node/esm
2
2
  /**
3
- * Regression test for the RoomMember persistent-store dirty bug.
3
+ * Regression tests for the RoomMember persistent-store dirty semantics.
4
4
  *
5
- * The puppet-side cache mixin already knows that RoomMember dirty ids are
6
- * sometimes a compound `"<roomId><memberId>"` (using STRING_SPLITTER)
7
- * and splits the id before deleting from the in-memory LRU
8
- * (wechaty-puppet/src/mixins/cache-mixin.ts).
5
+ * The persistent `PayloadStore.roomMember` is a
6
+ * `FlashStore<roomId, {[memberId]: RoomMember}>` -- a per-room record of
7
+ * members. Dirty ids arrive in two shapes:
9
8
  *
10
- * However the client-side `fastDirty` here passes the raw id straight to
11
- * `PayloadStore.roomMember.delete`. The persistent FlashStore is keyed by
12
- * roomId only, so the delete silently no-ops and the stale entry survives
13
- * across process restarts.
9
+ * 1. A compound `"<roomId><STRING_SPLITTER><memberId>"` -- a single
10
+ * member's payload went stale (e.g. one member renamed).
11
+ * 2. A bare `"<roomId>"` -- the whole room's member set went stale.
14
12
  *
15
- * This test populates the store, fires the dirty path with a compound id,
16
- * and asserts the entry is gone.
13
+ * The previous handler treated both shapes the same by calling
14
+ * `roomMember.delete(roomId)`, which threw away the entire room's
15
+ * cache even when only one member was dirty. That thrash forces the
16
+ * next N-1 members to re-fetch over gRPC.
17
+ *
18
+ * The new handler must:
19
+ * - On compound id: drop only the named member, keep the rest.
20
+ * - On compound id whose split leaves the record empty: delete the row.
21
+ * - On bare roomId: delete the entire row (as before).
17
22
  */
18
23
  import { test } from 'tstest';
19
24
  import os from 'os';
@@ -21,29 +26,126 @@ import path from 'path';
21
26
  import fs from 'fs';
22
27
  import * as PUPPET from '@juzi/wechaty-puppet';
23
28
  import { PuppetService } from '../src/mod.js';
24
- test('fastDirty(RoomMember, "<roomId>\\u001F<memberId>") must clear the room entry', async (t) => {
29
+ const makePuppet = async () => {
25
30
  const token = `puppet_service_test_${Date.now()}_${Math.floor(Math.random() * 1e6)}`;
26
31
  const puppet = new PuppetService({ token });
27
32
  const accountId = 'acct-test';
28
33
  await puppet._payloadStore.start(accountId);
34
+ return { puppet, token };
35
+ };
36
+ const cleanup = async (puppet, token) => {
37
+ await puppet._payloadStore.stop();
38
+ try {
39
+ await fs.promises.rm(path.join(os.homedir(), '.wechaty', 'wechaty-puppet-service', token), { recursive: true, force: true });
40
+ }
41
+ catch (_) { /* ignore */ }
42
+ };
43
+ test('fastDirty(RoomMember, "<roomId>\\u001F<memberId>") drops only the named member', async (t) => {
44
+ const { puppet, token } = await makePuppet();
29
45
  const roomId = 'room-test-id';
30
46
  await puppet._payloadStore.roomMember.set(roomId, {
31
47
  'member-A': { id: 'member-A', name: 'A' },
32
48
  'member-B': { id: 'member-B', name: 'B' },
33
49
  });
34
- const before = await puppet._payloadStore.roomMember.get(roomId);
35
- t.ok(before, 'sanity: roomMember entry exists before dirty');
36
50
  await puppet.fastDirty({
37
51
  payloadType: PUPPET.types.Dirty.RoomMember,
38
52
  payloadId: `${roomId}${PUPPET.STRING_SPLITTER}member-A`,
39
53
  });
40
54
  const after = await puppet._payloadStore.roomMember.get(roomId);
41
- t.notOk(after, 'roomMember entry must be cleared after compound-id dirty');
42
- await puppet._payloadStore.stop();
43
- // best-effort cleanup of the on-disk store dir
44
- try {
45
- await fs.promises.rm(path.join(os.homedir(), '.wechaty', 'wechaty-puppet-service', token), { recursive: true, force: true });
46
- }
47
- catch (_) { /* ignore */ }
55
+ t.ok(after, 'room entry must survive when only one member is dirtied');
56
+ t.notOk(after && after['member-A'], 'dirtied member-A must be gone');
57
+ t.ok(after && after['member-B'], 'unrelated member-B must be preserved');
58
+ await cleanup(puppet, token);
59
+ });
60
+ test('fastDirty(RoomMember, "<roomId>\\u001F<lastMember>") deletes the row when empty', async (t) => {
61
+ const { puppet, token } = await makePuppet();
62
+ const roomId = 'room-test-id-lone';
63
+ await puppet._payloadStore.roomMember.set(roomId, {
64
+ 'only-member': { id: 'only-member', name: 'Solo' },
65
+ });
66
+ await puppet.fastDirty({
67
+ payloadType: PUPPET.types.Dirty.RoomMember,
68
+ payloadId: `${roomId}${PUPPET.STRING_SPLITTER}only-member`,
69
+ });
70
+ const after = await puppet._payloadStore.roomMember.get(roomId);
71
+ t.notOk(after, 'row must be deleted once the record has no members left');
72
+ await cleanup(puppet, token);
73
+ });
74
+ test('fastDirty(RoomMember, "<roomId>") clears the whole room entry', async (t) => {
75
+ const { puppet, token } = await makePuppet();
76
+ const roomId = 'room-test-id-full';
77
+ await puppet._payloadStore.roomMember.set(roomId, {
78
+ 'member-A': { id: 'member-A', name: 'A' },
79
+ 'member-B': { id: 'member-B', name: 'B' },
80
+ });
81
+ await puppet.fastDirty({
82
+ payloadType: PUPPET.types.Dirty.RoomMember,
83
+ payloadId: roomId,
84
+ });
85
+ const after = await puppet._payloadStore.roomMember.get(roomId);
86
+ t.notOk(after, 'bare roomId dirty must clear the whole row');
87
+ await cleanup(puppet, token);
88
+ });
89
+ test('fastDirty(RoomMember) on unknown member is a no-op', async (t) => {
90
+ const { puppet, token } = await makePuppet();
91
+ const roomId = 'room-test-id-noop';
92
+ const before = {
93
+ 'member-A': { id: 'member-A', name: 'A' },
94
+ 'member-B': { id: 'member-B', name: 'B' },
95
+ };
96
+ await puppet._payloadStore.roomMember.set(roomId, before);
97
+ await puppet.fastDirty({
98
+ payloadType: PUPPET.types.Dirty.RoomMember,
99
+ payloadId: `${roomId}${PUPPET.STRING_SPLITTER}ghost-member`,
100
+ });
101
+ const after = await puppet._payloadStore.roomMember.get(roomId);
102
+ t.same(after, before, 'unrelated dirty must not disturb the record');
103
+ await cleanup(puppet, token);
104
+ });
105
+ test('fastDirty(RoomMember) concurrent compound dirties on same roomId drop every named member', async (t) => {
106
+ const { puppet, token } = await makePuppet();
107
+ const roomId = 'room-test-id-race';
108
+ await puppet._payloadStore.roomMember.set(roomId, {
109
+ 'member-A': { id: 'member-A', name: 'A' },
110
+ 'member-B': { id: 'member-B', name: 'B' },
111
+ });
112
+ // Fire both compound dirties without awaiting between them so their
113
+ // `get → mutate → set` cycles interleave. Without per-roomId
114
+ // serialization, both reads would see {A, B}, both writes would keep
115
+ // one sibling, and one of the two deletes would be lost.
116
+ await Promise.all([
117
+ puppet.fastDirty({
118
+ payloadType: PUPPET.types.Dirty.RoomMember,
119
+ payloadId: `${roomId}${PUPPET.STRING_SPLITTER}member-A`,
120
+ }),
121
+ puppet.fastDirty({
122
+ payloadType: PUPPET.types.Dirty.RoomMember,
123
+ payloadId: `${roomId}${PUPPET.STRING_SPLITTER}member-B`,
124
+ }),
125
+ ]);
126
+ const after = await puppet._payloadStore.roomMember.get(roomId);
127
+ // Either the whole row is gone (last shrink deleted it) or the record
128
+ // is empty. Both are acceptable "no members left" observations.
129
+ const noMembersLeft = !after || Object.keys(after).length === 0;
130
+ t.ok(noMembersLeft, `both dirtied members must be evicted, got: ${JSON.stringify(after)}`);
131
+ await cleanup(puppet, token);
132
+ });
133
+ test('fastDirty(RoomMember) prototype-key member id must not match a real member', async (t) => {
134
+ const { puppet, token } = await makePuppet();
135
+ const roomId = 'room-test-id-proto';
136
+ const before = {
137
+ 'member-A': { id: 'member-A', name: 'A' },
138
+ };
139
+ await puppet._payloadStore.roomMember.set(roomId, before);
140
+ // `toString` exists on Object.prototype; a naive `memberId in current`
141
+ // check would match it and take the mutate branch. The correct guard
142
+ // uses hasOwnProperty and treats this as an unknown member.
143
+ await puppet.fastDirty({
144
+ payloadType: PUPPET.types.Dirty.RoomMember,
145
+ payloadId: `${roomId}${PUPPET.STRING_SPLITTER}toString`,
146
+ });
147
+ const after = await puppet._payloadStore.roomMember.get(roomId);
148
+ t.same(after, before, 'prototype-key dirty must be a no-op');
149
+ await cleanup(puppet, token);
48
150
  });
49
151
  //# sourceMappingURL=fast-dirty-room-member.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fast-dirty-room-member.spec.js","sourceRoot":"","sources":["../../../tests/fast-dirty-room-member.spec.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,MAAM,IAAI,CAAA;AAEnB,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAA;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE7C,IAAI,CAAC,8EAA8E,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;IAC7F,MAAM,KAAK,GAAG,uBAAuB,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,CAAA;IACpF,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,CAAQ,CAAA;IAElD,MAAM,SAAS,GAAG,WAAW,CAAA;IAC7B,MAAM,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IAE3C,MAAM,MAAM,GAAG,cAAc,CAAA;IAC7B,MAAM,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE;QAChD,UAAU,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAS;QAChD,UAAU,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAS;KACjD,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAChE,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,8CAA8C,CAAC,CAAA;IAE5D,MAAM,MAAM,CAAC,SAAS,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU;QAC1C,SAAS,EAAI,GAAG,MAAM,GAAG,MAAM,CAAC,eAAe,UAAU;KAC1D,CAAC,CAAA;IAEF,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAC/D,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,0DAA0D,CAAC,CAAA;IAE1E,MAAM,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,CAAA;IAEjC,+CAA+C;IAC/C,IAAI;QACF,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAClB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,wBAAwB,EAAE,KAAK,CAAC,EACpE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CACjC,CAAA;KACF;IAAC,OAAO,CAAC,EAAE,EAAE,YAAY,EAAE;AAC9B,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"fast-dirty-room-member.spec.js","sourceRoot":"","sources":["../../../tests/fast-dirty-room-member.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env -S node --no-warnings --loader ts-node/esm
2
+ export {};
3
+ //# sourceMappingURL=grpc-stream-dirty-order.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grpc-stream-dirty-order.spec.d.ts","sourceRoot":"","sources":["../../../tests/grpc-stream-dirty-order.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,110 @@
1
+ #!/usr/bin/env -S node --no-warnings --loader ts-node/esm
2
+ /**
3
+ * Regression / hardening test for the EVENT_TYPE_DIRTY dispatch order.
4
+ *
5
+ * Client-side dirty handling touches two independent caches:
6
+ *
7
+ * - `fastDirty()` clears `_payloadStore` (FlashStore, on disk, async).
8
+ * - `emit('dirty')` triggers the puppet-side CacheMixin which clears
9
+ * the in-memory LRU synchronously in the same tick.
10
+ *
11
+ * If `emit('dirty')` runs before `fastDirty()` resolves, a listener that
12
+ * immediately reads back the payload -- as CacheMixin.onDirty does when
13
+ * a caller races with the dirty event -- can:
14
+ *
15
+ * 1. See an LRU miss (already cleared),
16
+ * 2. Refetch via `contactRawPayload` etc.,
17
+ * 3. Hit the still-un-cleared `_payloadStore` entry,
18
+ * 4. Repopulate the LRU with the stale row that fastDirty is about
19
+ * to delete a microtask later,
20
+ * 5. And the fresh fastDirty delete no-ops against a now-cold key.
21
+ *
22
+ * The current implementation `await`s fastDirty before emitting. This
23
+ * test pins that invariant: fastDirty must fully resolve before any
24
+ * `dirty` listener observes the event.
25
+ */
26
+ import { test, sinon } from 'tstest';
27
+ import * as PUPPET from '@juzi/wechaty-puppet';
28
+ import { puppet as grpcPuppet } from '@juzi/wechaty-grpc';
29
+ import { PuppetService } from '../src/mod.js';
30
+ test('onGrpcStreamEvent awaits fastDirty before emitting dirty', async (t) => {
31
+ const token = `puppet_service_test_${Date.now()}_${Math.floor(Math.random() * 1e6)}`;
32
+ const puppet = new PuppetService({ token });
33
+ let fastDirtyResolvedAt;
34
+ let dirtyEmittedAt;
35
+ const FASTDIRTY_DELAY_MS = 50;
36
+ puppet.fastDirty = async (_payload) => {
37
+ await new Promise(resolve => setTimeout(resolve, FASTDIRTY_DELAY_MS));
38
+ fastDirtyResolvedAt = Date.now();
39
+ };
40
+ puppet.on('dirty', () => {
41
+ dirtyEmittedAt = Date.now();
42
+ });
43
+ const dirtyJson = JSON.stringify({
44
+ payloadType: PUPPET.types.Dirty.Contact,
45
+ payloadId: 'contact-x',
46
+ });
47
+ const fakeEvent = {
48
+ getType: () => grpcPuppet.EventType.EVENT_TYPE_DIRTY,
49
+ getPayload: () => dirtyJson,
50
+ getSeq: () => 0,
51
+ };
52
+ await puppet.onGrpcStreamEvent(fakeEvent);
53
+ t.ok(fastDirtyResolvedAt, 'fastDirty must have been invoked');
54
+ t.ok(dirtyEmittedAt, 'dirty listener must have been invoked');
55
+ t.ok(fastDirtyResolvedAt <= dirtyEmittedAt, `dirty emit (${dirtyEmittedAt}) must not precede fastDirty resolve (${fastDirtyResolvedAt})`);
56
+ });
57
+ test('onGrpcStreamEvent: dirty emit sequence-number is strictly after every fastDirty resolution', async (t) => {
58
+ // Wall-clock ordering (the baseline test above) is fine as a smoke
59
+ // signal but can collapse to a tie when both boundaries fall inside
60
+ // the same millisecond. The invariant we actually care about is
61
+ // *causal*: each fastDirty must have fully resolved before the
62
+ // corresponding dirty emit fires. Record call ordinals from a shared
63
+ // monotonic counter to pin that -- ordinals cannot tie.
64
+ const token = `puppet_service_test_${Date.now()}_${Math.floor(Math.random() * 1e6)}`;
65
+ const puppet = new PuppetService({ token });
66
+ let sequence = 0;
67
+ const nextOrdinal = () => ++sequence;
68
+ // Order of interest per event: fastDirty enter -> fastDirty resolve -> dirty emit.
69
+ const fastDirtyEnterOrdinals = [];
70
+ const fastDirtyResolveOrdinals = [];
71
+ const dirtyEmitOrdinals = [];
72
+ const fastDirtyStub = sinon.stub().callsFake(async (_payload) => {
73
+ fastDirtyEnterOrdinals.push(nextOrdinal());
74
+ // Yield the microtask queue so a broken ordering would surface: if
75
+ // emit ran ahead of the await point below, its ordinal would slot
76
+ // between our enter and resolve records.
77
+ await new Promise(resolve => setImmediate(resolve));
78
+ fastDirtyResolveOrdinals.push(nextOrdinal());
79
+ });
80
+ puppet.fastDirty = fastDirtyStub;
81
+ const dirtySpy = sinon.spy(() => {
82
+ dirtyEmitOrdinals.push(nextOrdinal());
83
+ });
84
+ puppet.on('dirty', dirtySpy);
85
+ const makeEvent = (payloadId) => {
86
+ const dirtyJson = JSON.stringify({
87
+ payloadType: PUPPET.types.Dirty.Contact,
88
+ payloadId,
89
+ });
90
+ return {
91
+ getType: () => grpcPuppet.EventType.EVENT_TYPE_DIRTY,
92
+ getPayload: () => dirtyJson,
93
+ getSeq: () => 0,
94
+ };
95
+ };
96
+ // Two back-to-back dirty events: this is the scenario Fix #6 pins,
97
+ // sequential await must hold across both.
98
+ await puppet.onGrpcStreamEvent(makeEvent('contact-1'));
99
+ await puppet.onGrpcStreamEvent(makeEvent('contact-2'));
100
+ t.equal(fastDirtyStub.callCount, 2, 'fastDirty invoked once per dirty event');
101
+ t.equal(dirtySpy.callCount, 2, 'dirty listener invoked once per dirty event');
102
+ t.equal(fastDirtyEnterOrdinals.length, 2, 'both fastDirty invocations recorded an entry ordinal');
103
+ t.equal(fastDirtyResolveOrdinals.length, 2, 'both fastDirty invocations recorded a resolve ordinal');
104
+ t.equal(dirtyEmitOrdinals.length, 2, 'both dirty emits recorded an ordinal');
105
+ for (let i = 0; i < 2; i++) {
106
+ t.ok(fastDirtyEnterOrdinals[i] < fastDirtyResolveOrdinals[i], `event #${i}: fastDirty must enter (ord=${fastDirtyEnterOrdinals[i]}) before it resolves (ord=${fastDirtyResolveOrdinals[i]})`);
107
+ t.ok(fastDirtyResolveOrdinals[i] < dirtyEmitOrdinals[i], `event #${i}: dirty emit ordinal (${dirtyEmitOrdinals[i]}) must strictly follow fastDirty resolve ordinal (${fastDirtyResolveOrdinals[i]})`);
108
+ }
109
+ });
110
+ //# sourceMappingURL=grpc-stream-dirty-order.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grpc-stream-dirty-order.spec.js","sourceRoot":"","sources":["../../../tests/grpc-stream-dirty-order.spec.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@juzi/wechaty-puppet-service",
3
- "version": "1.0.121",
3
+ "version": "1.0.123",
4
4
  "description": "Puppet Service for Wechaty",
5
5
  "type": "module",
6
6
  "exports": {
@@ -51,7 +51,7 @@
51
51
  "@chatie/eslint-config": "^1.0.4",
52
52
  "@chatie/semver": "^0.4.7",
53
53
  "@chatie/tsconfig": "^4.6.3",
54
- "@juzi/wechaty-puppet": "^1.0.145",
54
+ "@juzi/wechaty-puppet": "^1.0.146",
55
55
  "@juzi/wechaty-puppet-mock": "^1.0.1",
56
56
  "@swc/core": "1.3.39",
57
57
  "@types/google-protobuf": "^3.15.5",
@@ -73,7 +73,7 @@
73
73
  "@juzi/wechaty-puppet": "^1.0.143"
74
74
  },
75
75
  "dependencies": {
76
- "@juzi/wechaty-grpc": "^1.0.105",
76
+ "@juzi/wechaty-grpc": "^1.0.106",
77
77
  "clone-class": "^1.1.1",
78
78
  "ducks": "^1.0.2",
79
79
  "file-box": "^1.5.5",
@@ -110,6 +110,21 @@ class PuppetService extends PUPPET.Puppet {
110
110
 
111
111
  protected _payloadStore: PayloadStore
112
112
 
113
+ /**
114
+ * Per-roomId serialization chain for RoomMember compound dirty events.
115
+ *
116
+ * The compound RoomMember handler is a `get → mutate → set` sequence
117
+ * across an async FlashStore. Two dirty events for the same roomId
118
+ * (e.g. member-A and member-B, arriving back-to-back) would otherwise
119
+ * both read the same snapshot and each write back with only their own
120
+ * key removed -- losing one of the deletes.
121
+ *
122
+ * Keyed by roomId, each entry chains the pending handler run so a
123
+ * follow-up dirty for the same room waits for the in-flight one to
124
+ * finish. Entries self-clean after their tail resolves.
125
+ */
126
+ private _roomMemberDirtyChain: Map<string, Promise<void>> = new Map()
127
+
113
128
  private timeoutMilliseconds: number
114
129
 
115
130
  protected _grpcManager?: GrpcManager
@@ -517,9 +532,52 @@ class PuppetService extends PUPPET.Puppet {
517
532
  [PUPPET.types.Dirty.Post]: async (_: string) => {},
518
533
  [PUPPET.types.Dirty.Room]: async (id: string) => this._payloadStore.room?.delete(id),
519
534
  [PUPPET.types.Dirty.RoomMember]: async (id: string) => {
520
- const [ roomId ] = id.split(PUPPET.STRING_SPLITTER)
521
- if (roomId) {
522
- await this._payloadStore.roomMember?.delete(roomId)
535
+ const [ roomId, memberId ] = id.split(PUPPET.STRING_SPLITTER)
536
+ if (!roomId) {
537
+ return
538
+ }
539
+ const store = this._payloadStore.roomMember
540
+ if (!store) {
541
+ return
542
+ }
543
+ // Bare roomId: the whole member set is stale, drop the row.
544
+ // Row-level delete is idempotent so it does not need serialization.
545
+ if (memberId === undefined) {
546
+ await store.delete(roomId)
547
+ return
548
+ }
549
+ // Compound id: `get → mutate → set` is a read-modify-write across
550
+ // an async store. Serialize per roomId so two concurrent compound
551
+ // dirties don't each read the same snapshot and each drop only
552
+ // their own key -- which would lose one of the two deletes.
553
+ const previous = this._roomMemberDirtyChain.get(roomId) ?? Promise.resolve()
554
+ const next = (async () => {
555
+ // Swallow the previous link's rejection so a failure upstream
556
+ // does not silently skip our own mutation. The prior handler
557
+ // already reported its error via fastDirty()'s try/catch.
558
+ try {
559
+ await previous
560
+ } catch (_) { /* ignore, upstream already reported */ }
561
+ const current = await store.get(roomId)
562
+ if (!current || !Object.prototype.hasOwnProperty.call(current, memberId)) {
563
+ return
564
+ }
565
+ const { [memberId]: _drop, ...rest } = current
566
+ if (Object.keys(rest).length === 0) {
567
+ await store.delete(roomId)
568
+ } else {
569
+ await store.set(roomId, rest)
570
+ }
571
+ })()
572
+ this._roomMemberDirtyChain.set(roomId, next)
573
+ try {
574
+ await next
575
+ } finally {
576
+ // Only clear the slot if we are still the tail; otherwise a
577
+ // later handler has already extended the chain and owns cleanup.
578
+ if (this._roomMemberDirtyChain.get(roomId) === next) {
579
+ this._roomMemberDirtyChain.delete(roomId)
580
+ }
523
581
  }
524
582
  },
525
583
  [PUPPET.types.Dirty.Tag]: async (id: string) => this._payloadStore.tag?.delete(id),
@@ -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.121",
7
+ "version": "1.0.123",
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.145",
58
+ "@juzi/wechaty-puppet": "^1.0.146",
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.143"
78
78
  },
79
79
  "dependencies": {
80
- "@juzi/wechaty-grpc": "^1.0.105",
80
+ "@juzi/wechaty-grpc": "^1.0.106",
81
81
  "clone-class": "^1.1.1",
82
82
  "ducks": "^1.0.2",
83
83
  "file-box": "^1.5.5",
@@ -284,6 +284,8 @@ export const callRecordPbToPayload = (callRecordPb: puppet.CallRecordPayload) =>
284
284
  type: callRecordPb.getType(),
285
285
  status: callRecordPb.getStatus(),
286
286
  }
287
+ const callId = callRecordPb.getCallId()
288
+ if (callId) { callRecordPayload.callId = callId }
287
289
  return callRecordPayload
288
290
  }
289
291
 
@@ -294,6 +296,7 @@ export const callRecordPayloadToPb = (grpcPuppet: grpcPuppet, callRecordPayload:
294
296
  pbCallRecordPayload.setLength(callRecordPayload.length)
295
297
  pbCallRecordPayload.setType(callRecordPayload.type)
296
298
  pbCallRecordPayload.setStatus(callRecordPayload.status)
299
+ if (callRecordPayload.callId) { pbCallRecordPayload.setCallId(callRecordPayload.callId) }
297
300
 
298
301
  return pbCallRecordPayload
299
302
  }