signal-sdk 0.1.2 → 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 (53) hide show
  1. package/README.md +18 -8
  2. package/dist/MultiAccountManager.js +11 -19
  3. package/dist/SignalBot.js +40 -36
  4. package/dist/SignalCli.d.ts +23 -319
  5. package/dist/SignalCli.js +224 -998
  6. package/dist/__tests__/DeviceManager.test.d.ts +1 -0
  7. package/dist/__tests__/DeviceManager.test.js +135 -0
  8. package/dist/__tests__/MultiAccountManager.coverage.test.d.ts +1 -0
  9. package/dist/__tests__/MultiAccountManager.coverage.test.js +33 -0
  10. package/dist/__tests__/MultiAccountManager.test.js +3 -3
  11. package/dist/__tests__/SignalBot.additional.test.js +40 -37
  12. package/dist/__tests__/SignalBot.coverage.test.d.ts +1 -0
  13. package/dist/__tests__/SignalBot.coverage.test.js +385 -0
  14. package/dist/__tests__/SignalBot.test.js +8 -8
  15. package/dist/__tests__/SignalCli.advanced.test.js +47 -58
  16. package/dist/__tests__/SignalCli.connections.test.d.ts +1 -0
  17. package/dist/__tests__/SignalCli.connections.test.js +110 -0
  18. package/dist/__tests__/SignalCli.e2e.test.js +28 -32
  19. package/dist/__tests__/SignalCli.events.test.d.ts +1 -0
  20. package/dist/__tests__/SignalCli.events.test.js +113 -0
  21. package/dist/__tests__/SignalCli.integration.test.js +6 -5
  22. package/dist/__tests__/SignalCli.methods.test.js +77 -77
  23. package/dist/__tests__/SignalCli.parsing.test.js +4 -13
  24. package/dist/__tests__/SignalCli.simple.test.d.ts +1 -0
  25. package/dist/__tests__/SignalCli.simple.test.js +77 -0
  26. package/dist/__tests__/SignalCli.test.js +96 -82
  27. package/dist/__tests__/config.test.js +19 -29
  28. package/dist/__tests__/errors.test.js +2 -2
  29. package/dist/__tests__/retry.test.js +10 -8
  30. package/dist/__tests__/robustness.test.d.ts +1 -0
  31. package/dist/__tests__/robustness.test.js +59 -0
  32. package/dist/__tests__/security.test.d.ts +1 -0
  33. package/dist/__tests__/security.test.js +50 -0
  34. package/dist/config.js +3 -3
  35. package/dist/interfaces.d.ts +18 -0
  36. package/dist/managers/AccountManager.d.ts +27 -0
  37. package/dist/managers/AccountManager.js +147 -0
  38. package/dist/managers/BaseManager.d.ts +9 -0
  39. package/dist/managers/BaseManager.js +17 -0
  40. package/dist/managers/ContactManager.d.ts +15 -0
  41. package/dist/managers/ContactManager.js +123 -0
  42. package/dist/managers/DeviceManager.d.ts +11 -0
  43. package/dist/managers/DeviceManager.js +139 -0
  44. package/dist/managers/GroupManager.d.ts +12 -0
  45. package/dist/managers/GroupManager.js +78 -0
  46. package/dist/managers/MessageManager.d.ts +18 -0
  47. package/dist/managers/MessageManager.js +301 -0
  48. package/dist/managers/StickerManager.d.ts +8 -0
  49. package/dist/managers/StickerManager.js +39 -0
  50. package/dist/retry.js +3 -3
  51. package/dist/validators.d.ts +9 -0
  52. package/dist/validators.js +20 -0
  53. package/package.json +11 -4
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const SignalCli_1 = require("../SignalCli");
4
+ // Mock dependencies
5
+ jest.mock('child_process');
6
+ jest.mock('../config', () => ({
7
+ Logger: jest.fn().mockImplementation(() => ({
8
+ debug: jest.fn(),
9
+ info: jest.fn(),
10
+ warn: jest.fn(),
11
+ error: jest.fn(),
12
+ })),
13
+ validateConfig: jest.fn().mockReturnValue({
14
+ verbose: false,
15
+ }),
16
+ }));
17
+ describe('SignalCli - Advanced Events', () => {
18
+ let signalCli;
19
+ const mockAccount = '+1234567890';
20
+ beforeEach(() => {
21
+ jest.clearAllMocks();
22
+ signalCli = new SignalCli_1.SignalCli(mockAccount);
23
+ });
24
+ it('should emit "reaction" event when receiving a reaction', (done) => {
25
+ const reactionPayload = {
26
+ jsonrpc: '2.0',
27
+ method: 'receive',
28
+ params: {
29
+ envelope: {
30
+ source: '+1111111111',
31
+ timestamp: 1600000000000,
32
+ dataMessage: {
33
+ reaction: {
34
+ emoji: '👍',
35
+ targetAuthor: '+1234567890',
36
+ targetSentTimestamp: 1599999999999,
37
+ isRemove: false,
38
+ },
39
+ },
40
+ },
41
+ },
42
+ };
43
+ signalCli.on('reaction', (event) => {
44
+ try {
45
+ expect(event.emoji).toBe('👍');
46
+ expect(event.sender).toBe('+1111111111');
47
+ expect(event.targetTimestamp).toBe(1599999999999);
48
+ done();
49
+ }
50
+ catch (error) {
51
+ done(error);
52
+ }
53
+ });
54
+ // Simulate incoming data
55
+ signalCli.handleRpcResponse(JSON.stringify(reactionPayload));
56
+ });
57
+ it('should emit "receipt" event when receiving a receipt', (done) => {
58
+ const receiptPayload = {
59
+ jsonrpc: '2.0',
60
+ method: 'receive',
61
+ params: {
62
+ envelope: {
63
+ source: '+2222222222',
64
+ timestamp: 1600000000000,
65
+ receiptMessage: {
66
+ type: 'READ',
67
+ timestamps: [1599999999999],
68
+ when: 1600000000000,
69
+ },
70
+ },
71
+ },
72
+ };
73
+ signalCli.on('receipt', (event) => {
74
+ try {
75
+ expect(event.type).toBe('READ');
76
+ expect(event.sender).toBe('+2222222222');
77
+ expect(event.timestamps).toContain(1599999999999);
78
+ done();
79
+ }
80
+ catch (error) {
81
+ done(error);
82
+ }
83
+ });
84
+ signalCli.handleRpcResponse(JSON.stringify(receiptPayload));
85
+ });
86
+ it('should emit "typing" event when receiving typing indicator', (done) => {
87
+ const typingPayload = {
88
+ jsonrpc: '2.0',
89
+ method: 'receive',
90
+ params: {
91
+ envelope: {
92
+ source: '+3333333333',
93
+ timestamp: 1600000000000,
94
+ typingMessage: {
95
+ action: 'STARTED',
96
+ groupId: null,
97
+ },
98
+ },
99
+ },
100
+ };
101
+ signalCli.on('typing', (event) => {
102
+ try {
103
+ expect(event.action).toBe('STARTED');
104
+ expect(event.sender).toBe('+3333333333');
105
+ done();
106
+ }
107
+ catch (error) {
108
+ done(error);
109
+ }
110
+ });
111
+ signalCli.handleRpcResponse(JSON.stringify(typingPayload));
112
+ });
113
+ });
@@ -121,7 +121,7 @@ describe('SignalCli Integration Tests', () => {
121
121
  signalCli.on('error', errorHandler);
122
122
  handleRpcResponse('not valid json');
123
123
  expect(errorHandler).toHaveBeenCalledWith(expect.objectContaining({
124
- message: expect.stringContaining('Failed to parse JSON-RPC response')
124
+ message: expect.stringContaining('Failed to parse JSON-RPC response'),
125
125
  }));
126
126
  });
