@massalabs/gossip-sdk 0.0.2-dev.20260128094509 → 0.0.2-dev.20260128160824

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.
Files changed (148) hide show
  1. package/dist/api/messageProtocol/index.d.ts +19 -0
  2. package/dist/api/messageProtocol/index.js +26 -0
  3. package/dist/api/messageProtocol/mock.d.ts +12 -0
  4. package/{src/api/messageProtocol/mock.ts → dist/api/messageProtocol/mock.js} +2 -3
  5. package/dist/api/messageProtocol/rest.d.ts +22 -0
  6. package/dist/api/messageProtocol/rest.js +161 -0
  7. package/dist/api/messageProtocol/types.d.ts +61 -0
  8. package/dist/api/messageProtocol/types.js +6 -0
  9. package/dist/assets/generated/wasm/README.md +281 -0
  10. package/dist/assets/generated/wasm/gossip_wasm.d.ts +638 -0
  11. package/dist/assets/generated/wasm/gossip_wasm.js +1557 -0
  12. package/dist/assets/generated/wasm/gossip_wasm_bg.wasm +0 -0
  13. package/dist/assets/generated/wasm/gossip_wasm_bg.wasm.d.ts +164 -0
  14. package/dist/assets/generated/wasm/package.json +15 -0
  15. package/dist/assets/generated/wasm-node/README.md +281 -0
  16. package/dist/assets/generated/wasm-node/gossip_wasm.d.ts +443 -0
  17. package/dist/assets/generated/wasm-node/gossip_wasm.js +1488 -0
  18. package/dist/assets/generated/wasm-node/gossip_wasm_bg.wasm +0 -0
  19. package/dist/assets/generated/wasm-node/gossip_wasm_bg.wasm.d.ts +164 -0
  20. package/dist/assets/generated/wasm-node/package.json +11 -0
  21. package/dist/config/protocol.d.ts +36 -0
  22. package/dist/config/protocol.js +77 -0
  23. package/dist/config/sdk.d.ts +82 -0
  24. package/dist/config/sdk.js +55 -0
  25. package/{src/contacts.ts → dist/contacts.d.ts} +11 -95
  26. package/dist/contacts.js +166 -0
  27. package/dist/core/SdkEventEmitter.d.ts +36 -0
  28. package/dist/core/SdkEventEmitter.js +59 -0
  29. package/dist/core/SdkPolling.d.ts +35 -0
  30. package/dist/core/SdkPolling.js +100 -0
  31. package/{src/core/index.ts → dist/core/index.d.ts} +0 -2
  32. package/dist/core/index.js +5 -0
  33. package/dist/crypto/bip39.d.ts +34 -0
  34. package/dist/crypto/bip39.js +62 -0
  35. package/dist/crypto/encryption.d.ts +37 -0
  36. package/dist/crypto/encryption.js +46 -0
  37. package/dist/db.d.ts +190 -0
  38. package/dist/db.js +311 -0
  39. package/dist/gossipSdk.d.ts +274 -0
  40. package/dist/gossipSdk.js +690 -0
  41. package/dist/index.d.ts +59 -0
  42. package/dist/index.js +61 -0
  43. package/dist/services/announcement.d.ts +43 -0
  44. package/dist/services/announcement.js +491 -0
  45. package/dist/services/auth.d.ts +37 -0
  46. package/dist/services/auth.js +76 -0
  47. package/dist/services/discussion.d.ts +63 -0
  48. package/dist/services/discussion.js +297 -0
  49. package/dist/services/message.d.ts +74 -0
  50. package/dist/services/message.js +826 -0
  51. package/dist/services/refresh.d.ts +41 -0
  52. package/dist/services/refresh.js +205 -0
  53. package/{src/sw.ts → dist/sw.d.ts} +1 -8
  54. package/dist/sw.js +10 -0
  55. package/dist/types/events.d.ts +80 -0
  56. package/dist/types/events.js +7 -0
  57. package/dist/types.d.ts +32 -0
  58. package/dist/types.js +7 -0
  59. package/dist/utils/base64.d.ts +10 -0
  60. package/dist/utils/base64.js +30 -0
  61. package/dist/utils/contacts.d.ts +42 -0
  62. package/dist/utils/contacts.js +113 -0
  63. package/dist/utils/discussions.d.ts +24 -0
  64. package/dist/utils/discussions.js +38 -0
  65. package/dist/utils/logs.d.ts +19 -0
  66. package/dist/utils/logs.js +89 -0
  67. package/dist/utils/messageSerialization.d.ts +64 -0
  68. package/dist/utils/messageSerialization.js +184 -0
  69. package/dist/utils/queue.d.ts +50 -0
  70. package/dist/utils/queue.js +110 -0
  71. package/dist/utils/type.d.ts +10 -0
  72. package/dist/utils/type.js +4 -0
  73. package/dist/utils/userId.d.ts +40 -0
  74. package/dist/utils/userId.js +90 -0
  75. package/dist/utils/validation.d.ts +50 -0
  76. package/dist/utils/validation.js +112 -0
  77. package/dist/utils.d.ts +30 -0
  78. package/{src/utils.ts → dist/utils.js} +9 -19
  79. package/dist/wasm/encryption.d.ts +56 -0
  80. package/{src/wasm/encryption.ts → dist/wasm/encryption.js} +22 -51
  81. package/dist/wasm/index.d.ts +10 -0
  82. package/{src/wasm/index.ts → dist/wasm/index.js} +1 -8
  83. package/dist/wasm/loader.d.ts +22 -0
  84. package/dist/wasm/loader.js +78 -0
  85. package/dist/wasm/session.d.ts +85 -0
  86. package/dist/wasm/session.js +226 -0
  87. package/dist/wasm/userKeys.d.ts +17 -0
  88. package/{src/wasm/userKeys.ts → dist/wasm/userKeys.js} +6 -13
  89. package/package.json +15 -2
  90. package/src/api/messageProtocol/index.ts +0 -53
  91. package/src/api/messageProtocol/rest.ts +0 -209
  92. package/src/api/messageProtocol/types.ts +0 -70
  93. package/src/config/protocol.ts +0 -97
  94. package/src/config/sdk.ts +0 -131
  95. package/src/core/SdkEventEmitter.ts +0 -91
  96. package/src/core/SdkPolling.ts +0 -134
  97. package/src/crypto/bip39.ts +0 -84
  98. package/src/crypto/encryption.ts +0 -77
  99. package/src/db.ts +0 -465
  100. package/src/gossipSdk.ts +0 -994
  101. package/src/index.ts +0 -211
  102. package/src/services/announcement.ts +0 -653
  103. package/src/services/auth.ts +0 -95
  104. package/src/services/discussion.ts +0 -380
  105. package/src/services/message.ts +0 -1055
  106. package/src/services/refresh.ts +0 -234
  107. package/src/types/events.ts +0 -108
  108. package/src/types.ts +0 -70
  109. package/src/utils/base64.ts +0 -39
  110. package/src/utils/contacts.ts +0 -161
  111. package/src/utils/discussions.ts +0 -55
  112. package/src/utils/logs.ts +0 -86
  113. package/src/utils/messageSerialization.ts +0 -257
  114. package/src/utils/queue.ts +0 -106
  115. package/src/utils/type.ts +0 -7
  116. package/src/utils/userId.ts +0 -114
  117. package/src/utils/validation.ts +0 -144
  118. package/src/wasm/loader.ts +0 -123
  119. package/src/wasm/session.ts +0 -276
  120. package/test/config/protocol.spec.ts +0 -31
  121. package/test/config/sdk.spec.ts +0 -163
  122. package/test/db/helpers.spec.ts +0 -142
  123. package/test/db/operations.spec.ts +0 -128
  124. package/test/db/states.spec.ts +0 -535
  125. package/test/integration/discussion-flow.spec.ts +0 -422
  126. package/test/integration/messaging-flow.spec.ts +0 -708
  127. package/test/integration/sdk-lifecycle.spec.ts +0 -325
  128. package/test/mocks/index.ts +0 -9
  129. package/test/mocks/mockMessageProtocol.ts +0 -100
  130. package/test/services/auth.spec.ts +0 -311
  131. package/test/services/discussion.spec.ts +0 -279
  132. package/test/services/message-deduplication.spec.ts +0 -299
  133. package/test/services/message-startup.spec.ts +0 -331
  134. package/test/services/message.spec.ts +0 -817
  135. package/test/services/refresh.spec.ts +0 -199
  136. package/test/services/session-status.spec.ts +0 -349
  137. package/test/session/wasm.spec.ts +0 -227
  138. package/test/setup.ts +0 -52
  139. package/test/utils/contacts.spec.ts +0 -156
  140. package/test/utils/discussions.spec.ts +0 -66
  141. package/test/utils/queue.spec.ts +0 -52
  142. package/test/utils/serialization.spec.ts +0 -120
  143. package/test/utils/userId.spec.ts +0 -120
  144. package/test/utils/validation.spec.ts +0 -223
  145. package/test/utils.ts +0 -212
  146. package/tsconfig.json +0 -26
  147. package/tsconfig.tsbuildinfo +0 -1
  148. package/vitest.config.ts +0 -28
