@agentunion/fastaun-browser 0.3.5 → 0.3.6
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/CHANGELOG.md +14 -0
- package/_packed_docs/CHANGELOG.md +14 -0
- package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +19 -0
- package/_packed_docs/sdk/09-storage-rpc-manual.md +89 -0
- package/dist/auth.d.ts +17 -1
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +27 -4
- package/dist/auth.js.map +1 -1
- package/dist/bundle.js +216 -24
- package/dist/client.d.ts +7 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +220 -19
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/transport.js +1 -1
- package/dist/transport.js.map +1 -1
- package/dist/v2/e2ee/encrypt-p2p.js +1 -1
- package/package.json +1 -1
package/dist/bundle.js
CHANGED
|
@@ -1185,7 +1185,8 @@ var DIAG_PARAM_FIELDS = [
|
|
|
1185
1185
|
"request_id",
|
|
1186
1186
|
"owner_aid",
|
|
1187
1187
|
"rotated_by",
|
|
1188
|
-
"action"
|
|
1188
|
+
"action",
|
|
1189
|
+
"force"
|
|
1189
1190
|
];
|
|
1190
1191
|
var DIAG_RESULT_FIELDS = [
|
|
1191
1192
|
...DIAG_PARAM_FIELDS,
|
|
@@ -1702,7 +1703,7 @@ var _noopLog4 = { error: () => {
|
|
|
1702
1703
|
}, debug: () => {
|
|
1703
1704
|
} };
|
|
1704
1705
|
var AUN_SDK_LANG = "javascript";
|
|
1705
|
-
var AUN_SDK_VERSION = "0.3.
|
|
1706
|
+
var AUN_SDK_VERSION = "0.3.6";
|
|
1706
1707
|
function splitPemBundle(bundle) {
|
|
1707
1708
|
const marker = "-----END CERTIFICATE-----";
|
|
1708
1709
|
const certs = [];
|
|
@@ -2013,7 +2014,13 @@ var _AuthFlow = class _AuthFlow {
|
|
|
2013
2014
|
const cert = await this._keystore.loadCert(identity.aid);
|
|
2014
2015
|
if (cert) identity.cert = cert;
|
|
2015
2016
|
const instanceState = await this._loadInstanceState(identity.aid);
|
|
2016
|
-
if (instanceState)
|
|
2017
|
+
if (instanceState) {
|
|
2018
|
+
for (const key of _AuthFlow._INSTANCE_STATE_FIELDS) {
|
|
2019
|
+
if (key in instanceState) {
|
|
2020
|
+
identity[key] = instanceState[key];
|
|
2021
|
+
}
|
|
2022
|
+
}
|
|
2023
|
+
}
|
|
2017
2024
|
this._log.debug(`loadIdentity exit: elapsed=${Date.now() - tStart}ms aid=${identity.aid} has_cert=${!!identity.cert}`);
|
|
2018
2025
|
return identity;
|
|
2019
2026
|
} catch (err) {
|
|
@@ -2532,7 +2539,25 @@ var _AuthFlow = class _AuthFlow {
|
|
|
2532
2539
|
});
|
|
2533
2540
|
return { cert: response.cert };
|
|
2534
2541
|
}
|
|
2535
|
-
/**
|
|
2542
|
+
/**
|
|
2543
|
+
* 从服务端下载指定 AID 的证书(公开 API)。
|
|
2544
|
+
*
|
|
2545
|
+
* @param gatewayUrl - Gateway WebSocket URL
|
|
2546
|
+
* @param aid - 目标 AID
|
|
2547
|
+
* @returns 证书 PEM 字符串,如果 AID 未注册则返回 null
|
|
2548
|
+
*
|
|
2549
|
+
* @example
|
|
2550
|
+
* ```typescript
|
|
2551
|
+
* const cert = await auth.fetchPeerCert('wss://gateway.example.com', 'alice.aid.com');
|
|
2552
|
+
* if (cert) {
|
|
2553
|
+
* console.log('Alice is registered');
|
|
2554
|
+
* }
|
|
2555
|
+
* ```
|
|
2556
|
+
*/
|
|
2557
|
+
async fetchPeerCert(gatewayUrl, aid) {
|
|
2558
|
+
return this._downloadRegisteredCert(gatewayUrl, aid);
|
|
2559
|
+
}
|
|
2560
|
+
/** 下载服务端当前登记的证书(内部实现);未注册返回 null */
|
|
2536
2561
|
async _downloadRegisteredCert(gatewayUrl, aid) {
|
|
2537
2562
|
const certUrl = gatewayHttpUrl(gatewayUrl, `/pki/cert/${aid}`);
|
|
2538
2563
|
try {
|
|
@@ -10336,7 +10361,7 @@ function isPlainObject(value) {
|
|
|
10336
10361
|
var encoder3 = new TextEncoder();
|
|
10337
10362
|
var decoder = new TextDecoder();
|
|
10338
10363
|
var E2EE_SDK_LANG = "javascript";
|
|
10339
|
-
var E2EE_SDK_VERSION = "0.3.
|
|
10364
|
+
var E2EE_SDK_VERSION = "0.3.6";
|
|
10340
10365
|
async function sha2563(data) {
|
|
10341
10366
|
const buf = await crypto.subtle.digest("SHA-256", data.slice().buffer);
|
|
10342
10367
|
return new Uint8Array(buf);
|
|
@@ -11509,6 +11534,69 @@ function extractV2EnvelopeFromSource(source) {
|
|
|
11509
11534
|
}
|
|
11510
11535
|
return null;
|
|
11511
11536
|
}
|
|
11537
|
+
function truthyBool(value) {
|
|
11538
|
+
if (value === true || value === 1) return true;
|
|
11539
|
+
if (typeof value === "string") {
|
|
11540
|
+
const normalized = value.trim().toLowerCase();
|
|
11541
|
+
return normalized === "true" || normalized === "1" || normalized === "yes" || normalized === "on";
|
|
11542
|
+
}
|
|
11543
|
+
return false;
|
|
11544
|
+
}
|
|
11545
|
+
function isEncryptedEnvelopePayload(payload) {
|
|
11546
|
+
if (!isJsonObject(payload)) return false;
|
|
11547
|
+
const payloadType = String(payload.type ?? "").trim();
|
|
11548
|
+
if (payloadType.startsWith("e2ee.")) return true;
|
|
11549
|
+
if (!String(payload.ciphertext ?? "").trim()) return false;
|
|
11550
|
+
return payload.nonce !== void 0 || payload.tag !== void 0 || payload.recipient !== void 0 || payload.recipients !== void 0 || payload.wrapped_key !== void 0 || payload.recipients_digest !== void 0;
|
|
11551
|
+
}
|
|
11552
|
+
function encryptedPushEnvelope(msg) {
|
|
11553
|
+
if (isEncryptedEnvelopePayload(msg.payload)) return msg.payload;
|
|
11554
|
+
if (typeof msg.envelope_json === "string" && msg.envelope_json.trim()) {
|
|
11555
|
+
try {
|
|
11556
|
+
const parsed = JSON.parse(msg.envelope_json);
|
|
11557
|
+
if (isEncryptedEnvelopePayload(parsed)) return parsed;
|
|
11558
|
+
} catch {
|
|
11559
|
+
return null;
|
|
11560
|
+
}
|
|
11561
|
+
}
|
|
11562
|
+
return null;
|
|
11563
|
+
}
|
|
11564
|
+
function isEncryptedPushMessage(msg) {
|
|
11565
|
+
if (truthyBool(msg.encrypted)) return true;
|
|
11566
|
+
return encryptedPushEnvelope(msg) !== null;
|
|
11567
|
+
}
|
|
11568
|
+
function isV2EncryptedEnvelopePayload(envelope) {
|
|
11569
|
+
if (!envelope) return false;
|
|
11570
|
+
const payloadType = String(envelope.type ?? "").trim();
|
|
11571
|
+
if (payloadType === "e2ee.p2p_encrypted" || payloadType === "e2ee.group_encrypted") return true;
|
|
11572
|
+
return String(envelope.version ?? "").trim().toLowerCase() === "v2" && payloadType.startsWith("e2ee.");
|
|
11573
|
+
}
|
|
11574
|
+
function safeUndecryptablePushEvent(msg, group) {
|
|
11575
|
+
const event = {
|
|
11576
|
+
message_id: msg.message_id ?? null,
|
|
11577
|
+
from: msg.from ?? null,
|
|
11578
|
+
seq: msg.seq ?? null,
|
|
11579
|
+
timestamp: msg.timestamp ?? msg.t_server ?? null,
|
|
11580
|
+
device_id: msg.device_id ?? null,
|
|
11581
|
+
slot_id: msg.slot_id ?? null,
|
|
11582
|
+
_decrypt_error: "encrypted push payload is not decryptable on raw push path",
|
|
11583
|
+
_decrypt_stage: "push_envelope"
|
|
11584
|
+
};
|
|
11585
|
+
if (group) {
|
|
11586
|
+
event.group_id = msg.group_id ?? null;
|
|
11587
|
+
} else {
|
|
11588
|
+
event.to = msg.to ?? null;
|
|
11589
|
+
}
|
|
11590
|
+
const envelope = encryptedPushEnvelope(msg);
|
|
11591
|
+
if (envelope) {
|
|
11592
|
+
event._envelope_type = String(envelope.type ?? "");
|
|
11593
|
+
event._suite = String(envelope.suite ?? "");
|
|
11594
|
+
if (isV2EncryptedEnvelopePayload(envelope)) {
|
|
11595
|
+
attachV2EnvelopeMetadata(event, v2E2eeMeta(envelope));
|
|
11596
|
+
}
|
|
11597
|
+
}
|
|
11598
|
+
return event;
|
|
11599
|
+
}
|
|
11512
11600
|
function metadataWithoutAuth(value) {
|
|
11513
11601
|
if (!isJsonObject(value)) return null;
|
|
11514
11602
|
const body = {};
|
|
@@ -12506,7 +12594,7 @@ var _AUNClient = class _AUNClient {
|
|
|
12506
12594
|
async _callImplInner(method, p) {
|
|
12507
12595
|
if (method === "message.pull" && this._v2Session) {
|
|
12508
12596
|
this._clientLog.debug("call route: message.pull \u2192 V2 pull");
|
|
12509
|
-
const messages = await this.pullV2(Number(p.after_seq ?? 0) || 0, Number(p.limit ?? 50) || 50);
|
|
12597
|
+
const messages = await this.pullV2(Number(p.after_seq ?? 0) || 0, Number(p.limit ?? 50) || 50, { force: p.force === true });
|
|
12510
12598
|
return { messages };
|
|
12511
12599
|
}
|
|
12512
12600
|
if (method === "message.ack" && this._v2Session) {
|
|
@@ -12619,6 +12707,29 @@ var _AUNClient = class _AUNClient {
|
|
|
12619
12707
|
}
|
|
12620
12708
|
return result;
|
|
12621
12709
|
}
|
|
12710
|
+
async _callRawV2Rpc(method, params) {
|
|
12711
|
+
const p = { ...params ?? {} };
|
|
12712
|
+
delete p._pull_gate_locked;
|
|
12713
|
+
delete p._skip_auto_ack;
|
|
12714
|
+
delete p.skip_auto_ack;
|
|
12715
|
+
if (method.startsWith("group.") && p.group_id !== void 0 && p.group_id !== null) {
|
|
12716
|
+
p.group_id = normalizeGroupId(String(p.group_id)) || String(p.group_id);
|
|
12717
|
+
}
|
|
12718
|
+
if (method.startsWith("group.") && p.device_id === void 0) {
|
|
12719
|
+
p.device_id = this._deviceId;
|
|
12720
|
+
}
|
|
12721
|
+
if (method.startsWith("group.") && p.slot_id === void 0) {
|
|
12722
|
+
p.slot_id = this._slotId;
|
|
12723
|
+
}
|
|
12724
|
+
if (SIGNED_METHODS.has(method)) {
|
|
12725
|
+
if (this._shouldSkipClientSignature(method, p)) {
|
|
12726
|
+
delete p.client_signature;
|
|
12727
|
+
} else {
|
|
12728
|
+
await this._signClientOperation(method, p);
|
|
12729
|
+
}
|
|
12730
|
+
}
|
|
12731
|
+
return await this._transport.call(method, p);
|
|
12732
|
+
}
|
|
12622
12733
|
// ── 便利方法 ──────────────────────────────────────
|
|
12623
12734
|
async ping(params) {
|
|
12624
12735
|
return this.meta.ping(params);
|
|
@@ -12662,10 +12773,15 @@ var _AUNClient = class _AUNClient {
|
|
|
12662
12773
|
return;
|
|
12663
12774
|
}
|
|
12664
12775
|
const seq = msg.seq;
|
|
12776
|
+
const encryptedPush = isEncryptedPushMessage(msg);
|
|
12665
12777
|
if (seq !== void 0 && seq !== null && this._aid) {
|
|
12666
12778
|
const ns = `p2p:${this._aid}`;
|
|
12667
12779
|
if (seq > 0) this._seqTracker.updateMaxSeen(ns, seq);
|
|
12668
|
-
const
|
|
12780
|
+
const contigBefore = this._seqTracker.getContiguousSeq(ns);
|
|
12781
|
+
const seqNeedsPull = this._seqTracker.onMessageSeq(ns, seq);
|
|
12782
|
+
const published = encryptedPush ? await this._publishEncryptedPushMessage("message.received", "message.undecryptable", ns, seq, msg, false) : await this._publishOrderedMessage("message.received", ns, seq, msg);
|
|
12783
|
+
const contigAfter = this._seqTracker.getContiguousSeq(ns);
|
|
12784
|
+
const needPull = seqNeedsPull && !published;
|
|
12669
12785
|
if (needPull) {
|
|
12670
12786
|
this._safeAsync(this._fillP2pGap());
|
|
12671
12787
|
}
|
|
@@ -12681,12 +12797,13 @@ var _AUNClient = class _AUNClient {
|
|
|
12681
12797
|
this._clientLog.warn(`P2P auto-ack failed:${String(e)}`);
|
|
12682
12798
|
});
|
|
12683
12799
|
}
|
|
12684
|
-
this._saveSeqTrackerState();
|
|
12685
|
-
|
|
12686
|
-
if (seq !== void 0 && seq !== null && this._aid) {
|
|
12687
|
-
const ns = `p2p:${this._aid}`;
|
|
12688
|
-
await this._publishOrderedMessage("message.received", ns, seq, msg);
|
|
12800
|
+
if (contigAfter !== contigBefore) this._saveSeqTrackerState();
|
|
12801
|
+
if (encryptedPush) return;
|
|
12689
12802
|
} else {
|
|
12803
|
+
if (encryptedPush) {
|
|
12804
|
+
await this._publishEncryptedPushMessage("message.received", "message.undecryptable", "", seq ?? 0, msg, false);
|
|
12805
|
+
return;
|
|
12806
|
+
}
|
|
12690
12807
|
await this._publishAppEvent("message.received", msg);
|
|
12691
12808
|
}
|
|
12692
12809
|
} catch (exc) {
|
|
@@ -12788,10 +12905,15 @@ var _AUNClient = class _AUNClient {
|
|
|
12788
12905
|
await this._autoPullGroupMessages(msg);
|
|
12789
12906
|
return;
|
|
12790
12907
|
}
|
|
12908
|
+
const encryptedPush = isEncryptedPushMessage(msg);
|
|
12791
12909
|
if (groupId && seq !== void 0 && seq !== null) {
|
|
12792
12910
|
const ns = `group:${groupId}`;
|
|
12793
12911
|
if (seq > 0) this._seqTracker.updateMaxSeen(ns, seq);
|
|
12794
|
-
const
|
|
12912
|
+
const contigBefore = this._seqTracker.getContiguousSeq(ns);
|
|
12913
|
+
const seqNeedsPull = this._seqTracker.onMessageSeq(ns, seq);
|
|
12914
|
+
const published = encryptedPush ? await this._publishEncryptedPushMessage("group.message_created", "group.message_undecryptable", ns, seq, msg, true) : await this._publishOrderedMessage("group.message_created", ns, seq, msg);
|
|
12915
|
+
const contigAfter = this._seqTracker.getContiguousSeq(ns);
|
|
12916
|
+
const needPull = seqNeedsPull && !published;
|
|
12795
12917
|
if (needPull) {
|
|
12796
12918
|
this._safeAsync(this._fillGroupGap(groupId));
|
|
12797
12919
|
}
|
|
@@ -12808,12 +12930,13 @@ var _AUNClient = class _AUNClient {
|
|
|
12808
12930
|
this._clientLog.warn("group message auto-ack failed: group=" + groupId, e);
|
|
12809
12931
|
});
|
|
12810
12932
|
}
|
|
12811
|
-
this._saveSeqTrackerState();
|
|
12812
|
-
|
|
12813
|
-
if (groupId && seq !== void 0 && seq !== null) {
|
|
12814
|
-
const nsKey = `group:${groupId}`;
|
|
12815
|
-
await this._publishOrderedMessage("group.message_created", nsKey, seq, msg);
|
|
12933
|
+
if (contigAfter !== contigBefore) this._saveSeqTrackerState();
|
|
12934
|
+
if (encryptedPush) return;
|
|
12816
12935
|
} else {
|
|
12936
|
+
if (encryptedPush) {
|
|
12937
|
+
await this._publishEncryptedPushMessage("group.message_created", "group.message_undecryptable", "", seq ?? 0, msg, true);
|
|
12938
|
+
return;
|
|
12939
|
+
}
|
|
12817
12940
|
await this._publishAppEvent("group.message_created", msg);
|
|
12818
12941
|
}
|
|
12819
12942
|
} catch (exc) {
|
|
@@ -12833,6 +12956,52 @@ var _AUNClient = class _AUNClient {
|
|
|
12833
12956
|
}
|
|
12834
12957
|
}
|
|
12835
12958
|
}
|
|
12959
|
+
async _decryptEncryptedPushPayload(msg, group) {
|
|
12960
|
+
const envelope = encryptedPushEnvelope(msg);
|
|
12961
|
+
if (!isV2EncryptedEnvelopePayload(envelope)) return null;
|
|
12962
|
+
const aad = isJsonObject(envelope.aad) ? envelope.aad : {};
|
|
12963
|
+
const fromAid = String(msg.from_aid ?? msg.from ?? msg.sender_aid ?? aad.from ?? "").trim();
|
|
12964
|
+
const plaintext = await this._decryptV2EnvelopeForThought({ envelope, fromAid });
|
|
12965
|
+
if (!plaintext) return null;
|
|
12966
|
+
const e2eeMeta = v2E2eeMeta(envelope);
|
|
12967
|
+
const result = {
|
|
12968
|
+
message_id: String(msg.message_id ?? ""),
|
|
12969
|
+
from: fromAid,
|
|
12970
|
+
seq: msg.seq ?? null,
|
|
12971
|
+
timestamp: msg.t_server ?? msg.timestamp ?? null,
|
|
12972
|
+
payload: plaintext,
|
|
12973
|
+
encrypted: true,
|
|
12974
|
+
e2ee: e2eeMeta
|
|
12975
|
+
};
|
|
12976
|
+
result.direction = fromAid && fromAid === this._aid ? "outbound_sync" : "inbound";
|
|
12977
|
+
if (msg.t_server !== void 0) result.t_server = msg.t_server;
|
|
12978
|
+
if (msg.device_id !== void 0) result.device_id = msg.device_id;
|
|
12979
|
+
if (msg.slot_id !== void 0) result.slot_id = msg.slot_id;
|
|
12980
|
+
if (group) {
|
|
12981
|
+
result.group_id = msg.group_id ?? aad.group_id ?? envelope.group_id ?? null;
|
|
12982
|
+
} else {
|
|
12983
|
+
result.to = msg.to ?? this._aid ?? "";
|
|
12984
|
+
}
|
|
12985
|
+
attachV2EnvelopeMetadata(result, e2eeMeta);
|
|
12986
|
+
return result;
|
|
12987
|
+
}
|
|
12988
|
+
async _publishEncryptedPushAsUndecryptable(event, ns, seq, msg, group) {
|
|
12989
|
+
const safeEvent = safeUndecryptablePushEvent(msg, group);
|
|
12990
|
+
if (ns) {
|
|
12991
|
+
return this._publishOrderedMessage(event, ns, seq, safeEvent);
|
|
12992
|
+
}
|
|
12993
|
+
await this._publishAppEvent(event, safeEvent);
|
|
12994
|
+
return true;
|
|
12995
|
+
}
|
|
12996
|
+
async _publishEncryptedPushMessage(normalEvent, undecryptableEvent, ns, seq, msg, group) {
|
|
12997
|
+
const decrypted = await this._decryptEncryptedPushPayload(msg, group);
|
|
12998
|
+
if (decrypted) {
|
|
12999
|
+
if (ns) return this._publishOrderedMessage(normalEvent, ns, seq, decrypted);
|
|
13000
|
+
await this._publishAppEvent(normalEvent, decrypted);
|
|
13001
|
+
return true;
|
|
13002
|
+
}
|
|
13003
|
+
return this._publishEncryptedPushAsUndecryptable(undecryptableEvent, ns, seq, msg, group);
|
|
13004
|
+
}
|
|
12836
13005
|
/** 收到不带 payload 的 group.message_created 通知后,自动 pull 最新消息 */
|
|
12837
13006
|
async _autoPullGroupMessages(notification) {
|
|
12838
13007
|
const groupId = notification.group_id ?? "";
|
|
@@ -14863,7 +15032,25 @@ var _AUNClient = class _AUNClient {
|
|
|
14863
15032
|
*/
|
|
14864
15033
|
async initV2Session() {
|
|
14865
15034
|
if (!this._aid) return;
|
|
14866
|
-
|
|
15035
|
+
let identity = this._identity;
|
|
15036
|
+
if (!identity?.private_key_pem) {
|
|
15037
|
+
try {
|
|
15038
|
+
const reloaded = await this._keystore.loadIdentity(this._aid);
|
|
15039
|
+
if (reloaded?.private_key_pem) {
|
|
15040
|
+
this._identity = reloaded;
|
|
15041
|
+
identity = reloaded;
|
|
15042
|
+
this._clientLog.warn("V2 session init: identity cache was stale, reloaded from keystore");
|
|
15043
|
+
try {
|
|
15044
|
+
const persistIdentity = this._auth._persistIdentity;
|
|
15045
|
+
if (typeof persistIdentity === "function") {
|
|
15046
|
+
await persistIdentity.call(this._auth, reloaded);
|
|
15047
|
+
}
|
|
15048
|
+
} catch {
|
|
15049
|
+
}
|
|
15050
|
+
}
|
|
15051
|
+
} catch {
|
|
15052
|
+
}
|
|
15053
|
+
}
|
|
14867
15054
|
if (!identity?.private_key_pem) {
|
|
14868
15055
|
this._clientLog.warn("V2 session init skipped: no AID private key");
|
|
14869
15056
|
return;
|
|
@@ -15173,20 +15360,21 @@ var _AUNClient = class _AUNClient {
|
|
|
15173
15360
|
* @param afterSeq 从此 seq 之后开始拉取(0/省略 = 从当前 contiguous 开始)
|
|
15174
15361
|
* @param limit 最多拉取条数
|
|
15175
15362
|
*/
|
|
15176
|
-
async pullV2(afterSeq = 0, limit = 50) {
|
|
15363
|
+
async pullV2(afterSeq = 0, limit = 50, opts) {
|
|
15177
15364
|
if (!this._v2Session) {
|
|
15178
15365
|
throw new StateError("V2 session not initialized (not connected?)");
|
|
15179
15366
|
}
|
|
15180
15367
|
const ns = this._aid ? `p2p:${this._aid}` : "";
|
|
15181
15368
|
const decrypted = [];
|
|
15182
|
-
let nextAfterSeq = afterSeq || (ns ? this._seqTracker.getContiguousSeq(ns) : 0);
|
|
15369
|
+
let nextAfterSeq = opts?.force ? afterSeq : afterSeq || (ns ? this._seqTracker.getContiguousSeq(ns) : 0);
|
|
15183
15370
|
let pageCount = 0;
|
|
15184
15371
|
const maxPages = 100;
|
|
15185
15372
|
while (pageCount < maxPages) {
|
|
15186
15373
|
pageCount += 1;
|
|
15187
|
-
const result = await this.
|
|
15374
|
+
const result = await this._callRawV2Rpc("message.v2.pull", {
|
|
15188
15375
|
after_seq: nextAfterSeq,
|
|
15189
|
-
limit
|
|
15376
|
+
limit,
|
|
15377
|
+
...opts?.force ? { force: true } : {}
|
|
15190
15378
|
});
|
|
15191
15379
|
const messages = Array.isArray(result?.messages) ? result.messages : [];
|
|
15192
15380
|
const seqs = messages.map((msg) => Number(msg.seq ?? 0)).filter((seq) => Number.isFinite(seq) && seq > 0);
|
|
@@ -15475,6 +15663,10 @@ var _AUNClient = class _AUNClient {
|
|
|
15475
15663
|
encrypted: true,
|
|
15476
15664
|
e2ee
|
|
15477
15665
|
};
|
|
15666
|
+
const explicitDirection = String(msg.direction ?? "").trim();
|
|
15667
|
+
result.direction = explicitDirection || (fromAid && fromAid === this._aid ? "outbound_sync" : "inbound");
|
|
15668
|
+
if (msg.device_id !== void 0) result.device_id = msg.device_id;
|
|
15669
|
+
if (msg.slot_id !== void 0) result.slot_id = msg.slot_id;
|
|
15478
15670
|
attachV2EnvelopeMetadata(result, e2ee);
|
|
15479
15671
|
return result;
|
|
15480
15672
|
}
|
|
@@ -16828,7 +17020,7 @@ var ProtectedHeaders = class _ProtectedHeaders {
|
|
|
16828
17020
|
};
|
|
16829
17021
|
|
|
16830
17022
|
// src/index.ts
|
|
16831
|
-
var __version__ = "0.3.
|
|
17023
|
+
var __version__ = "0.3.6";
|
|
16832
17024
|
export {
|
|
16833
17025
|
AUNClient,
|
|
16834
17026
|
AUNError,
|
package/dist/client.d.ts
CHANGED
|
@@ -207,6 +207,7 @@ export declare class AUNClient {
|
|
|
207
207
|
* 拆分出来以便 pull gate 包裹整个操作。
|
|
208
208
|
*/
|
|
209
209
|
private _callImplInner;
|
|
210
|
+
private _callRawV2Rpc;
|
|
210
211
|
ping(params?: RpcParams): Promise<RpcResult>;
|
|
211
212
|
status(params?: RpcParams): Promise<RpcResult>;
|
|
212
213
|
trustRoots(params?: RpcParams): Promise<RpcResult>;
|
|
@@ -234,6 +235,9 @@ export declare class AUNClient {
|
|
|
234
235
|
* 不带 payload 的事件(通知):自动 pull 最新消息。
|
|
235
236
|
*/
|
|
236
237
|
private _processAndPublishGroupMessage;
|
|
238
|
+
private _decryptEncryptedPushPayload;
|
|
239
|
+
private _publishEncryptedPushAsUndecryptable;
|
|
240
|
+
private _publishEncryptedPushMessage;
|
|
237
241
|
/** 收到不带 payload 的 group.message_created 通知后,自动 pull 最新消息 */
|
|
238
242
|
private _autoPullGroupMessages;
|
|
239
243
|
/** 后台补齐群消息空洞 */
|
|
@@ -397,7 +401,9 @@ export declare class AUNClient {
|
|
|
397
401
|
* @param afterSeq 从此 seq 之后开始拉取(0/省略 = 从当前 contiguous 开始)
|
|
398
402
|
* @param limit 最多拉取条数
|
|
399
403
|
*/
|
|
400
|
-
pullV2(afterSeq?: number, limit?: number
|
|
404
|
+
pullV2(afterSeq?: number, limit?: number, opts?: {
|
|
405
|
+
force?: boolean;
|
|
406
|
+
}): Promise<unknown[]>;
|
|
401
407
|
/**
|
|
402
408
|
* 确认 V2 消息已消费 + 自检销毁旧 SPK(PFS)。
|
|
403
409
|
*
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAOA,OAAO,EAAkD,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,EAAsC,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAEvG,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAIlD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAkCrD,OAAO,EAML,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|