@massalabs/gossip-sdk 0.0.2-dev.20260128094509
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 +484 -0
- package/package.json +41 -0
- package/src/api/messageProtocol/index.ts +53 -0
- package/src/api/messageProtocol/mock.ts +13 -0
- package/src/api/messageProtocol/rest.ts +209 -0
- package/src/api/messageProtocol/types.ts +70 -0
- package/src/config/protocol.ts +97 -0
- package/src/config/sdk.ts +131 -0
- package/src/contacts.ts +210 -0
- package/src/core/SdkEventEmitter.ts +91 -0
- package/src/core/SdkPolling.ts +134 -0
- package/src/core/index.ts +9 -0
- package/src/crypto/bip39.ts +84 -0
- package/src/crypto/encryption.ts +77 -0
- package/src/db.ts +465 -0
- package/src/gossipSdk.ts +994 -0
- package/src/index.ts +211 -0
- package/src/services/announcement.ts +653 -0
- package/src/services/auth.ts +95 -0
- package/src/services/discussion.ts +380 -0
- package/src/services/message.ts +1055 -0
- package/src/services/refresh.ts +234 -0
- package/src/sw.ts +17 -0
- package/src/types/events.ts +108 -0
- package/src/types.ts +70 -0
- package/src/utils/base64.ts +39 -0
- package/src/utils/contacts.ts +161 -0
- package/src/utils/discussions.ts +55 -0
- package/src/utils/logs.ts +86 -0
- package/src/utils/messageSerialization.ts +257 -0
- package/src/utils/queue.ts +106 -0
- package/src/utils/type.ts +7 -0
- package/src/utils/userId.ts +114 -0
- package/src/utils/validation.ts +144 -0
- package/src/utils.ts +47 -0
- package/src/wasm/encryption.ts +108 -0
- package/src/wasm/index.ts +20 -0
- package/src/wasm/loader.ts +123 -0
- package/src/wasm/session.ts +276 -0
- package/src/wasm/userKeys.ts +31 -0
- package/test/config/protocol.spec.ts +31 -0
- package/test/config/sdk.spec.ts +163 -0
- package/test/db/helpers.spec.ts +142 -0
- package/test/db/operations.spec.ts +128 -0
- package/test/db/states.spec.ts +535 -0
- package/test/integration/discussion-flow.spec.ts +422 -0
- package/test/integration/messaging-flow.spec.ts +708 -0
- package/test/integration/sdk-lifecycle.spec.ts +325 -0
- package/test/mocks/index.ts +9 -0
- package/test/mocks/mockMessageProtocol.ts +100 -0
- package/test/services/auth.spec.ts +311 -0
- package/test/services/discussion.spec.ts +279 -0
- package/test/services/message-deduplication.spec.ts +299 -0
- package/test/services/message-startup.spec.ts +331 -0
- package/test/services/message.spec.ts +817 -0
- package/test/services/refresh.spec.ts +199 -0
- package/test/services/session-status.spec.ts +349 -0
- package/test/session/wasm.spec.ts +227 -0
- package/test/setup.ts +52 -0
- package/test/utils/contacts.spec.ts +156 -0
- package/test/utils/discussions.spec.ts +66 -0
- package/test/utils/queue.spec.ts +52 -0
- package/test/utils/serialization.spec.ts +120 -0
- package/test/utils/userId.spec.ts +120 -0
- package/test/utils/validation.spec.ts +223 -0
- package/test/utils.ts +212 -0
- package/tsconfig.json +26 -0
- package/tsconfig.tsbuildinfo +1 -0
- package/vitest.config.ts +28 -0
package/src/index.ts
ADDED
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gossip SDK
|
|
3
|
+
*
|
|
4
|
+
* Main entry point for the Gossip SDK.
|
|
5
|
+
* Provides a platform-agnostic interface for automation, chatbot,
|
|
6
|
+
* and integration use cases with the Gossip messenger.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import { gossipSdk } from 'gossip-sdk';
|
|
11
|
+
*
|
|
12
|
+
* // Initialize once at app startup
|
|
13
|
+
* await gossipSdk.init({
|
|
14
|
+
* db,
|
|
15
|
+
* protocolBaseUrl: 'https://api.example.com',
|
|
16
|
+
* });
|
|
17
|
+
*
|
|
18
|
+
* // Open session (login)
|
|
19
|
+
* await gossipSdk.openSession({ mnemonic: '...' });
|
|
20
|
+
*
|
|
21
|
+
* // Use clean API
|
|
22
|
+
* await gossipSdk.messages.send(contactId, 'Hello!');
|
|
23
|
+
* await gossipSdk.discussions.start(contact);
|
|
24
|
+
*
|
|
25
|
+
* // Events
|
|
26
|
+
* gossipSdk.on('message', (msg) => { ... });
|
|
27
|
+
*
|
|
28
|
+
* // Logout
|
|
29
|
+
* await gossipSdk.closeSession();
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* @packageDocumentation
|
|
33
|
+
*/
|
|
34
|
+
|
|
35
|
+
// SDK version - matches package.json
|
|
36
|
+
export const SDK_VERSION = '0.0.1';
|
|
37
|
+
|
|
38
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
39
|
+
// SDK Singleton - Primary API
|
|
40
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
41
|
+
export { gossipSdk, GossipSdkImpl } from './gossipSdk';
|
|
42
|
+
export type {
|
|
43
|
+
GossipSdkInitOptions,
|
|
44
|
+
OpenSessionOptions,
|
|
45
|
+
SdkEventType,
|
|
46
|
+
SdkEventHandlers,
|
|
47
|
+
} from './gossipSdk';
|
|
48
|
+
|
|
49
|
+
// SDK Events
|
|
50
|
+
export type { GossipSdkEvents } from './types/events';
|
|
51
|
+
|
|
52
|
+
// Services - class-based with dependency injection
|
|
53
|
+
export { AuthService } from './services/auth';
|
|
54
|
+
export type { PublicKeyResult } from './services/auth';
|
|
55
|
+
export {
|
|
56
|
+
getPublicKeyErrorMessage,
|
|
57
|
+
PUBLIC_KEY_NOT_FOUND_ERROR,
|
|
58
|
+
PUBLIC_KEY_NOT_FOUND_MESSAGE,
|
|
59
|
+
FAILED_TO_FETCH_ERROR,
|
|
60
|
+
FAILED_TO_FETCH_MESSAGE,
|
|
61
|
+
FAILED_TO_RETRIEVE_CONTACT_PUBLIC_KEY_ERROR,
|
|
62
|
+
} from './services/auth';
|
|
63
|
+
|
|
64
|
+
export {
|
|
65
|
+
AnnouncementService,
|
|
66
|
+
EstablishSessionError,
|
|
67
|
+
} from './services/announcement';
|
|
68
|
+
export type { AnnouncementReceptionResult } from './services/announcement';
|
|
69
|
+
|
|
70
|
+
export { MessageService } from './services/message';
|
|
71
|
+
export type { MessageResult, SendMessageResult } from './services/message';
|
|
72
|
+
|
|
73
|
+
export { DiscussionService } from './services/discussion';
|
|
74
|
+
|
|
75
|
+
export { RefreshService } from './services/refresh';
|
|
76
|
+
|
|
77
|
+
// Contact Management (utility functions)
|
|
78
|
+
export {
|
|
79
|
+
getContacts,
|
|
80
|
+
getContact,
|
|
81
|
+
addContact,
|
|
82
|
+
updateContactName,
|
|
83
|
+
deleteContact,
|
|
84
|
+
} from './contacts';
|
|
85
|
+
export type {
|
|
86
|
+
UpdateContactNameResult,
|
|
87
|
+
DeleteContactResult,
|
|
88
|
+
} from './utils/contacts';
|
|
89
|
+
|
|
90
|
+
// Discussion utilities
|
|
91
|
+
export { updateDiscussionName } from './utils/discussions';
|
|
92
|
+
export type { UpdateDiscussionNameResult } from './utils/discussions';
|
|
93
|
+
|
|
94
|
+
// Types - re-export all types from the types module
|
|
95
|
+
export * from './types';
|
|
96
|
+
|
|
97
|
+
// Message Protocol - for direct use by host apps
|
|
98
|
+
export {
|
|
99
|
+
createMessageProtocol,
|
|
100
|
+
restMessageProtocol,
|
|
101
|
+
RestMessageProtocol,
|
|
102
|
+
MessageProtocol,
|
|
103
|
+
} from './api/messageProtocol';
|
|
104
|
+
export type {
|
|
105
|
+
IMessageProtocol,
|
|
106
|
+
EncryptedMessage,
|
|
107
|
+
MessageProtocolResponse,
|
|
108
|
+
BulletinItem,
|
|
109
|
+
} from './api/messageProtocol';
|
|
110
|
+
|
|
111
|
+
// Config - for runtime configuration
|
|
112
|
+
export {
|
|
113
|
+
setProtocolBaseUrl,
|
|
114
|
+
resetProtocolBaseUrl,
|
|
115
|
+
MessageProtocolType,
|
|
116
|
+
protocolConfig,
|
|
117
|
+
} from './config/protocol';
|
|
118
|
+
export type { ProtocolConfig } from './config/protocol';
|
|
119
|
+
|
|
120
|
+
// SDK Config - for SDK initialization options
|
|
121
|
+
export { defaultSdkConfig, mergeConfig } from './config/sdk';
|
|
122
|
+
export type {
|
|
123
|
+
SdkConfig,
|
|
124
|
+
PollingConfig,
|
|
125
|
+
MessagesConfig,
|
|
126
|
+
AnnouncementsConfig,
|
|
127
|
+
DeepPartial,
|
|
128
|
+
} from './config/sdk';
|
|
129
|
+
|
|
130
|
+
// Database - for direct access by host apps
|
|
131
|
+
export { setDb, getDb, db, GossipDatabase } from './db';
|
|
132
|
+
|
|
133
|
+
// WASM utilities - for session management
|
|
134
|
+
export { SessionModule, sessionStatusToString } from './wasm/session';
|
|
135
|
+
export {
|
|
136
|
+
initializeWasm,
|
|
137
|
+
ensureWasmInitialized,
|
|
138
|
+
startWasmInitialization,
|
|
139
|
+
} from './wasm/loader';
|
|
140
|
+
export {
|
|
141
|
+
EncryptionKey,
|
|
142
|
+
Nonce,
|
|
143
|
+
generateEncryptionKey,
|
|
144
|
+
generateEncryptionKeyFromSeed,
|
|
145
|
+
encryptionKeyFromBytes,
|
|
146
|
+
generateNonce,
|
|
147
|
+
nonceFromBytes,
|
|
148
|
+
encryptAead,
|
|
149
|
+
decryptAead,
|
|
150
|
+
} from './wasm/encryption';
|
|
151
|
+
export { generateUserKeys } from './wasm/userKeys';
|
|
152
|
+
|
|
153
|
+
// Utility functions - for direct use
|
|
154
|
+
export {
|
|
155
|
+
encodeUserId,
|
|
156
|
+
decodeUserId,
|
|
157
|
+
isValidUserId,
|
|
158
|
+
formatUserId,
|
|
159
|
+
generate as generateUserId,
|
|
160
|
+
} from './utils/userId';
|
|
161
|
+
export {
|
|
162
|
+
validateUsernameFormat,
|
|
163
|
+
validatePassword,
|
|
164
|
+
validateUserIdFormat,
|
|
165
|
+
validateUsernameAvailability,
|
|
166
|
+
validateUsernameFormatAndAvailability,
|
|
167
|
+
} from './utils/validation';
|
|
168
|
+
export type { ValidationResult } from './utils/validation';
|
|
169
|
+
export {
|
|
170
|
+
encodeToBase64,
|
|
171
|
+
decodeFromBase64,
|
|
172
|
+
encodeToBase64Url,
|
|
173
|
+
decodeFromBase64Url,
|
|
174
|
+
} from './utils/base64';
|
|
175
|
+
export type { Result } from './utils/type';
|
|
176
|
+
|
|
177
|
+
// Message serialization utilities
|
|
178
|
+
export {
|
|
179
|
+
MESSAGE_TYPE_KEEP_ALIVE,
|
|
180
|
+
serializeKeepAliveMessage,
|
|
181
|
+
serializeRegularMessage,
|
|
182
|
+
serializeReplyMessage,
|
|
183
|
+
serializeForwardMessage,
|
|
184
|
+
deserializeMessage,
|
|
185
|
+
} from './utils/messageSerialization';
|
|
186
|
+
export type { DeserializedMessage } from './utils/messageSerialization';
|
|
187
|
+
|
|
188
|
+
// Crypto utilities
|
|
189
|
+
export {
|
|
190
|
+
generateMnemonic,
|
|
191
|
+
validateMnemonic,
|
|
192
|
+
mnemonicToSeed,
|
|
193
|
+
accountFromMnemonic,
|
|
194
|
+
PRIVATE_KEY_VERSION,
|
|
195
|
+
} from './crypto/bip39';
|
|
196
|
+
export { encrypt, decrypt, deriveKey } from './crypto/encryption';
|
|
197
|
+
|
|
198
|
+
// WASM types and functions re-exported for convenience
|
|
199
|
+
export {
|
|
200
|
+
UserPublicKeys,
|
|
201
|
+
UserSecretKeys,
|
|
202
|
+
SessionStatus,
|
|
203
|
+
SessionConfig,
|
|
204
|
+
SessionManagerWrapper,
|
|
205
|
+
SendMessageOutput,
|
|
206
|
+
ReceiveMessageOutput,
|
|
207
|
+
AnnouncementResult,
|
|
208
|
+
generate_user_keys,
|
|
209
|
+
} from './assets/generated/wasm/gossip_wasm';
|
|
210
|
+
|
|
211
|
+
export { UserKeys } from './wasm/userKeys';
|