nostr-double-ratchet 0.0.49 → 0.0.52

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.
@@ -0,0 +1,42 @@
1
+ export declare const GROUP_METADATA_KIND = 40;
2
+ export declare const GROUP_INVITE_RUMOR_KIND = 10445;
3
+ export interface GroupData {
4
+ id: string;
5
+ name: string;
6
+ description?: string;
7
+ picture?: string;
8
+ members: string[];
9
+ admins: string[];
10
+ createdAt: number;
11
+ secret?: string;
12
+ accepted?: boolean;
13
+ }
14
+ export interface GroupMetadata {
15
+ id: string;
16
+ name: string;
17
+ description?: string;
18
+ picture?: string;
19
+ members: string[];
20
+ admins: string[];
21
+ secret?: string;
22
+ }
23
+ export declare function isGroupAdmin(group: GroupData, pubkey: string): boolean;
24
+ export declare function generateGroupSecret(): string;
25
+ export declare function createGroupData(name: string, creatorPubkey: string, memberPubkeys: string[]): GroupData;
26
+ export declare function buildGroupMetadataContent(group: GroupData, opts?: {
27
+ excludeSecret?: boolean;
28
+ }): string;
29
+ export declare function parseGroupMetadata(content: string): GroupMetadata | null;
30
+ export declare function validateMetadataUpdate(existing: GroupData, metadata: GroupMetadata, senderPubkey: string, myPubkey: string): 'accept' | 'reject' | 'removed';
31
+ export declare function validateMetadataCreation(metadata: GroupMetadata, senderPubkey: string, myPubkey: string): boolean;
32
+ export declare function applyMetadataUpdate(existing: GroupData, metadata: GroupMetadata): GroupData;
33
+ export declare function addGroupMember(group: GroupData, pubkey: string, actorPubkey: string): GroupData | null;
34
+ export declare function removeGroupMember(group: GroupData, pubkey: string, actorPubkey: string): GroupData | null;
35
+ export declare function updateGroupData(group: GroupData, updates: {
36
+ name?: string;
37
+ description?: string;
38
+ picture?: string;
39
+ }, actorPubkey: string): GroupData | null;
40
+ export declare function addGroupAdmin(group: GroupData, pubkey: string, actorPubkey: string): GroupData | null;
41
+ export declare function removeGroupAdmin(group: GroupData, pubkey: string, actorPubkey: string): GroupData | null;
42
+ //# sourceMappingURL=Group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Group.d.ts","sourceRoot":"","sources":["../src/Group.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB,KAAK,CAAA;AACrC,eAAO,MAAM,uBAAuB,QAAQ,CAAA;AAE5C,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAEtE;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAG5C;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,SAAS,CAWvG;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAWtG;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,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAQtG;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAUzG;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,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAQrG;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAQxG"}
@@ -1 +1 @@
1
- {"version":3,"file":"Invite.d.ts","sourceRoot":"","sources":["../src/Invite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,aAAa,EAAE,aAAa,EAAuB,MAAM,aAAa,CAAC;AAC/F,OAAO,EAAqB,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAwB,MAAM,SAAS,CAAC;AACjI,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAWvC;;;;;;;;;GASG;AACH,qBAAa,MAAM;IAEJ,yBAAyB,EAAE,MAAM;IACjC,YAAY,EAAE,MAAM;IACpB,OAAO,EAAE,MAAM;IACf,0BAA0B,CAAC,EAAE,UAAU;IACvC,QAAQ,CAAC,EAAE,MAAM;IACjB,OAAO,CAAC,EAAE,MAAM;IAChB,MAAM,EAAE,MAAM,EAAE;IAChB,SAAS,EAAE,MAAM;gBAPjB,yBAAyB,EAAE,MAAM,EACjC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,EACf,0BAA0B,CAAC,EAAE,UAAU,YAAA,EACvC,QAAQ,CAAC,EAAE,MAAM,YAAA,EACjB,OAAO,CAAC,EAAE,MAAM,YAAA,EAChB,MAAM,GAAE,MAAM,EAAO,EACrB,SAAS,GAAE,MAAc;IAIpC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM;IAgB9E,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IA2BnC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAcxC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM;IAkC9C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,WAAW;IAwB1G;;OAEG;IACH,SAAS,IAAI,MAAM;IAanB;;OAEG;IACH,MAAM,CAAC,IAAI,SAAoB;IAW/B,QAAQ,IAAI,aAAa;IAkBzB;;;OAGG;IACH,gBAAgB,IAAI,aAAa;IAgBjC;;;;;;;;;;;;;;;;OAgBG;IACG,MAAM,CACR,cAAc,EAAE,cAAc,EAC9B,gBAAgB,EAAE,MAAM,EACxB,SAAS,EAAE,UAAU,GAAG,eAAe,EACvC,cAAc,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,aAAa,CAAA;KAAE,CAAC;IA6BtD,MAAM,CAAC,SAAS,EAAE,UAAU,GAAG,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,GAAG,WAAW;CA8C1J"}
1
+ {"version":3,"file":"Invite.d.ts","sourceRoot":"","sources":["../src/Invite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,aAAa,EAAE,aAAa,EAAuB,MAAM,aAAa,CAAC;AAC/F,OAAO,EAAqB,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAwB,MAAM,SAAS,CAAC;AACjI,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAWvC;;;;;;;;;GASG;AACH,qBAAa,MAAM;IAEJ,yBAAyB,EAAE,MAAM;IACjC,YAAY,EAAE,MAAM;IACpB,OAAO,EAAE,MAAM;IACf,0BAA0B,CAAC,EAAE,UAAU;IACvC,QAAQ,CAAC,EAAE,MAAM;IACjB,OAAO,CAAC,EAAE,MAAM;IAChB,MAAM,EAAE,MAAM,EAAE;IAChB,SAAS,EAAE,MAAM;gBAPjB,yBAAyB,EAAE,MAAM,EACjC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,EACf,0BAA0B,CAAC,EAAE,UAAU,YAAA,EACvC,QAAQ,CAAC,EAAE,MAAM,YAAA,EACjB,OAAO,CAAC,EAAE,MAAM,YAAA,EAChB,MAAM,GAAE,MAAM,EAAO,EACrB,SAAS,GAAE,MAAc;IAIpC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM;IAgB9E,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IA2BnC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAcxC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM;IAkC9C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,WAAW;IAqB1G;;OAEG;IACH,SAAS,IAAI,MAAM;IAanB;;OAEG;IACH,MAAM,CAAC,IAAI,SAAoB;IAW/B,QAAQ,IAAI,aAAa;IAkBzB;;;OAGG;IACH,gBAAgB,IAAI,aAAa;IAgBjC;;;;;;;;;;;;;;;;OAgBG;IACG,MAAM,CACR,cAAc,EAAE,cAAc,EAC9B,gBAAgB,EAAE,MAAM,EACxB,SAAS,EAAE,UAAU,GAAG,eAAe,EACvC,cAAc,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,aAAa,CAAA;KAAE,CAAC;IA6BtD,MAAM,CAAC,SAAS,EAAE,UAAU,GAAG,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,GAAG,WAAW;CA8C1J"}
@@ -0,0 +1,20 @@
1
+ import { Rumor, NostrEvent, SHARED_CHANNEL_KIND } from "./types";
2
+ export { SHARED_CHANNEL_KIND };
3
+ /**
4
+ * A shared NIP-44 encrypted channel derived from a secret key.
5
+ * All participants who know the secret can publish and read events.
6
+ * Inner content is Rumors identifying the real author.
7
+ */
8
+ export declare class SharedChannel {
9
+ readonly publicKey: string;
10
+ private secretKey;
11
+ private conversationKey;
12
+ constructor(secretKey: Uint8Array);
13
+ /** Encrypt a Rumor and return a signed outer event ready for publishing */
14
+ createEvent(rumor: Rumor): import("nostr-tools").VerifiedEvent;
15
+ /** Decrypt an outer event and return the inner Rumor */
16
+ decryptEvent(event: NostrEvent): Rumor;
17
+ /** Check if an event belongs to this channel */
18
+ isChannelEvent(event: NostrEvent): boolean;
19
+ }
20
+ //# sourceMappingURL=SharedChannel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SharedChannel.d.ts","sourceRoot":"","sources":["../src/SharedChannel.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEjE,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAE/B;;;;GAIG;AACH,qBAAa,aAAa;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,eAAe,CAAa;gBAExB,SAAS,EAAE,UAAU;IASjC,2EAA2E;IAC3E,WAAW,CAAC,KAAK,EAAE,KAAK;IAcxB,wDAAwD;IACxD,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,KAAK;IAKtC,gDAAgD;IAChD,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO;CAK3C"}
package/dist/index.d.ts CHANGED
@@ -7,4 +7,6 @@ export * from "./utils";
7
7
  export * from "./SessionManager";
8
8
  export * from "./AppKeysManager";
9
9
  export * from "./StorageAdapter";
10
+ export * from "./SharedChannel";
11
+ export * from "./Group";
10
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,SAAS,CAAA"}