nostr-double-ratchet 0.0.73 → 0.0.75
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/README.md +1 -0
- package/dist/GroupManager.d.ts +37 -1
- package/dist/GroupManager.d.ts.map +1 -1
- package/dist/GroupMeta.d.ts +6 -0
- package/dist/GroupMeta.d.ts.map +1 -1
- package/dist/nostr-double-ratchet.es.js +863 -811
- package/dist/nostr-double-ratchet.umd.js +1 -1
- package/package.json +1 -1
- package/src/GroupManager.ts +117 -2
- package/src/GroupMeta.ts +6 -1
package/README.md
CHANGED
|
@@ -76,6 +76,7 @@ await sessionManager.sendMessage(recipientPubkey, "Hello!")
|
|
|
76
76
|
- Sender-key distributions are delivered pairwise over authenticated 1:1 sessions.
|
|
77
77
|
- Group messages are published once as one-to-many outer events (per sender device key).
|
|
78
78
|
- Receiver attribution for group payloads is derived from authenticated distribution/session context, not inner rumor `pubkey`.
|
|
79
|
+
- `createGroupData(...)` is a pure local constructor. `GroupManager.createGroup(...)` is the app-level helper that creates local group state and, by default, fans out metadata (kind 40) to members.
|
|
79
80
|
|
|
80
81
|
## Disappearing Messages (Expiration)
|
|
81
82
|
|
package/dist/GroupManager.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type VerifiedEvent } from "nostr-tools";
|
|
2
2
|
import { type GroupDecryptedEvent, type PairwiseSend, type PublishOuter } from "./GroupChannel";
|
|
3
3
|
import { type GroupData } from "./GroupMeta";
|
|
4
4
|
import { OneToManyChannel } from "./OneToManyChannel";
|
|
@@ -20,6 +20,33 @@ export interface GroupManagerOptions {
|
|
|
20
20
|
onDecryptedEvent?: (event: GroupDecryptedEvent) => void;
|
|
21
21
|
onError?: (error: unknown, context: GroupManagerErrorContext) => void;
|
|
22
22
|
}
|
|
23
|
+
export interface CreateGroupOptions {
|
|
24
|
+
/**
|
|
25
|
+
* Sends metadata rumors to group members over pairwise sessions.
|
|
26
|
+
* Required when `fanoutMetadata` is true (default).
|
|
27
|
+
*/
|
|
28
|
+
sendPairwise?: PairwiseSend;
|
|
29
|
+
/**
|
|
30
|
+
* Controls whether createGroup should immediately fanout metadata to members.
|
|
31
|
+
* Defaults to true.
|
|
32
|
+
*/
|
|
33
|
+
fanoutMetadata?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Optional timestamp override in milliseconds since epoch (for deterministic tests).
|
|
36
|
+
*/
|
|
37
|
+
nowMs?: number;
|
|
38
|
+
}
|
|
39
|
+
export interface GroupMetadataFanoutResult {
|
|
40
|
+
enabled: boolean;
|
|
41
|
+
attempted: number;
|
|
42
|
+
succeeded: string[];
|
|
43
|
+
failed: string[];
|
|
44
|
+
}
|
|
45
|
+
export interface CreateGroupResult {
|
|
46
|
+
group: GroupData;
|
|
47
|
+
metadataRumor?: Rumor;
|
|
48
|
+
fanout: GroupMetadataFanoutResult;
|
|
49
|
+
}
|
|
23
50
|
export declare class GroupManager {
|
|
24
51
|
private readonly ourOwnerPubkey;
|
|
25
52
|
private readonly ourDevicePubkey;
|
|
@@ -39,6 +66,15 @@ export declare class GroupManager {
|
|
|
39
66
|
upsertGroup(data: GroupData): Promise<void>;
|
|
40
67
|
removeGroup(groupId: string): void;
|
|
41
68
|
destroy(): void;
|
|
69
|
+
/**
|
|
70
|
+
* High-level helper for app flows:
|
|
71
|
+
* - Creates local group data and stores it in this manager.
|
|
72
|
+
* - By default, fans out group metadata (kind 40) to members over pairwise sessions.
|
|
73
|
+
*
|
|
74
|
+
* Note: `createGroupData` remains pure/local-only. Use this method when you want
|
|
75
|
+
* creation + delivery in one step.
|
|
76
|
+
*/
|
|
77
|
+
createGroup(name: string, memberOwnerPubkeys: string[], opts?: CreateGroupOptions): Promise<CreateGroupResult>;
|
|
42
78
|
sendMessage(groupId: string, message: string, opts: {
|
|
43
79
|
sendPairwise: PairwiseSend;
|
|
44
80
|
publishOuter: PublishOuter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupManager.d.ts","sourceRoot":"","sources":["../src/GroupManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"GroupManager.d.ts","sourceRoot":"","sources":["../src/GroupManager.ts"],"names":[],"mappings":"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"}
|
package/dist/GroupMeta.d.ts
CHANGED
|
@@ -24,6 +24,12 @@ export interface GroupMetadata {
|
|
|
24
24
|
}
|
|
25
25
|
export declare function isGroupAdmin(group: GroupData, pubkey: string): boolean;
|
|
26
26
|
export declare function generateGroupSecret(): string;
|
|
27
|
+
/**
|
|
28
|
+
* Build local group state only (pure function).
|
|
29
|
+
*
|
|
30
|
+
* This does not perform any network I/O and does not send metadata to members.
|
|
31
|
+
* Use `GroupManager.createGroup(...)` when you want create + metadata fanout in one step.
|
|
32
|
+
*/
|
|
27
33
|
export declare function createGroupData(name: string, creatorPubkey: string, memberPubkeys: string[]): GroupData;
|
|
28
34
|
export declare function buildGroupMetadataContent(group: GroupData, opts?: {
|
|
29
35
|
excludeSecret?: boolean;
|
package/dist/GroupMeta.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupMeta.d.ts","sourceRoot":"","sources":["../src/GroupMeta.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAC7C,eAAO,MAAM,kCAAkC,QAAQ,CAAC;AACxD,eAAO,MAAM,6BAA6B,QAAQ,CAAC;AAEnD,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAEtE;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAG5C;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EAAE,GACtB,SAAS,CAWX;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,SAAS,EAChB,IAAI,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,GACjC,MAAM,CAWR;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAUxE;AAED,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,SAAS,EACnB,QAAQ,EAAE,aAAa,EACvB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,GACf,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAIjC;AAED,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,aAAa,EACvB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,GACf,OAAO,CAIT;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,GAAG,SAAS,CAU3F;AAED,wBAAgB,cAAc,CAC5B,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,SAAS,GAAG,IAAI,CAQlB;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,SAAS,GAAG,IAAI,CAUlB;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EAClE,WAAW,EAAE,MAAM,GAClB,SAAS,GAAG,IAAI,CAOlB;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,SAAS,GAAG,IAAI,CAQlB;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,SAAS,GAAG,IAAI,CAQlB"}
|
|
1
|
+
{"version":3,"file":"GroupMeta.d.ts","sourceRoot":"","sources":["../src/GroupMeta.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAC7C,eAAO,MAAM,kCAAkC,QAAQ,CAAC;AACxD,eAAO,MAAM,6BAA6B,QAAQ,CAAC;AAEnD,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAEtE;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAG5C;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EAAE,GACtB,SAAS,CAWX;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,SAAS,EAChB,IAAI,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,GACjC,MAAM,CAWR;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAUxE;AAED,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,SAAS,EACnB,QAAQ,EAAE,aAAa,EACvB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,GACf,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAIjC;AAED,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,aAAa,EACvB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,GACf,OAAO,CAIT;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,GAAG,SAAS,CAU3F;AAED,wBAAgB,cAAc,CAC5B,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,SAAS,GAAG,IAAI,CAQlB;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,SAAS,GAAG,IAAI,CAUlB;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EAClE,WAAW,EAAE,MAAM,GAClB,SAAS,GAAG,IAAI,CAOlB;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,SAAS,GAAG,IAAI,CAQlB;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,SAAS,GAAG,IAAI,CAQlB"}
|