@juzi/wechaty 1.0.18 → 1.0.19

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 (70) hide show
  1. package/dist/cjs/src/package-json.js +2 -2
  2. package/dist/cjs/src/pure-functions/update.d.ts +9 -0
  3. package/dist/cjs/src/pure-functions/update.d.ts.map +1 -0
  4. package/dist/cjs/src/pure-functions/update.js +73 -0
  5. package/dist/cjs/src/pure-functions/update.js.map +1 -0
  6. package/dist/cjs/src/schemas/contact-events.d.ts +4 -1
  7. package/dist/cjs/src/schemas/contact-events.d.ts.map +1 -1
  8. package/dist/cjs/src/schemas/contact-events.js.map +1 -1
  9. package/dist/cjs/src/schemas/room-events.d.ts +5 -1
  10. package/dist/cjs/src/schemas/room-events.d.ts.map +1 -1
  11. package/dist/cjs/src/schemas/room-events.js +1 -0
  12. package/dist/cjs/src/schemas/room-events.js.map +1 -1
  13. package/dist/cjs/src/schemas/update.d.ts +12 -0
  14. package/dist/cjs/src/schemas/update.d.ts.map +1 -0
  15. package/dist/cjs/src/schemas/update.js +3 -0
  16. package/dist/cjs/src/schemas/update.js.map +1 -0
  17. package/dist/cjs/src/schemas/wechaty-events.d.ts +5 -1
  18. package/dist/cjs/src/schemas/wechaty-events.d.ts.map +1 -1
  19. package/dist/cjs/src/schemas/wechaty-events.js +1 -0
  20. package/dist/cjs/src/schemas/wechaty-events.js.map +1 -1
  21. package/dist/cjs/src/wechaty/wechaty-base.d.ts +7 -7
  22. package/dist/cjs/src/wechaty-mixins/gerror-mixin.d.ts +1 -1
  23. package/dist/cjs/src/wechaty-mixins/io-mixin.d.ts +2 -2
  24. package/dist/cjs/src/wechaty-mixins/login-mixin.d.ts +5 -5
  25. package/dist/cjs/src/wechaty-mixins/misc-mixin.d.ts +5 -5
  26. package/dist/cjs/src/wechaty-mixins/plugin-mixin.d.ts +6 -6
  27. package/dist/cjs/src/wechaty-mixins/puppet-mixin.d.ts +4 -12
  28. package/dist/cjs/src/wechaty-mixins/puppet-mixin.d.ts.map +1 -1
  29. package/dist/cjs/src/wechaty-mixins/puppet-mixin.js +23 -0
  30. package/dist/cjs/src/wechaty-mixins/puppet-mixin.js.map +1 -1
  31. package/dist/cjs/src/wechaty-mixins/wechatify-user-module-mixin.d.ts +1 -1
  32. package/dist/esm/src/package-json.js +2 -2
  33. package/dist/esm/src/pure-functions/update.d.ts +9 -0
  34. package/dist/esm/src/pure-functions/update.d.ts.map +1 -0
  35. package/dist/esm/src/pure-functions/update.js +69 -0
  36. package/dist/esm/src/pure-functions/update.js.map +1 -0
  37. package/dist/esm/src/schemas/contact-events.d.ts +4 -1
  38. package/dist/esm/src/schemas/contact-events.d.ts.map +1 -1
  39. package/dist/esm/src/schemas/contact-events.js.map +1 -1
  40. package/dist/esm/src/schemas/room-events.d.ts +5 -1
  41. package/dist/esm/src/schemas/room-events.d.ts.map +1 -1
  42. package/dist/esm/src/schemas/room-events.js +1 -0
  43. package/dist/esm/src/schemas/room-events.js.map +1 -1
  44. package/dist/esm/src/schemas/update.d.ts +12 -0
  45. package/dist/esm/src/schemas/update.d.ts.map +1 -0
  46. package/dist/esm/src/schemas/update.js +2 -0
  47. package/dist/esm/src/schemas/update.js.map +1 -0
  48. package/dist/esm/src/schemas/wechaty-events.d.ts +5 -1
  49. package/dist/esm/src/schemas/wechaty-events.d.ts.map +1 -1
  50. package/dist/esm/src/schemas/wechaty-events.js +1 -0
  51. package/dist/esm/src/schemas/wechaty-events.js.map +1 -1
  52. package/dist/esm/src/wechaty/wechaty-base.d.ts +7 -7
  53. package/dist/esm/src/wechaty-mixins/gerror-mixin.d.ts +1 -1
  54. package/dist/esm/src/wechaty-mixins/io-mixin.d.ts +2 -2
  55. package/dist/esm/src/wechaty-mixins/login-mixin.d.ts +5 -5
  56. package/dist/esm/src/wechaty-mixins/misc-mixin.d.ts +5 -5
  57. package/dist/esm/src/wechaty-mixins/plugin-mixin.d.ts +6 -6
  58. package/dist/esm/src/wechaty-mixins/puppet-mixin.d.ts +4 -12
  59. package/dist/esm/src/wechaty-mixins/puppet-mixin.d.ts.map +1 -1
  60. package/dist/esm/src/wechaty-mixins/puppet-mixin.js +23 -0
  61. package/dist/esm/src/wechaty-mixins/puppet-mixin.js.map +1 -1
  62. package/dist/esm/src/wechaty-mixins/wechatify-user-module-mixin.d.ts +1 -1
  63. package/package.json +1 -1
  64. package/src/package-json.ts +2 -2
  65. package/src/pure-functions/update.ts +68 -0
  66. package/src/schemas/contact-events.ts +4 -0
  67. package/src/schemas/room-events.ts +5 -0
  68. package/src/schemas/update.ts +14 -0
  69. package/src/schemas/wechaty-events.ts +5 -1
  70. package/src/wechaty-mixins/puppet-mixin.ts +24 -0
