fb-messenger-e2ee 0.1.1 → 0.1.3

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 (111) hide show
  1. package/DOCS.md +41 -3
  2. package/README.md +27 -2
  3. package/dist/index.cjs +9017 -0
  4. package/dist/index.cjs.map +1 -0
  5. package/dist/index.d.cts +910 -0
  6. package/dist/index.d.ts +910 -0
  7. package/dist/index.js +9049 -0
  8. package/dist/index.js.map +1 -0
  9. package/package.json +19 -4
  10. package/bun.lock +0 -1014
  11. package/examples/basic-usage.ts +0 -52
  12. package/jest.config.ts +0 -18
  13. package/src/config/env.ts +0 -15
  14. package/src/controllers/client.controller.ts +0 -805
  15. package/src/controllers/dgw-handler.ts +0 -171
  16. package/src/controllers/e2ee-handler.ts +0 -832
  17. package/src/controllers/event-mapper.ts +0 -327
  18. package/src/core/client.ts +0 -151
  19. package/src/e2ee/application/e2ee-client.ts +0 -376
  20. package/src/e2ee/application/fanout-planner.ts +0 -79
  21. package/src/e2ee/application/outbound-message-cache.ts +0 -58
  22. package/src/e2ee/application/prekey-maintenance.ts +0 -55
  23. package/src/e2ee/application/retry-manager.ts +0 -156
  24. package/src/e2ee/facebook/facebook-protocol-utils.ts +0 -230
  25. package/src/e2ee/facebook/icdc-payload.ts +0 -31
  26. package/src/e2ee/index.ts +0 -76
  27. package/src/e2ee/internal.ts +0 -27
  28. package/src/e2ee/media/media-crypto.ts +0 -147
  29. package/src/e2ee/media/media-upload.ts +0 -90
  30. package/src/e2ee/message/builders/client-payload.ts +0 -54
  31. package/src/e2ee/message/builders/consumer-application.ts +0 -362
  32. package/src/e2ee/message/builders/message-application.ts +0 -64
  33. package/src/e2ee/message/builders/message-transport.ts +0 -84
  34. package/src/e2ee/message/codecs/protobuf-codecs.ts +0 -101
  35. package/src/e2ee/message/constants.ts +0 -4
  36. package/src/e2ee/message/message-builder.ts +0 -15
  37. package/src/e2ee/signal/prekey-manager.ts +0 -140
  38. package/src/e2ee/signal/signal-manager.ts +0 -365
  39. package/src/e2ee/store/device-json.ts +0 -47
  40. package/src/e2ee/store/device-repository.ts +0 -12
  41. package/src/e2ee/store/device-store.ts +0 -538
  42. package/src/e2ee/transport/binary/decoder.ts +0 -180
  43. package/src/e2ee/transport/binary/encoder.ts +0 -143
  44. package/src/e2ee/transport/binary/stanzas.ts +0 -97
  45. package/src/e2ee/transport/binary/tokens.ts +0 -64
  46. package/src/e2ee/transport/binary/wa-binary.ts +0 -8
  47. package/src/e2ee/transport/dgw/dgw-socket.ts +0 -345
  48. package/src/e2ee/transport/noise/noise-handshake.ts +0 -417
  49. package/src/e2ee/transport/noise/noise-socket.ts +0 -230
  50. package/src/index.ts +0 -34
  51. package/src/models/client.ts +0 -26
  52. package/src/models/config.ts +0 -14
  53. package/src/models/domain.ts +0 -299
  54. package/src/models/e2ee.ts +0 -295
  55. package/src/models/media.ts +0 -41
  56. package/src/models/messaging.ts +0 -88
  57. package/src/models/thread.ts +0 -69
  58. package/src/repositories/session.repository.ts +0 -20
  59. package/src/services/auth.service.ts +0 -55
  60. package/src/services/e2ee.service.ts +0 -174
  61. package/src/services/facebook-gateway.service.ts +0 -245
  62. package/src/services/icdc.service.ts +0 -177
  63. package/src/services/media.service.ts +0 -304
  64. package/src/services/messaging.service.ts +0 -28
  65. package/src/services/thread.service.ts +0 -199
  66. package/src/types/advanced-types.ts +0 -61
  67. package/src/types/fca-unofficial.d.ts +0 -212
  68. package/src/types/protocol-types.ts +0 -43
  69. package/src/utils/fca-utils.ts +0 -30
  70. package/src/utils/logger.ts +0 -24
  71. package/src/utils/mime.ts +0 -51
  72. package/tests/.env.example +0 -87
  73. package/tests/data/1x1.png +0 -0
  74. package/tests/data/example.txt +0 -1
  75. package/tests/data/file_example.mp3 +0 -0
  76. package/tests/data/file_example.mp4 +0 -0
  77. package/tests/integration.test.ts +0 -498
  78. package/tests/script/echo-e2ee.ts +0 -174
  79. package/tests/script/send-e2ee-media.ts +0 -227
  80. package/tests/script/send-e2ee-reaction.ts +0 -108
  81. package/tests/script/send-e2ee-unsend.ts +0 -115
  82. package/tests/script/send-typing.ts +0 -107
  83. package/tests/script/test-group-send.ts +0 -105
  84. package/tests/setup.ts +0 -3
  85. package/tests/types.test.ts +0 -57
  86. package/tests/unit/controllers/dgw-handler.test.ts +0 -60
  87. package/tests/unit/controllers/e2ee-handler.test.ts +0 -293
  88. package/tests/unit/controllers/event-mapper.test.ts +0 -252
  89. package/tests/unit/e2ee/application-helpers.test.ts +0 -418
  90. package/tests/unit/e2ee/device-store.test.ts +0 -126
  91. package/tests/unit/e2ee/facebook-protocol-utils.test.ts +0 -134
  92. package/tests/unit/e2ee/media-crypto.test.ts +0 -55
  93. package/tests/unit/e2ee/media-upload.test.ts +0 -60
  94. package/tests/unit/e2ee/message-builder.test.ts +0 -42
  95. package/tests/unit/e2ee/message-builders.test.ts +0 -230
  96. package/tests/unit/e2ee/noise-handshake.test.ts +0 -260
  97. package/tests/unit/e2ee/prekey-manager.test.ts +0 -55
  98. package/tests/unit/e2ee/wa-binary.test.ts +0 -127
  99. package/tests/unit/services/e2ee.service.test.ts +0 -101
  100. package/tests/unit/services/facebook-gateway.service.test.ts +0 -138
  101. package/tests/unit/services/media.service.test.ts +0 -169
  102. package/tests/unit/utils/fca-utils.test.ts +0 -48
  103. package/tsconfig.json +0 -19
  104. /package/{src/e2ee/message/proto → proto}/ArmadilloApplication.proto +0 -0
  105. /package/{src/e2ee/message/proto → proto}/ArmadilloICDC.proto +0 -0
  106. /package/{src/e2ee/message/proto → proto}/ConsumerApplication.proto +0 -0
  107. /package/{src/e2ee/message/proto → proto}/MessageApplication.proto +0 -0
  108. /package/{src/e2ee/message/proto → proto}/MessageTransport.proto +0 -0
  109. /package/{src/e2ee/message/proto → proto}/WACommon.proto +0 -0
  110. /package/{src/e2ee/message/proto → proto}/WAMediaTransport.proto +0 -0
  111. /package/{src/e2ee/message/proto → proto}/proto-writer.ts +0 -0
