@juzi/wechaty 1.0.21 → 1.0.24

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 (106) hide show
  1. package/dist/cjs/src/config.d.ts +2 -0
  2. package/dist/cjs/src/config.d.ts.map +1 -1
  3. package/dist/cjs/src/config.js +3 -1
  4. package/dist/cjs/src/config.js.map +1 -1
  5. package/dist/cjs/src/package-json.js +4 -4
  6. package/dist/cjs/src/package-json.js.map +1 -1
  7. package/dist/cjs/src/pure-functions/update.d.ts +2 -1
  8. package/dist/cjs/src/pure-functions/update.d.ts.map +1 -1
  9. package/dist/cjs/src/pure-functions/update.js +18 -6
  10. package/dist/cjs/src/pure-functions/update.js.map +1 -1
  11. package/dist/cjs/src/schemas/contact-events.d.ts +14 -2
  12. package/dist/cjs/src/schemas/contact-events.d.ts.map +1 -1
  13. package/dist/cjs/src/schemas/contact-events.js.map +1 -1
  14. package/dist/cjs/src/schemas/room-events.d.ts +4 -1
  15. package/dist/cjs/src/schemas/room-events.d.ts.map +1 -1
  16. package/dist/cjs/src/schemas/room-events.js +1 -0
  17. package/dist/cjs/src/schemas/room-events.js.map +1 -1
  18. package/dist/cjs/src/schemas/update.d.ts +30 -11
  19. package/dist/cjs/src/schemas/update.d.ts.map +1 -1
  20. package/dist/cjs/src/schemas/update.js +32 -0
  21. package/dist/cjs/src/schemas/update.js.map +1 -1
  22. package/dist/cjs/src/schemas/wechaty-events.d.ts +26 -2
  23. package/dist/cjs/src/schemas/wechaty-events.d.ts.map +1 -1
  24. package/dist/cjs/src/schemas/wechaty-events.js +7 -0
  25. package/dist/cjs/src/schemas/wechaty-events.js.map +1 -1
  26. package/dist/cjs/src/user-modules/contact.d.ts.map +1 -1
  27. package/dist/cjs/src/user-modules/contact.js +7 -10
  28. package/dist/cjs/src/user-modules/contact.js.map +1 -1
  29. package/dist/cjs/src/user-modules/tag-group.d.ts +54 -20
  30. package/dist/cjs/src/user-modules/tag-group.d.ts.map +1 -1
  31. package/dist/cjs/src/user-modules/tag-group.js +103 -44
  32. package/dist/cjs/src/user-modules/tag-group.js.map +1 -1
  33. package/dist/cjs/src/user-modules/tag.d.ts +57 -22
  34. package/dist/cjs/src/user-modules/tag.d.ts.map +1 -1
  35. package/dist/cjs/src/user-modules/tag.js +140 -48
  36. package/dist/cjs/src/user-modules/tag.js.map +1 -1
  37. package/dist/cjs/src/wechaty/wechaty-base.d.ts +7 -7
  38. package/dist/cjs/src/wechaty-mixins/gerror-mixin.d.ts +1 -1
  39. package/dist/cjs/src/wechaty-mixins/io-mixin.d.ts +2 -2
  40. package/dist/cjs/src/wechaty-mixins/login-mixin.d.ts +5 -5
  41. package/dist/cjs/src/wechaty-mixins/misc-mixin.d.ts +5 -5
  42. package/dist/cjs/src/wechaty-mixins/plugin-mixin.d.ts +6 -6
  43. package/dist/cjs/src/wechaty-mixins/puppet-mixin.d.ts +4 -4
  44. package/dist/cjs/src/wechaty-mixins/puppet-mixin.d.ts.map +1 -1
  45. package/dist/cjs/src/wechaty-mixins/puppet-mixin.js +152 -13
  46. package/dist/cjs/src/wechaty-mixins/puppet-mixin.js.map +1 -1
  47. package/dist/cjs/src/wechaty-mixins/wechatify-user-module-mixin.d.ts +1 -1
  48. package/dist/esm/src/config.d.ts +2 -0
  49. package/dist/esm/src/config.d.ts.map +1 -1
  50. package/dist/esm/src/config.js +2 -0
  51. package/dist/esm/src/config.js.map +1 -1
  52. package/dist/esm/src/package-json.js +4 -4
  53. package/dist/esm/src/package-json.js.map +1 -1
  54. package/dist/esm/src/pure-functions/update.d.ts +2 -1
  55. package/dist/esm/src/pure-functions/update.d.ts.map +1 -1
  56. package/dist/esm/src/pure-functions/update.js +16 -5
  57. package/dist/esm/src/pure-functions/update.js.map +1 -1
  58. package/dist/esm/src/schemas/contact-events.d.ts +14 -2
  59. package/dist/esm/src/schemas/contact-events.d.ts.map +1 -1
  60. package/dist/esm/src/schemas/contact-events.js.map +1 -1
  61. package/dist/esm/src/schemas/room-events.d.ts +4 -1
  62. package/dist/esm/src/schemas/room-events.d.ts.map +1 -1
  63. package/dist/esm/src/schemas/room-events.js +1 -0
  64. package/dist/esm/src/schemas/room-events.js.map +1 -1
  65. package/dist/esm/src/schemas/update.d.ts +30 -11
  66. package/dist/esm/src/schemas/update.d.ts.map +1 -1
  67. package/dist/esm/src/schemas/update.js +8 -1
  68. package/dist/esm/src/schemas/update.js.map +1 -1
  69. package/dist/esm/src/schemas/wechaty-events.d.ts +26 -2
  70. package/dist/esm/src/schemas/wechaty-events.d.ts.map +1 -1
  71. package/dist/esm/src/schemas/wechaty-events.js +7 -0
  72. package/dist/esm/src/schemas/wechaty-events.js.map +1 -1
  73. package/dist/esm/src/user-modules/contact.d.ts.map +1 -1
  74. package/dist/esm/src/user-modules/contact.js +7 -10
  75. package/dist/esm/src/user-modules/contact.js.map +1 -1
  76. package/dist/esm/src/user-modules/tag-group.d.ts +54 -20
  77. package/dist/esm/src/user-modules/tag-group.d.ts.map +1 -1
  78. package/dist/esm/src/user-modules/tag-group.js +104 -45
  79. package/dist/esm/src/user-modules/tag-group.js.map +1 -1
  80. package/dist/esm/src/user-modules/tag.d.ts +57 -22
  81. package/dist/esm/src/user-modules/tag.d.ts.map +1 -1
  82. package/dist/esm/src/user-modules/tag.js +119 -50
  83. package/dist/esm/src/user-modules/tag.js.map +1 -1
  84. package/dist/esm/src/wechaty/wechaty-base.d.ts +7 -7
  85. package/dist/esm/src/wechaty-mixins/gerror-mixin.d.ts +1 -1
  86. package/dist/esm/src/wechaty-mixins/io-mixin.d.ts +2 -2
  87. package/dist/esm/src/wechaty-mixins/login-mixin.d.ts +5 -5
  88. package/dist/esm/src/wechaty-mixins/misc-mixin.d.ts +5 -5
  89. package/dist/esm/src/wechaty-mixins/plugin-mixin.d.ts +6 -6
  90. package/dist/esm/src/wechaty-mixins/puppet-mixin.d.ts +4 -4
  91. package/dist/esm/src/wechaty-mixins/puppet-mixin.d.ts.map +1 -1
  92. package/dist/esm/src/wechaty-mixins/puppet-mixin.js +153 -14
  93. package/dist/esm/src/wechaty-mixins/puppet-mixin.js.map +1 -1
  94. package/dist/esm/src/wechaty-mixins/wechatify-user-module-mixin.d.ts +1 -1
  95. package/package.json +3 -3
  96. package/src/config.ts +3 -0
  97. package/src/package-json.ts +4 -4
  98. package/src/pure-functions/update.ts +20 -8
  99. package/src/schemas/contact-events.ts +22 -3
  100. package/src/schemas/room-events.ts +4 -0
  101. package/src/schemas/update.ts +42 -13
  102. package/src/schemas/wechaty-events.ts +77 -43
  103. package/src/user-modules/contact.ts +7 -10
  104. package/src/user-modules/tag-group.ts +135 -53
  105. package/src/user-modules/tag.ts +124 -57
  106. package/src/wechaty-mixins/puppet-mixin.ts +171 -15