@@ -25,6 +25,8 @@ import type {
25
25
 
26
26
  import type { GErrorMixin } from './gerror-mixin.js'
27
27
  import type { IoMixin } from './io-mixin.js'
28
+ import type { InfoUpdateInterface } from '../schemas/update.js'
29
+ import { diffPayload } from '../pure-functions/update.js'
28
30
 
29
31
  const PUPPET_MEMORY_NAME = 'puppet'
30
32
 
@@ -438,12 +440,34 @@ const puppetMixin = <MixinBase extends WechatifyUserModuleMixin & GErrorMixin &
438
440
  switch (payloadType) {
439
441
  case PUPPET.types.Payload.Contact: {
440
442
  const contact = await this.Contact.find({ id: payloadId }) as unknown as undefined | ContactImpl
443
+ const oldPayload = JSON.parse(JSON.stringify(contact?.payload || {}))
441
444
  await contact?.ready(true)
445
+ const newPayload = JSON.parse(JSON.stringify(contact?.payload || {}))
446
+ const updateEvent: InfoUpdateInterface = {
447
+ type: payloadType,
448
+ id: payloadId,
449
+ updates: diffPayload(oldPayload, newPayload),
450
+ }
451
+ if (updateEvent.updates.length > 0) {
452
+ this.emit('update', updateEvent)
453
+ contact?.emit('update', updateEvent)
454
+ }
442
455
  break
443
456
  }
444
457
  case PUPPET.types.Payload.Room: {
445
458
  const room = await this.Room.find({ id: payloadId }) as unknown as undefined | RoomImpl
459
+ const oldPayload = JSON.parse(JSON.stringify(room?.payload || {}))
446
460
  await room?.ready(true)
461
+ const newPayload = JSON.parse(JSON.stringify(room?.payload || {}))
462
+ const updateEvent: InfoUpdateInterface = {
463
+ type: payloadType,
464
+ id: payloadId,
465
+ updates: diffPayload(oldPayload, newPayload),
466
+ }
467
+ if (updateEvent.updates.length > 0) {
468
+ this.emit('update', updateEvent)
469
+ room?.emit('update', updateEvent)
470
+ }
447
471
  break
448
472
  }
449
473
  case PUPPET.types.Payload.RoomMember: {