Commit Graph

58 Commits

Author SHA1 Message Date
Rajeh Taher b62cb40a70 chore: lint 2026-01-18 17:16:28 +02:00
Rajeh Taher a7a53ad815 auth-utils: release transaction mutex after references are 0 (#2153) 2025-12-12 04:36:47 +02:00
Rajeh Taher 50d410d117 chore: lint 2025-11-19 16:25:56 +02:00
Cassio Santos 5c456e514e fix: cannot send message on new Whatsapp Business limited accounts (#2080)
* fix: cannot send message on new Whatsapp Business limited accounts

* chore: add woraround to resend the message on 475 errors

* fix: lint

* fix: add handler

* fix: lint

* Update src/Socket/messages-send.ts

---------

Co-authored-by: Rajeh Taher <rajeh@reforward.dev>
2025-11-19 15:18:19 +02:00
Rajeh Taher ccecdbfc9c creds: add support for additional data 2025-10-08 22:37:21 +03:00
João Lucas de Oliveira Lopes 051b5fc220 perf(addTransactionCapability): streamline transaction handling and improve concurrency control (#1887) 2025-10-08 22:14:58 +03:00
João Lucas de Oliveira Lopes 55f09e8c84 fix(auth): resolve concurrency bottleneck causing connection timeouts (#1858) 2025-10-03 07:27:27 +03:00
Rajeh Taher 1060f44bff auth-utils: Make a better addTransactionCapability function 2025-10-03 00:03:21 +03:00
Rajeh Taher e965385841 utils: update exports 2025-09-26 05:52:53 +03:00
Henrique Dias ae0efa54d5 fix makeCacheableSignalKeyStore await cache get (#1817)
Co-authored-by: Henrique Dias <dias.dsn.cir@alterdata.com.br>
2025-09-26 04:46:30 +03:00
Martín Schere 8029446511 Async + Multi Cache (#1741)
* fix: handle invalid signatureKeyPublic types in sender-key-state

- added extra check to ensure signatureKeyPublic is either a base64 string or a Buffer
- fallback to empty buffer when unexpected object type is received
- prevents ERR_INVALID_ARG_TYPE error in Buffer.from

* adjusted based on  @jlucaso1 recommmendation

* fix: handle chain key objects for skmsg group message decryption

previously, some sender chain keys were stored or retrieved as plain objects
(e.g. { '0': 85, '1': 100, ... }) instead of Buffers. this caused
"ERR_INVALID_ARG_TYPE" during initial decryption of skmsg group messages.

this fixes any chain key object is converted to a proper Buffer
before being passed to SenderChainKey.

* fix: add more robust checks and fallbacks

* feat: async cache

feat: async caching

* fix: linting issues

* fix: mget logic

---------

Co-authored-by: αѕтяσχ11 <devastro0010@gmail.com>
2025-09-14 17:13:11 +03:00
Paulo Victor Lund f83a1c2aff Add mutex-based transaction safety to Signal key store (re-reworked) (#1697)
* mutex reimplementation

* lint

* lint

* lint fix

* Add cleanup for expired sender key mutexes

Introduces a mechanism to periodically clean up unused sender key mutexes in addTransactionCapability, reducing memory usage by removing mutexes that have not been used for over an hour and are not locked. A timer is started when the first mutex is created, and cleanup runs every 30 minutes.

* Update auth-utils.ts

* Refactor Signal key transaction usage

Introduces a local variable for parsed Signal keys in libsignal.ts to avoid repeated type assertions and improve code clarity.

* Refactor transaction handling for key operations

Introduces per-entity mutexes and passes key identifiers to transaction calls for finer-grained concurrency control in Signal key storage and socket operations. Updates transaction signatures and usage across Signal, Socket, and Utils modules to improve atomicity and performance, especially for system and sync messages.

* Improve SignalKeyStore transaction handling

Refactored transaction logic in SignalKeyStore to add commit retries, cleanup of transaction state, and improved mutex management for sender keys. Enhanced validation and batching for pre-key deletions and updates, improving concurrency and reliability.

* Replace custom mutex cleanup with LRU cache

Switched from manual mutex cleanup logic to using the lru-cache package for managing mutexes in addTransactionCapability. This simplifies resource management and ensures expired mutexes are automatically purged. Added lru-cache as a dependency.

* Lint fix

* Update src/Signal/libsignal.ts

* Update libsignal.ts

---------

Co-authored-by: João Lucas <jlucaso@hotmail.com>
Co-authored-by: Rajeh Taher <rajeh@reforward.dev>
2025-09-07 20:22:47 +03:00
Rajeh Taher 29f0ac83f8 tsc: fix builds & fix type errors 2025-07-19 17:16:07 +03:00
Rajeh Taher 787aed88b8 project: Move to ESM Modules 2025-07-17 13:54:17 +03:00
canove fa706d0b50 chore: format everything 2025-05-06 12:10:19 -03:00
AstroX11 ae5a7d14c3 fix: makeCacheableSignalKeyStore logger optional (#1332) 2025-04-09 02:52:20 +03:00
Rajeh Taher 99142aac96 proto: update manually to 2.3000.1020608496 2025-03-06 04:22:17 +02:00
contato.mateusfr@gmail.com 21f8431e61 Dependency Inversion for Logger (#1153)
* feat: interface "ILogger" created
feat: interface "ILogger" used instead of pino logger
feat: "PinoLoggerAdapter" created to implement "ILogger" interface

* feat: PinoLoggerAdapter removed
feat: ILogger mapping the features we're using from pino

* fix: sort imports

---------

Co-authored-by: Mateus Franchini de Freitas <contato.mateusfr@outlook.com>
Co-authored-by: Mateus Franchini de Freitas <mfranchini@domtec.com.br>
Co-authored-by: Rajeh Taher <rajeh@reforward.dev>
2025-03-01 18:30:51 +02:00
Rajeh Taher 49eeb7556d socket,utils: fix imports 2025-03-01 18:26:20 +02:00
Jared Wray 588de6ce10 fix: migrating to @cacheable/node-cache as it is maintained (#1074) 2025-03-01 18:15:49 +02:00
Rajeh Taher 18ac07df8e lint: 0 warnings left 2024-10-14 05:15:10 +03:00
Rajeh Taher 61a0ff3178 mobile: deprecation. 2024-10-14 03:56:32 +03:00
Bob b8900639e9 update uuid to v10 (#847)
* Update auth-utils.ts

* uuid removed from package.json

* fix(uuid): update to v10

---------

Co-authored-by: Rajeh Taher <rajeh@reforward.dev>
2024-06-09 22:10:27 +03:00
Rajeh Taher 0eaa5af909 feat(add-routing-info): initial commit (#773) 2024-05-15 18:34:37 +03:00
Rajeh Taher fbbb511fb8 fix(master): error in init queries 2024-05-06 18:18:15 +03:00
Alessandro Autiero c506182035 Finished requestPairingCode 2023-07-16 20:14:17 +02:00
Alessandro Autiero f498e1e56c Added requestPairingCode method and handler
Fixed typo (trimUndefineds)
Added bytesToCrockford
Replaced advSecretKey with advKeyPair
Added pairingCode prop
Fixed formatting
Added pairing code example
2023-07-16 18:44:17 +02:00
SamuelScheit 65aa4a7d99 unify web + mobile and use tcp socket 2023-04-30 12:30:30 +02:00
Andres Aya 4a2db5a033 fix: auth store transactions + tests 2023-04-30 12:30:30 +02:00
Andres Aya fdbd732205 refactor: store w transaction 2023-04-30 12:30:30 +02:00
SamuelScheit ef673f62ca feat: native-mobile-api 2023-04-20 13:01:11 +02:00
Adhiraj Singh 6bced98128 fix: tsc error 2023-03-18 17:40:43 +05:30
Adhiraj Singh e58d6c9f25 chore: default delete keys on expire 2023-02-28 11:23:17 +05:30
Adhiraj Singh 79aa2e5176 feat: narrower definition of cachestore 2023-02-21 11:56:27 +05:30
Adhiraj Singh 971ce91ffd refactor: use NodeCache arg in cacheable signal store 2023-02-21 11:44:29 +05:30
Adhiraj Singh 7736114fab chore: remove pre-fetch from transaction store 2022-10-09 12:19:33 +05:30
Adhiraj Singh 6735263696 feat: add makeCacheableSignalKeyStore util 2022-09-20 12:16:05 +05:30
Adhiraj Singh c76c2afa0c feat: add "receivedInitialSync" connection update 2022-08-19 10:48:27 +05:30
Adhiraj Singh 40a1e268aa feat: add "strictNullChecks" 2022-07-09 10:20:07 +05:30
Adhiraj Singh ecd8f74800 chore: logging in transaction 2022-06-16 14:47:57 +05:30
Adhiraj Singh 5305730d82 feat: track history being stored
This is done because sometimes we receive history after the first connect too, and to ensure the "isLatest" flag is accurate -- we ensure no history was received previously
2022-06-07 21:18:51 +05:30
Adhiraj Singh 6f48bbb736 chore: make transaction logs trace 2022-06-05 13:59:51 +05:30
Adhiraj Singh 06437e182d feat: add "multi file auth state" implementation
1. add multi file auth state since it's far more efficient than single state
2. deprecate single file auth state (please don't use it anymore)
2022-05-22 21:21:35 +05:30
Adhiraj Singh a8e209705a feat: add retry capability to SignalKeyStore 2022-05-22 20:52:21 +05:30
Adhiraj Singh c5d488f1c6 docs: add info about addTransactionCapability 2022-05-22 20:41:00 +05:30
Adhiraj Singh 75c637cf6c feat: remove need for "serverHasPreKeys" 2022-04-12 18:47:18 +05:30
Adhiraj Singh 2cc5cc2dd4 Revert "feat: resync main app state on first open"
This reverts commit 060c838707.
2022-04-12 17:08:10 +05:30
Adhiraj Singh 060c838707 feat: resync main app state on first open 2022-04-08 23:29:36 +05:30
Adhiraj Singh 0d94315776 feat: handle unarchiveChats setting 2022-04-07 11:29:57 +05:30
Adhiraj Singh de7d1002a9 lint: stricter linting rules 2022-03-01 16:32:14 +05:30