@@ -1,41 +1,43 @@
1
+ import { concurrencyExecuter } from 'rx-queue';
1
2
  import { log } from '../config.js';
3
+ import { poolifyMixin } from '../user-mixins/poolify.js';
2
4
  import { validationMixin } from '../user-mixins/validation.js';
3
- import { wechatifyMixinBase, } from '../user-mixins/wechatify.js';
4
- class TagGroupMixin extends wechatifyMixinBase() {
5
- payload;
5
+ import { wechatifyMixin, } from '../user-mixins/wechatify.js';
6
+ const MixinBase = wechatifyMixin(poolifyMixin(Object)());
7
+ class TagGroupMixin extends MixinBase {
8
+ id;
6
9
  /**
7
10
  *
8
- * Create
11
+ * Instance properties
12
+ * @ignore
9
13
  *
10
14
  */
11
- static create(payload) {
12
- log.verbose('TagGroup', 'create()');
13
- return new this(payload);
14
- }
15
+ payload;
15
16
  /**
16
17
  * @hideconstructor
17
18
  */
18
- constructor(payload) {
19
+ constructor(id) {
19
20
  super();
20
- this.payload = payload;
21
+ this.id = id;
21
22
  log.silly('TagGroup', 'constructor()');
22
23
  }
23
- id() {
24
- return this.payload.id;
25
- }
26
24
  name() {
27
- return this.payload.name;
25
+ return (this.payload && this.payload.name) || '';
28
26
  }
29
- static pool = [];
30
- static async list(forceSync = false) {
31
- log.verbose('TagGroup', 'list(%s)', forceSync);
32
- if (this.pool.length > 0 && !forceSync) {
33
- return this.pool;
34
- }
27
+ static async list() {
28
+ log.verbose('TagGroup', 'list()');
35
29
  try {
36
- const payloads = await this.wechaty.puppet.tagGroupList();
37
- this.pool = payloads.map(payload => new this(payload));
38
- return this.pool;
30
+ const tagGroupIds = await this.wechaty.puppet.tagGroupList();
31
+ const idToTagGroup = async (id) => this.find(id).catch(e => this.wechaty.emitError(e));
32
+ const CONCURRENCY = 17;
33
+ const tagGroupIterator = concurrencyExecuter(CONCURRENCY)(idToTagGroup)(tagGroupIds);
34
+ const tagGroupList = [];
35
+ for await (const tagGroup of tagGroupIterator) {
36
+ if (tagGroup) {
37
+ tagGroupList.push(tagGroup);
38
+ }
39
+ }
40
+ return tagGroupList;
39
41
  }
40
42
  catch (e) {
41
43
  this.wechaty.emitError(e);
@@ -43,26 +45,12 @@ class TagGroupMixin extends wechatifyMixinBase() {
43
45
  return [];
44
46
  }
45
47
  }
46
- static async sync() {
47
- log.verbose('TagGroup', 'sync()');
48
- await this.list(true);
49
- }
50
- static load(tagGroupId) {
51
- log.verbose('TagGroup', 'load(%s)', tagGroupId);
52
- for (const item of this.pool) {
53
- if (item.id() === tagGroupId) {
54
- return item;
55
- }
56
- }
57
- return undefined;
58
- }
59
48
  static async createTagGroup(name) {
60
49
  log.verbose('TagGroup', 'createTagGroup(%s, %s)', name);
61
50
  try {
62
- const payload = await this.wechaty.puppet.tagGroupAdd(name);
63
- if (payload) {
64
- const newTagGroup = new this(payload);
65
- this.pool.push(newTagGroup);
51
+ const groupId = await this.wechaty.puppet.tagGroupAdd(name);
52
+ if (groupId) {
53
+ const newTagGroup = await this.find(groupId);
66
54
  return newTagGroup;
67
55
  }
68
56
  }
@@ -74,8 +62,7 @@ class TagGroupMixin extends wechatifyMixinBase() {
74
62
  static async deleteTagGroup(tagGroup) {
75
63
  log.verbose('TagGroup', 'deleteTagGroup(%s)', tagGroup);
76
64
  try {
77
- await this.wechaty.puppet.tagGroupDelete(tagGroup.id());
78
- this.pool.splice(this.pool.indexOf(tagGroup), 1);
65
+ await this.wechaty.puppet.tagGroupDelete(tagGroup.id);
79
66
  }
80
67
  catch (e) {
81
68
  this.wechaty.emitError(e);
@@ -83,13 +70,85 @@ class TagGroupMixin extends wechatifyMixinBase() {
83
70
  }
84
71
  }
85
72
  async tags() {
86
- return (await this.wechaty.Tag.list()).filter(tag => tag.groupId() === this.id());
73
+ log.verbose('TagGroup', 'tags(%s)', this);
74
+ try {
75
+ const tagIdentifierList = await this.wechaty.puppet.tagGroupTagList(this.id);
76
+ const identifierToTag = async (tag) => this.wechaty.Tag.find(tag).catch(e => this.wechaty.emitError(e));
77
+ const CONCURRENCY = 17;
78
+ const tagIterator = concurrencyExecuter(CONCURRENCY)(identifierToTag)(tagIdentifierList);
79
+ const tagList = [];
80
+ for await (const tag of tagIterator) {
81
+ if (tag) {
82
+ tagList.push(tag);
83
+ }
84
+ }
85
+ return tagList;
86
+ }
87
+ catch (e) {
88
+ this.wechaty.emitError(e);
89
+ log.error('TagGroup', 'list() exception: %s', e.message);
90
+ return [];
91
+ }
92
+ }
93
+ static async find(id) {
94
+ log.silly('TagGroup', 'find(%s)', id);
95
+ const tagGroup = this.wechaty.TagGroup.load(id);
96
+ try {
97
+ await tagGroup.ready();
98
+ }
99
+ catch (e) {
100
+ this.wechaty.emitError(e);
101
+ return undefined;
102
+ }
103
+ return tagGroup;
104
+ }
105
+ /**
106
+ * Force reload data for TagGroup, Sync data from low-level API again.
107
+ *
108
+ * @returns {Promise<this>}
109
+ * @example
110
+ * await tagGroup.sync()
111
+ */
112
+ async sync() {
113
+ await this.wechaty.puppet.tagGroupPayloadDirty(this.id);
114
+ await this.ready(true);
115
+ }
116
+ /**
117
+ * @ignore
118
+ */
119
+ isReady() {
120
+ return !!(this.payload);
121
+ }
122
+ /**
123
+ * `ready()` is For FrameWork ONLY!
124
+ *
125
+ * Please not to use `ready()` at the user land.
126
+ * If you want to sync data, use `sync()` instead.
127
+ *
128
+ * @ignore
129
+ */
130
+ async ready(forceSync = false) {
131
+ log.silly('TagGroup', 'ready() @ %s with TagGroup="%s"', this.wechaty.puppet, this.id);
132
+ if (!forceSync && this.isReady()) { // already ready
133
+ log.silly('TagGroup', 'ready() isReady() true');
134
+ return;
135
+ }
136
+ try {
137
+ this.payload = await this.wechaty.puppet.tagGroupPayload(this.id);
138
+ }
139
+ catch (e) {
140
+ this.wechaty.emitError(e);
141
+ log.verbose('TagGroup', 'ready() this.wechaty.puppet.tagGroupPayload(%s) exception: %s', this.id, e.message);
142
+ throw e;
143
+ }
87
144
  }
88
145
  toString() {
89
- return `<TagGroup#${this.name() || this.id()}>`;
146
+ return `<TagGroup#${this.name() || this.id}>`;
90
147
  }
91
148
  }
92
- class TagGroupImpl extends validationMixin(TagGroupMixin)() {
149
+ class TagGroupImplBase extends validationMixin(TagGroupMixin)() {
150
+ }
151
+ class TagGroupImpl extends validationMixin(TagGroupImplBase)() {
93
152
  }
94
153
  export { TagGroupImpl, };
95
154
  //# sourceMappingURL=tag-group.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tag-group.js","sourceRoot":"","sources":["../../../../src/user-modules/tag-group.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tag-group.js","sourceRoot":"","sources":["../../../../src/user-modules/tag-group.ts"],"names":[],"mappings":"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"}
@@ -17,56 +17,91 @@
17
17
  * limitations under the License.
18
18
  *
19
19
  */
20
- import type * as PUPPET from '@juzi/wechaty-puppet';
20
+ import * as PUPPET from '@juzi/wechaty-puppet';
21
21
  import type { TagIdentifier } from '@juzi/wechaty-puppet/filters';
22
22
  import type { Constructor } from 'clone-class';
23
23
  import type { ContactInterface } from './contact.js';
24
24
  import type { TagGroupInterface } from './tag-group.js';
25
- declare const TagMixin_base: ((abstract new (...args: any[]) => {
25
+ declare const MixinBase: ((abstract new (...args: any[]) => {
26
26
  readonly wechaty: import("../wechaty/wechaty-impl.js").WechatyInterface;
27
27
  }) & {
28
28
  readonly wechaty: import("../wechaty/wechaty-impl.js").WechatyInterface;
29
- }) & {
30
- new (): {};
31
- };
32
- declare class TagMixin extends TagMixin_base {
33
- readonly payload: PUPPET.payloads.Tag;
29
+ }) & ((abstract new (...args: any[]) => {}) & {
30
+ _pool?: Map<string, TagImplInterface> | undefined;
31
+ readonly pool: Map<string, TagImplInterface>;
32
+ load<L extends import("clone-class/dist/esm/src/constructor.js").ClassInterface<{}> & {
33
+ new (...args: any[]): TagImplInterface;
34
+ prototype: TagImplInterface;
35
+ } & import("../user-mixins/poolify.js").PoolifyMixin<TagImplInterface>>(this: L, id: string): TagImplInterface;
36
+ }) & ObjectConstructor;
37
+ declare class TagMixin extends MixinBase {
38
+ readonly key: string;
34
39
  /**
35
40
  *
36
- * Create
41
+ * Instance properties
42
+ * @ignore
37
43
  *
38
44
  */
39
- static create(payload: PUPPET.payloads.Tag): TagInterface;
45
+ payload?: PUPPET.payloads.Tag;
46
+ readonly id: string;
47
+ readonly groupId?: string;
40
48
  /**
41
49
  * @hideconstructor
42
50
  */
43
- constructor(payload: PUPPET.payloads.Tag);
44
- id(): string;
51
+ constructor(key: string);
45
52
  type(): PUPPET.types.Tag;
46
- groupId(): string;
47
53
  name(): string;
48
- group(): TagGroupInterface | undefined;
49
- private static pool;
54
+ group(): Promise<TagGroupInterface | undefined>;
50
55
  static list(forceSync?: boolean): Promise<TagInterface[]>;
51
- static sync(): Promise<void>;
52
- static load(tag: TagIdentifier): TagInterface | undefined;
56
+ static find(identifier: TagIdentifier): Promise<TagInterface | undefined>;
57
+ /**
58
+ * Force reload data for Tag, Sync data from low-level API again.
59
+ *
60
+ * @returns {Promise<this>}
61
+ * @example
62
+ * await tag.sync()
63
+ */
64
+ sync(): Promise<void>;
65
+ /**
66
+ * @ignore
67
+ */
68
+ isReady(): boolean;
69
+ /**
70
+ * `ready()` is For FrameWork ONLY!
71
+ *
72
+ * Please not to use `ready()` at the user land.
73
+ * If you want to sync data, use `sync()` instead.
74
+ *
75
+ * @ignore
76
+ */
77
+ ready(forceSync?: boolean): Promise<void>;
53
78
  contactList(): Promise<ContactInterface[]>;
54
79
  tag(contacts: ContactInterface | ContactInterface[]): Promise<void>;
55
80
  static createTag(name: string, tagGroup?: TagGroupInterface): Promise<TagInterface | void>;
56
81
  static deleteTag(tagInstance: TagInterface): Promise<void>;
57
82
  toString(): string;
58
83
  }
84
+ declare const TagImplBase_base: {
85
+ new (...args: any[]): {};
86
+ valid: (o: any) => o is TagImplInterface;
87
+ validInstance: (target: any) => target is TagMixin;
88
+ validInterface: (target: any) => target is TagImplInterface;
89
+ } & typeof TagMixin;
90
+ declare class TagImplBase extends TagImplBase_base {
91
+ }
92
+ interface TagImplInterface extends TagImplBase {
93
+ }
94
+ declare type TagProtectedProperty = 'ready';
95
+ declare type TagInterface = Omit<TagImplInterface, TagProtectedProperty>;
59
96
  declare const TagImpl_base: {
60
97
  new (...args: any[]): {};
61
98
  valid: (o: any) => o is TagInterface;
62
- validInstance: (target: any) => target is TagMixin;
99
+ validInstance: (target: any) => target is TagImplBase;
63
100
  validInterface: (target: any) => target is TagInterface;
64
- } & typeof TagMixin;
101
+ } & typeof TagImplBase;
65
102
  declare class TagImpl extends TagImpl_base {
66
103
  }
67
- interface TagInterface extends TagImpl {
68
- }
69
- declare type TagConstructor = Constructor<TagInterface, typeof TagImpl>;
70
- export type { TagConstructor, TagInterface, };
104
+ declare type TagConstructor = Constructor<TagImplInterface, Omit<typeof TagImpl, 'load'>>;
105
+ export type { TagConstructor, TagProtectedProperty, TagInterface, };
71
106
  export { TagImpl, };
72
107
  //# sourceMappingURL=tag.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tag.d.ts","sourceRoot":"","sources":["../../../../src/user-modules/tag.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,KAAK,MAAM,MAAM,sBAAsB,CAAA;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAEjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAO9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;;;;;;;;AAEvD,cAAM,QAAS,SAAQ,aAAoB;aAiBvB,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG;IAf9C;;;;OAIG;IACH,MAAM,CAAC,MAAM,CAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,YAAY;IAM1D;;OAEG;gBAEe,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG;IAM9C,EAAE,IAAK,MAAM;IAIb,IAAI,IAAK,MAAM,CAAC,KAAK,CAAC,GAAG;IAIzB,OAAO,IAAK,MAAM;IAIlB,IAAI,IAAK,MAAM;IAIf,KAAK,IAAK,iBAAiB,GAAG,SAAS;IAIvC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAqB;WAE3B,IAAI,CAAE,SAAS,UAAQ,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;WAkBjD,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAMnC,MAAM,CAAC,IAAI,CAAE,GAAG,EAAE,aAAa,GAAG,YAAY,GAAG,SAAS;IAWpD,WAAW,IAAK,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAS3C,GAAG,CAAE,QAAQ,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;WAa7D,SAAS,CAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;WAgBpF,SAAS,CAAE,WAAW,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAcxD,QAAQ;CAIlB;;;;;;;AAED,cAAM,OAAQ,SAAQ,YAAyC;CAAG;AAClE,UAAU,YAAa,SAAQ,OAAO;CAAG;AAEzC,aAAK,cAAc,GAAG,WAAW,CAC/B,YAAY,EACZ,OAAO,OAAO,CACf,CAAA;AAED,YAAY,EACV,cAAc,EACd,YAAY,GACb,CAAA;AACD,OAAO,EACL,OAAO,GACR,CAAA"}
1
+ {"version":3,"file":"tag.d.ts","sourceRoot":"","sources":["../../../../src/user-modules/tag.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAA;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAGjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAS9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAEvD,QAAA,MAAM,SAAS;;;;;;;;;;;sBAId,CAAA;AAED,cAAM,QAAS,SAAQ,SAAS;aAgBZ,GAAG,EAAE,MAAM;IAd7B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAA;IAC7B,SAAgB,EAAE,EAAE,MAAM,CAAA;IAC1B,SAAgB,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhC;;OAEG;gBAEe,GAAG,EAAE,MAAM;IAQ7B,IAAI,IAAK,MAAM,CAAC,KAAK,CAAC,GAAG;IAIzB,IAAI,IAAK,MAAM;IAIT,KAAK,IAAK,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;WAIzC,IAAI,CAAE,SAAS,UAAQ,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;WA2BjD,IAAI,CAAE,UAAU,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAchF;;;;;;OAMG;IACG,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAQ5B;;OAEG;IACH,OAAO,IAAK,OAAO;IAInB;;;;;;;OAOG;IACG,KAAK,CACT,SAAS,UAAQ,GAChB,OAAO,CAAC,IAAI,CAAC;IAwBV,WAAW,IAAK,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAS3C,GAAG,CAAE,QAAQ,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;WAa7D,SAAS,CAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;WAepF,SAAS,CAAE,WAAW,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAaxD,QAAQ;CAIlB;;;;;;;AAED,cAAM,WAAY,SAAQ,gBAA6C;CAAG;AAC1E,UAAU,gBAAiB,SAAQ,WAAW;CAAG;AAEjD,aAAK,oBAAoB,GACrB,OAAO,CAAA;AAEX,aAAK,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,CAAA;;;;;;;AAChE,cAAM,OAAQ,SAAQ,YAA4C;CAAG;AAErE,aAAK,cAAc,GAAG,WAAW,CAC/B,gBAAgB,EAChB,IAAI,CAAC,OAAO,OAAO,EAAE,MAAM,CAAC,CAC7B,CAAA;AAED,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,YAAY,GACb,CAAA;AACD,OAAO,EACL,OAAO,GACR,CAAA"}
@@ -1,50 +1,74 @@
1
- import { log } from '../config.js';
1
+ /**
2
+ * Wechaty Chatbot SDK - https://github.com/wechaty/wechaty
3
+ *
4
+ * @copyright 2016 Huan LI (李卓桓) <https://github.com/huan>, and
5
+ * Wechaty Contributors <https://github.com/wechaty>.
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ *
19
+ */
20
+ import * as PUPPET from '@juzi/wechaty-puppet';
21
+ import { getTagKey } from '@juzi/wechaty-puppet/helpers';
22
+ import { concurrencyExecuter } from 'rx-queue';
23
+ import { FOUR_PER_EM_SPACE, log } from '../config.js';
24
+ import { poolifyMixin } from '../user-mixins/poolify.js';
2
25
  import { validationMixin } from '../user-mixins/validation.js';
3
- import { wechatifyMixinBase, } from '../user-mixins/wechatify.js';
4
- class TagMixin extends wechatifyMixinBase() {
5
- payload;
26
+ import { wechatifyMixin, } from '../user-mixins/wechatify.js';
27
+ const MixinBase = wechatifyMixin(poolifyMixin(Object)());
28
+ class TagMixin extends MixinBase {
29
+ key;
6
30
  /**
7
31
  *
8
- * Create
32
+ * Instance properties
33
+ * @ignore
9
34
  *
10
35
  */
11
- static create(payload) {
12
- log.verbose('Tag', 'create()');
13
- return new this(payload);
14
- }
36
+ payload;
37
+ id;
38
+ groupId;
15
39
  /**
16
40
  * @hideconstructor
17
41
  */
18
- constructor(payload) {
42
+ constructor(key) {
19
43
  super();
20
- this.payload = payload;
44
+ this.key = key;
45
+ this.groupId = this.key.split(FOUR_PER_EM_SPACE)[0];
46
+ this.id = this.key.split(FOUR_PER_EM_SPACE)[1];
21
47
  log.silly('Tag', 'constructor()');
22
48
  }
23
- id() {
24
- return this.payload.id;
25
- }
26
49
  type() {
27
- return this.payload.type;
28
- }
29
- groupId() {
30
- return this.payload.groupId || '';
50
+ return (this.payload && this.payload.type) || PUPPET.types.Tag.Personal;
31
51
  }
32
52
  name() {
33
- return this.payload.name;
53
+ return (this.payload && this.payload.name) || '';
34
54
  }
35
- group() {
36
- return this.wechaty.TagGroup.load(this.groupId());
55
+ async group() {
56
+ return this.groupId ? this.wechaty.TagGroup.find(this.groupId) : undefined;
37
57
  }
38
- static pool = [];
39
58
  static async list(forceSync = false) {
40
59
  log.verbose('Tag', 'list(%s)', forceSync);
41
- if (this.pool.length > 0 && !forceSync) {
42
- return this.pool;
43
- }
44
60
  try {
45
- const payloads = await this.wechaty.puppet.tagTagList();
46
- this.pool = payloads.map(payload => new this(payload));
47
- return this.pool;
61
+ const tagIdentifierList = await this.wechaty.puppet.tagTagList();
62
+ const identifierToTag = async (identifier) => this.find(identifier).catch(e => this.wechaty.emitError(e));
63
+ const CONCURRENCY = 17;
64
+ const tagIterator = concurrencyExecuter(CONCURRENCY)(identifierToTag)(tagIdentifierList);
65
+ const tagList = [];
66
+ for await (const tag of tagIterator) {
67
+ if (tag) {
68
+ tagList.push(tag);
69
+ }
70
+ }
71
+ return tagList;
48
72
  }
49
73
  catch (e) {
50
74
  this.wechaty.emitError(e);
@@ -52,29 +76,74 @@ class TagMixin extends wechatifyMixinBase() {
52
76
  return [];
53
77
  }
54
78
  }
55
- static async sync() {
56
- log.verbose('Tag', 'sync()');
57
- await this.list(true);
79
+ static async find(identifier) {
80
+ log.silly('Tag', 'find(%s)', JSON.stringify(identifier));
81
+ const tag = this.wechaty.Tag.load(getTagKey(identifier));
82
+ try {
83
+ await tag.ready();
84
+ }
85
+ catch (e) {
86
+ this.wechaty.emitError(e);
87
+ return undefined;
88
+ }
89
+ return tag;
58
90
  }
59
- static load(tag) {
60
- log.verbose('TagGroup', 'load(%s)', tag);
61
- for (const item of this.pool) {
62
- if (item.id() === tag.id && (item.groupId() === tag.groupId || (!item.groupId() && !tag.groupId))) {
63
- return item;
64
- }
91
+ /**
92
+ * Force reload data for Tag, Sync data from low-level API again.
93
+ *
94
+ * @returns {Promise<this>}
95
+ * @example
96
+ * await tag.sync()
97
+ */
98
+ async sync() {
99
+ await this.wechaty.puppet.tagPayloadDirty(getTagKey({
100
+ id: this.id,
101
+ groupId: this.groupId,
102
+ }));
103
+ await this.ready(true);
104
+ }
105
+ /**
106
+ * @ignore
107
+ */
108
+ isReady() {
109
+ return !!(this.payload && this.payload.name);
110
+ }
111
+ /**
112
+ * `ready()` is For FrameWork ONLY!
113
+ *
114
+ * Please not to use `ready()` at the user land.
115
+ * If you want to sync data, use `sync()` instead.
116
+ *
117
+ * @ignore
118
+ */
119
+ async ready(forceSync = false) {
120
+ log.silly('Tag', 'ready() @ %s with Tag key="%s"', this.wechaty.puppet, this.key);
121
+ if (!forceSync && this.isReady()) { // already ready
122
+ log.silly('Tag', 'ready() isReady() true');
123
+ return;
124
+ }
125
+ try {
126
+ this.payload = await this.wechaty.puppet.tagPayload({
127
+ id: this.id,
128
+ groupId: this.groupId,
129
+ });
130
+ }
131
+ catch (e) {
132
+ this.wechaty.emitError(e);
133
+ log.verbose('Tag', 'ready() this.wechaty.puppet.tagPayload(%s) exception: %s', this.id, e.message);
134
+ throw e;
65
135
  }
66
- return undefined;
67
136
  }
68
137
  async contactList() {
69
138
  log.verbose('Tag', 'contactList() for tag : %s', this);
70
- const tag = { id: this.id(), groupId: this.groupId() };
139
+ const tag = { id: this.id, groupId: this.groupId };
71
140
  const contactIds = await this.wechaty.puppet.tagTagContactList(tag);
72
141
  const contactPromises = contactIds.map(id => this.wechaty.Contact.find({ id }));
73
142
  return Promise.all(contactPromises);
74
143
  }
75
144
  async tag(contacts) {
76
145
  log.verbose('Tag', 'tag(%s) for tag : %s', contacts, this);
77
- const tag = { id: this.id(), groupId: this.groupId() };
146
+ const tag = { id: this.id, groupId: this.groupId };
78
147
  let contactIds;
79
148
  if (Array.isArray(contacts)) {
80
149
  contactIds = contacts.map(c => c.id);
@@ -87,24 +156,22 @@ class TagMixin extends wechatifyMixinBase() {
87
156
  static async createTag(name, tagGroup) {
88
157
  log.verbose('Tag', 'createTag(%s, %s)', tagGroup, name);
89
158
  try {
90
- const payload = await this.wechaty.puppet.tagTagAdd(name, tagGroup?.name());
91
- if (payload) {
92
- const newTag = new this(payload);
93
- this.pool.push(newTag);
159
+ const tagIdentifier = await this.wechaty.puppet.tagTagAdd(name, tagGroup?.name());
160
+ if (tagIdentifier) {
161
+ const newTag = await this.find(tagIdentifier);
94
162
  return newTag;
95
163
  }
96
164
  }
97
165
  catch (e) {
98
166
  this.wechaty.emitError(e);
99
- log.error('Contact', 'createTag() exception: %s', e.message);
167
+ log.error('Tag', 'createTag() exception: %s', e.message);
100
168
  }
101
169
  }
102
170
  static async deleteTag(tagInstance) {
103
171
  log.verbose('Tag', 'deleteTag(%s, %s)', tagInstance);
104
- const tag = { id: tagInstance.id(), groupId: tagInstance.groupId() };
172
+ const tagIdentifier = { id: tagInstance.id, groupId: tagInstance.groupId };
105
173
  try {
106
- await this.wechaty.puppet.tagTagDelete(tag);
107
- this.pool.splice(this.pool.indexOf(tagInstance), 1);
174
+ await this.wechaty.puppet.tagTagDelete(tagIdentifier);
108
175
  }
109
176
  catch (e) {
110
177
  this.wechaty.emitError(e);
@@ -112,10 +179,12 @@ class TagMixin extends wechatifyMixinBase() {
112
179
  }
113
180
  }
114
181
  toString() {
115
- return `<Tag#${this.name() || this.id()}>`;
182
+ return `<Tag#${this.name() || this.id}>`;
116
183
  }
117
184
  }
118
- class TagImpl extends validationMixin(TagMixin)() {
185
+ class TagImplBase extends validationMixin(TagMixin)() {
186
+ }
187
+ class TagImpl extends validationMixin(TagImplBase)() {
119
188
  }
120
189
  export { TagImpl, };
121
190
  //# sourceMappingURL=tag.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tag.js","sourceRoot":"","sources":["../../../../src/user-modules/tag.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tag.js","sourceRoot":"","sources":["../../../../src/user-modules/tag.ts"],"names":[],"mappings":"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"}