@juzi/wechaty-puppet-service 1.0.73 → 1.0.74
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/src/client/payload-store.d.ts +1 -1
- package/dist/cjs/src/client/payload-store.d.ts.map +1 -1
- package/dist/cjs/src/client/payload-store.js +7 -2
- package/dist/cjs/src/client/payload-store.js.map +1 -1
- package/dist/cjs/src/client/puppet-service.d.ts +2 -2
- package/dist/cjs/src/client/puppet-service.d.ts.map +1 -1
- package/dist/cjs/src/client/puppet-service.js +30 -26
- package/dist/cjs/src/client/puppet-service.js.map +1 -1
- package/dist/cjs/src/package-json.js +1 -1
- package/dist/esm/src/client/payload-store.d.ts +1 -1
- package/dist/esm/src/client/payload-store.d.ts.map +1 -1
- package/dist/esm/src/client/payload-store.js +7 -2
- package/dist/esm/src/client/payload-store.js.map +1 -1
- package/dist/esm/src/client/puppet-service.d.ts +2 -2
- package/dist/esm/src/client/puppet-service.d.ts.map +1 -1
- package/dist/esm/src/client/puppet-service.js +30 -26
- package/dist/esm/src/client/puppet-service.js.map +1 -1
- package/dist/esm/src/package-json.js +1 -1
- package/package.json +1 -1
- package/src/client/payload-store.ts +7 -3
- package/src/client/puppet-service.ts +32 -28
- package/src/package-json.ts +1 -1
package/package.json
CHANGED
|
@@ -51,7 +51,7 @@ class PayloadStore {
|
|
|
51
51
|
public room? : FlashStore<string, PUPPET.payloads.Room>
|
|
52
52
|
public tag? : FlashStore<string, PUPPET.payloads.Tag>
|
|
53
53
|
public tagGroup? : FlashStore<string, PUPPET.payloads.TagGroup>
|
|
54
|
-
public miscellaneous
|
|
54
|
+
public miscellaneous?: FlashStore<string, string>
|
|
55
55
|
|
|
56
56
|
protected storeDir: string
|
|
57
57
|
protected accountId?: string
|
|
@@ -72,7 +72,11 @@ class PayloadStore {
|
|
|
72
72
|
fs.mkdirSync(this.storeDir, { recursive: true })
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
-
|
|
75
|
+
try {
|
|
76
|
+
this.miscellaneous = new FlashStore(path.join(this.storeDir, 'miscellaneous')) // account-free data
|
|
77
|
+
} catch (e) {
|
|
78
|
+
log.error('PayloadStore', 'constructor() store failed to init, will continue without it.')
|
|
79
|
+
}
|
|
76
80
|
}
|
|
77
81
|
|
|
78
82
|
/**
|
|
@@ -155,7 +159,7 @@ class PayloadStore {
|
|
|
155
159
|
throw new Error('Can not destroy() a start()-ed store. Call stop() to stop it first')
|
|
156
160
|
}
|
|
157
161
|
|
|
158
|
-
await this.miscellaneous
|
|
162
|
+
await this.miscellaneous?.close()
|
|
159
163
|
|
|
160
164
|
/**
|
|
161
165
|
* Huan(202108): `fs.rm` was introduced from Node.js v14.14
|
|
@@ -143,9 +143,9 @@ class PuppetService extends PUPPET.Puppet {
|
|
|
143
143
|
this._grpcManager = undefined
|
|
144
144
|
}
|
|
145
145
|
|
|
146
|
-
log.
|
|
146
|
+
log.info('PuppetService', 'start() instanciating GrpcManager ...')
|
|
147
147
|
const grpcManager = new GrpcManager(this.options)
|
|
148
|
-
log.
|
|
148
|
+
log.info('PuppetService', 'start() instanciating GrpcManager ... done')
|
|
149
149
|
|
|
150
150
|
/**
|
|
151
151
|
* Huan(202108): when we started the event stream,
|
|
@@ -153,35 +153,35 @@ class PuppetService extends PUPPET.Puppet {
|
|
|
153
153
|
*/
|
|
154
154
|
this._grpcManager = grpcManager
|
|
155
155
|
|
|
156
|
-
log.
|
|
156
|
+
log.info('PuppetService', 'start() setting up bridge grpc event stream ...')
|
|
157
157
|
this.bridgeGrpcEventStream(grpcManager)
|
|
158
|
-
log.
|
|
158
|
+
log.info('PuppetService', 'start() setting up bridge grpc event stream ... done')
|
|
159
159
|
|
|
160
|
-
log.
|
|
160
|
+
log.info('PuppetService', 'start() starting grpc manager...')
|
|
161
161
|
const { lastEventSeq } = await this.getEventData()
|
|
162
|
-
const accountId = await this._payloadStore.miscellaneous
|
|
162
|
+
const accountId = await this._payloadStore.miscellaneous?.get('accountId') || ''
|
|
163
163
|
await grpcManager.start(lastEventSeq, accountId)
|
|
164
|
-
log.
|
|
164
|
+
log.info('PuppetService', 'start() starting grpc manager... done')
|
|
165
165
|
|
|
166
|
-
log.
|
|
166
|
+
log.info('PuppetService', 'start healthCheck')
|
|
167
167
|
this.startHealthCheck()
|
|
168
168
|
|
|
169
|
-
log.
|
|
169
|
+
log.info('PuppetService', 'onStart() ... done')
|
|
170
170
|
}
|
|
171
171
|
|
|
172
172
|
override async onStop (): Promise<void> {
|
|
173
|
-
log.
|
|
173
|
+
log.info('PuppetService', 'onStop()')
|
|
174
174
|
|
|
175
175
|
if (this._grpcManager) {
|
|
176
|
-
log.
|
|
176
|
+
log.info('PuppetService', 'onStop() stopping grpc manager ...')
|
|
177
177
|
const grpcManager = this._grpcManager
|
|
178
178
|
this._grpcManager = undefined
|
|
179
179
|
await grpcManager.stop()
|
|
180
|
-
log.
|
|
180
|
+
log.info('PuppetService', 'onStop() stopping grpc manager ... done')
|
|
181
181
|
}
|
|
182
182
|
|
|
183
|
-
log.
|
|
184
|
-
log.
|
|
183
|
+
log.info('PuppetService', 'onStop() ... done')
|
|
184
|
+
log.info('PuppetService', 'stop healthCheck')
|
|
185
185
|
this.stopHealthCheck()
|
|
186
186
|
}
|
|
187
187
|
|
|
@@ -262,10 +262,12 @@ class PuppetService extends PUPPET.Puppet {
|
|
|
262
262
|
}
|
|
263
263
|
|
|
264
264
|
if (seq) {
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
265
|
+
if (this._payloadStore.miscellaneous) {
|
|
266
|
+
const lastEventSeq = await this._payloadStore.miscellaneous.get('eventSeq')
|
|
267
|
+
if (!lastEventSeq || (seq > Number(lastEventSeq) || seq === 1)) {
|
|
268
|
+
await this._payloadStore.miscellaneous.set('eventSeq', String(seq))
|
|
269
|
+
await this._payloadStore.miscellaneous.set('eventTimestamp', timestamp)
|
|
270
|
+
}
|
|
269
271
|
}
|
|
270
272
|
}
|
|
271
273
|
|
|
@@ -289,12 +291,14 @@ class PuppetService extends PUPPET.Puppet {
|
|
|
289
291
|
return
|
|
290
292
|
}
|
|
291
293
|
const loginPayload = JSON.parse(payload) as PUPPET.payloads.EventLogin
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
294
|
+
if (this._payloadStore.miscellaneous) {
|
|
295
|
+
const accountId = await this._payloadStore.miscellaneous.get('accountId')
|
|
296
|
+
if (accountId !== loginPayload.contactId) {
|
|
297
|
+
await this._payloadStore.miscellaneous.delete('eventSeq')
|
|
298
|
+
}
|
|
299
|
+
await this._payloadStore.miscellaneous.set('accountId', loginPayload.contactId)
|
|
295
300
|
}
|
|
296
|
-
|
|
297
|
-
;(
|
|
301
|
+
(
|
|
298
302
|
async () => this.login(loginPayload.contactId)
|
|
299
303
|
)().catch(e =>
|
|
300
304
|
log.error('PuppetService', 'onGrpcStreamEvent() this.login() rejection %s',
|
|
@@ -306,7 +310,7 @@ class PuppetService extends PUPPET.Puppet {
|
|
|
306
310
|
case grpcPuppet.EventType.EVENT_TYPE_LOGOUT:
|
|
307
311
|
{
|
|
308
312
|
const logoutPayload = JSON.parse(payload) as PUPPET.payloads.EventLogout
|
|
309
|
-
await this._payloadStore.miscellaneous
|
|
313
|
+
await this._payloadStore.miscellaneous?.delete('accountId')
|
|
310
314
|
;(
|
|
311
315
|
async () => this.logout(logoutPayload.data)
|
|
312
316
|
)().catch(e =>
|
|
@@ -2649,7 +2653,7 @@ class PuppetService extends PUPPET.Puppet {
|
|
|
2649
2653
|
return contactIdsList
|
|
2650
2654
|
}
|
|
2651
2655
|
|
|
2652
|
-
healthCheckInterval?: NodeJS.
|
|
2656
|
+
healthCheckInterval?: NodeJS.Timeout
|
|
2653
2657
|
startHealthCheck () {
|
|
2654
2658
|
this.healthCheckInterval = setInterval(() => {
|
|
2655
2659
|
this.ding('healthCheck')
|
|
@@ -2686,7 +2690,7 @@ class PuppetService extends PUPPET.Puppet {
|
|
|
2686
2690
|
|
|
2687
2691
|
this.grpcManager.stopStream()
|
|
2688
2692
|
const { lastEventSeq } = await this.getEventData()
|
|
2689
|
-
const accountId = await this._payloadStore.miscellaneous
|
|
2693
|
+
const accountId = await this._payloadStore.miscellaneous?.get('accountId') || ''
|
|
2690
2694
|
|
|
2691
2695
|
const onLoginResolve = (resolve: () => void) => {
|
|
2692
2696
|
const onLogin = (event: grpcPuppet.EventResponse) => {
|
|
@@ -2771,8 +2775,8 @@ class PuppetService extends PUPPET.Puppet {
|
|
|
2771
2775
|
}
|
|
2772
2776
|
|
|
2773
2777
|
async getEventData () {
|
|
2774
|
-
const lastEventTimestamp = await this._payloadStore.miscellaneous
|
|
2775
|
-
let lastEventSeq = await this._payloadStore.miscellaneous
|
|
2778
|
+
const lastEventTimestamp = await this._payloadStore.miscellaneous?.get('eventTimestamp') || 0
|
|
2779
|
+
let lastEventSeq = await this._payloadStore.miscellaneous?.get('eventSeq')
|
|
2776
2780
|
if ((Date.now() - Number(lastEventTimestamp || 0)) > this.timeoutMilliseconds) {
|
|
2777
2781
|
log.warn(`last event was ${(Date.now() - Number(lastEventTimestamp || 0)) / 1000} seconds ago, will not request event cache`)
|
|
2778
2782
|
lastEventSeq = undefined
|
package/src/package-json.ts
CHANGED