127
127
  it('should emit notifications correctly', () => {
@@ -191,15 +191,16 @@ describe('SignalCli Integration Tests', () => {
191
191
  jest.spyOn(signalCli, 'sendJsonRpcRequest').mockResolvedValue({});
192
192
  });
193
193
  it('should handle group message with options', async () => {
194
- const sendJsonRpcRequestSpy = jest.spyOn(signalCli, 'sendJsonRpcRequest')
194
+ const sendJsonRpcRequestSpy = jest
195
+ .spyOn(signalCli, 'sendJsonRpcRequest')
195
196
  .mockResolvedValue({ results: [{ type: 'SUCCESS' }], timestamp: 123456 });
196
197
  await signalCli.sendMessage('groupId==', 'Group message', {
197
- mentions: [{ start: 0, length: 4, number: '+1111111111' }]
198
+ mentions: [{ start: 0, length: 4, number: '+1111111111' }],
198
199
  });
199
200
  expect(sendJsonRpcRequestSpy).toHaveBeenCalled();
200
201
  expect(sendJsonRpcRequestSpy).toHaveBeenCalledWith('send', expect.objectContaining({
201
202
  message: 'Group message',
202
- groupId: 'groupId=='
203
+ groupId: 'groupId==',
203
204
  }));
204
205
  });
205
206
  });
@@ -218,7 +219,7 @@ describe('SignalCli Integration Tests', () => {
218
219
  const errorResponse = '{"jsonrpc":"2.0","id":"error-id","error":{"code":-32600,"message":"Invalid Request"}}';
219
220
  handleRpcResponse(errorResponse);
220
221
  expect(mockPromise.reject).toHaveBeenCalledWith(expect.objectContaining({
221
- message: expect.stringContaining('Invalid Request')
222
+ message: expect.stringContaining('Invalid Request'),
222
223
  }));
223
224
  });
224
225
  });