nostr-websocket-utils 0.3.17 → 0.4.0
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.
- package/README.md +2 -2
- package/dist/__mocks__/mockLogger.d.ts +7 -7
- package/dist/__mocks__/mockLogger.d.ts.map +1 -1
- package/dist/browser/nostr-websocket-utils.min.js +3 -2
- package/dist/browser/nostr-websocket-utils.min.js.map +7 -1
- package/dist/browser/report.html +1 -1
- package/dist/cjs/__mocks__/mockLogger.d.ts +7 -7
- package/dist/cjs/__mocks__/mockLogger.d.ts.map +1 -1
- package/dist/cjs/core/nostr-server.js +3 -3
- package/dist/cjs/core/nostr-server.js.map +1 -1
- package/dist/cjs/core/server.js +2 -2
- package/dist/cjs/core/server.js.map +1 -1
- package/dist/cjs/crypto/handlers.js +1 -1
- package/dist/cjs/crypto/handlers.js.map +1 -1
- package/dist/cjs/nips/index.d.ts +2 -0
- package/dist/cjs/nips/index.d.ts.map +1 -1
- package/dist/cjs/nips/index.js +5 -1
- package/dist/cjs/nips/index.js.map +1 -1
- package/dist/cjs/nips/nip-04.js +2 -2
- package/dist/cjs/nips/nip-04.js.map +1 -1
- package/dist/cjs/nips/nip-13.js +1 -1
- package/dist/cjs/nips/nip-13.js.map +1 -1
- package/dist/cjs/nips/nip-16.js +2 -2
- package/dist/cjs/nips/nip-16.js.map +1 -1
- package/dist/cjs/nips/nip-22.js +2 -2
- package/dist/cjs/nips/nip-22.js.map +1 -1
- package/dist/cjs/nips/nip-26.d.ts.map +1 -1
- package/dist/cjs/nips/nip-26.js +3 -7
- package/dist/cjs/nips/nip-26.js.map +1 -1
- package/dist/cjs/nips/nip-28.d.ts.map +1 -1
- package/dist/cjs/nips/nip-28.js +4 -12
- package/dist/cjs/nips/nip-28.js.map +1 -1
- package/dist/cjs/nips/nip-33.js +2 -2
- package/dist/cjs/nips/nip-33.js.map +1 -1
- package/dist/cjs/nips/nip-44.d.ts +69 -0
- package/dist/cjs/nips/nip-44.d.ts.map +1 -0
- package/dist/cjs/nips/nip-44.js +143 -0
- package/dist/cjs/nips/nip-44.js.map +1 -0
- package/dist/cjs/nips/nip-46.d.ts +112 -0
- package/dist/cjs/nips/nip-46.d.ts.map +1 -0
- package/dist/cjs/nips/nip-46.js +123 -0
- package/dist/cjs/nips/nip-46.js.map +1 -0
- package/dist/cjs/transport/websocket.js +1 -1
- package/dist/cjs/transport/websocket.js.map +1 -1
- package/dist/cjs/utils/rate-limiter.d.ts.map +1 -1
- package/dist/cjs/utils/rate-limiter.js +4 -17
- package/dist/cjs/utils/rate-limiter.js.map +1 -1
- package/dist/core/nostr-server.js +3 -3
- package/dist/core/nostr-server.js.map +1 -1
- package/dist/core/server.js +2 -2
- package/dist/core/server.js.map +1 -1
- package/dist/crypto/handlers.js +1 -1
- package/dist/crypto/handlers.js.map +1 -1
- package/dist/nips/index.d.ts +2 -0
- package/dist/nips/index.d.ts.map +1 -1
- package/dist/nips/index.js +5 -1
- package/dist/nips/index.js.map +1 -1
- package/dist/nips/nip-04.js +2 -2
- package/dist/nips/nip-04.js.map +1 -1
- package/dist/nips/nip-13.js +1 -1
- package/dist/nips/nip-13.js.map +1 -1
- package/dist/nips/nip-16.js +2 -2
- package/dist/nips/nip-16.js.map +1 -1
- package/dist/nips/nip-22.js +2 -2
- package/dist/nips/nip-22.js.map +1 -1
- package/dist/nips/nip-26.d.ts.map +1 -1
- package/dist/nips/nip-26.js +4 -8
- package/dist/nips/nip-26.js.map +1 -1
- package/dist/nips/nip-28.d.ts.map +1 -1
- package/dist/nips/nip-28.js +4 -12
- package/dist/nips/nip-28.js.map +1 -1
- package/dist/nips/nip-33.js +2 -2
- package/dist/nips/nip-33.js.map +1 -1
- package/dist/nips/nip-44.d.ts +69 -0
- package/dist/nips/nip-44.d.ts.map +1 -0
- package/dist/nips/nip-44.js +134 -0
- package/dist/nips/nip-44.js.map +1 -0
- package/dist/nips/nip-46.d.ts +112 -0
- package/dist/nips/nip-46.d.ts.map +1 -0
- package/dist/nips/nip-46.js +119 -0
- package/dist/nips/nip-46.js.map +1 -0
- package/dist/transport/websocket.js +1 -1
- package/dist/transport/websocket.js.map +1 -1
- package/dist/utils/rate-limiter.d.ts.map +1 -1
- package/dist/utils/rate-limiter.js +4 -17
- package/dist/utils/rate-limiter.js.map +1 -1
- package/package.json +8 -12
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file NIP-46: Nostr Connect / Remote Signing Transport
|
|
3
|
+
* @module nips/nip-46
|
|
4
|
+
* @see https://github.com/nostr-protocol/nips/blob/master/46.md
|
|
5
|
+
*
|
|
6
|
+
* nostr-crypto-utils provides the NIP-46 protocol layer (crypto, encoding,
|
|
7
|
+
* message formatting) but has no I/O. This module adds the WebSocket relay
|
|
8
|
+
* transport on top — subscribing for kind 24133 responses, publishing
|
|
9
|
+
* wrapped requests, and correlating request/response pairs.
|
|
10
|
+
*/
|
|
11
|
+
import { nip46 } from 'nostr-crypto-utils';
|
|
12
|
+
import { getLogger } from '../utils/logger.js';
|
|
13
|
+
const logger = getLogger('NIP-46');
|
|
14
|
+
/**
|
|
15
|
+
* A thin transport layer that bridges nostr-crypto-utils NIP-46 protocol
|
|
16
|
+
* with the WebSocket relay infrastructure in this library.
|
|
17
|
+
*
|
|
18
|
+
* Usage:
|
|
19
|
+
* ```ts
|
|
20
|
+
* const client = new NostrWSClient(['wss://relay.example.com']);
|
|
21
|
+
* await client.connect();
|
|
22
|
+
*
|
|
23
|
+
* const session = nip46.createSession(remotePubkey);
|
|
24
|
+
* const transport = new Nip46Transport(client, session);
|
|
25
|
+
*
|
|
26
|
+
* // Send a connect request
|
|
27
|
+
* const connectReq = nip46.connectRequest(remotePubkey, secret);
|
|
28
|
+
* const result = await transport.sendRequest(connectReq);
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export class Nip46Transport {
|
|
32
|
+
constructor(client, session, options = {}) {
|
|
33
|
+
this.client = client;
|
|
34
|
+
this.session = session;
|
|
35
|
+
this.timeout = options.timeout ?? 60000;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Subscribe for NIP-46 response events addressed to our ephemeral pubkey.
|
|
39
|
+
* This sends a REQ message to the relay with the appropriate filter.
|
|
40
|
+
* @param subscriptionId - Subscription ID for the REQ message
|
|
41
|
+
* @param since - Optional since timestamp for the filter
|
|
42
|
+
* @returns The subscription message that was sent
|
|
43
|
+
*/
|
|
44
|
+
async subscribe(subscriptionId, since) {
|
|
45
|
+
const filter = nip46.createResponseFilter(this.session.clientPubkey, since);
|
|
46
|
+
const message = ['REQ', {
|
|
47
|
+
subscription_id: subscriptionId,
|
|
48
|
+
filters: [filter]
|
|
49
|
+
}];
|
|
50
|
+
await this.client.sendMessage(message);
|
|
51
|
+
logger.debug({ subscriptionId, filter }, 'Subscribed for NIP-46 responses');
|
|
52
|
+
return message;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Wrap and publish a NIP-46 request as a kind 24133 event.
|
|
56
|
+
* @param request - NIP-46 JSON-RPC request
|
|
57
|
+
* @returns The signed kind 24133 event that was published
|
|
58
|
+
*/
|
|
59
|
+
async publishRequest(request) {
|
|
60
|
+
const event = await nip46.wrapEvent(request, this.session, this.session.remotePubkey);
|
|
61
|
+
const message = ['EVENT', event];
|
|
62
|
+
await this.client.sendMessage(message);
|
|
63
|
+
logger.debug({ requestId: request.id, method: request.method }, 'Published NIP-46 request');
|
|
64
|
+
return event;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Attempt to unwrap a kind 24133 event into a NIP-46 request or response.
|
|
68
|
+
* Returns null if the event is not kind 24133 or decryption fails.
|
|
69
|
+
* @param event - A signed Nostr event
|
|
70
|
+
* @returns Decrypted NIP-46 payload, or null on failure
|
|
71
|
+
*/
|
|
72
|
+
unwrapEvent(event) {
|
|
73
|
+
try {
|
|
74
|
+
return nip46.unwrapEvent(event, this.session);
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
78
|
+
logger.debug({ error: errorMessage }, 'Failed to unwrap NIP-46 event');
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Get the NIP-46 response filter for this session.
|
|
84
|
+
* Useful for manual subscription management.
|
|
85
|
+
* @param since - Optional since timestamp
|
|
86
|
+
* @returns Filter object for kind 24133 events tagged to our pubkey
|
|
87
|
+
*/
|
|
88
|
+
getResponseFilter(since) {
|
|
89
|
+
return nip46.createResponseFilter(this.session.clientPubkey, since);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Get the current session (read-only info).
|
|
93
|
+
* @returns The session's client and remote pubkeys
|
|
94
|
+
*/
|
|
95
|
+
getSessionInfo() {
|
|
96
|
+
return nip46.getSessionInfo(this.session);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// ─── Convenience re-exports from nostr-crypto-utils ─────────────────────────
|
|
100
|
+
// These let consumers access NIP-46 protocol helpers without a separate import.
|
|
101
|
+
/** Parse a bunker:// URI */
|
|
102
|
+
export const parseBunkerURI = nip46.parseBunkerURI;
|
|
103
|
+
/** Create a bunker:// URI */
|
|
104
|
+
export const createBunkerURI = nip46.createBunkerURI;
|
|
105
|
+
/** Validate a bunker:// URI */
|
|
106
|
+
export const validateBunkerURI = nip46.validateBunkerURI;
|
|
107
|
+
/** Create a new NIP-46 session */
|
|
108
|
+
export const createNip46Session = nip46.createSession;
|
|
109
|
+
/** Restore a NIP-46 session */
|
|
110
|
+
export const restoreNip46Session = nip46.restoreSession;
|
|
111
|
+
/** Create a 'connect' request */
|
|
112
|
+
export const connectRequest = nip46.connectRequest;
|
|
113
|
+
/** Create a 'ping' request */
|
|
114
|
+
export const pingRequest = nip46.pingRequest;
|
|
115
|
+
/** Create a 'get_public_key' request */
|
|
116
|
+
export const getPublicKeyRequest = nip46.getPublicKeyRequest;
|
|
117
|
+
/** Create a 'sign_event' request */
|
|
118
|
+
export const signEventRequest = nip46.signEventRequest;
|
|
119
|
+
//# sourceMappingURL=nip-46.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nip-46.js","sourceRoot":"","sources":["../../src/nips/nip-46.ts"],"names":[],"mappings":"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"}
|
|
@@ -111,7 +111,7 @@ export class WebSocketTransport extends BaseTransport {
|
|
|
111
111
|
return elapsed < 30000;
|
|
112
112
|
}
|
|
113
113
|
catch (error) {
|
|
114
|
-
logger.error('Error checking endpoint health
|
|
114
|
+
logger.error({ error }, 'Error checking endpoint health');
|
|
115
115
|
return false;
|
|
116
116
|
}
|
|
117
117
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../src/transport/websocket.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../src/transport/websocket.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../src/utils/rate-limiter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,UAAU,WAAW;IACnB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzE,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/D,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IACpE,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IACrC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CAAC;CAC/C;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAoB/D,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,YAAsB,EAC7D,OAAO,EAAE,MAAM,GACd,WAAW,CAMb;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpD;;;;OAIG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI,CAAC;CAC/D;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE;IACN,uBAAuB,EAAE,MAAM,CAAC;IAChC,wBAAwB,EAAE,MAAM,CAAC;IACjC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;CACzB,EACD,MAAM,EAAE,MAAM,GACb,qBAAqB,
|
|
1
|
+
{"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../src/utils/rate-limiter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,UAAU,WAAW;IACnB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzE,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/D,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IACpE,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IACrC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CAAC;CAC/C;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAoB/D,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,YAAsB,EAC7D,OAAO,EAAE,MAAM,GACd,WAAW,CAMb;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpD;;;;OAIG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI,CAAC;CAC/D;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE;IACN,uBAAuB,EAAE,MAAM,CAAC;IAChC,wBAAwB,EAAE,MAAM,CAAC;IACjC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;CACzB,EACD,MAAM,EAAE,MAAM,GACb,qBAAqB,CAyEvB;AAED;;GAEG;AACH,qBAAa,eAAgB,YAAW,WAAW;IACjD,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,UAAU,CAAK;gBAEX,MAAM,EAAE,eAAe;IAQ5B,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW;IASvC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAkC9E,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI;IAO9D,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IAQnE,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAK3C;;OAEG;IACH,OAAO,CAAC,OAAO;CAqBhB"}
|
|
@@ -60,28 +60,19 @@ export function createConnectionRateLimiter(config, logger) {
|
|
|
60
60
|
};
|
|
61
61
|
// Check if blocked
|
|
62
62
|
if (state.blockedUntil && now < state.blockedUntil) {
|
|
63
|
-
logger.debug('Connection blocked'
|
|
64
|
-
clientId,
|
|
65
|
-
until: new Date(state.blockedUntil)
|
|
66
|
-
});
|
|
63
|
+
logger.debug({ clientId, until: new Date(state.blockedUntil) }, 'Connection blocked');
|
|
67
64
|
return false;
|
|
68
65
|
}
|
|
69
66
|
// Clean old attempts
|
|
70
67
|
state.attempts = cleanOldAttempts(state.attempts);
|
|
71
68
|
// Check rate limits
|
|
72
69
|
if (state.attempts.length >= config.maxConnectionsPerMinute) {
|
|
73
|
-
logger.debug('Too many connection attempts'
|
|
74
|
-
clientId,
|
|
75
|
-
attempts: state.attempts.length
|
|
76
|
-
});
|
|
70
|
+
logger.debug({ clientId, attempts: state.attempts.length }, 'Too many connection attempts');
|
|
77
71
|
return false;
|
|
78
72
|
}
|
|
79
73
|
// Check concurrent connections
|
|
80
74
|
if (state.currentConnections >= config.maxConcurrentConnections) {
|
|
81
|
-
logger.debug('Too many concurrent connections'
|
|
82
|
-
clientId,
|
|
83
|
-
connections: state.currentConnections
|
|
84
|
-
});
|
|
75
|
+
logger.debug({ clientId, connections: state.currentConnections }, 'Too many concurrent connections');
|
|
85
76
|
return false;
|
|
86
77
|
}
|
|
87
78
|
// Check failure rate
|
|
@@ -89,11 +80,7 @@ export function createConnectionRateLimiter(config, logger) {
|
|
|
89
80
|
if (recentFailures >= config.blockAfterFailures) {
|
|
90
81
|
state.blockedUntil = now + config.blockDurationMs;
|
|
91
82
|
clients.set(clientId, state);
|
|
92
|
-
logger.debug('Client blocked due to failures'
|
|
93
|
-
clientId,
|
|
94
|
-
failures: recentFailures,
|
|
95
|
-
until: new Date(state.blockedUntil)
|
|
96
|
-
});
|
|
83
|
+
logger.debug({ clientId, failures: recentFailures, until: new Date(state.blockedUntil) }, 'Client blocked due to failures');
|
|
97
84
|
return false;
|
|
98
85
|
}
|
|
99
86
|
return true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../src/utils/rate-limiter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiCH;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAoC;IAClE,KAAK,EAAE;QACL,QAAQ,EAAE,KAAK,EAAE,WAAW;QAC5B,WAAW,EAAE,EAAE;QACf,eAAe,EAAE,MAAM,CAAC,YAAY;KACrC;IACD,GAAG,EAAE;QACH,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,EAAE;QACf,eAAe,EAAE,MAAM;KACxB;IACD,KAAK,EAAE;QACL,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,EAAE;KAChB;IACD,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,EAAE,YAAY;QAC9B,WAAW,EAAE,EAAE;QACf,eAAe,EAAE,MAAM,CAAC,aAAa;KACtC;CACF,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,SAA0C,mBAAmB,EAC7D,OAAe;IAEf,OAAO,IAAI,eAAe,CAAC,MAAM,CAAC,KAAK,IAAI;QACzC,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,GAAG;QAChB,eAAe,EAAE,MAAM;KACxB,CAAC,CAAC;AACL,CAAC;AAqBD;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CACzC,MAKC,EACD,MAAc;IAQd,MAAM,OAAO,GAAG,IAAI,GAAG,EAA2B,CAAC;IAEnD,SAAS,gBAAgB,CAAC,QAA2D;QACnF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,OAAO,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,GAAG,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;IACrE,CAAC;IAED,OAAO;QACL,KAAK,CAAC,eAAe,CAAC,QAAgB;YACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI;gBACrC,QAAQ,EAAE,EAAE;gBACZ,kBAAkB,EAAE,CAAC;aACtB,CAAC;YAEF,mBAAmB;YACnB,IAAI,KAAK,CAAC,YAAY,IAAI,GAAG,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;gBACnD,MAAM,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../src/utils/rate-limiter.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nostr-websocket-utils",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Robust WebSocket utilities for Nostr applications with automatic reconnection, supporting both ESM and CommonJS. Features channel-based messaging, heartbeat monitoring, message queueing, and comprehensive error handling with type-safe handlers.",
|
|
5
5
|
"main": "./dist/cjs/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"scripts": {
|
|
23
23
|
"build": "npm run build:ts && npm run build:browser",
|
|
24
24
|
"build:ts": "tsc && tsc -p tsconfig.cjs.json && echo '{\"type\":\"commonjs\"}' > dist/cjs/package.json",
|
|
25
|
-
"build:browser": "
|
|
25
|
+
"build:browser": "node esbuild.browser.mjs",
|
|
26
26
|
"test": "vitest run",
|
|
27
27
|
"test:watch": "vitest",
|
|
28
28
|
"test:coverage": "vitest run --coverage",
|
|
@@ -61,9 +61,9 @@
|
|
|
61
61
|
"homepage": "https://github.com/HumanjavaEnterprises/nostr-websocket-utils#readme",
|
|
62
62
|
"dependencies": {
|
|
63
63
|
"@types/uuid": "^10.0.0",
|
|
64
|
-
"nostr-crypto-utils": "^0.
|
|
65
|
-
"pino": "^
|
|
66
|
-
"uuid": "^
|
|
64
|
+
"nostr-crypto-utils": "^0.6.0",
|
|
65
|
+
"pino": "^10.3.1",
|
|
66
|
+
"uuid": "^13.0.0",
|
|
67
67
|
"ws": "^8.19.0"
|
|
68
68
|
},
|
|
69
69
|
"devDependencies": {
|
|
@@ -72,17 +72,13 @@
|
|
|
72
72
|
"@types/ws": "^8.18.1",
|
|
73
73
|
"@typescript-eslint/eslint-plugin": "^8.56.0",
|
|
74
74
|
"@typescript-eslint/parser": "^8.56.0",
|
|
75
|
-
"@vitest/coverage-v8": "^
|
|
75
|
+
"@vitest/coverage-v8": "^4.0.18",
|
|
76
|
+
"esbuild": "^0.27.3",
|
|
76
77
|
"eslint": "^10.0.0",
|
|
77
|
-
"terser-webpack-plugin": "^5.3.16",
|
|
78
|
-
"ts-loader": "^9.5.4",
|
|
79
78
|
"typedoc": "^0.28.17",
|
|
80
79
|
"typedoc-plugin-markdown": "^4.10.0",
|
|
81
80
|
"typescript": "^5.9.3",
|
|
82
|
-
"vitest": "^
|
|
83
|
-
"webpack": "^5.105.2",
|
|
84
|
-
"webpack-bundle-analyzer": "^4.10.1",
|
|
85
|
-
"webpack-cli": "^5.1.4"
|
|
81
|
+
"vitest": "^4.0.18"
|
|
86
82
|
},
|
|
87
83
|
"files": [
|
|
88
84
|
"dist",
|