@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.
- package/dist/cjs/src/client/puppet-service.d.ts +14 -0
- package/dist/cjs/src/client/puppet-service.d.ts.map +1 -1
- package/dist/cjs/src/client/puppet-service.js +63 -3
- package/dist/cjs/src/client/puppet-service.js.map +1 -1
- package/dist/cjs/src/package-json.js +3 -3
- package/dist/cjs/src/utils/pb-payload-helper.d.ts.map +1 -1
- package/dist/cjs/src/utils/pb-payload-helper.js +7 -0
- package/dist/cjs/src/utils/pb-payload-helper.js.map +1 -1
- package/dist/cjs/tests/fast-dirty-room-member.spec.js +123 -21
- package/dist/cjs/tests/fast-dirty-room-member.spec.js.map +1 -1
- package/dist/cjs/tests/grpc-stream-dirty-order.spec.d.ts +3 -0
- package/dist/cjs/tests/grpc-stream-dirty-order.spec.d.ts.map +1 -0
- package/dist/cjs/tests/grpc-stream-dirty-order.spec.js +135 -0
- package/dist/cjs/tests/grpc-stream-dirty-order.spec.js.map +1 -0
- package/dist/esm/src/client/puppet-service.d.ts +14 -0
- package/dist/esm/src/client/puppet-service.d.ts.map +1 -1
- package/dist/esm/src/client/puppet-service.js +63 -3
- package/dist/esm/src/client/puppet-service.js.map +1 -1
- package/dist/esm/src/package-json.js +3 -3
- package/dist/esm/src/utils/pb-payload-helper.d.ts.map +1 -1
- package/dist/esm/src/utils/pb-payload-helper.js +7 -0
- package/dist/esm/src/utils/pb-payload-helper.js.map +1 -1
- package/dist/esm/tests/fast-dirty-room-member.spec.js +123 -21
- package/dist/esm/tests/fast-dirty-room-member.spec.js.map +1 -1
- package/dist/esm/tests/grpc-stream-dirty-order.spec.d.ts +3 -0
- package/dist/esm/tests/grpc-stream-dirty-order.spec.d.ts.map +1 -0
- package/dist/esm/tests/grpc-stream-dirty-order.spec.js +110 -0
- package/dist/esm/tests/grpc-stream-dirty-order.spec.js.map +1 -0
- package/package.json +3 -3
- package/src/client/puppet-service.ts +61 -3
- package/src/package-json.ts +3 -3
- 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":"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"}
|
|
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
|
|
3
|
+
* Regression tests for the RoomMember persistent-store dirty semantics.
|
|
4
4
|
*
|
|
5
|
-
* The
|
|
6
|
-
*
|
|
7
|
-
*
|
|
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
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* roomId
|
|
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
|
-
*
|
|
16
|
-
*
|
|
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
|
-
|
|
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.
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
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
|
|
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 @@
|
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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),
|
package/src/package-json.ts
CHANGED
|
@@ -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.
|
|
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.
|
|
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.
|
|
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
|
}
|