nostr-double-ratchet 0.0.77 → 0.0.78
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/SessionManager.d.ts +5 -51
- package/dist/SessionManager.d.ts.map +1 -1
- package/dist/nostr-double-ratchet.es.js +1625 -1534
- package/dist/nostr-double-ratchet.umd.js +1 -1
- package/dist/session-manager/DeviceRecordActor.d.ts +31 -0
- package/dist/session-manager/DeviceRecordActor.d.ts.map +1 -0
- package/dist/session-manager/UserRecordActor.d.ts +31 -0
- package/dist/session-manager/UserRecordActor.d.ts.map +1 -0
- package/dist/session-manager/types.d.ts +93 -0
- package/dist/session-manager/types.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/SessionManager.ts +136 -530
- package/src/session-manager/DeviceRecordActor.ts +254 -0
- package/src/session-manager/UserRecordActor.ts +232 -0
- package/src/session-manager/types.ts +124 -0
package/dist/SessionManager.d.ts
CHANGED
|
@@ -1,48 +1,8 @@
|
|
|
1
1
|
import { IdentityKey, NostrSubscribe, NostrPublish, Rumor, ReceiptType, ExpirationOptions, ChatSettingsPayloadV1 } from "./types";
|
|
2
2
|
import { StorageAdapter } from "./StorageAdapter";
|
|
3
|
-
import { AppKeys } from "./AppKeys";
|
|
4
3
|
import { Invite } from "./Invite";
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
export type OnEventMeta = {
|
|
8
|
-
fromDeviceId?: string;
|
|
9
|
-
senderOwnerPubkey?: string;
|
|
10
|
-
senderDevicePubkey?: string;
|
|
11
|
-
origin?: MessageOrigin;
|
|
12
|
-
isSelf?: boolean;
|
|
13
|
-
isCrossDeviceSelf?: boolean;
|
|
14
|
-
};
|
|
15
|
-
export type OnEventCallback = (event: Rumor, from: string, meta?: OnEventMeta) => void;
|
|
16
|
-
/**
|
|
17
|
-
* Credentials for the invite handshake - used to listen for and decrypt invite responses
|
|
18
|
-
*/
|
|
19
|
-
export interface InviteCredentials {
|
|
20
|
-
ephemeralKeypair: {
|
|
21
|
-
publicKey: string;
|
|
22
|
-
privateKey: Uint8Array;
|
|
23
|
-
};
|
|
24
|
-
sharedSecret: string;
|
|
25
|
-
}
|
|
26
|
-
export interface DeviceRecord {
|
|
27
|
-
deviceId: string;
|
|
28
|
-
activeSession?: Session;
|
|
29
|
-
inactiveSessions: Session[];
|
|
30
|
-
createdAt: number;
|
|
31
|
-
}
|
|
32
|
-
export interface UserRecord {
|
|
33
|
-
publicKey: string;
|
|
34
|
-
devices: Map<string, DeviceRecord>;
|
|
35
|
-
/** Full AppKeys for this user - single source of truth for device list */
|
|
36
|
-
appKeys?: AppKeys;
|
|
37
|
-
}
|
|
38
|
-
export interface AcceptInviteOptions {
|
|
39
|
-
ownerPublicKey?: string;
|
|
40
|
-
}
|
|
41
|
-
export interface AcceptInviteResult {
|
|
42
|
-
ownerPublicKey: string;
|
|
43
|
-
deviceId: string;
|
|
44
|
-
session: Session;
|
|
45
|
-
}
|
|
4
|
+
import type { AcceptInviteOptions, AcceptInviteResult, InviteCredentials, OnEventCallback, UserRecord } from "./session-manager/types";
|
|
5
|
+
export type { AcceptInviteOptions, AcceptInviteResult, DeviceRecord, InviteCredentials, OnEventCallback, OnEventMeta, UserRecord, } from "./session-manager/types";
|
|
46
6
|
export declare class SessionManager {
|
|
47
7
|
private readonly storageVersion;
|
|
48
8
|
private readonly versionPrefix;
|
|
@@ -53,6 +13,7 @@ export declare class SessionManager {
|
|
|
53
13
|
private identityKey;
|
|
54
14
|
private ourPublicKey;
|
|
55
15
|
private ownerPublicKey;
|
|
16
|
+
private nostrFacade;
|
|
56
17
|
private inviteKeys;
|
|
57
18
|
private userRecords;
|
|
58
19
|
private messageQueue;
|
|
@@ -65,8 +26,6 @@ export declare class SessionManager {
|
|
|
65
26
|
private autoAdoptChatSettings;
|
|
66
27
|
private userRecordWriteChain;
|
|
67
28
|
private ourInviteResponseSubscription;
|
|
68
|
-
private inviteSubscriptions;
|
|
69
|
-
private sessionSubscriptions;
|
|
70
29
|
private internalSubscriptions;
|
|
71
30
|
private initialized;
|
|
72
31
|
private expirationDefaultKey;
|
|
@@ -89,8 +48,8 @@ export declare class SessionManager {
|
|
|
89
48
|
*/
|
|
90
49
|
private fetchAppKeys;
|
|
91
50
|
private getOrCreateUserRecord;
|
|
51
|
+
private handleDeviceRumor;
|
|
92
52
|
private upsertDeviceRecord;
|
|
93
|
-
private sessionKey;
|
|
94
53
|
private sessionKeyPrefix;
|
|
95
54
|
private userRecordKey;
|
|
96
55
|
private userRecordKeyPrefix;
|
|
@@ -111,10 +70,6 @@ export declare class SessionManager {
|
|
|
111
70
|
* Returns true if the device is in the owner's current AppKeys.
|
|
112
71
|
*/
|
|
113
72
|
private isDeviceAuthorized;
|
|
114
|
-
private subscribeToUserAppKeys;
|
|
115
|
-
private static MAX_INACTIVE_SESSIONS;
|
|
116
|
-
private attachSessionSubscription;
|
|
117
|
-
private attachAppKeysSubscription;
|
|
118
73
|
setupUser(userPubkey: string): void;
|
|
119
74
|
onEvent(callback: OnEventCallback): () => void;
|
|
120
75
|
/**
|
|
@@ -142,10 +97,10 @@ export declare class SessionManager {
|
|
|
142
97
|
deactivateCurrentSessions(publicKey: string): void;
|
|
143
98
|
deleteChat(userPubkey: string): Promise<void>;
|
|
144
99
|
deleteUser(userPubkey: string): Promise<void>;
|
|
145
|
-
private removeSessionSubscription;
|
|
146
100
|
private deleteUserSessionsFromStorage;
|
|
147
101
|
private flushMessageQueue;
|
|
148
102
|
acceptInvite(invite: Invite, options?: AcceptInviteOptions): Promise<AcceptInviteResult>;
|
|
103
|
+
private resolveInviteeOwnerClaim;
|
|
149
104
|
sendEvent(recipientIdentityKey: string, event: Partial<Rumor>): Promise<Rumor | undefined>;
|
|
150
105
|
sendMessage(recipientPublicKey: string, content: string, options?: {
|
|
151
106
|
kind?: number;
|
|
@@ -170,7 +125,6 @@ export declare class SessionManager {
|
|
|
170
125
|
sendReceipt(recipientPublicKey: string, receiptType: ReceiptType, messageIds: string[]): Promise<Rumor | undefined>;
|
|
171
126
|
sendTyping(recipientPublicKey: string): Promise<Rumor>;
|
|
172
127
|
private maybeAutoAdoptChatSettings;
|
|
173
|
-
private cleanupDevice;
|
|
174
128
|
private buildMessageTags;
|
|
175
129
|
private storeUserRecord;
|
|
176
130
|
private loadUserRecord;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionManager.d.ts","sourceRoot":"","sources":["../src/SessionManager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,cAAc,EACd,YAAY,EACZ,KAAK,EAOL,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,cAAc,EAA0B,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"SessionManager.d.ts","sourceRoot":"","sources":["../src/SessionManager.ts"],"names":[],"mappings":"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"}
|