@xmtp/browser-sdk 2.0.2 → 2.0.4

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 CHANGED
@@ -4,16 +4,22 @@ This package provides the XMTP client SDK for browsers.
4
4
 
5
5
  To keep up with the latest SDK developments, see the [Issues tab](https://github.com/xmtp/xmtp-js/issues) in this repo.
6
6
 
7
- To learn more about XMTP and get answers to frequently asked questions, see the [XMTP documentation](https://xmtp.org/docs).
8
-
9
7
  > [!CAUTION]
10
8
  > This SDK is in beta status and ready for you to build with in production. Software in this status may change based on feedback.
11
9
 
10
+ ## Documentation
11
+
12
+ To learn how to use the XMTP client SDK for browsers and get answers to frequently asked questions, see the [XMTP documentation](https://docs.xmtp.org/).
13
+
14
+ ## SDK reference
15
+
16
+ Coming soon
17
+
12
18
  ## Limitations
13
19
 
14
20
  This SDK uses the [origin private file system](https://developer.mozilla.org/en-US/docs/Web/API/File_System_API/Origin_private_file_system) (OPFS) to persist a SQLite database and the [SyncAccessHandle Pool VFS](https://sqlite.org/wasm/doc/trunk/persistence.md#vfs-opfs-sahpool) to access it. This VFS does not support multiple simultaneous connections.
15
21
 
16
- This means that when using this SDK in your application, you must prevent multiple browser tabs or windows from accessing your application at the same time.
22
+ This means that when using this SDK in your app, you must prevent multiple browser tabs or windows from accessing your app at the same time.
17
23
 
18
24
  ### Bundlers
19
25
 
@@ -54,26 +60,23 @@ pnpm install @xmtp/browser-sdk
54
60
  yarn add @xmtp/browser-sdk
55
61
  ```
56
62
 
57
- ## Reference docs
58
-
59
- Access the XMTP client browser SDK [reference documentation](TBD).
60
-
61
- ## Usage
62
-
63
- Check out our [official documentation](https://xmtp.org/docs/build/get-started/overview) to get started developing with XMTP.
63
+ ## Developing
64
64
 
65
- ## XMTP network environments
65
+ Run `yarn dev` to build the SDK and watch for changes, which will trigger a rebuild.
66
66
 
67
- XMTP provides `production`, `dev`, and `local` network environments to support the development phases of your project. To learn more about these environments, see our [official documentation](https://xmtp.org/docs/build/authentication#environments).
67
+ ### Useful commands
68
68
 
69
- > **Important**
70
- > When you [create a client](https://xmtp.org/docs/build/authentication#create-a-client), it connects to the XMTP `dev` environment by default. To learn how to use the `env` parameter to set your client's network environment, see [Configure the client](https://xmtp.org/docs/build/authentication#configure-the-client).
69
+ - `yarn build`: Builds the SDK
70
+ - `yarn clean`: Removes `node_modules`, `dist`, and `.turbofolders
71
+ - `yarn dev`: Builds the SDK and watches for changes, which will trigger a rebuild
72
+ - `yarn test`: Runs all tests
73
+ - `yarn typecheck`: Runs `tsc`
71
74
 
72
75
  ## Breaking revisions
73
76
 
74
77
  Because this SDK is in active development, you should expect breaking revisions that might require you to adopt the latest SDK release to enable your app to continue working as expected.
75
78
 
76
- XMTP communicates about breaking revisions in the [XMTP Discord community](https://discord.gg/xmtp), providing as much advance notice as possible. Additionally, breaking revisions in a release are described on the [Releases page](https://github.com/xmtp/xmtp-js/releases).
79
+ Breaking revisions in a Browser SDK release are described on the [Releases page](https://github.com/xmtp/xmtp-js/releases).
77
80
 
78
81
  ## Deprecation
79
82
 
@@ -84,20 +87,8 @@ Older versions of the SDK will eventually be deprecated, which means:
84
87
 
85
88
  The following table provides the deprecation schedule.
86
89
 
87
- | Announced | Effective | Minimum Version | Rationale |
88
- | -------------------------------------------------------------- | --------- | --------------- | --------- |
89
- | There are no deprecations scheduled for this SDK at this time. | | | |
90
+ | Announced | Effective | Minimum Version | Rationale |
91
+ | --------------------------- | ----------- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
92
+ | No more support for XMTP V2 | May 1, 2025 | >=1.1.4 | In a move toward better security with MLS and the ability to decentralize, we will be shutting down XMTP V2 and moving entirely to XMTP V3. To learn more about V2 deprecation, see [XIP-53: XMTP V2 deprecation plan](https://community.xmtp.org/t/xip-53-xmtp-v2-deprecation-plan/867). To learn how to upgrade, see [@xmtp/browser-sdk v1.1.4](https://github.com/xmtp/xmtp-js/releases/tag/%40xmtp%2Fbrowser-sdk%401.1.4). |
90
93
 
91
94
  Bug reports, feature requests, and PRs are welcome in accordance with these [contribution guidelines](https://github.com/xmtp/xmtp-js/blob/main/CONTRIBUTING.md).
92
-
93
- ## Developing
94
-
95
- Run `yarn dev` to build the SDK and watch for changes, which will trigger a rebuild.
96
-
97
- ### Useful commands
98
-
99
- - `yarn build`: Builds the SDK
100
- - `yarn clean`: Removes `node_modules`, `dist`, and `.turbo` folders
101
- - `yarn dev`: Builds the SDK and watches for changes, which will trigger a rebuild
102
- - `yarn test`: Runs all tests
103
- - `yarn typecheck`: Runs `tsc`
package/dist/index.d.ts CHANGED
@@ -1089,9 +1089,9 @@ type MessageDeliveryStatus = "unpublished" | "published" | "failed";
1089
1089
  * @property {string} senderInboxId - Identifier for the sender's inbox
1090
1090
  * @property {bigint} sentAtNs - Timestamp when the message was sent (in nanoseconds)
1091
1091
  */
1092
- declare class DecodedMessage {
1092
+ declare class DecodedMessage<T = unknown> {
1093
1093
  #private;
1094
- content: any;
1094
+ content: T | undefined;
1095
1095
  contentType: ContentTypeId$1;
1096
1096
  conversationId: string;
1097
1097
  deliveryStatus: MessageDeliveryStatus;
@@ -1149,30 +1149,30 @@ declare class Conversation {
1149
1149
  */
1150
1150
  publishMessages(): Promise<undefined>;
1151
1151
  /**
1152
- * Sends a message optimistically
1152
+ * Prepares a message to be published
1153
1153
  *
1154
1154
  * @param content - The content to send
1155
1155
  * @param contentType - Optional content type of the message content
1156
1156
  * @returns Promise that resolves with the message ID
1157
- * @throws {MissingContentTypeError} When content type is required but not provided
1157
+ * @throws {MissingContentTypeError} if content type is required but not provided
1158
1158
  */
1159
- sendOptimistic(content: any, contentType?: ContentTypeId$1): Promise<string>;
1159
+ sendOptimistic(content: unknown, contentType?: ContentTypeId$1): Promise<string>;
1160
1160
  /**
1161
- * Sends a message
1161
+ * Publishes a new message
1162
1162
  *
1163
1163
  * @param content - The content to send
1164
1164
  * @param contentType - Optional content type of the message content
1165
1165
  * @returns Promise that resolves with the message ID after it has been sent
1166
- * @throws {MissingContentTypeError} When content type is required but not provided
1166
+ * @throws {MissingContentTypeError} if content type is required but not provided
1167
1167
  */
1168
- send(content: any, contentType?: ContentTypeId$1): Promise<string>;
1168
+ send(content: unknown, contentType?: ContentTypeId$1): Promise<string>;
1169
1169
  /**
1170
1170
  * Lists messages in this conversation
1171
1171
  *
1172
1172
  * @param options - Optional filtering and pagination options
1173
1173
  * @returns Promise that resolves with an array of decoded messages
1174
1174
  */
1175
- messages(options?: SafeListMessagesOptions): Promise<DecodedMessage[]>;
1175
+ messages(options?: SafeListMessagesOptions): Promise<DecodedMessage<unknown>[]>;
1176
1176
  /**
1177
1177
  * Gets the consent state for this conversation
1178
1178
  *
@@ -1216,9 +1216,9 @@ declare class Conversation {
1216
1216
  * Creates a stream for new messages in this conversation
1217
1217
  *
1218
1218
  * @param callback - Optional callback function for handling new stream values
1219
- * @returns AsyncStream instance for new messages
1219
+ * @returns Stream instance for new messages
1220
1220
  */
1221
- stream(callback?: StreamCallback<DecodedMessage>): Promise<AsyncStream<DecodedMessage>>;
1221
+ stream(callback?: StreamCallback<DecodedMessage>): Promise<AsyncStream<DecodedMessage<unknown>>>;
1222
1222
  pausedForVersion(): Promise<string | undefined>;
1223
1223
  /**
1224
1224
  * Retrieves HMAC keys for this conversation
@@ -1453,7 +1453,7 @@ declare class Conversations {
1453
1453
  * @param id - The message ID to look up
1454
1454
  * @returns Promise that resolves with the decoded message, if found
1455
1455
  */
1456
- getMessageById(id: string): Promise<DecodedMessage | undefined>;
1456
+ getMessageById<T = unknown>(id: string): Promise<DecodedMessage<T> | undefined>;
1457
1457
  /**
1458
1458
  * Retrieves a DM by inbox ID
1459
1459
  *
@@ -1525,21 +1525,21 @@ declare class Conversations {
1525
1525
  *
1526
1526
  * @param callback - Optional callback function for handling new stream value
1527
1527
  * @param conversationType - Optional type to filter conversations
1528
- * @returns AsyncStream instance for new conversations
1528
+ * @returns Stream instance for new conversations
1529
1529
  */
1530
1530
  stream<T extends Group | Dm = Group | Dm>(callback?: StreamCallback<T>, conversationType?: ConversationType): Promise<AsyncStream<T>>;
1531
1531
  /**
1532
1532
  * Creates a stream for new group conversations
1533
1533
  *
1534
1534
  * @param callback - Optional callback function for handling new stream value
1535
- * @returns AsyncStream instance for new group conversations
1535
+ * @returns Stream instance for new group conversations
1536
1536
  */
1537
1537
  streamGroups(callback?: StreamCallback<Group>): Promise<AsyncStream<Group>>;
1538
1538
  /**
1539
1539
  * Creates a stream for new DM conversations
1540
1540
  *
1541
1541
  * @param callback - Optional callback function for handling new stream value
1542
- * @returns AsyncStream instance for new DM conversations
1542
+ * @returns Stream instance for new DM conversations
1543
1543
  */
1544
1544
  streamDms(callback?: StreamCallback<Dm>): Promise<AsyncStream<Dm>>;
1545
1545
  /**
@@ -1547,23 +1547,23 @@ declare class Conversations {
1547
1547
  *
1548
1548
  * @param callback - Optional callback function for handling new stream value
1549
1549
  * @param conversationType - Optional conversation type to filter messages
1550
- * @returns AsyncStream instance for new messages
1550
+ * @returns Stream instance for new messages
1551
1551
  */
1552
- streamAllMessages(callback?: StreamCallback<DecodedMessage>, conversationType?: ConversationType): Promise<AsyncStream<DecodedMessage>>;
1552
+ streamAllMessages(callback?: StreamCallback<DecodedMessage>, conversationType?: ConversationType): Promise<AsyncStream<DecodedMessage<unknown>>>;
1553
1553
  /**
1554
1554
  * Creates a stream for all new group messages
1555
1555
  *
1556
1556
  * @param callback - Optional callback function for handling new stream value
1557
- * @returns AsyncStream instance for new group messages
1557
+ * @returns Stream instance for new group messages
1558
1558
  */
1559
- streamAllGroupMessages(callback?: StreamCallback<DecodedMessage>): Promise<AsyncStream<DecodedMessage>>;
1559
+ streamAllGroupMessages(callback?: StreamCallback<DecodedMessage>): Promise<AsyncStream<DecodedMessage<unknown>>>;
1560
1560
  /**
1561
1561
  * Creates a stream for all new DM messages
1562
1562
  *
1563
1563
  * @param callback - Optional callback function for handling new stream value
1564
- * @returns AsyncStream instance for new DM messages
1564
+ * @returns Stream instance for new DM messages
1565
1565
  */
1566
- streamAllDmMessages(callback?: StreamCallback<DecodedMessage>): Promise<AsyncStream<DecodedMessage>>;
1566
+ streamAllDmMessages(callback?: StreamCallback<DecodedMessage>): Promise<AsyncStream<DecodedMessage<unknown>>>;
1567
1567
  }
1568
1568
 
1569
1569
  /**
@@ -1620,14 +1620,14 @@ declare class Preferences {
1620
1620
  * Creates a stream of consent state updates
1621
1621
  *
1622
1622
  * @param callback - Optional callback function for handling stream updates
1623
- * @returns AsyncStream instance for consent updates
1623
+ * @returns Stream instance for consent updates
1624
1624
  */
1625
1625
  streamConsent(callback?: StreamCallback<SafeConsent[]>): Promise<AsyncStream<SafeConsent[]>>;
1626
1626
  /**
1627
1627
  * Creates a stream of user preference updates
1628
1628
  *
1629
1629
  * @param callback - Optional callback function for handling stream updates
1630
- * @returns AsyncStream instance for preference updates
1630
+ * @returns Stream instance for preference updates
1631
1631
  */
1632
1632
  streamPreferences(callback?: StreamCallback<UserPreference[]>): Promise<AsyncStream<UserPreference[]>>;
1633
1633
  }
@@ -1694,6 +1694,10 @@ declare class Client extends ClientWorkerClass {
1694
1694
  * Gets the client options
1695
1695
  */
1696
1696
  get options(): ClientOptions | undefined;
1697
+ /**
1698
+ * Gets the signer associated with this client
1699
+ */
1700
+ get signer(): Signer | undefined;
1697
1701
  /**
1698
1702
  * Gets whether the client has been initialized
1699
1703
  */
@@ -1931,7 +1935,7 @@ declare class Client extends ClientWorkerClass {
1931
1935
  * @param contentType - The content type to get the codec for
1932
1936
  * @returns The codec, if found
1933
1937
  */
1934
- codecFor(contentType: ContentTypeId$1): ContentCodec | undefined;
1938
+ codecFor<T = unknown>(contentType: ContentTypeId$1): ContentCodec<T> | undefined;
1935
1939
  /**
1936
1940
  * Encodes content for a given content type
1937
1941
  *
@@ -1940,7 +1944,7 @@ declare class Client extends ClientWorkerClass {
1940
1944
  * @returns The encoded content
1941
1945
  * @throws {CodecNotFoundError} if no codec is found for the content type
1942
1946
  */
1943
- encodeContent(content: any, contentType: ContentTypeId$1): SafeEncodedContent;
1947
+ encodeContent(content: unknown, contentType: ContentTypeId$1): SafeEncodedContent;
1944
1948
  /**
1945
1949
  * Decodes a message for a given content type
1946
1950
  *
@@ -1950,7 +1954,7 @@ declare class Client extends ClientWorkerClass {
1950
1954
  * @throws {CodecNotFoundError} if no codec is found for the content type
1951
1955
  * @throws {InvalidGroupMembershipChangeError} if the message is an invalid group membership change
1952
1956
  */
1953
- decodeContent(message: SafeMessage, contentType: ContentTypeId$1): any;
1957
+ decodeContent<T = unknown>(message: SafeMessage, contentType: ContentTypeId$1): T;
1954
1958
  /**
1955
1959
  * Signs a message with the installation key
1956
1960
  *
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import{GroupUpdatedCodec as e,ContentTypeGroupUpdated as t}from"@xmtp/content-type-group-updated";import{ContentTypeText as s,TextCodec as i}from"@xmtp/content-type-text";import{ContentTypeId as n,EncodedContent as r,ListMessagesOptions as a,ListConversationsOptions as o,PermissionPolicySet as d,CreateGroupOptions as c,CreateDMOptions as l,Consent as u,GroupMember as h,MessageDisappearingSettings as g,GroupPermissionsOptions as p,GroupMessageKind as m,DeliveryStatus as y,SignatureRequestType as I,ConversationType as v}from"@xmtp/wasm-bindings";export{Consent,ConsentEntityType,ConsentState,ContentType,ContentTypeId,ConversationListItem,ConversationType,CreateDMOptions,CreateGroupOptions,DeliveryStatus,EncodedContent,GroupMember,GroupMembershipState,GroupMessageKind,GroupMetadata,GroupPermissions,GroupPermissionsOptions,HmacKey,InboxState,Installation,ListConversationsOptions,ListMessagesOptions,LogOptions,Message,MessageDisappearingSettings,MetadataField,PermissionLevel,PermissionPolicy,PermissionPolicySet,PermissionUpdateType,SignatureRequestType,SortDirection}from"@xmtp/wasm-bindings";import{v4 as w}from"uuid";import{ContentTypeId as M}from"@xmtp/content-type-primitives";const f=e=>{console.error(`Worker error on line ${e.lineno} in "${e.filename}"`),console.error(e.message)};class b{#e;#t;#s=new Map;constructor(e,t){this.#e=e,this.#e.addEventListener("message",this.handleMessage),this.#e.addEventListener("error",f),this.#t=t}sendMessage(e,t){const s=w();this.#e.postMessage({action:e,id:s,data:t});return new Promise(((e,t)=>{this.#s.set(s,{resolve:e,reject:t})}))}handleMessage=e=>{const t=e.data;this.#t&&console.log("client received event data",t);const s=this.#s.get(t.id);s&&(this.#s.delete(t.id),"error"in t?s.reject(new Error(t.error)):s.resolve(t.result))};handleStreamMessage=(e,t)=>{const s=s=>{const i=s.data;i.streamId===e&&("error"in i?t(new Error(i.error),null):t(null,i.result))};return this.#e.addEventListener("message",s),()=>{this.#e.removeEventListener("message",s)}};close(){this.#e.removeEventListener("message",this.handleMessage),this.#e.removeEventListener("error",f),this.#e.terminate()}}class S{#i=!1;#n;#r;#a;#o;onReturn=void 0;onError=void 0;constructor(){this.#a=[],this.#n=null,this.#r=null,this.#o=null,this.#i=!1}#d(){this.#a=[],this.#n=null,this.#r=null,this.#i=!0}get error(){return this.#o}get isDone(){return this.#i}callback=(e,t)=>{if(e)return this.#o=e,void(this.#r&&(this.#r(e),this.#d(),this.onError?.(e)));this.#i||(this.#n?(this.#n({done:!1,value:t}),this.#n=null):this.#a.push(t))};next=()=>this.#o?(this.#d(),this.onError?.(this.#o),Promise.reject(this.#o)):this.#a.length>0?Promise.resolve({done:!1,value:this.#a.shift()}):this.#i?Promise.resolve({done:!0,value:void 0}):new Promise(((e,t)=>{this.#n=e,this.#r=t}));return=e=>(this.#d(),this.onReturn?.(),Promise.resolve({done:!0,value:e}));[Symbol.asyncIterator](){return this}}const x=e=>new M({authorityId:e.authorityId,typeId:e.typeId,versionMajor:e.versionMajor,versionMinor:e.versionMinor}),A=e=>new n(e.authorityId,e.typeId,e.versionMajor,e.versionMinor),k=e=>({authorityId:e.authorityId,typeId:e.typeId,versionMajor:e.versionMajor,versionMinor:e.versionMinor}),P=e=>new M({authorityId:e.authorityId,typeId:e.typeId,versionMajor:e.versionMajor,versionMinor:e.versionMinor}),G=e=>({type:x(e.type),parameters:Object.fromEntries(e.parameters),fallback:e.fallback,compression:e.compression,content:e.content}),D=e=>new r(A(e.type),new Map(Object.entries(e.parameters)),e.fallback,e.compression,e.content),N=e=>({type:k(e.type),parameters:e.parameters,fallback:e.fallback,compression:e.compression,content:e.content}),T=e=>({type:P(e.type),parameters:e.parameters,fallback:e.fallback,compression:e.compression,content:e.content}),C=e=>({content:N(G(e.content)),convoId:e.convoId,deliveryStatus:e.deliveryStatus,id:e.id,kind:e.kind,senderInboxId:e.senderInboxId,sentAtNs:e.sentAtNs}),B=e=>({contentTypes:e.contentTypes,deliveryStatus:e.deliveryStatus,direction:e.direction,limit:e.limit,sentAfterNs:e.sentAfterNs,sentBeforeNs:e.sentBeforeNs}),R=e=>new a(e.sentBeforeNs,e.sentAfterNs,e.limit,e.deliveryStatus,e.direction,e.contentTypes),E=e=>({consentStates:e.consentStates,createdAfterNs:e.createdAfterNs,createdBeforeNs:e.createdBeforeNs,includeDuplicateDms:e.includeDuplicateDms,limit:e.limit}),L=e=>new o(e.consentStates,e.createdAfterNs,e.createdBeforeNs,e.includeDuplicateDms??!1,e.limit),_=e=>({addAdminPolicy:e.addAdminPolicy,addMemberPolicy:e.addMemberPolicy,removeAdminPolicy:e.removeAdminPolicy,removeMemberPolicy:e.removeMemberPolicy,updateGroupDescriptionPolicy:e.updateGroupDescriptionPolicy,updateGroupImageUrlSquarePolicy:e.updateGroupImageUrlSquarePolicy,updateGroupNamePolicy:e.updateGroupNamePolicy,updateMessageDisappearingPolicy:e.updateMessageDisappearingPolicy}),U=e=>new d(e.addMemberPolicy,e.removeMemberPolicy,e.addAdminPolicy,e.removeAdminPolicy,e.updateGroupNamePolicy,e.updateGroupDescriptionPolicy,e.updateGroupImageUrlSquarePolicy,e.updateMessageDisappearingPolicy),W=e=>({customPermissionPolicySet:e.customPermissionPolicySet,description:e.groupDescription,imageUrlSquare:e.groupImageUrlSquare,messageDisappearingSettings:e.messageDisappearingSettings?X(e.messageDisappearingSettings):void 0,name:e.groupName,permissions:e.permissions}),j=e=>new c(e.permissions,e.name,e.imageUrlSquare,e.description,e.customPermissionPolicySet&&e.permissions===p.CustomPolicy?U(e.customPermissionPolicySet):void 0,e.messageDisappearingSettings?Y(e.messageDisappearingSettings):void 0),F=e=>({messageDisappearingSettings:e.messageDisappearingSettings?X(e.messageDisappearingSettings):void 0}),q=e=>new l(e.messageDisappearingSettings?Y(e.messageDisappearingSettings):void 0),O=async e=>{const t=e.id,s=e.name,i=e.imageUrl,n=e.description,r=e.permissions,a=e.isActive,o=e.addedByInboxId,d=await e.metadata(),c=e.admins,l=e.superAdmins,u=e.createdAtNs,h=r.policyType,g=r.policySet;return{id:t,name:s,imageUrl:i,description:n,permissions:{policyType:h,policySet:{addAdminPolicy:g.addAdminPolicy,addMemberPolicy:g.addMemberPolicy,removeAdminPolicy:g.removeAdminPolicy,removeMemberPolicy:g.removeMemberPolicy,updateGroupDescriptionPolicy:g.updateGroupDescriptionPolicy,updateGroupImageUrlSquarePolicy:g.updateGroupImageUrlSquarePolicy,updateGroupNamePolicy:g.updateGroupNamePolicy,updateMessageDisappearingPolicy:g.updateMessageDisappearingPolicy}},isActive:a,addedByInboxId:o,metadata:d,admins:c,superAdmins:l,createdAtNs:u}},K=e=>({bytes:e.bytes,clientTimestampNs:e.clientTimestampNs,id:e.id}),$=e=>({accountIdentifiers:e.accountIdentifiers,inboxId:e.inboxId,installations:e.installations.map(K),recoveryIdentifier:e.recoveryIdentifier}),H=e=>({entity:e.entity,entityType:e.entityType,state:e.state}),V=e=>new u(e.entityType,e.state,e.entity),z=e=>({accountIdentifiers:e.accountIdentifiers,consentState:e.consentState,inboxId:e.inboxId,installationIds:e.installationIds,permissionLevel:e.permissionLevel}),J=e=>new h(e.inboxId,e.accountIdentifiers,e.installationIds,e.permissionLevel,e.consentState),Q=e=>({key:e.key,epoch:e.epoch}),X=e=>({fromNs:e.fromNs,inNs:e.inNs}),Y=e=>new g(e.fromNs,e.inNs),Z=e=>({lifetime:e.lifetime?{notBefore:e.lifetime.not_before,notAfter:e.lifetime.not_after}:void 0,validationError:e.validationError});class ee{#c;content;contentType;conversationId;deliveryStatus;fallback;compression;id;kind;parameters;encodedContent;senderInboxId;sentAtNs;constructor(e,t){switch(this.#c=e,this.id=t.id,this.sentAtNs=t.sentAtNs,this.conversationId=t.convoId,this.senderInboxId=t.senderInboxId,this.encodedContent=t.content,t.kind){case m.Application:this.kind="application";break;case m.MembershipChange:this.kind="membership_change"}switch(t.deliveryStatus){case y.Unpublished:this.deliveryStatus="unpublished";break;case y.Published:this.deliveryStatus="published";break;case y.Failed:this.deliveryStatus="failed"}this.contentType=P(t.content.type),this.parameters=new Map(Object.entries(t.content.parameters)),this.fallback=t.content.fallback,this.compression=t.content.compression,this.content=this.#c.decodeContent(t,this.contentType)}}class te extends Error{constructor(){super("Signer unavailable, use Client.create to create a client with a signer")}}class se extends Error{constructor(e){super(`Codec not found for "${e.toString()}" content type`)}}class ie extends Error{constructor(){super("Unable to create add account signature text, `allowInboxReassign` must be true")}}class ne extends Error{constructor(e){super(`Account already associated with inbox ${e}`)}}class re extends Error{constructor(e){let t="";switch(e){case I.AddWallet:t="add account";break;case I.CreateInbox:t="create inbox";break;case I.RevokeWallet:t="remove account";break;case I.RevokeInstallations:t="revoke installations";break;case I.ChangeRecoveryIdentifier:t="change recovery identifier"}super(`Failed to generate ${t} signature text`)}}class ae extends Error{constructor(e){super(`Invalid group membership change for message ${e}`)}}class oe extends Error{constructor(){super("Content type is required when sending content other than text")}}class de{#l;#c;#u;#h;#g;#p;constructor(e,t,s){this.#c=e,this.#h=t,this.#m(s)}#m(e){this.#g=e?.isActive??void 0,this.#l=e?.addedByInboxId??"",this.#p=e?.metadata??void 0,this.#u=e?.createdAtNs??void 0}get id(){return this.#h}get isActive(){return this.#g}get addedByInboxId(){return this.#l}get createdAtNs(){return this.#u}get createdAt(){return this.#u?(e=this.#u,new Date(Number(e/1000000n))):void 0;var e}get metadata(){return this.#p}async members(){return this.#c.sendMessage("getGroupMembers",{id:this.#h})}async sync(){const e=await this.#c.sendMessage("syncGroup",{id:this.#h});return this.#m(e),e}async publishMessages(){return this.#c.sendMessage("publishGroupMessages",{id:this.#h})}async sendOptimistic(e,t){if("string"!=typeof e&&!t)throw new oe;const i="string"==typeof e?this.#c.encodeContent(e,t??s):this.#c.encodeContent(e,t);return this.#c.sendMessage("sendOptimisticGroupMessage",{id:this.#h,content:i})}async send(e,t){if("string"!=typeof e&&!t)throw new oe;const i="string"==typeof e?this.#c.encodeContent(e,t??s):this.#c.encodeContent(e,t);return this.#c.sendMessage("sendGroupMessage",{id:this.#h,content:i})}async messages(e){return(await this.#c.sendMessage("getGroupMessages",{id:this.#h,options:e})).map((e=>new ee(this.#c,e)))}async consentState(){return this.#c.sendMessage("getGroupConsentState",{id:this.#h})}async updateConsentState(e){return this.#c.sendMessage("updateGroupConsentState",{id:this.#h,state:e})}async messageDisappearingSettings(){return this.#c.sendMessage("getGroupMessageDisappearingSettings",{id:this.#h})}async updateMessageDisappearingSettings(e,t){return this.#c.sendMessage("updateGroupMessageDisappearingSettings",{id:this.#h,fromNs:e,inNs:t})}async removeMessageDisappearingSettings(){return this.#c.sendMessage("removeGroupMessageDisappearingSettings",{id:this.#h})}async isMessageDisappearingEnabled(){return this.#c.sendMessage("isGroupMessageDisappearingEnabled",{id:this.#h})}async stream(e){const t=w(),s=new S,i=this.#c.handleStreamMessage(t,((t,i)=>{if(t)return s.callback(t,void 0),void e?.(t,void 0);const n=i?new ee(this.#c,i):void 0;s.callback(null,n),e?.(null,n)}));return await this.#c.sendMessage("streamGroupMessages",{groupId:this.#h,streamId:t}),s.onReturn=()=>{this.#c.sendMessage("endStream",{streamId:t}),i()},s}async pausedForVersion(){return this.#c.sendMessage("getGroupPausedForVersion",{id:this.#h})}async getHmacKeys(){return this.#c.sendMessage("getGroupHmacKeys",{id:this.#h})}}class ce extends de{#c;#h;constructor(e,t,s){super(e,t,s),this.#c=e,this.#h=t}async peerInboxId(){return this.#c.sendMessage("getDmPeerInboxId",{id:this.#h})}}class le extends de{#y=[];#c;#I;#h;#v;#w;#M=[];#m(e){this.#w=e?.name??"",this.#v=e?.imageUrl??"",this.#I=e?.description??"",this.#y=e?.admins??[],this.#M=e?.superAdmins??[]}constructor(e,t,s){super(e,t,s),this.#c=e,this.#h=t,this.#m(s)}async sync(){const e=await super.sync();return this.#m(e),e}get name(){return this.#w}async updateName(e){await this.#c.sendMessage("updateGroupName",{id:this.#h,name:e}),this.#w=e}get imageUrl(){return this.#v}async updateImageUrl(e){await this.#c.sendMessage("updateGroupImageUrlSquare",{id:this.#h,imageUrl:e}),this.#v=e}get description(){return this.#I}async updateDescription(e){await this.#c.sendMessage("updateGroupDescription",{id:this.#h,description:e}),this.#I=e}get admins(){return this.#y}get superAdmins(){return this.#M}async listAdmins(){const e=await this.#c.sendMessage("getGroupAdmins",{id:this.#h});return this.#y=e,e}async listSuperAdmins(){const e=await this.#c.sendMessage("getGroupSuperAdmins",{id:this.#h});return this.#M=e,e}async permissions(){return this.#c.sendMessage("getGroupPermissions",{id:this.#h})}async updatePermission(e,t,s){return this.#c.sendMessage("updateGroupPermissionPolicy",{id:this.#h,permissionType:e,policy:t,metadataField:s})}async isAdmin(e){return(await this.listAdmins()).includes(e)}async isSuperAdmin(e){return(await this.listSuperAdmins()).includes(e)}async addMembersByIdentifiers(e){return this.#c.sendMessage("addGroupMembers",{id:this.#h,identifiers:e})}async addMembers(e){return this.#c.sendMessage("addGroupMembersByInboxId",{id:this.#h,inboxIds:e})}async removeMembersByIdentifiers(e){return this.#c.sendMessage("removeGroupMembers",{id:this.#h,identifiers:e})}async removeMembers(e){return this.#c.sendMessage("removeGroupMembersByInboxId",{id:this.#h,inboxIds:e})}async addAdmin(e){return this.#c.sendMessage("addGroupAdmin",{id:this.#h,inboxId:e})}async removeAdmin(e){return this.#c.sendMessage("removeGroupAdmin",{id:this.#h,inboxId:e})}async addSuperAdmin(e){return this.#c.sendMessage("addGroupSuperAdmin",{id:this.#h,inboxId:e})}async removeSuperAdmin(e){return this.#c.sendMessage("removeGroupSuperAdmin",{id:this.#h,inboxId:e})}}class ue{#c;constructor(e){this.#c=e}async sync(){return this.#c.sendMessage("syncConversations",void 0)}async syncAll(e){return this.#c.sendMessage("syncAllConversations",{consentStates:e})}async getConversationById(e){const t=await this.#c.sendMessage("getConversationById",{id:e});if(t)return"group"===t.metadata.conversationType?new le(this.#c,t.id,t):new ce(this.#c,t.id,t)}async getMessageById(e){const t=await this.#c.sendMessage("getMessageById",{id:e});return t?new ee(this.#c,t):void 0}async getDmByInboxId(e){const t=await this.#c.sendMessage("getDmByInboxId",{inboxId:e});return t?new ce(this.#c,t.id,t):void 0}async list(e){return(await this.#c.sendMessage("getConversations",{options:e})).map((e=>"group"===e.metadata.conversationType?new le(this.#c,e.id,e):new ce(this.#c,e.id,e)))}async listGroups(e){return(await this.#c.sendMessage("getGroups",{options:e})).map((e=>new le(this.#c,e.id,e)))}async listDms(e){return(await this.#c.sendMessage("getDms",{options:e})).map((e=>new ce(this.#c,e.id,e)))}async newGroupWithIdentifiers(e,t){const s=await this.#c.sendMessage("newGroupWithIdentifiers",{identifiers:e,options:t});return new le(this.#c,s.id,s)}async newGroup(e,t){const s=await this.#c.sendMessage("newGroupWithInboxIds",{inboxIds:e,options:t});return new le(this.#c,s.id,s)}async newDmWithIdentifier(e,t){const s=await this.#c.sendMessage("newDmWithIdentifier",{identifier:e,options:t});return new ce(this.#c,s.id,s)}async newDm(e,t){const s=await this.#c.sendMessage("newDmWithInboxId",{inboxId:e,options:t});return new ce(this.#c,s.id,s)}async getHmacKeys(){return this.#c.sendMessage("getHmacKeys",void 0)}async stream(e,t){const s=w(),i=new S,n=this.#c.handleStreamMessage(s,((t,s)=>{if(t)return i.callback(t,void 0),void e?.(t,void 0);let n;s&&(n="group"===s.metadata.conversationType?new le(this.#c,s.id,s):new ce(this.#c,s.id,s)),i.callback(null,n),e?.(null,n)}));return await this.#c.sendMessage("streamAllGroups",{streamId:s,conversationType:t}),i.onReturn=()=>{this.#c.sendMessage("endStream",{streamId:s}),n()},i}async streamGroups(e){return this.stream(e,v.Group)}async streamDms(e){return this.stream(e,v.Dm)}async streamAllMessages(e,t){const s=w(),i=new S,n=this.#c.handleStreamMessage(s,((t,s)=>{if(t)return i.callback(t,void 0),void e?.(t,void 0);const n=s?new ee(this.#c,s):void 0;i.callback(null,n),e?.(null,n)}));return await this.#c.sendMessage("streamAllMessages",{streamId:s,conversationType:t}),i.onReturn=()=>{this.#c.sendMessage("endStream",{streamId:s}),n()},i}async streamAllGroupMessages(e){return this.streamAllMessages(e,v.Group)}async streamAllDmMessages(e){return this.streamAllMessages(e,v.Dm)}}class he{#c;constructor(e){this.#c=e}async inboxState(e){return this.#c.sendMessage("inboxState",{refreshFromNetwork:e??!1})}async inboxStateFromInboxIds(e,t){return this.#c.sendMessage("inboxStateFromInboxIds",{inboxIds:e,refreshFromNetwork:t??!1})}async getLatestInboxState(e){return this.#c.sendMessage("getLatestInboxState",{inboxId:e})}async setConsentStates(e){return this.#c.sendMessage("setConsentStates",{records:e})}async getConsentState(e,t){return this.#c.sendMessage("getConsentState",{entityType:e,entity:t})}async streamConsent(e){const t=w(),s=new S,i=this.#c.handleStreamMessage(t,((t,i)=>{s.callback(t,i??void 0),e?.(t,i??void 0)}));return await this.#c.sendMessage("streamConsent",{streamId:t}),s.onReturn=()=>{this.#c.sendMessage("endStream",{streamId:t}),i()},s}async streamPreferences(e){const t=w(),s=new S,i=this.#c.handleStreamMessage(t,((t,i)=>{s.callback(t,i??void 0),e?.(t,i??void 0)}));return await this.#c.sendMessage("streamPreferences",{streamId:t}),s.onReturn=()=>{this.#c.sendMessage("endStream",{streamId:t}),i()},s}}const ge=e=>{console.error(`Worker error on line ${e.lineno} in "${e.filename}"`),console.error(e.message)};class pe{#e;#t;#s=new Map;constructor(e,t){this.#e=e,this.#e.addEventListener("message",this.handleMessage),this.#e.addEventListener("error",ge),this.#t=t,this.init(t)}async init(e){return this.sendMessage("init",{enableLogging:e})}sendMessage(e,t){const s=w();this.#e.postMessage({action:e,id:s,data:t});return new Promise(((e,t)=>{this.#s.set(s,{resolve:e,reject:t})}))}handleMessage=e=>{const t=e.data;this.#t&&console.log("utils received event data",t);const s=this.#s.get(t.id);s&&(this.#s.delete(t.id),"error"in t?s.reject(new Error(t.error)):s.resolve(t.result))};close(){this.#e.removeEventListener("message",this.handleMessage),this.#e.removeEventListener("error",ge),this.#e.terminate()}}class me extends pe{constructor(e){super(new Worker(new URL("./workers/utils",import.meta.url),{type:"module"}),e??!1)}async generateInboxId(e){return this.sendMessage("generateInboxId",{identifier:e})}async getInboxIdForIdentifier(e,t){return this.sendMessage("getInboxIdForIdentifier",{identifier:e,env:t})}}class ye extends b{#f;#b;#S;#x;#A;#k;#P=!1;#G;#D;#N;constructor(t){super(new Worker(new URL("./workers/client",import.meta.url),{type:"module"}),void 0!==t?.loggingLevel&&"off"!==t.loggingLevel),this.#N=t,this.#b=new ue(this),this.#G=new he(this);const s=[new e,new i,...t?.codecs??[]];this.#f=new Map(s.map((e=>[e.contentType.toString(),e])))}async init(e){const t=await this.sendMessage("init",{identifier:e,options:this.#N});this.#S=e,this.#x=t.inboxId,this.#A=t.installationId,this.#k=t.installationIdBytes,this.#P=!0}static async create(e,t){const s=new ye(t);return s.#D=e,await s.init(await e.getIdentifier()),t?.disableAutoRegister||await s.register(),s}static async build(e,t){const s=new ye({...t,disableAutoRegister:!0});return await s.init(e),s}get options(){return this.#N}get isReady(){return this.#P}get inboxId(){return this.#x}get accountIdentifier(){return this.#S}get installationId(){return this.#A}get installationIdBytes(){return this.#k}get conversations(){return this.#b}get preferences(){return this.#G}async unsafe_createInboxSignatureText(){return this.sendMessage("createInboxSignatureText",void 0)}async unsafe_addAccountSignatureText(e,t=!1){if(!t)throw new ie;return this.sendMessage("addAccountSignatureText",{newIdentifier:e})}async unsafe_removeAccountSignatureText(e){return this.sendMessage("removeAccountSignatureText",{identifier:e})}async unsafe_revokeAllOtherInstallationsSignatureText(){return this.sendMessage("revokeAllOtherInstallationsSignatureText",void 0)}async unsafe_revokeInstallationsSignatureText(e){return this.sendMessage("revokeInstallationsSignatureText",{installationIds:e})}async unsafe_changeRecoveryIdentifierSignatureText(e){return this.sendMessage("changeRecoveryIdentifierSignatureText",{identifier:e})}async unsafe_addSignature(e,t,s){const i=await s.signMessage(t);switch(s.type){case"SCW":await this.sendMessage("addScwSignature",{type:e,bytes:i,chainId:s.getChainId(),blockNumber:s.getBlockNumber?.()});break;case"EOA":await this.sendMessage("addEcdsaSignature",{type:e,bytes:i})}}async unsafe_applySignatures(){return this.sendMessage("applySignatures",void 0)}async register(){if(!this.#D)throw new te;const e=await this.unsafe_createInboxSignatureText();if(e)return await this.unsafe_addSignature(I.CreateInbox,e,this.#D),this.sendMessage("registerIdentity",void 0)}async unsafe_addAccount(e,t=!1){const s=await this.findInboxIdByIdentifier(await e.getIdentifier());if(s&&!t)throw new ne(s);const i=await this.unsafe_addAccountSignatureText(await e.getIdentifier(),!0);if(!i)throw new re(I.AddWallet);await this.unsafe_addSignature(I.AddWallet,i,e),await this.unsafe_applySignatures()}async removeAccount(e){if(!this.#D)throw new te;const t=await this.unsafe_removeAccountSignatureText(e);if(!t)throw new re(I.RevokeWallet);await this.unsafe_addSignature(I.RevokeWallet,t,this.#D),await this.unsafe_applySignatures()}async revokeAllOtherInstallations(){if(!this.#D)throw new te;const e=await this.unsafe_revokeAllOtherInstallationsSignatureText();if(!e)throw new re(I.RevokeInstallations);await this.unsafe_addSignature(I.RevokeInstallations,e,this.#D),await this.unsafe_applySignatures()}async revokeInstallations(e){if(!this.#D)throw new te;const t=await this.unsafe_revokeInstallationsSignatureText(e);if(!t)throw new re(I.RevokeInstallations);await this.unsafe_addSignature(I.RevokeInstallations,t,this.#D),await this.unsafe_applySignatures()}async changeRecoveryIdentifier(e){if(!this.#D)throw new te;const t=await this.unsafe_changeRecoveryIdentifierSignatureText(e);if(!t)throw new re(I.ChangeRecoveryIdentifier);await this.unsafe_addSignature(I.ChangeRecoveryIdentifier,t,this.#D),await this.unsafe_applySignatures()}async isRegistered(){return this.sendMessage("isRegistered",void 0)}async canMessage(e){return this.sendMessage("canMessage",{identifiers:e})}static async canMessage(e,t){const s=new Map,i=new me;for(const n of e){const e=await i.getInboxIdForIdentifier(n,t);s.set(n.identifier,void 0!==e)}return i.close(),s}async findInboxIdByIdentifier(e){return this.sendMessage("findInboxIdByIdentifier",{identifier:e})}codecFor(e){return this.#f.get(e.toString())}encodeContent(e,t){const s=this.codecFor(t);if(!s)throw new se(t);const i=s.encode(e,this),n=s.fallback(e);return n&&(i.fallback=n),N(i)}decodeContent(e,s){const i=this.codecFor(s);if(!i)throw new se(s);if(s.sameAs(t)&&e.kind!==m.MembershipChange)throw new ae(e.id);const n=T(e.content);return i.decode(n,this)}signWithInstallationKey(e){return this.sendMessage("signWithInstallationKey",{signatureText:e})}verifySignedWithInstallationKey(e,t){return this.sendMessage("verifySignedWithInstallationKey",{signatureText:e,signatureBytes:t})}verifySignedWithPublicKey(e,t,s){return this.sendMessage("verifySignedWithPublicKey",{signatureText:e,signatureBytes:t,publicKey:s})}async getKeyPackageStatusesForInstallationIds(e){return this.sendMessage("getKeyPackageStatusesForInstallationIds",{installationIds:e})}}const Ie={local:"http://localhost:5555",dev:"https://dev.xmtp.network",production:"https://production.xmtp.network"},ve={local:"http://localhost:5558",dev:"https://message-history.dev.ephemera.network",production:"https://message-history.production.ephemera.network"};export{Ie as ApiUrls,ye as Client,de as Conversation,ue as Conversations,ee as DecodedMessage,ce as Dm,le as Group,ve as HistorySyncUrls,me as Utils,A as fromContentTypeId,D as fromEncodedContent,V as fromSafeConsent,P as fromSafeContentTypeId,q as fromSafeCreateDmOptions,j as fromSafeCreateGroupOptions,T as fromSafeEncodedContent,J as fromSafeGroupMember,L as fromSafeListConversationsOptions,R as fromSafeListMessagesOptions,Y as fromSafeMessageDisappearingSettings,U as fromSafePermissionPolicySet,x as toContentTypeId,G as toEncodedContent,H as toSafeConsent,k as toSafeContentTypeId,O as toSafeConversation,F as toSafeCreateDmOptions,W as toSafeCreateGroupOptions,N as toSafeEncodedContent,z as toSafeGroupMember,Q as toSafeHmacKey,$ as toSafeInboxState,K as toSafeInstallation,Z as toSafeKeyPackageStatus,E as toSafeListConversationsOptions,B as toSafeListMessagesOptions,C as toSafeMessage,X as toSafeMessageDisappearingSettings,_ as toSafePermissionPolicySet};
1
+ import{GroupUpdatedCodec as e,ContentTypeGroupUpdated as t}from"@xmtp/content-type-group-updated";import{ContentTypeText as s,TextCodec as i}from"@xmtp/content-type-text";import{ContentTypeId as n,EncodedContent as r,ListMessagesOptions as a,ListConversationsOptions as o,PermissionPolicySet as d,CreateGroupOptions as c,CreateDMOptions as l,Consent as u,GroupMember as h,MessageDisappearingSettings as g,GroupPermissionsOptions as p,GroupMessageKind as m,DeliveryStatus as y,SignatureRequestType as I,ConversationType as v}from"@xmtp/wasm-bindings";export{Consent,ConsentEntityType,ConsentState,ContentType,ContentTypeId,ConversationListItem,ConversationType,CreateDMOptions,CreateGroupOptions,DeliveryStatus,EncodedContent,GroupMember,GroupMembershipState,GroupMessageKind,GroupMetadata,GroupPermissions,GroupPermissionsOptions,HmacKey,InboxState,Installation,ListConversationsOptions,ListMessagesOptions,LogOptions,Message,MessageDisappearingSettings,MetadataField,PermissionLevel,PermissionPolicy,PermissionPolicySet,PermissionUpdateType,SignatureRequestType,SortDirection}from"@xmtp/wasm-bindings";import{v4 as w}from"uuid";import{ContentTypeId as M}from"@xmtp/content-type-primitives";const f=e=>{console.error(`Worker error on line ${e.lineno} in "${e.filename}"`),console.error(e.message)};class b{#e;#t;#s=new Map;constructor(e,t){this.#e=e,this.#e.addEventListener("message",this.handleMessage),this.#e.addEventListener("error",f),this.#t=t}sendMessage(e,t){const s=w();this.#e.postMessage({action:e,id:s,data:t});return new Promise(((e,t)=>{this.#s.set(s,{resolve:e,reject:t})}))}handleMessage=e=>{const t=e.data;this.#t&&console.log("client received event data",t);const s=this.#s.get(t.id);s&&(this.#s.delete(t.id),"error"in t?s.reject(new Error(t.error)):s.resolve(t.result))};handleStreamMessage=(e,t)=>{const s=s=>{const i=s.data;i.streamId===e&&("error"in i?t(new Error(i.error),null):t(null,i.result))};return this.#e.addEventListener("message",s),()=>{this.#e.removeEventListener("message",s)}};close(){this.#e.removeEventListener("message",this.handleMessage),this.#e.removeEventListener("error",f),this.#e.terminate()}}class S{#i=!1;#n;#r;#a;#o;onReturn=void 0;onError=void 0;constructor(){this.#a=[],this.#n=null,this.#r=null,this.#o=null,this.#i=!1}#d(){this.#a=[],this.#n=null,this.#r=null,this.#i=!0}get error(){return this.#o}get isDone(){return this.#i}callback=(e,t)=>{if(e)return this.#o=e,void(this.#r&&(this.#r(e),this.#d(),this.onError?.(e)));this.#i||(this.#n?(this.#n({done:!1,value:t}),this.#n=null):this.#a.push(t))};next=()=>this.#o?(this.#d(),this.onError?.(this.#o),Promise.reject(this.#o)):this.#a.length>0?Promise.resolve({done:!1,value:this.#a.shift()}):this.#i?Promise.resolve({done:!0,value:void 0}):new Promise(((e,t)=>{this.#n=e,this.#r=t}));return=e=>(this.#d(),this.onReturn?.(),Promise.resolve({done:!0,value:e}));[Symbol.asyncIterator](){return this}}const x=e=>new M({authorityId:e.authorityId,typeId:e.typeId,versionMajor:e.versionMajor,versionMinor:e.versionMinor}),A=e=>new n(e.authorityId,e.typeId,e.versionMajor,e.versionMinor),k=e=>({authorityId:e.authorityId,typeId:e.typeId,versionMajor:e.versionMajor,versionMinor:e.versionMinor}),P=e=>new M({authorityId:e.authorityId,typeId:e.typeId,versionMajor:e.versionMajor,versionMinor:e.versionMinor}),G=e=>({type:x(e.type),parameters:Object.fromEntries(e.parameters),fallback:e.fallback,compression:e.compression,content:e.content}),D=e=>new r(A(e.type),new Map(Object.entries(e.parameters)),e.fallback,e.compression,e.content),N=e=>({type:k(e.type),parameters:e.parameters,fallback:e.fallback,compression:e.compression,content:e.content}),T=e=>({type:P(e.type),parameters:e.parameters,fallback:e.fallback,compression:e.compression,content:e.content}),C=e=>({content:N(G(e.content)),convoId:e.convoId,deliveryStatus:e.deliveryStatus,id:e.id,kind:e.kind,senderInboxId:e.senderInboxId,sentAtNs:e.sentAtNs}),B=e=>({contentTypes:e.contentTypes,deliveryStatus:e.deliveryStatus,direction:e.direction,limit:e.limit,sentAfterNs:e.sentAfterNs,sentBeforeNs:e.sentBeforeNs}),R=e=>new a(e.sentBeforeNs,e.sentAfterNs,e.limit,e.deliveryStatus,e.direction,e.contentTypes),E=e=>({consentStates:e.consentStates,createdAfterNs:e.createdAfterNs,createdBeforeNs:e.createdBeforeNs,includeDuplicateDms:e.includeDuplicateDms,limit:e.limit}),L=e=>new o(e.consentStates,e.createdAfterNs,e.createdBeforeNs,e.includeDuplicateDms??!1,e.limit),_=e=>({addAdminPolicy:e.addAdminPolicy,addMemberPolicy:e.addMemberPolicy,removeAdminPolicy:e.removeAdminPolicy,removeMemberPolicy:e.removeMemberPolicy,updateGroupDescriptionPolicy:e.updateGroupDescriptionPolicy,updateGroupImageUrlSquarePolicy:e.updateGroupImageUrlSquarePolicy,updateGroupNamePolicy:e.updateGroupNamePolicy,updateMessageDisappearingPolicy:e.updateMessageDisappearingPolicy}),U=e=>new d(e.addMemberPolicy,e.removeMemberPolicy,e.addAdminPolicy,e.removeAdminPolicy,e.updateGroupNamePolicy,e.updateGroupDescriptionPolicy,e.updateGroupImageUrlSquarePolicy,e.updateMessageDisappearingPolicy),W=e=>({customPermissionPolicySet:e.customPermissionPolicySet,description:e.groupDescription,imageUrlSquare:e.groupImageUrlSquare,messageDisappearingSettings:e.messageDisappearingSettings?X(e.messageDisappearingSettings):void 0,name:e.groupName,permissions:e.permissions}),j=e=>new c(e.permissions,e.name,e.imageUrlSquare,e.description,e.customPermissionPolicySet&&e.permissions===p.CustomPolicy?U(e.customPermissionPolicySet):void 0,e.messageDisappearingSettings?Y(e.messageDisappearingSettings):void 0),F=e=>({messageDisappearingSettings:e.messageDisappearingSettings?X(e.messageDisappearingSettings):void 0}),q=e=>new l(e.messageDisappearingSettings?Y(e.messageDisappearingSettings):void 0),O=async e=>{const t=e.id,s=e.name,i=e.imageUrl,n=e.description,r=e.permissions,a=e.isActive,o=e.addedByInboxId,d=await e.metadata(),c=e.admins,l=e.superAdmins,u=e.createdAtNs,h=r.policyType,g=r.policySet;return{id:t,name:s,imageUrl:i,description:n,permissions:{policyType:h,policySet:{addAdminPolicy:g.addAdminPolicy,addMemberPolicy:g.addMemberPolicy,removeAdminPolicy:g.removeAdminPolicy,removeMemberPolicy:g.removeMemberPolicy,updateGroupDescriptionPolicy:g.updateGroupDescriptionPolicy,updateGroupImageUrlSquarePolicy:g.updateGroupImageUrlSquarePolicy,updateGroupNamePolicy:g.updateGroupNamePolicy,updateMessageDisappearingPolicy:g.updateMessageDisappearingPolicy}},isActive:a,addedByInboxId:o,metadata:d,admins:c,superAdmins:l,createdAtNs:u}},K=e=>({bytes:e.bytes,clientTimestampNs:e.clientTimestampNs,id:e.id}),$=e=>({accountIdentifiers:e.accountIdentifiers,inboxId:e.inboxId,installations:e.installations.map(K),recoveryIdentifier:e.recoveryIdentifier}),H=e=>({entity:e.entity,entityType:e.entityType,state:e.state}),V=e=>new u(e.entityType,e.state,e.entity),z=e=>({accountIdentifiers:e.accountIdentifiers,consentState:e.consentState,inboxId:e.inboxId,installationIds:e.installationIds,permissionLevel:e.permissionLevel}),J=e=>new h(e.inboxId,e.accountIdentifiers,e.installationIds,e.permissionLevel,e.consentState),Q=e=>({key:e.key,epoch:e.epoch}),X=e=>({fromNs:e.fromNs,inNs:e.inNs}),Y=e=>new g(e.fromNs,e.inNs),Z=e=>({lifetime:e.lifetime?{notBefore:e.lifetime.not_before,notAfter:e.lifetime.not_after}:void 0,validationError:e.validationError});class ee{#c;content;contentType;conversationId;deliveryStatus;fallback;compression;id;kind;parameters;encodedContent;senderInboxId;sentAtNs;constructor(e,t){switch(this.#c=e,this.id=t.id,this.sentAtNs=t.sentAtNs,this.conversationId=t.convoId,this.senderInboxId=t.senderInboxId,this.encodedContent=t.content,t.kind){case m.Application:this.kind="application";break;case m.MembershipChange:this.kind="membership_change"}switch(t.deliveryStatus){case y.Unpublished:this.deliveryStatus="unpublished";break;case y.Published:this.deliveryStatus="published";break;case y.Failed:this.deliveryStatus="failed"}this.contentType=P(t.content.type),this.parameters=new Map(Object.entries(t.content.parameters)),this.fallback=t.content.fallback,this.compression=t.content.compression;try{this.content=this.#c.decodeContent(t,this.contentType)}catch{this.content=void 0}}}class te extends Error{constructor(){super("Signer unavailable, use Client.create to create a client with a signer")}}class se extends Error{constructor(e){super(`Codec not found for "${e.toString()}" content type`)}}class ie extends Error{constructor(){super("Unable to create add account signature text, `allowInboxReassign` must be true")}}class ne extends Error{constructor(e){super(`Account already associated with inbox ${e}`)}}class re extends Error{constructor(e){let t="";switch(e){case I.AddWallet:t="add account";break;case I.CreateInbox:t="create inbox";break;case I.RevokeWallet:t="remove account";break;case I.RevokeInstallations:t="revoke installations";break;case I.ChangeRecoveryIdentifier:t="change recovery identifier"}super(`Failed to generate ${t} signature text`)}}class ae extends Error{constructor(e){super(`Invalid group membership change for message ${e}`)}}class oe extends Error{constructor(){super("Content type is required when sending content other than text")}}class de{#l;#c;#u;#h;#g;#p;constructor(e,t,s){this.#c=e,this.#h=t,this.#m(s)}#m(e){this.#g=e?.isActive??void 0,this.#l=e?.addedByInboxId??"",this.#p=e?.metadata??void 0,this.#u=e?.createdAtNs??void 0}get id(){return this.#h}get isActive(){return this.#g}get addedByInboxId(){return this.#l}get createdAtNs(){return this.#u}get createdAt(){return this.#u?(e=this.#u,new Date(Number(e/1000000n))):void 0;var e}get metadata(){return this.#p}async members(){return this.#c.sendMessage("getGroupMembers",{id:this.#h})}async sync(){const e=await this.#c.sendMessage("syncGroup",{id:this.#h});return this.#m(e),e}async publishMessages(){return this.#c.sendMessage("publishGroupMessages",{id:this.#h})}async sendOptimistic(e,t){if("string"!=typeof e&&!t)throw new oe;const i="string"==typeof e?this.#c.encodeContent(e,t??s):this.#c.encodeContent(e,t);return this.#c.sendMessage("sendOptimisticGroupMessage",{id:this.#h,content:i})}async send(e,t){if("string"!=typeof e&&!t)throw new oe;const i="string"==typeof e?this.#c.encodeContent(e,t??s):this.#c.encodeContent(e,t);return this.#c.sendMessage("sendGroupMessage",{id:this.#h,content:i})}async messages(e){return(await this.#c.sendMessage("getGroupMessages",{id:this.#h,options:e})).map((e=>new ee(this.#c,e)))}async consentState(){return this.#c.sendMessage("getGroupConsentState",{id:this.#h})}async updateConsentState(e){return this.#c.sendMessage("updateGroupConsentState",{id:this.#h,state:e})}async messageDisappearingSettings(){return this.#c.sendMessage("getGroupMessageDisappearingSettings",{id:this.#h})}async updateMessageDisappearingSettings(e,t){return this.#c.sendMessage("updateGroupMessageDisappearingSettings",{id:this.#h,fromNs:e,inNs:t})}async removeMessageDisappearingSettings(){return this.#c.sendMessage("removeGroupMessageDisappearingSettings",{id:this.#h})}async isMessageDisappearingEnabled(){return this.#c.sendMessage("isGroupMessageDisappearingEnabled",{id:this.#h})}async stream(e){const t=w(),s=new S,i=this.#c.handleStreamMessage(t,((t,i)=>{let n,r=t;if(i)try{n=new ee(this.#c,i)}catch(t){r=t}s.callback(r,n),e?.(r,n)}));return await this.#c.sendMessage("streamGroupMessages",{groupId:this.#h,streamId:t}),s.onReturn=()=>{this.#c.sendMessage("endStream",{streamId:t}),i()},s}async pausedForVersion(){return this.#c.sendMessage("getGroupPausedForVersion",{id:this.#h})}async getHmacKeys(){return this.#c.sendMessage("getGroupHmacKeys",{id:this.#h})}}class ce extends de{#c;#h;constructor(e,t,s){super(e,t,s),this.#c=e,this.#h=t}async peerInboxId(){return this.#c.sendMessage("getDmPeerInboxId",{id:this.#h})}}class le extends de{#y=[];#c;#I;#h;#v;#w;#M=[];#m(e){this.#w=e?.name??"",this.#v=e?.imageUrl??"",this.#I=e?.description??"",this.#y=e?.admins??[],this.#M=e?.superAdmins??[]}constructor(e,t,s){super(e,t,s),this.#c=e,this.#h=t,this.#m(s)}async sync(){const e=await super.sync();return this.#m(e),e}get name(){return this.#w}async updateName(e){await this.#c.sendMessage("updateGroupName",{id:this.#h,name:e}),this.#w=e}get imageUrl(){return this.#v}async updateImageUrl(e){await this.#c.sendMessage("updateGroupImageUrlSquare",{id:this.#h,imageUrl:e}),this.#v=e}get description(){return this.#I}async updateDescription(e){await this.#c.sendMessage("updateGroupDescription",{id:this.#h,description:e}),this.#I=e}get admins(){return this.#y}get superAdmins(){return this.#M}async listAdmins(){const e=await this.#c.sendMessage("getGroupAdmins",{id:this.#h});return this.#y=e,e}async listSuperAdmins(){const e=await this.#c.sendMessage("getGroupSuperAdmins",{id:this.#h});return this.#M=e,e}async permissions(){return this.#c.sendMessage("getGroupPermissions",{id:this.#h})}async updatePermission(e,t,s){return this.#c.sendMessage("updateGroupPermissionPolicy",{id:this.#h,permissionType:e,policy:t,metadataField:s})}async isAdmin(e){return(await this.listAdmins()).includes(e)}async isSuperAdmin(e){return(await this.listSuperAdmins()).includes(e)}async addMembersByIdentifiers(e){return this.#c.sendMessage("addGroupMembers",{id:this.#h,identifiers:e})}async addMembers(e){return this.#c.sendMessage("addGroupMembersByInboxId",{id:this.#h,inboxIds:e})}async removeMembersByIdentifiers(e){return this.#c.sendMessage("removeGroupMembers",{id:this.#h,identifiers:e})}async removeMembers(e){return this.#c.sendMessage("removeGroupMembersByInboxId",{id:this.#h,inboxIds:e})}async addAdmin(e){return this.#c.sendMessage("addGroupAdmin",{id:this.#h,inboxId:e})}async removeAdmin(e){return this.#c.sendMessage("removeGroupAdmin",{id:this.#h,inboxId:e})}async addSuperAdmin(e){return this.#c.sendMessage("addGroupSuperAdmin",{id:this.#h,inboxId:e})}async removeSuperAdmin(e){return this.#c.sendMessage("removeGroupSuperAdmin",{id:this.#h,inboxId:e})}}class ue{#c;constructor(e){this.#c=e}async sync(){return this.#c.sendMessage("syncConversations",void 0)}async syncAll(e){return this.#c.sendMessage("syncAllConversations",{consentStates:e})}async getConversationById(e){const t=await this.#c.sendMessage("getConversationById",{id:e});if(t)return"group"===t.metadata.conversationType?new le(this.#c,t.id,t):new ce(this.#c,t.id,t)}async getMessageById(e){const t=await this.#c.sendMessage("getMessageById",{id:e});return t?new ee(this.#c,t):void 0}async getDmByInboxId(e){const t=await this.#c.sendMessage("getDmByInboxId",{inboxId:e});return t?new ce(this.#c,t.id,t):void 0}async list(e){return(await this.#c.sendMessage("getConversations",{options:e})).map((e=>"group"===e.metadata.conversationType?new le(this.#c,e.id,e):new ce(this.#c,e.id,e)))}async listGroups(e){return(await this.#c.sendMessage("getGroups",{options:e})).map((e=>new le(this.#c,e.id,e)))}async listDms(e){return(await this.#c.sendMessage("getDms",{options:e})).map((e=>new ce(this.#c,e.id,e)))}async newGroupWithIdentifiers(e,t){const s=await this.#c.sendMessage("newGroupWithIdentifiers",{identifiers:e,options:t});return new le(this.#c,s.id,s)}async newGroup(e,t){const s=await this.#c.sendMessage("newGroupWithInboxIds",{inboxIds:e,options:t});return new le(this.#c,s.id,s)}async newDmWithIdentifier(e,t){const s=await this.#c.sendMessage("newDmWithIdentifier",{identifier:e,options:t});return new ce(this.#c,s.id,s)}async newDm(e,t){const s=await this.#c.sendMessage("newDmWithInboxId",{inboxId:e,options:t});return new ce(this.#c,s.id,s)}async getHmacKeys(){return this.#c.sendMessage("getHmacKeys",void 0)}async stream(e,t){const s=w(),i=new S,n=this.#c.handleStreamMessage(s,((t,s)=>{let n,r=t;if(s)try{n="group"===s.metadata.conversationType?new le(this.#c,s.id,s):new ce(this.#c,s.id,s)}catch(t){r=t}i.callback(r,n),e?.(r,n)}));return await this.#c.sendMessage("streamAllGroups",{streamId:s,conversationType:t}),i.onReturn=()=>{this.#c.sendMessage("endStream",{streamId:s}),n()},i}async streamGroups(e){return this.stream(e,v.Group)}async streamDms(e){return this.stream(e,v.Dm)}async streamAllMessages(e,t){const s=w(),i=new S,n=this.#c.handleStreamMessage(s,((t,s)=>{let n,r=t;if(s)try{n=new ee(this.#c,s)}catch(t){r=t}i.callback(r,n),e?.(r,n)}));return await this.#c.sendMessage("streamAllMessages",{streamId:s,conversationType:t}),i.onReturn=()=>{this.#c.sendMessage("endStream",{streamId:s}),n()},i}async streamAllGroupMessages(e){return this.streamAllMessages(e,v.Group)}async streamAllDmMessages(e){return this.streamAllMessages(e,v.Dm)}}class he{#c;constructor(e){this.#c=e}async inboxState(e){return this.#c.sendMessage("inboxState",{refreshFromNetwork:e??!1})}async inboxStateFromInboxIds(e,t){return this.#c.sendMessage("inboxStateFromInboxIds",{inboxIds:e,refreshFromNetwork:t??!1})}async getLatestInboxState(e){return this.#c.sendMessage("getLatestInboxState",{inboxId:e})}async setConsentStates(e){return this.#c.sendMessage("setConsentStates",{records:e})}async getConsentState(e,t){return this.#c.sendMessage("getConsentState",{entityType:e,entity:t})}async streamConsent(e){const t=w(),s=new S,i=this.#c.handleStreamMessage(t,((t,i)=>{s.callback(t,i??void 0),e?.(t,i??void 0)}));return await this.#c.sendMessage("streamConsent",{streamId:t}),s.onReturn=()=>{this.#c.sendMessage("endStream",{streamId:t}),i()},s}async streamPreferences(e){const t=w(),s=new S,i=this.#c.handleStreamMessage(t,((t,i)=>{s.callback(t,i??void 0),e?.(t,i??void 0)}));return await this.#c.sendMessage("streamPreferences",{streamId:t}),s.onReturn=()=>{this.#c.sendMessage("endStream",{streamId:t}),i()},s}}const ge=e=>{console.error(`Worker error on line ${e.lineno} in "${e.filename}"`),console.error(e.message)};class pe{#e;#t;#s=new Map;constructor(e,t){this.#e=e,this.#e.addEventListener("message",this.handleMessage),this.#e.addEventListener("error",ge),this.#t=t,this.init(t)}async init(e){return this.sendMessage("init",{enableLogging:e})}sendMessage(e,t){const s=w();this.#e.postMessage({action:e,id:s,data:t});return new Promise(((e,t)=>{this.#s.set(s,{resolve:e,reject:t})}))}handleMessage=e=>{const t=e.data;this.#t&&console.log("utils received event data",t);const s=this.#s.get(t.id);s&&(this.#s.delete(t.id),"error"in t?s.reject(new Error(t.error)):s.resolve(t.result))};close(){this.#e.removeEventListener("message",this.handleMessage),this.#e.removeEventListener("error",ge),this.#e.terminate()}}class me extends pe{constructor(e){super(new Worker(new URL("./workers/utils",import.meta.url),{type:"module"}),e??!1)}async generateInboxId(e){return this.sendMessage("generateInboxId",{identifier:e})}async getInboxIdForIdentifier(e,t){return this.sendMessage("getInboxIdForIdentifier",{identifier:e,env:t})}}class ye extends b{#f;#b;#S;#x;#A;#k;#P=!1;#G;#D;#N;constructor(t){super(new Worker(new URL("./workers/client",import.meta.url),{type:"module"}),void 0!==t?.loggingLevel&&"off"!==t.loggingLevel),this.#N=t,this.#b=new ue(this),this.#G=new he(this);const s=[new e,new i,...t?.codecs??[]];this.#f=new Map(s.map((e=>[e.contentType.toString(),e])))}async init(e){const t=await this.sendMessage("init",{identifier:e,options:this.#N});this.#S=e,this.#x=t.inboxId,this.#A=t.installationId,this.#k=t.installationIdBytes,this.#P=!0}static async create(e,t){const s=new ye(t);return s.#D=e,await s.init(await e.getIdentifier()),t?.disableAutoRegister||await s.register(),s}static async build(e,t){const s=new ye({...t,disableAutoRegister:!0});return await s.init(e),s}get options(){return this.#N}get signer(){return this.#D}get isReady(){return this.#P}get inboxId(){return this.#x}get accountIdentifier(){return this.#S}get installationId(){return this.#A}get installationIdBytes(){return this.#k}get conversations(){return this.#b}get preferences(){return this.#G}async unsafe_createInboxSignatureText(){return this.sendMessage("createInboxSignatureText",void 0)}async unsafe_addAccountSignatureText(e,t=!1){if(!t)throw new ie;return this.sendMessage("addAccountSignatureText",{newIdentifier:e})}async unsafe_removeAccountSignatureText(e){return this.sendMessage("removeAccountSignatureText",{identifier:e})}async unsafe_revokeAllOtherInstallationsSignatureText(){return this.sendMessage("revokeAllOtherInstallationsSignatureText",void 0)}async unsafe_revokeInstallationsSignatureText(e){return this.sendMessage("revokeInstallationsSignatureText",{installationIds:e})}async unsafe_changeRecoveryIdentifierSignatureText(e){return this.sendMessage("changeRecoveryIdentifierSignatureText",{identifier:e})}async unsafe_addSignature(e,t,s){const i=await s.signMessage(t);switch(s.type){case"SCW":await this.sendMessage("addScwSignature",{type:e,bytes:i,chainId:s.getChainId(),blockNumber:s.getBlockNumber?.()});break;case"EOA":await this.sendMessage("addEcdsaSignature",{type:e,bytes:i})}}async unsafe_applySignatures(){return this.sendMessage("applySignatures",void 0)}async register(){if(!this.#D)throw new te;const e=await this.unsafe_createInboxSignatureText();if(e)return await this.unsafe_addSignature(I.CreateInbox,e,this.#D),this.sendMessage("registerIdentity",void 0)}async unsafe_addAccount(e,t=!1){const s=await this.findInboxIdByIdentifier(await e.getIdentifier());if(s&&!t)throw new ne(s);const i=await this.unsafe_addAccountSignatureText(await e.getIdentifier(),!0);if(!i)throw new re(I.AddWallet);await this.unsafe_addSignature(I.AddWallet,i,e),await this.unsafe_applySignatures()}async removeAccount(e){if(!this.#D)throw new te;const t=await this.unsafe_removeAccountSignatureText(e);if(!t)throw new re(I.RevokeWallet);await this.unsafe_addSignature(I.RevokeWallet,t,this.#D),await this.unsafe_applySignatures()}async revokeAllOtherInstallations(){if(!this.#D)throw new te;const e=await this.unsafe_revokeAllOtherInstallationsSignatureText();if(!e)throw new re(I.RevokeInstallations);await this.unsafe_addSignature(I.RevokeInstallations,e,this.#D),await this.unsafe_applySignatures()}async revokeInstallations(e){if(!this.#D)throw new te;const t=await this.unsafe_revokeInstallationsSignatureText(e);if(!t)throw new re(I.RevokeInstallations);await this.unsafe_addSignature(I.RevokeInstallations,t,this.#D),await this.unsafe_applySignatures()}async changeRecoveryIdentifier(e){if(!this.#D)throw new te;const t=await this.unsafe_changeRecoveryIdentifierSignatureText(e);if(!t)throw new re(I.ChangeRecoveryIdentifier);await this.unsafe_addSignature(I.ChangeRecoveryIdentifier,t,this.#D),await this.unsafe_applySignatures()}async isRegistered(){return this.sendMessage("isRegistered",void 0)}async canMessage(e){return this.sendMessage("canMessage",{identifiers:e})}static async canMessage(e,t){const s=new Map,i=new me;for(const n of e){const e=await i.getInboxIdForIdentifier(n,t);s.set(n.identifier,void 0!==e)}return i.close(),s}async findInboxIdByIdentifier(e){return this.sendMessage("findInboxIdByIdentifier",{identifier:e})}codecFor(e){return this.#f.get(e.toString())}encodeContent(e,t){const s=this.codecFor(t);if(!s)throw new se(t);const i=s.encode(e,this),n=s.fallback(e);return n&&(i.fallback=n),N(i)}decodeContent(e,s){const i=this.codecFor(s);if(!i)throw new se(s);if(s.sameAs(t)&&e.kind!==m.MembershipChange)throw new ae(e.id);const n=T(e.content);return i.decode(n,this)}signWithInstallationKey(e){return this.sendMessage("signWithInstallationKey",{signatureText:e})}verifySignedWithInstallationKey(e,t){return this.sendMessage("verifySignedWithInstallationKey",{signatureText:e,signatureBytes:t})}verifySignedWithPublicKey(e,t,s){return this.sendMessage("verifySignedWithPublicKey",{signatureText:e,signatureBytes:t,publicKey:s})}async getKeyPackageStatusesForInstallationIds(e){return this.sendMessage("getKeyPackageStatusesForInstallationIds",{installationIds:e})}}const Ie={local:"http://localhost:5555",dev:"https://dev.xmtp.network",production:"https://production.xmtp.network"},ve={local:"http://localhost:5558",dev:"https://message-history.dev.ephemera.network",production:"https://message-history.production.ephemera.network"};export{Ie as ApiUrls,ye as Client,de as Conversation,ue as Conversations,ee as DecodedMessage,ce as Dm,le as Group,ve as HistorySyncUrls,me as Utils,A as fromContentTypeId,D as fromEncodedContent,V as fromSafeConsent,P as fromSafeContentTypeId,q as fromSafeCreateDmOptions,j as fromSafeCreateGroupOptions,T as fromSafeEncodedContent,J as fromSafeGroupMember,L as fromSafeListConversationsOptions,R as fromSafeListMessagesOptions,Y as fromSafeMessageDisappearingSettings,U as fromSafePermissionPolicySet,x as toContentTypeId,G as toEncodedContent,H as toSafeConsent,k as toSafeContentTypeId,O as toSafeConversation,F as toSafeCreateDmOptions,W as toSafeCreateGroupOptions,N as toSafeEncodedContent,z as toSafeGroupMember,Q as toSafeHmacKey,$ as toSafeInboxState,K as toSafeInstallation,Z as toSafeKeyPackageStatus,E as toSafeListConversationsOptions,B as toSafeListMessagesOptions,C as toSafeMessage,X as toSafeMessageDisappearingSettings,_ as toSafePermissionPolicySet};
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/ClientWorkerClass.ts","../src/AsyncStream.ts","../src/utils/conversions.ts","../src/DecodedMessage.ts","../src/utils/errors.ts","../src/Conversation.ts","../src/utils/date.ts","../src/Dm.ts","../src/Group.ts","../src/Conversations.ts","../src/Preferences.ts","../src/UtilsWorkerClass.ts","../src/Utils.ts","../src/Client.ts","../src/constants.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["handleError","event","console","error","lineno","filename","message","ClientWorkerClass","worker","enableLogging","promises","Map","constructor","this","addEventListener","handleMessage","sendMessage","action","data","promiseId","v4","postMessage","id","Promise","resolve","reject","set","eventData","log","promise","get","delete","Error","result","handleStreamMessage","streamId","callback","streamHandler","removeEventListener","close","terminate","AsyncStream","done","resolveNext","rejectNext","queue","onReturn","undefined","onError","endStream","isDone","value","push","next","length","shift","return","Symbol","asyncIterator","toContentTypeId","contentTypeId","ContentTypeId","authorityId","typeId","versionMajor","versionMinor","fromContentTypeId","WasmContentTypeId","toSafeContentTypeId","fromSafeContentTypeId","toEncodedContent","content","type","parameters","Object","fromEntries","fallback","compression","fromEncodedContent","WasmEncodedContent","entries","toSafeEncodedContent","fromSafeEncodedContent","toSafeMessage","convoId","deliveryStatus","kind","senderInboxId","sentAtNs","toSafeListMessagesOptions","options","contentTypes","direction","limit","sentAfterNs","sentBeforeNs","fromSafeListMessagesOptions","ListMessagesOptions","toSafeListConversationsOptions","consentStates","createdAfterNs","createdBeforeNs","includeDuplicateDms","fromSafeListConversationsOptions","ListConversationsOptions","toSafePermissionPolicySet","policySet","addAdminPolicy","addMemberPolicy","removeAdminPolicy","removeMemberPolicy","updateGroupDescriptionPolicy","updateGroupImageUrlSquarePolicy","updateGroupNamePolicy","updateMessageDisappearingPolicy","fromSafePermissionPolicySet","PermissionPolicySet","toSafeCreateGroupOptions","customPermissionPolicySet","description","groupDescription","imageUrlSquare","groupImageUrlSquare","messageDisappearingSettings","toSafeMessageDisappearingSettings","name","groupName","permissions","fromSafeCreateGroupOptions","CreateGroupOptions","GroupPermissionsOptions","CustomPolicy","fromSafeMessageDisappearingSettings","toSafeCreateDmOptions","fromSafeCreateDmOptions","CreateDMOptions","toSafeConversation","async","conversation","imageUrl","isActive","addedByInboxId","metadata","admins","superAdmins","createdAtNs","policyType","toSafeInstallation","installation","bytes","clientTimestampNs","toSafeInboxState","inboxState","accountIdentifiers","inboxId","installations","map","recoveryIdentifier","toSafeConsent","consent","entity","entityType","state","fromSafeConsent","Consent","toSafeGroupMember","member","consentState","installationIds","permissionLevel","fromSafeGroupMember","GroupMember","toSafeHmacKey","hmacKey","key","epoch","settings","fromNs","inNs","MessageDisappearingSettings","toSafeKeyPackageStatus","status","lifetime","notBefore","not_before","notAfter","not_after","validationError","DecodedMessage","client","contentType","conversationId","encodedContent","GroupMessageKind","Application","MembershipChange","DeliveryStatus","Unpublished","Published","Failed","decodeContent","SignerUnavailableError","super","CodecNotFoundError","toString","InboxReassignError","AccountAlreadyAssociatedError","GenerateSignatureError","signatureType","SignatureRequestType","AddWallet","CreateInbox","RevokeWallet","RevokeInstallations","ChangeRecoveryIdentifier","InvalidGroupMembershipChangeError","messageId","MissingContentTypeError","Conversation","syncData","createdAt","ns","Date","Number","members","sync","publishMessages","sendOptimistic","safeEncodedContent","encodeContent","ContentTypeText","send","messages","updateConsentState","updateMessageDisappearingSettings","removeMessageDisappearingSettings","isMessageDisappearingEnabled","stream","asyncStream","decodedMessage","groupId","pausedForVersion","getHmacKeys","Dm","peerInboxId","Group","updateName","updateImageUrl","updateDescription","listAdmins","listSuperAdmins","updatePermission","permissionType","policy","metadataField","isAdmin","includes","isSuperAdmin","addMembersByIdentifiers","identifiers","addMembers","inboxIds","removeMembersByIdentifiers","removeMembers","addAdmin","removeAdmin","addSuperAdmin","removeSuperAdmin","Conversations","syncAll","getConversationById","conversationType","getMessageById","getDmByInboxId","list","listGroups","listDms","newGroupWithIdentifiers","newGroup","newDmWithIdentifier","identifier","newDm","streamValue","streamGroups","ConversationType","streamDms","streamAllMessages","streamAllGroupMessages","streamAllDmMessages","Preferences","refreshFromNetwork","inboxStateFromInboxIds","getLatestInboxState","setConsentStates","records","getConsentState","streamConsent","streamPreferences","UtilsWorkerClass","init","Utils","Worker","URL","url","generateInboxId","getInboxIdForIdentifier","env","Client","codecs","conversations","installationId","installationIdBytes","isReady","preferences","signer","loggingLevel","GroupUpdatedCodec","TextCodec","codec","create","getIdentifier","disableAutoRegister","register","build","accountIdentifier","unsafe_createInboxSignatureText","unsafe_addAccountSignatureText","newIdentifier","allowInboxReassign","unsafe_removeAccountSignatureText","unsafe_revokeAllOtherInstallationsSignatureText","unsafe_revokeInstallationsSignatureText","unsafe_changeRecoveryIdentifierSignatureText","unsafe_addSignature","signatureText","signature","signMessage","chainId","getChainId","blockNumber","getBlockNumber","unsafe_applySignatures","unsafe_addAccount","newAccountSigner","existingInboxId","findInboxIdByIdentifier","removeAccount","revokeAllOtherInstallations","revokeInstallations","changeRecoveryIdentifier","isRegistered","canMessage","canMessageMap","utils","codecFor","encoded","encode","sameAs","ContentTypeGroupUpdated","decode","signWithInstallationKey","verifySignedWithInstallationKey","signatureBytes","verifySignedWithPublicKey","publicKey","getKeyPackageStatusesForInstallationIds","ApiUrls","local","dev","production","HistorySyncUrls"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/ClientWorkerClass.ts","../src/AsyncStream.ts","../src/utils/conversions.ts","../src/DecodedMessage.ts","../src/utils/errors.ts","../src/Conversation.ts","../src/utils/date.ts","../src/Dm.ts","../src/Group.ts","../src/Conversations.ts","../src/Preferences.ts","../src/UtilsWorkerClass.ts","../src/Utils.ts","../src/Client.ts","../src/constants.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["handleError","event","console","error","lineno","filename","message","ClientWorkerClass","worker","enableLogging","promises","Map","constructor","this","addEventListener","handleMessage","sendMessage","action","data","promiseId","v4","postMessage","id","Promise","resolve","reject","set","eventData","log","promise","get","delete","Error","result","handleStreamMessage","streamId","callback","streamHandler","removeEventListener","close","terminate","AsyncStream","done","resolveNext","rejectNext","queue","onReturn","undefined","onError","endStream","isDone","value","push","next","length","shift","return","Symbol","asyncIterator","toContentTypeId","contentTypeId","ContentTypeId","authorityId","typeId","versionMajor","versionMinor","fromContentTypeId","WasmContentTypeId","toSafeContentTypeId","fromSafeContentTypeId","toEncodedContent","content","type","parameters","Object","fromEntries","fallback","compression","fromEncodedContent","WasmEncodedContent","entries","toSafeEncodedContent","fromSafeEncodedContent","toSafeMessage","convoId","deliveryStatus","kind","senderInboxId","sentAtNs","toSafeListMessagesOptions","options","contentTypes","direction","limit","sentAfterNs","sentBeforeNs","fromSafeListMessagesOptions","ListMessagesOptions","toSafeListConversationsOptions","consentStates","createdAfterNs","createdBeforeNs","includeDuplicateDms","fromSafeListConversationsOptions","ListConversationsOptions","toSafePermissionPolicySet","policySet","addAdminPolicy","addMemberPolicy","removeAdminPolicy","removeMemberPolicy","updateGroupDescriptionPolicy","updateGroupImageUrlSquarePolicy","updateGroupNamePolicy","updateMessageDisappearingPolicy","fromSafePermissionPolicySet","PermissionPolicySet","toSafeCreateGroupOptions","customPermissionPolicySet","description","groupDescription","imageUrlSquare","groupImageUrlSquare","messageDisappearingSettings","toSafeMessageDisappearingSettings","name","groupName","permissions","fromSafeCreateGroupOptions","CreateGroupOptions","GroupPermissionsOptions","CustomPolicy","fromSafeMessageDisappearingSettings","toSafeCreateDmOptions","fromSafeCreateDmOptions","CreateDMOptions","toSafeConversation","async","conversation","imageUrl","isActive","addedByInboxId","metadata","admins","superAdmins","createdAtNs","policyType","toSafeInstallation","installation","bytes","clientTimestampNs","toSafeInboxState","inboxState","accountIdentifiers","inboxId","installations","map","recoveryIdentifier","toSafeConsent","consent","entity","entityType","state","fromSafeConsent","Consent","toSafeGroupMember","member","consentState","installationIds","permissionLevel","fromSafeGroupMember","GroupMember","toSafeHmacKey","hmacKey","key","epoch","settings","fromNs","inNs","MessageDisappearingSettings","toSafeKeyPackageStatus","status","lifetime","notBefore","not_before","notAfter","not_after","validationError","DecodedMessage","client","contentType","conversationId","encodedContent","GroupMessageKind","Application","MembershipChange","DeliveryStatus","Unpublished","Published","Failed","decodeContent","SignerUnavailableError","super","CodecNotFoundError","toString","InboxReassignError","AccountAlreadyAssociatedError","GenerateSignatureError","signatureType","SignatureRequestType","AddWallet","CreateInbox","RevokeWallet","RevokeInstallations","ChangeRecoveryIdentifier","InvalidGroupMembershipChangeError","messageId","MissingContentTypeError","Conversation","syncData","createdAt","ns","Date","Number","members","sync","publishMessages","sendOptimistic","safeEncodedContent","encodeContent","ContentTypeText","send","messages","updateConsentState","updateMessageDisappearingSettings","removeMessageDisappearingSettings","isMessageDisappearingEnabled","stream","asyncStream","err","groupId","pausedForVersion","getHmacKeys","Dm","peerInboxId","Group","updateName","updateImageUrl","updateDescription","listAdmins","listSuperAdmins","updatePermission","permissionType","policy","metadataField","isAdmin","includes","isSuperAdmin","addMembersByIdentifiers","identifiers","addMembers","inboxIds","removeMembersByIdentifiers","removeMembers","addAdmin","removeAdmin","addSuperAdmin","removeSuperAdmin","Conversations","syncAll","getConversationById","conversationType","getMessageById","getDmByInboxId","list","listGroups","listDms","newGroupWithIdentifiers","newGroup","newDmWithIdentifier","identifier","newDm","streamValue","streamGroups","ConversationType","streamDms","streamAllMessages","streamAllGroupMessages","streamAllDmMessages","Preferences","refreshFromNetwork","inboxStateFromInboxIds","getLatestInboxState","setConsentStates","records","getConsentState","streamConsent","streamPreferences","UtilsWorkerClass","init","Utils","Worker","URL","url","generateInboxId","getInboxIdForIdentifier","env","Client","codecs","conversations","installationId","installationIdBytes","isReady","preferences","signer","loggingLevel","GroupUpdatedCodec","TextCodec","codec","create","getIdentifier","disableAutoRegister","register","build","accountIdentifier","unsafe_createInboxSignatureText","unsafe_addAccountSignatureText","newIdentifier","allowInboxReassign","unsafe_removeAccountSignatureText","unsafe_revokeAllOtherInstallationsSignatureText","unsafe_revokeInstallationsSignatureText","unsafe_changeRecoveryIdentifierSignatureText","unsafe_addSignature","signatureText","signature","signMessage","chainId","getChainId","blockNumber","getBlockNumber","unsafe_applySignatures","unsafe_addAccount","newAccountSigner","existingInboxId","findInboxIdByIdentifier","removeAccount","revokeAllOtherInstallations","revokeInstallations","changeRecoveryIdentifier","isRegistered","canMessage","canMessageMap","utils","codecFor","encoded","encode","sameAs","ContentTypeGroupUpdated","decode","signWithInstallationKey","verifySignedWithInstallationKey","signatureBytes","verifySignedWithPublicKey","publicKey","getKeyPackageStatusesForInstallationIds","ApiUrls","local","dev","production","HistorySyncUrls"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xmtp/browser-sdk",
3
- "version": "2.0.2",
3
+ "version": "2.0.4",
4
4
  "description": "XMTP client SDK for browsers written in TypeScript",
5
5
  "keywords": [
6
6
  "xmtp",
@@ -60,9 +60,9 @@
60
60
  ]
61
61
  },
62
62
  "dependencies": {
63
- "@xmtp/content-type-group-updated": "^2.0.1",
64
- "@xmtp/content-type-primitives": "^2.0.1",
65
- "@xmtp/content-type-text": "^2.0.1",
63
+ "@xmtp/content-type-group-updated": "^2.0.2",
64
+ "@xmtp/content-type-primitives": "^2.0.2",
65
+ "@xmtp/content-type-text": "^2.0.2",
66
66
  "@xmtp/proto": "^3.78.0",
67
67
  "@xmtp/wasm-bindings": "1.2.0-dev.878fd38",
68
68
  "uuid": "^11.1.0"
package/src/Client.ts CHANGED
@@ -142,6 +142,13 @@ export class Client extends ClientWorkerClass {
142
142
  return this.#options;
143
143
  }
144
144
 
145
+ /**
146
+ * Gets the signer associated with this client
147
+ */
148
+ get signer() {
149
+ return this.#signer;
150
+ }
151
+
145
152
  /**
146
153
  * Gets whether the client has been initialized
147
154
  */
@@ -618,8 +625,10 @@ export class Client extends ClientWorkerClass {
618
625
  * @param contentType - The content type to get the codec for
619
626
  * @returns The codec, if found
620
627
  */
621
- codecFor(contentType: ContentTypeId) {
622
- return this.#codecs.get(contentType.toString());
628
+ codecFor<T = unknown>(contentType: ContentTypeId) {
629
+ return this.#codecs.get(contentType.toString()) as
630
+ | ContentCodec<T>
631
+ | undefined;
623
632
  }
624
633
 
625
634
  /**
@@ -630,7 +639,7 @@ export class Client extends ClientWorkerClass {
630
639
  * @returns The encoded content
631
640
  * @throws {CodecNotFoundError} if no codec is found for the content type
632
641
  */
633
- encodeContent(content: any, contentType: ContentTypeId) {
642
+ encodeContent(content: unknown, contentType: ContentTypeId) {
634
643
  const codec = this.codecFor(contentType);
635
644
  if (!codec) {
636
645
  throw new CodecNotFoundError(contentType);
@@ -652,8 +661,8 @@ export class Client extends ClientWorkerClass {
652
661
  * @throws {CodecNotFoundError} if no codec is found for the content type
653
662
  * @throws {InvalidGroupMembershipChangeError} if the message is an invalid group membership change
654
663
  */
655
- decodeContent(message: SafeMessage, contentType: ContentTypeId) {
656
- const codec = this.codecFor(contentType);
664
+ decodeContent<T = unknown>(message: SafeMessage, contentType: ContentTypeId) {
665
+ const codec = this.codecFor<T>(contentType);
657
666
  if (!codec) {
658
667
  throw new CodecNotFoundError(contentType);
659
668
  }
@@ -667,7 +676,7 @@ export class Client extends ClientWorkerClass {
667
676
  }
668
677
 
669
678
  const encodedContent = fromSafeEncodedContent(message.content);
670
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return
679
+
671
680
  return codec.decode(encodedContent, this);
672
681
  }
673
682
 
@@ -23,7 +23,10 @@ export class ClientWorkerClass {
23
23
 
24
24
  #promises = new Map<
25
25
  string,
26
- { resolve: (value: any) => void; reject: (reason?: any) => void }
26
+ {
27
+ resolve: (value: unknown) => void;
28
+ reject: (reason?: unknown) => void;
29
+ }
27
30
  >();
28
31
 
29
32
  constructor(worker: Worker, enableLogging: boolean) {
@@ -44,7 +47,10 @@ export class ClientWorkerClass {
44
47
  data,
45
48
  });
46
49
  const promise = new Promise<ClientEventsResult<A>>((resolve, reject) => {
47
- this.#promises.set(promiseId, { resolve, reject });
50
+ this.#promises.set(promiseId, {
51
+ resolve: resolve as (value: unknown) => void,
52
+ reject,
53
+ });
48
54
  });
49
55
  return promise;
50
56
  }
@@ -67,7 +73,6 @@ export class ClientWorkerClass {
67
73
  }
68
74
  };
69
75
 
70
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-parameters
71
76
  handleStreamMessage = <T extends ClientStreamEvents["result"]>(
72
77
  streamId: string,
73
78
  callback: (error: Error | null, value: T | null) => void,
@@ -106,14 +106,14 @@ export class Conversation {
106
106
  }
107
107
 
108
108
  /**
109
- * Sends a message optimistically
109
+ * Prepares a message to be published
110
110
  *
111
111
  * @param content - The content to send
112
112
  * @param contentType - Optional content type of the message content
113
113
  * @returns Promise that resolves with the message ID
114
- * @throws {MissingContentTypeError} When content type is required but not provided
114
+ * @throws {MissingContentTypeError} if content type is required but not provided
115
115
  */
116
- async sendOptimistic(content: any, contentType?: ContentTypeId) {
116
+ async sendOptimistic(content: unknown, contentType?: ContentTypeId) {
117
117
  if (typeof content !== "string" && !contentType) {
118
118
  throw new MissingContentTypeError();
119
119
  }
@@ -131,14 +131,14 @@ export class Conversation {
131
131
  }
132
132
 
133
133
  /**
134
- * Sends a message
134
+ * Publishes a new message
135
135
  *
136
136
  * @param content - The content to send
137
137
  * @param contentType - Optional content type of the message content
138
138
  * @returns Promise that resolves with the message ID after it has been sent
139
- * @throws {MissingContentTypeError} When content type is required but not provided
139
+ * @throws {MissingContentTypeError} if content type is required but not provided
140
140
  */
141
- async send(content: any, contentType?: ContentTypeId) {
141
+ async send(content: unknown, contentType?: ContentTypeId) {
142
142
  if (typeof content !== "string" && !contentType) {
143
143
  throw new MissingContentTypeError();
144
144
  }
@@ -246,7 +246,7 @@ export class Conversation {
246
246
  * Creates a stream for new messages in this conversation
247
247
  *
248
248
  * @param callback - Optional callback function for handling new stream values
249
- * @returns AsyncStream instance for new messages
249
+ * @returns Stream instance for new messages
250
250
  */
251
251
  async stream(callback?: StreamCallback<DecodedMessage>) {
252
252
  const streamId = v4();
@@ -254,17 +254,19 @@ export class Conversation {
254
254
  const endStream = this.#client.handleStreamMessage<SafeMessage>(
255
255
  streamId,
256
256
  (error, value) => {
257
- if (error) {
258
- void asyncStream.callback(error, undefined);
259
- void callback?.(error, undefined);
260
- return;
257
+ let err: Error | null = error;
258
+ let message: DecodedMessage | undefined;
259
+
260
+ if (value) {
261
+ try {
262
+ message = new DecodedMessage(this.#client, value);
263
+ } catch (error) {
264
+ err = error as Error;
265
+ }
261
266
  }
262
267
 
263
- const decodedMessage = value
264
- ? new DecodedMessage(this.#client, value)
265
- : undefined;
266
- void asyncStream.callback(null, decodedMessage);
267
- void callback?.(null, decodedMessage);
268
+ void asyncStream.callback(err, message);
269
+ void callback?.(err, message);
268
270
  },
269
271
  );
270
272
  await this.#client.sendMessage("streamGroupMessages", {
@@ -81,11 +81,11 @@ export class Conversations {
81
81
  * @param id - The message ID to look up
82
82
  * @returns Promise that resolves with the decoded message, if found
83
83
  */
84
- async getMessageById(id: string) {
84
+ async getMessageById<T = unknown>(id: string) {
85
85
  const data = await this.#client.sendMessage("getMessageById", {
86
86
  id,
87
87
  });
88
- return data ? new DecodedMessage(this.#client, data) : undefined;
88
+ return data ? new DecodedMessage<T>(this.#client, data) : undefined;
89
89
  }
90
90
 
91
91
  /**
@@ -245,7 +245,7 @@ export class Conversations {
245
245
  *
246
246
  * @param callback - Optional callback function for handling new stream value
247
247
  * @param conversationType - Optional type to filter conversations
248
- * @returns AsyncStream instance for new conversations
248
+ * @returns Stream instance for new conversations
249
249
  */
250
250
  async stream<T extends Group | Dm = Group | Dm>(
251
251
  callback?: StreamCallback<T>,
@@ -256,23 +256,22 @@ export class Conversations {
256
256
  const endStream = this.#client.handleStreamMessage<SafeConversation>(
257
257
  streamId,
258
258
  (error, value) => {
259
- if (error) {
260
- void asyncStream.callback(error, undefined);
261
- void callback?.(error, undefined);
262
- return;
263
- }
264
-
265
- let streamValue: T | undefined = undefined;
259
+ let err: Error | null = error;
260
+ let streamValue: T | undefined;
266
261
 
267
262
  if (value) {
268
- streamValue =
269
- value.metadata.conversationType === "group"
270
- ? (new Group(this.#client, value.id, value) as T)
271
- : (new Dm(this.#client, value.id, value) as T);
263
+ try {
264
+ streamValue =
265
+ value.metadata.conversationType === "group"
266
+ ? (new Group(this.#client, value.id, value) as T)
267
+ : (new Dm(this.#client, value.id, value) as T);
268
+ } catch (error) {
269
+ err = error as Error;
270
+ }
272
271
  }
273
272
 
274
- void asyncStream.callback(null, streamValue);
275
- void callback?.(null, streamValue);
273
+ void asyncStream.callback(err, streamValue);
274
+ void callback?.(err, streamValue);
276
275
  },
277
276
  );
278
277
  await this.#client.sendMessage("streamAllGroups", {
@@ -292,7 +291,7 @@ export class Conversations {
292
291
  * Creates a stream for new group conversations
293
292
  *
294
293
  * @param callback - Optional callback function for handling new stream value
295
- * @returns AsyncStream instance for new group conversations
294
+ * @returns Stream instance for new group conversations
296
295
  */
297
296
  async streamGroups(callback?: StreamCallback<Group>) {
298
297
  return this.stream<Group>(callback, ConversationType.Group);
@@ -302,7 +301,7 @@ export class Conversations {
302
301
  * Creates a stream for new DM conversations
303
302
  *
304
303
  * @param callback - Optional callback function for handling new stream value
305
- * @returns AsyncStream instance for new DM conversations
304
+ * @returns Stream instance for new DM conversations
306
305
  */
307
306
  async streamDms(callback?: StreamCallback<Dm>) {
308
307
  return this.stream<Dm>(callback, ConversationType.Dm);
@@ -313,7 +312,7 @@ export class Conversations {
313
312
  *
314
313
  * @param callback - Optional callback function for handling new stream value
315
314
  * @param conversationType - Optional conversation type to filter messages
316
- * @returns AsyncStream instance for new messages
315
+ * @returns Stream instance for new messages
317
316
  */
318
317
  async streamAllMessages(
319
318
  callback?: StreamCallback<DecodedMessage>,
@@ -324,17 +323,19 @@ export class Conversations {
324
323
  const endStream = this.#client.handleStreamMessage<SafeMessage>(
325
324
  streamId,
326
325
  (error, value) => {
327
- if (error) {
328
- void asyncStream.callback(error, undefined);
329
- void callback?.(error, undefined);
330
- return;
326
+ let err: Error | null = error;
327
+ let message: DecodedMessage | undefined;
328
+
329
+ if (value) {
330
+ try {
331
+ message = new DecodedMessage(this.#client, value);
332
+ } catch (error) {
333
+ err = error as Error;
334
+ }
331
335
  }
332
336
 
333
- const decodedMessage = value
334
- ? new DecodedMessage(this.#client, value)
335
- : undefined;
336
- void asyncStream.callback(null, decodedMessage);
337
- void callback?.(null, decodedMessage);
337
+ void asyncStream.callback(err, message);
338
+ void callback?.(err, message);
338
339
  },
339
340
  );
340
341
  await this.#client.sendMessage("streamAllMessages", {
@@ -354,7 +355,7 @@ export class Conversations {
354
355
  * Creates a stream for all new group messages
355
356
  *
356
357
  * @param callback - Optional callback function for handling new stream value
357
- * @returns AsyncStream instance for new group messages
358
+ * @returns Stream instance for new group messages
358
359
  */
359
360
  async streamAllGroupMessages(callback?: StreamCallback<DecodedMessage>) {
360
361
  return this.streamAllMessages(callback, ConversationType.Group);
@@ -364,7 +365,7 @@ export class Conversations {
364
365
  * Creates a stream for all new DM messages
365
366
  *
366
367
  * @param callback - Optional callback function for handling new stream value
367
- * @returns AsyncStream instance for new DM messages
368
+ * @returns Stream instance for new DM messages
368
369
  */
369
370
  async streamAllDmMessages(callback?: StreamCallback<DecodedMessage>) {
370
371
  return this.streamAllMessages(callback, ConversationType.Dm);
@@ -26,9 +26,9 @@ export type MessageDeliveryStatus = "unpublished" | "published" | "failed";
26
26
  * @property {string} senderInboxId - Identifier for the sender's inbox
27
27
  * @property {bigint} sentAtNs - Timestamp when the message was sent (in nanoseconds)
28
28
  */
29
- export class DecodedMessage {
29
+ export class DecodedMessage<T = unknown> {
30
30
  #client: Client;
31
- content: any;
31
+ content: T | undefined;
32
32
  contentType: ContentTypeId;
33
33
  conversationId: string;
34
34
  deliveryStatus: MessageDeliveryStatus;
@@ -76,7 +76,11 @@ export class DecodedMessage {
76
76
  this.parameters = new Map(Object.entries(message.content.parameters));
77
77
  this.fallback = message.content.fallback;
78
78
  this.compression = message.content.compression;
79
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
80
- this.content = this.#client.decodeContent(message, this.contentType);
79
+
80
+ try {
81
+ this.content = this.#client.decodeContent<T>(message, this.contentType);
82
+ } catch {
83
+ this.content = undefined;
84
+ }
81
85
  }
82
86
  }
@@ -85,7 +85,7 @@ export class Preferences {
85
85
  * Creates a stream of consent state updates
86
86
  *
87
87
  * @param callback - Optional callback function for handling stream updates
88
- * @returns AsyncStream instance for consent updates
88
+ * @returns Stream instance for consent updates
89
89
  */
90
90
  async streamConsent(callback?: StreamCallback<SafeConsent[]>) {
91
91
  const streamId = v4();
@@ -113,7 +113,7 @@ export class Preferences {
113
113
  * Creates a stream of user preference updates
114
114
  *
115
115
  * @param callback - Optional callback function for handling stream updates
116
- * @returns AsyncStream instance for preference updates
116
+ * @returns Stream instance for preference updates
117
117
  */
118
118
  async streamPreferences(callback?: StreamCallback<UserPreference[]>) {
119
119
  const streamId = v4();
@@ -19,7 +19,7 @@ export class UtilsWorkerClass {
19
19
 
20
20
  #promises = new Map<
21
21
  string,
22
- { resolve: (value: any) => void; reject: (reason?: any) => void }
22
+ { resolve: (value: unknown) => void; reject: (reason?: unknown) => void }
23
23
  >();
24
24
 
25
25
  constructor(worker: Worker, enableLogging: boolean) {
@@ -47,7 +47,10 @@ export class UtilsWorkerClass {
47
47
  data,
48
48
  });
49
49
  const promise = new Promise<UtilsEventsResult<A>>((resolve, reject) => {
50
- this.#promises.set(promiseId, { resolve, reject });
50
+ this.#promises.set(promiseId, {
51
+ resolve: resolve as (value: unknown) => void,
52
+ reject,
53
+ });
51
54
  });
52
55
  return promise;
53
56
  }
@@ -667,6 +667,7 @@ export type ClientEvents =
667
667
  id: string;
668
668
  };
669
669
  };
670
+
670
671
  export type ClientEventsActions = ClientEvents["action"];
671
672
 
672
673
  export type ClientEventsClientMessageData =