umk0m1qk
354b80a929
fix(relay): move _connected = false above closeAllSubscriptions() in close()
...
close() was setting _connected = false after closeAllSubscriptions(), which meant each sub still saw the relay as connected and tried to send CLOSE frames. Those sends get queued as microtasks, but by the time they run the socket is already closing, so you get a bunch of "WebSocket is already in CLOSING or CLOSED state" warnings.
handleHardClose() already gets this order right — this just makes close() consistent with that.
2026-02-11 12:24:58 -03:00
fiatjaf
0c2c2cd4d8
nip13: improve mining by skipping hex.
2026-02-08 01:06:01 -03:00
fiatjaf
28f7553187
fix a type so jsr is happy.
v2.23.0
2026-02-02 18:49:17 -03:00
fiatjaf
ca29d9b515
ok, we need the prepareSubscription method.
2026-02-02 18:46:50 -03:00
fiatjaf
ab802c8dbe
automatic prune broken relay objects and keep track of relay idleness so they can be pruned.
2026-02-02 18:44:52 -03:00
fiatjaf
9db705d86c
delete queue test since we don't have queues anymore.
2026-02-02 17:01:59 -03:00
fiatjaf
be9b91318f
relay: get rid of the message queue, because js is single-threaded.
2026-02-02 09:06:56 -03:00
fiatjaf
c2423f7f31
nip27: fix hashtag parsing after newline or other characters.
2026-02-02 08:56:18 -03:00
fiatjaf
05b1fba511
export source files so they can be imported by other ts apps and libraries better.
2026-02-02 00:38:15 -03:00
fiatjaf
2d1345096b
subscribeMany and subscribeManyEose are the same as subscribe/subscribeEose.
2026-02-01 17:19:58 -03:00
fiatjaf
6fc7788a4f
utils: merging two (reverse) sorted lists of events.
2026-02-01 08:44:49 -03:00
fiatjaf
2180c7a1fe
add onRelayConnectionSuccess to pair with onRelayConnectionFailure.
2026-01-31 19:27:45 -03:00
fiatjaf
b4bec2097d
finally stop reconnecting when the first connection fails once and for all.
2026-01-31 19:27:45 -03:00
fiatjaf
fb7de7f1aa
prevent reconnections when initial connection fails.
2026-01-31 13:57:33 -03:00
fiatjaf
ccb9641fb9
pool: maxWaitForConnection parameter.
...
this was so obvious.
2026-01-31 00:27:55 -03:00
fiatjaf
b624ad4059
pool: hooks to notify when a relay fails to connect, then ask whether a connection should be attempted.
v2.22.1
2026-01-30 17:35:46 -03:00
fiatjaf
b3d314643a
make everything dependent on npm again.
v2.22.0
2026-01-30 07:16:04 -03:00
fiatjaf
30ac8a02c2
readme to point only to jsr because npm is awful.
2026-01-28 17:28:27 -03:00
fiatjaf
42c9c7554d
migrate to jsr dependencies for @noble and @scure.
2026-01-27 23:54:50 -03:00
fiatjaf
3588d30044
do the same for @noble/ciphers and @scure packages.
2026-01-27 22:43:54 -03:00
lemonknowsall
b40f59af74
Upgrade to @noble/curves ^2.0.1 and @noble/hashes ^2.0.1
...
This commit upgrades the noble cryptography dependencies to v2.0.1, which includes:
Breaking changes addressed:
- Updated all @noble imports to include .js extensions (required by v2 ESM-only API)
- Changed @noble/hashes/sha256 to @noble/hashes/sha2.js across 8 files
- Fixed secp256k1 API changes: methods now require Uint8Array instead of hex strings
- Updated schnorr.utils.randomPrivateKey() to schnorr.utils.randomSecretKey()
Files modified (27 total):
- package.json: Bump dependency versions
- Source files (12): pure.ts, nip04.ts, nip06.ts, nip13.ts, nip19.ts, nip44.ts,
nip49.ts, nip77.ts, nip98.ts, nipb7.ts, utils.ts, wasm.ts
- Test files (14): All corresponding test files updated
Benefits:
- Latest security updates from audited noble libraries
- Smaller bundle sizes from v2 optimizations
- Future-proof ESM-only compatibility
- All tests passing
Co-authored-by: OpenCode <opencode@anomalyco.com >
2026-01-24 09:41:15 -03:00
fiatjaf
bfa40da316
nip46: improve fromURI() and implement "switch_relays".
v2.20.0
2026-01-22 21:50:30 -03:00
fiatjaf
9078f45a64
optionally take an AbortSignal on subscriptions.
2026-01-22 21:49:39 -03:00
fiatjaf
6ebe59f123
nip27: support note1 entities for now, but treat them like nevent.
v2.19.4
2025-12-17 17:48:35 -03:00
fiatjaf
0235b490fa
nip27: fix trailing / in urls.
2025-12-11 21:23:32 -03:00
fiatjaf
e290f98a86
label forced ping subscription.
2025-12-10 21:06:31 -03:00
fiatjaf
7a50d9328d
add some more kinds.
v2.19.3
2025-12-09 10:56:43 -03:00
fiatjaf
65412e5b85
NostrEvent > Event.
2025-12-06 12:21:56 -03:00
fiatjaf
ca36ae9530
update README with new enableReconnect() behavior.
2025-12-05 21:59:52 -03:00
fiatjaf
0b6543e1a8
use setInterval() instead of nested setTimeout()s for pingpong.
...
prevent call stacks from building up
v2.19.2
2025-12-05 21:46:16 -03:00
fiatjaf
693b262b7c
CLOSED answers to dummyReq are also ok.
2025-12-05 21:03:34 -03:00
fiatjaf
85c964be3d
enableReconnect() always update the filters to the time of the last received event on each subscription.
v2.19.1
2025-12-05 13:24:49 -03:00
fiatjaf
de7d459f6f
only transform filters with enableReconnect() when we're actually reconnecting.
v2.19.0
2025-12-05 09:22:33 -03:00
fiatjaf
21ec5bb2dc
allow automatically performing AUTH against all relays.
2025-12-05 09:12:59 -03:00
fiatjaf
e959409c14
fix classifyKind() test.
v2.18.2
2025-11-25 22:21:46 -03:00
fiatjaf
8a76c4e329
fix normalizeUrl to make websocket urls out of http urls.
2025-11-25 22:20:38 -03:00
fiatjaf
34a1d8db47
kinds: more reliable regular/replaceable kind figuring.
v2.18.1
2025-11-24 20:08:15 -03:00
fiatjaf
d3ddd490c2
nip27: test emoji behavior when no tags.
2025-11-22 22:23:03 -03:00
fiatjaf
7730e321a5
nip27: support more image, audio and video extensions.
2025-11-22 20:36:04 -03:00
fiatjaf
400d132612
nip77: negentropy tests and small fixes.
v2.18.0
2025-11-21 19:51:55 -03:00
fiatjaf
01880b6fb5
nip27: parse emoji shortcodes and hashtags too.
2025-11-21 00:37:40 -03:00
fiatjaf
e87ffc433c
build "core" although we shouldn't.
2025-11-21 00:37:40 -03:00
fiatjaf
c45e861493
fire subscriptions.
...
this was broken during the negentropy stuff.
fixes https://github.com/nbd-wtf/nostr-tools/issues/517
v2.17.4
2025-11-19 14:53:24 -03:00
fiatjaf
66cc55c7f0
nip77: negentropy implementation and nip77 interface.
...
supersedes https://github.com/nbd-wtf/nostr-tools/pull/516
v2.17.3
2025-11-18 09:33:11 -03:00
fiatjaf
5841b0936b
throw when subscription is created without filters.
...
fixes https://github.com/nbd-wtf/nostr-tools/pull/497
2025-11-18 08:09:45 -03:00
max-gy
f5d0c0eb0f
fix prettier checks on nip77 related *ts files
2025-11-18 08:06:26 -03:00
max-gy
e19db61bec
nip77: adds wrapper for negentropy and fallback for yieldThread MessageChannel
2025-11-18 08:06:26 -03:00
Chris McCormick
1e0f393268
Fix subscribeMap EOSE grouping. Fixes #514
v2.17.2
2025-10-29 08:18:49 -03:00
Chris McCormick
1bec9fa365
Ping pong memory leak fix for #511 ( #512 )
...
* New test for pingpong memory leak (failing).
* Shim once in relay ping mem test.
* Fix pong memory leak with .once.
Fixes #511 .
* Fix missing global WebSocket on Node.
* Lint fix.
* Remove overkill WebSocket impl check.
v2.17.1
2025-10-26 23:33:38 -03:00
雪猫
e8927d78e6
nip57: lud16 must take precedence over lud06
2025-10-12 11:01:25 -03:00