package/DOCS.md CHANGED
@@ -144,14 +144,52 @@ await client.sendReaction({
144
144
  });
145
145
  ```
146
146
 
147
- ### `unsendMessage(messageId: string, threadId?: string)`
147
+ ### `unsendMessage(input: UnsendMessageInput)`
148
148
 
149
- Un-sends/revokes an E2EE message you previously sent. Pass `threadId` unless the original send result is still in the short outbound cache.
149
+ Un-sends/revokes an E2EE message you previously sent.
150
+ You must provide the exact `messageId`.
151
+ Providing the `threadId` is highly recommended to ensure the E2EE client knows the destination JID.
150
152
 
151
153
  ```typescript
152
- await client.unsendMessage(sent.messageId, "1234567890.0@msgr");
154
+ await client.unsendMessage({
155
+ messageId: sent.messageId,
156
+ threadId: "1234567890.0@msgr"
157
+ });
153
158
  ```
154
159
 
160
+ **UnsendMessageInput**
161
+
162
+ | Field | Type | Description |
163
+ |---|---|---|
164
+ | `messageId` | `string` | The message ID to revoke. |
165
+ | `threadId` | `string` | Optional but highly recommended target thread identifier. |
166
+ | `fromMe` | `boolean` | Optional flag indicating if the message was sent by you (defaults to `true`). |
167
+
168
+ ### `editMessage(input: E2EEEditMessageInput)`
169
+
170
+ Edits the text of an E2EE message you previously sent.
171
+ You must provide the exact `messageId` (the 15-digit numeric ID returned by `sendMessage`) and the `threadId`.
172
+
173
+ ```typescript
174
+ const sent = await client.sendMessage({ threadId: "1234567890.0@msgr", text: "oops" });
175
+ const messageId = sent.messageId as string;
176
+
177
+ // ... a few seconds later
178
+ await client.editMessage({
179
+ threadId: "1234567890.0@msgr",
180
+ messageId,
181
+ newText: "corrected message",
182
+ });
183
+ ```
184
+
185
+ **E2EEEditMessageInput**
186
+
187
+ | Field | Type | Description |
188
+ |---|---|---|
189
+ | `threadId` | `string` | The thread ID (E2EE chat JID) containing the message. |
190
+ | `messageId` | `string` | The message ID to edit. |
191
+ | `newText` | `string` | The replacement text content. |
192
+
155
193
  ### `sendTyping(input: TypingInput)`
156
194
 
157
195
  Sends E2EE chatstate (`composing` / `paused`) over the Noise socket.
package/README.md CHANGED
@@ -28,7 +28,7 @@
28
28
  - **Language**: [TypeScript](https://www.typescriptlang.org/)
29
29
  - **Encryption**: [@signalapp/libsignal-client](https://github.com/signalapp/libsignal-client)
30
30
  - **Protocol**: ProtobufJS + manual WA-binary/protobuf encoders
31
- - **Auth bootstrap bridge**: [fca-unofficial](https://github.com/VangBanLaNhat/fca-unofficial) is used internally only for appState login/CAT bootstrap; use it directly for non-E2EE messaging.
31
+ - **Auth bootstrap bridge**: [fca-unofficial](https://github.com/VangBanLaNhat/fca-unofficial) is used internally only for appState login/CAT bootstrap
32
32
 
33
33
  ---
34
34
 
@@ -44,6 +44,18 @@ bun add fb-messenger-e2ee
44
44
 
45
45
  ### 2. Basic Usage
46
46
 
47
+
48
+ #### ESM (TypeScript / Modern Node.js)
49
+ ```typescript
50
+ import { FBClient } from "fb-messenger-e2ee";
51
+ ```
52
+
53
+ #### CommonJS (Legacy Node.js)
54
+ ```javascript
55
+ const { FBClient } = require("fb-messenger-e2ee");
56
+ ```
57
+
58
+ #### Example
47
59
  ```typescript
48
60
  import { FBClient } from "fb-messenger-e2ee";
49
61
 
@@ -130,10 +142,23 @@ src/
130
142
 
131
143
  ---
132
144
 
133
- ## Testing
145
+ ## Build & Development
134
146
 
147
+ ### Build
148
+ Generate ESM and CommonJS bundles in the `dist/` directory:
149
+ ```bash
150
+ npm run build
151
+ # or
152
+ bun run build
153
+ ```
154
+
155
+ ### Type Check
135
156
  ```bash
136
157
  npm run typecheck
158
+ ```
159
+
160
+ ### Testing
161
+ ```bash
137
162
  npm test -- --runInBand
138
163
  ```
139
164