@@ -1,142 +0,0 @@
1
- /**
2
- * Database helper methods tests
3
- */
4
-
5
- import { describe, it, expect, beforeEach } from 'vitest';
6
- import {
7
- db,
8
- DiscussionDirection,
9
- DiscussionStatus,
10
- MessageDirection,
11
- MessageStatus,
12
- MessageType,
13
- } from '../../src/db';
14
- import { encodeUserId } from '../../src/utils/userId';
15
-
16
- const OWNER_USER_ID = encodeUserId(new Uint8Array(32).fill(6));
17
- const CONTACT_USER_ID = encodeUserId(new Uint8Array(32).fill(7));
18
-
19
- describe('Database helper methods', () => {
20
- beforeEach(async () => {
21
- if (!db.isOpen()) {
22
- await db.open();
23
- }
24
- await Promise.all(db.tables.map(table => table.clear()));
25
- });
26
-
27
- it('returns discussions sorted by last message timestamp', async () => {
28
- await db.discussions.add({
29
- ownerUserId: OWNER_USER_ID,
30
- contactUserId: CONTACT_USER_ID,
31
- direction: DiscussionDirection.INITIATED,
32
- status: DiscussionStatus.ACTIVE,
33
- unreadCount: 0,
34
- lastMessageTimestamp: new Date('2024-01-01'),
35
- createdAt: new Date('2024-01-01'),
36
- updatedAt: new Date('2024-01-01'),
37
- });
38
-
39
- await db.discussions.add({
40
- ownerUserId: OWNER_USER_ID,
41
- contactUserId: encodeUserId(new Uint8Array(32).fill(8)),
42
- direction: DiscussionDirection.INITIATED,
43
- status: DiscussionStatus.ACTIVE,
44
- unreadCount: 0,
45
- lastMessageTimestamp: new Date('2024-02-01'),
46
- createdAt: new Date('2024-02-01'),
47
- updatedAt: new Date('2024-02-01'),
48
- });
49
-
50
- const discussions = await db.getDiscussionsByOwner(OWNER_USER_ID);
51
- expect(discussions[0].lastMessageTimestamp?.toISOString()).toBe(
52
- new Date('2024-02-01').toISOString()
53
- );
54
- });
55
-
56
- it('returns active discussions only', async () => {
57
- await db.discussions.add({
58
- ownerUserId: OWNER_USER_ID,
59
- contactUserId: CONTACT_USER_ID,
60
- direction: DiscussionDirection.INITIATED,
61
- status: DiscussionStatus.ACTIVE,
62
- unreadCount: 0,
63
- createdAt: new Date(),
64
- updatedAt: new Date(),
65
- });
66
-
67
- await db.discussions.add({
68
- ownerUserId: OWNER_USER_ID,
69
- contactUserId: encodeUserId(new Uint8Array(32).fill(9)),
70
- direction: DiscussionDirection.RECEIVED,
71
- status: DiscussionStatus.PENDING,
72
- unreadCount: 0,
73
- createdAt: new Date(),
74
- updatedAt: new Date(),
75
- });
76
-
77
- const active = await db.getActiveDiscussionsByOwner(OWNER_USER_ID);
78
- expect(active.length).toBe(1);
79
- expect(active[0].status).toBe(DiscussionStatus.ACTIVE);
80
- });
81
-
82
- it('aggregates unread counts across discussions', async () => {
83
- await db.discussions.add({
84
- ownerUserId: OWNER_USER_ID,
85
- contactUserId: CONTACT_USER_ID,
86
- direction: DiscussionDirection.INITIATED,
87
- status: DiscussionStatus.ACTIVE,
88
- unreadCount: 2,
89
- createdAt: new Date(),
90
- updatedAt: new Date(),
91
- });
92
-
93
- await db.discussions.add({
94
- ownerUserId: OWNER_USER_ID,
95
- contactUserId: encodeUserId(new Uint8Array(32).fill(10)),
96
- direction: DiscussionDirection.RECEIVED,
97
- status: DiscussionStatus.ACTIVE,
98
- unreadCount: 3,
99
- createdAt: new Date(),
100
- updatedAt: new Date(),
101
- });
102
-
103
- const unread = await db.getUnreadCountByOwner(OWNER_USER_ID);
104
- expect(unread).toBe(5);
105
- });
106
-
107
- it('marks delivered incoming messages as read', async () => {
108
- await db.discussions.add({
109
- ownerUserId: OWNER_USER_ID,
110
- contactUserId: CONTACT_USER_ID,
111
- direction: DiscussionDirection.INITIATED,
112
- status: DiscussionStatus.ACTIVE,
113
- unreadCount: 1,
114
- createdAt: new Date(),
115
- updatedAt: new Date(),
116
- });
117
-
118
- await db.messages.add({
119
- ownerUserId: OWNER_USER_ID,
120
- contactUserId: CONTACT_USER_ID,
121
- content: 'Hello',
122
- type: MessageType.TEXT,
123
- direction: MessageDirection.INCOMING,
124
- status: MessageStatus.DELIVERED,
125
- timestamp: new Date(),
126
- });
127
-
128
- await db.markMessagesAsRead(OWNER_USER_ID, CONTACT_USER_ID);
129
-
130
- const messages = await db.messages
131
- .where('[ownerUserId+contactUserId+status]')
132
- .equals([OWNER_USER_ID, CONTACT_USER_ID, MessageStatus.READ])
133
- .toArray();
134
- expect(messages.length).toBe(1);
135
-
136
- const discussion = await db.getDiscussionByOwnerAndContact(
137
- OWNER_USER_ID,
138
- CONTACT_USER_ID
139
- );
140
- expect(discussion?.unreadCount).toBe(0);
141
- });
142
- });
@@ -1,128 +0,0 @@
1
- /**
2
- * Database operations tests
3
- */
4
-
5
- import { describe, it, expect, beforeEach, afterAll } from 'vitest';
6
- import {
7
- GossipDatabase,
8
- DiscussionStatus,
9
- DiscussionDirection,
10
- MessageDirection,
11
- MessageStatus,
12
- MessageType,
13
- } from '../../src/db';
14
-
15
- const TEST_OWNER_USER_ID = 'gossip1testowner';
16
- const TEST_CONTACT_USER_ID = 'gossip1testcontact';
17
-
18
- const testDb = new GossipDatabase();
19
-
20
- describe('Simple Database Tests', () => {
21
- beforeEach(async () => {
22
- if (!testDb.isOpen()) {
23
- await testDb.open();
24
- }
25
- await testDb.discussions.clear();
26
- await testDb.messages.clear();
27
- await testDb.contacts.clear();
28
- await testDb.pendingAnnouncements.clear();
29
- });
30
-
31
- afterAll(async () => {
32
- await testDb.close();
33
- });
34
-
35
- it('should create and retrieve a discussion', async () => {
36
- const discussionId = await testDb.discussions.add({
37
- ownerUserId: TEST_OWNER_USER_ID,
38
- contactUserId: TEST_CONTACT_USER_ID,
39
- direction: DiscussionDirection.INITIATED,
40
- status: DiscussionStatus.PENDING,
41
- unreadCount: 0,
42
- createdAt: new Date(),
43
- updatedAt: new Date(),
44
- });
45
-
46
- const discussion = await testDb.discussions.get(discussionId);
47
- expect(discussion?.direction).toBe(DiscussionDirection.INITIATED);
48
- expect(discussion?.status).toBe(DiscussionStatus.PENDING);
49
- });
50
-
51
- it('should update discussion status', async () => {
52
- const discussionId = await testDb.discussions.add({
53
- ownerUserId: TEST_OWNER_USER_ID,
54
- contactUserId: TEST_CONTACT_USER_ID,
55
- direction: DiscussionDirection.INITIATED,
56
- status: DiscussionStatus.PENDING,
57
- unreadCount: 0,
58
- createdAt: new Date(),
59
- updatedAt: new Date(),
60
- });
61
-
62
- await testDb.discussions.update(discussionId, {
63
- status: DiscussionStatus.ACTIVE,
64
- });
65
-
66
- const discussion = await testDb.discussions.get(discussionId);
67
- expect(discussion?.status).toBe(DiscussionStatus.ACTIVE);
68
- });
69
-
70
- it('should create and retrieve a message', async () => {
71
- const messageId = await testDb.messages.add({
72
- ownerUserId: TEST_OWNER_USER_ID,
73
- contactUserId: TEST_CONTACT_USER_ID,
74
- content: 'Test message',
75
- type: MessageType.TEXT,
76
- direction: MessageDirection.OUTGOING,
77
- status: MessageStatus.SENDING,
78
- timestamp: new Date(),
79
- });
80
-
81
- const message = await testDb.messages.get(messageId);
82
- expect(message?.content).toBe('Test message');
83
- expect(message?.status).toBe(MessageStatus.SENDING);
84
- });
85
-
86
- it('should reset SENDING messages to FAILED', async () => {
87
- await testDb.messages.add({
88
- ownerUserId: TEST_OWNER_USER_ID,
89
- contactUserId: TEST_CONTACT_USER_ID,
90
- content: 'Stuck message',
91
- type: MessageType.TEXT,
92
- direction: MessageDirection.OUTGOING,
93
- status: MessageStatus.SENDING,
94
- timestamp: new Date(),
95
- });
96
-
97
- const count = await testDb.messages
98
- .where('status')
99
- .equals(MessageStatus.SENDING)
100
- .modify({ status: MessageStatus.FAILED });
101
-
102
- expect(count).toBe(1);
103
-
104
- const messages = await testDb.messages
105
- .where('status')
106
- .equals(MessageStatus.FAILED)
107
- .toArray();
108
- expect(messages.length).toBe(1);
109
- });
110
-
111
- it('should store announcement bytes for retry', async () => {
112
- const announcement = new Uint8Array([1, 2, 3, 4, 5]);
113
- const discussionId = await testDb.discussions.add({
114
- ownerUserId: TEST_OWNER_USER_ID,
115
- contactUserId: TEST_CONTACT_USER_ID,
116
- direction: DiscussionDirection.INITIATED,
117
- status: DiscussionStatus.SEND_FAILED,
118
- initiationAnnouncement: announcement,
119
- unreadCount: 0,
120
- createdAt: new Date(),
121
- updatedAt: new Date(),
122
- });
123
-
124
- const discussion = await testDb.discussions.get(discussionId);
125
- expect(discussion?.initiationAnnouncement).toBeDefined();
126
- expect(discussion?.initiationAnnouncement?.length).toBe(5);
127
- });
128
- });