nostr-websocket-utils 0.3.0 → 0.3.2
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 +8 -7
- package/dist/__mocks__/extendedWsMock.d.ts +31 -14
- package/dist/__mocks__/extendedWsMock.d.ts.map +1 -0
- package/dist/__mocks__/extendedWsMock.js +7 -6
- package/dist/__mocks__/extendedWsMock.js.map +1 -0
- package/dist/__mocks__/mockLogger.d.ts +8 -7
- package/dist/__mocks__/mockLogger.d.ts.map +1 -0
- package/dist/__mocks__/mockLogger.js +1 -0
- package/dist/__mocks__/mockLogger.js.map +1 -0
- package/dist/__mocks__/mockserver.d.ts +7 -11
- package/dist/__mocks__/mockserver.d.ts.map +1 -0
- package/dist/__mocks__/mockserver.js +1 -0
- package/dist/__mocks__/mockserver.js.map +1 -0
- package/dist/__mocks__/wsMock.d.ts +1 -2
- package/dist/__mocks__/wsMock.d.ts.map +1 -0
- package/dist/__mocks__/wsMock.js +1 -0
- package/dist/__mocks__/wsMock.js.map +1 -0
- package/dist/cjs/__mocks__/extendedWsMock.d.ts +52 -0
- package/dist/cjs/__mocks__/extendedWsMock.d.ts.map +1 -0
- package/dist/cjs/__mocks__/extendedWsMock.js +161 -0
- package/dist/cjs/__mocks__/extendedWsMock.js.map +1 -0
- package/dist/cjs/__mocks__/mockLogger.d.ts +42 -0
- package/dist/cjs/__mocks__/mockLogger.d.ts.map +1 -0
- package/dist/cjs/__mocks__/mockLogger.js +53 -0
- package/dist/cjs/__mocks__/mockLogger.js.map +1 -0
- package/dist/cjs/__mocks__/mockserver.d.ts +27 -0
- package/dist/cjs/__mocks__/mockserver.d.ts.map +1 -0
- package/dist/cjs/__mocks__/mockserver.js +44 -0
- package/dist/cjs/__mocks__/mockserver.js.map +1 -0
- package/dist/cjs/__mocks__/wsMock.d.ts +25 -0
- package/dist/cjs/__mocks__/wsMock.d.ts.map +1 -0
- package/dist/cjs/__mocks__/wsMock.js +123 -0
- package/dist/cjs/__mocks__/wsMock.js.map +1 -0
- package/dist/cjs/core/client.d.ts +35 -0
- package/dist/cjs/core/client.d.ts.map +1 -0
- package/dist/cjs/core/client.js +161 -0
- package/dist/cjs/core/client.js.map +1 -0
- package/dist/{nostr-server.d.ts → cjs/core/nostr-server.d.ts} +3 -6
- package/dist/cjs/core/nostr-server.d.ts.map +1 -0
- package/dist/cjs/core/nostr-server.js +101 -0
- package/dist/cjs/core/nostr-server.js.map +1 -0
- package/dist/cjs/core/queue.d.ts +38 -0
- package/dist/cjs/core/queue.d.ts.map +1 -0
- package/dist/cjs/core/queue.js +105 -0
- package/dist/cjs/core/queue.js.map +1 -0
- package/dist/cjs/core/server.d.ts +29 -0
- package/dist/cjs/core/server.d.ts.map +1 -0
- package/dist/cjs/core/server.js +134 -0
- package/dist/cjs/core/server.js.map +1 -0
- package/dist/cjs/crypto/bech32.d.ts +27 -0
- package/dist/cjs/crypto/bech32.d.ts.map +1 -0
- package/dist/cjs/crypto/bech32.js +170 -0
- package/dist/cjs/crypto/bech32.js.map +1 -0
- package/dist/cjs/crypto/handlers.d.ts +19 -0
- package/dist/cjs/crypto/handlers.d.ts.map +1 -0
- package/dist/cjs/crypto/handlers.js +65 -0
- package/dist/cjs/crypto/handlers.js.map +1 -0
- package/dist/cjs/crypto/index.d.ts +6 -0
- package/dist/cjs/crypto/index.d.ts.map +1 -0
- package/dist/cjs/crypto/index.js +22 -0
- package/dist/cjs/crypto/index.js.map +1 -0
- package/dist/cjs/endpoints/metrics.d.ts +30 -0
- package/dist/cjs/endpoints/metrics.d.ts.map +1 -0
- package/dist/cjs/endpoints/metrics.js +106 -0
- package/dist/cjs/endpoints/metrics.js.map +1 -0
- package/dist/cjs/index.d.ts +13 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +40 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/nips/index.d.ts +20 -0
- package/dist/cjs/nips/index.d.ts.map +1 -0
- package/dist/cjs/nips/index.js +51 -0
- package/dist/cjs/nips/index.js.map +1 -0
- package/dist/cjs/nips/nip-01.d.ts +35 -0
- package/dist/cjs/nips/nip-01.d.ts.map +1 -0
- package/dist/cjs/nips/nip-01.js +142 -0
- package/dist/cjs/nips/nip-01.js.map +1 -0
- package/dist/cjs/nips/nip-02.d.ts +83 -0
- package/dist/cjs/nips/nip-02.d.ts.map +1 -0
- package/dist/cjs/nips/nip-02.js +119 -0
- package/dist/cjs/nips/nip-02.js.map +1 -0
- package/dist/cjs/nips/nip-04.d.ts +37 -0
- package/dist/cjs/nips/nip-04.d.ts.map +1 -0
- package/dist/cjs/nips/nip-04.js +104 -0
- package/dist/cjs/nips/nip-04.js.map +1 -0
- package/dist/cjs/nips/nip-05.d.ts +88 -0
- package/dist/cjs/nips/nip-05.d.ts.map +1 -0
- package/dist/cjs/nips/nip-05.js +158 -0
- package/dist/cjs/nips/nip-05.js.map +1 -0
- package/dist/cjs/nips/nip-09.d.ts +93 -0
- package/dist/cjs/nips/nip-09.d.ts.map +1 -0
- package/dist/cjs/nips/nip-09.js +180 -0
- package/dist/cjs/nips/nip-09.js.map +1 -0
- package/dist/cjs/nips/nip-11.d.ts +65 -0
- package/dist/cjs/nips/nip-11.d.ts.map +1 -0
- package/dist/cjs/nips/nip-11.js +161 -0
- package/dist/cjs/nips/nip-11.js.map +1 -0
- package/dist/cjs/nips/nip-13.d.ts +74 -0
- package/dist/cjs/nips/nip-13.d.ts.map +1 -0
- package/dist/cjs/nips/nip-13.js +136 -0
- package/dist/cjs/nips/nip-13.js.map +1 -0
- package/dist/cjs/nips/nip-15.d.ts +84 -0
- package/dist/cjs/nips/nip-15.d.ts.map +1 -0
- package/dist/cjs/nips/nip-15.js +102 -0
- package/dist/cjs/nips/nip-15.js.map +1 -0
- package/dist/cjs/nips/nip-16.d.ts +89 -0
- package/dist/cjs/nips/nip-16.d.ts.map +1 -0
- package/dist/cjs/nips/nip-16.js +157 -0
- package/dist/cjs/nips/nip-16.js.map +1 -0
- package/dist/cjs/nips/nip-19.d.ts +29 -0
- package/dist/cjs/nips/nip-19.d.ts.map +1 -0
- package/dist/cjs/nips/nip-19.js +112 -0
- package/dist/cjs/nips/nip-19.js.map +1 -0
- package/dist/cjs/nips/nip-20.d.ts +60 -0
- package/dist/cjs/nips/nip-20.d.ts.map +1 -0
- package/dist/cjs/nips/nip-20.js +102 -0
- package/dist/cjs/nips/nip-20.js.map +1 -0
- package/dist/cjs/nips/nip-22.d.ts +90 -0
- package/dist/cjs/nips/nip-22.d.ts.map +1 -0
- package/dist/cjs/nips/nip-22.js +149 -0
- package/dist/cjs/nips/nip-22.js.map +1 -0
- package/dist/cjs/nips/nip-26.d.ts +53 -0
- package/dist/cjs/nips/nip-26.d.ts.map +1 -0
- package/dist/cjs/nips/nip-26.js +147 -0
- package/dist/cjs/nips/nip-26.js.map +1 -0
- package/dist/cjs/nips/nip-28.d.ts +104 -0
- package/dist/cjs/nips/nip-28.d.ts.map +1 -0
- package/dist/cjs/nips/nip-28.js +164 -0
- package/dist/cjs/nips/nip-28.js.map +1 -0
- package/dist/cjs/nips/nip-33.d.ts +95 -0
- package/dist/cjs/nips/nip-33.d.ts.map +1 -0
- package/dist/cjs/nips/nip-33.js +135 -0
- package/dist/cjs/nips/nip-33.js.map +1 -0
- package/dist/cjs/transport/base.d.ts +54 -0
- package/dist/cjs/transport/base.d.ts.map +1 -0
- package/dist/cjs/transport/base.js +109 -0
- package/dist/cjs/transport/base.js.map +1 -0
- package/dist/cjs/transport/websocket.d.ts +24 -0
- package/dist/cjs/transport/websocket.d.ts.map +1 -0
- package/dist/cjs/transport/websocket.js +136 -0
- package/dist/cjs/transport/websocket.js.map +1 -0
- package/dist/cjs/types/events.d.ts +74 -0
- package/dist/cjs/types/events.d.ts.map +1 -0
- package/dist/cjs/types/events.js +7 -0
- package/dist/cjs/types/events.js.map +1 -0
- package/dist/cjs/types/filters.d.ts +20 -0
- package/dist/cjs/types/filters.d.ts.map +1 -0
- package/dist/cjs/types/filters.js +7 -0
- package/dist/cjs/types/filters.js.map +1 -0
- package/dist/cjs/types/handlers.d.ts +81 -0
- package/dist/cjs/types/handlers.d.ts.map +1 -0
- package/dist/cjs/types/handlers.js +7 -0
- package/dist/cjs/types/handlers.js.map +1 -0
- package/dist/cjs/types/index.d.ts +144 -0
- package/dist/cjs/types/index.d.ts.map +1 -0
- package/dist/cjs/types/index.js +37 -0
- package/dist/cjs/types/index.js.map +1 -0
- package/dist/cjs/types/logger.d.ts +41 -0
- package/dist/cjs/types/logger.d.ts.map +1 -0
- package/dist/cjs/types/logger.js +7 -0
- package/dist/cjs/types/logger.js.map +1 -0
- package/dist/cjs/types/messages.d.ts +133 -0
- package/dist/cjs/types/messages.d.ts.map +1 -0
- package/dist/cjs/types/messages.js +46 -0
- package/dist/cjs/types/messages.js.map +1 -0
- package/dist/cjs/types/nostr.d.ts +134 -0
- package/dist/cjs/types/nostr.d.ts.map +1 -0
- package/dist/cjs/types/nostr.js +7 -0
- package/dist/cjs/types/nostr.js.map +1 -0
- package/dist/cjs/types/options.d.ts +155 -0
- package/dist/cjs/types/options.d.ts.map +1 -0
- package/dist/cjs/types/options.js +7 -0
- package/dist/cjs/types/options.js.map +1 -0
- package/dist/cjs/types/priority.d.ts +13 -0
- package/dist/cjs/types/priority.d.ts.map +1 -0
- package/dist/cjs/types/priority.js +17 -0
- package/dist/cjs/types/priority.js.map +1 -0
- package/dist/cjs/types/relays.d.ts +27 -0
- package/dist/cjs/types/relays.d.ts.map +1 -0
- package/dist/cjs/types/relays.js +7 -0
- package/dist/cjs/types/relays.js.map +1 -0
- package/dist/cjs/types/scoring.d.ts +59 -0
- package/dist/cjs/types/scoring.d.ts.map +1 -0
- package/dist/cjs/types/scoring.js +34 -0
- package/dist/cjs/types/scoring.js.map +1 -0
- package/dist/cjs/types/socket.d.ts +98 -0
- package/dist/cjs/types/socket.d.ts.map +1 -0
- package/dist/cjs/types/socket.js +7 -0
- package/dist/cjs/types/socket.js.map +1 -0
- package/dist/cjs/types/transport.d.ts +98 -0
- package/dist/cjs/types/transport.d.ts.map +1 -0
- package/dist/cjs/types/transport.js +7 -0
- package/dist/cjs/types/transport.js.map +1 -0
- package/dist/cjs/types/validation.d.ts +51 -0
- package/dist/cjs/types/validation.d.ts.map +1 -0
- package/dist/cjs/types/validation.js +7 -0
- package/dist/cjs/types/validation.js.map +1 -0
- package/dist/cjs/types/websocket.d.ts +250 -0
- package/dist/cjs/types/websocket.d.ts.map +1 -0
- package/dist/cjs/types/websocket.js +7 -0
- package/dist/cjs/types/websocket.js.map +1 -0
- package/dist/cjs/utils/http.d.ts +11 -0
- package/dist/cjs/utils/http.d.ts.map +1 -0
- package/dist/cjs/utils/http.js +28 -0
- package/dist/cjs/utils/http.js.map +1 -0
- package/dist/cjs/utils/logger.d.ts +26 -0
- package/dist/cjs/utils/logger.d.ts.map +1 -0
- package/dist/cjs/utils/logger.js +43 -0
- package/dist/cjs/utils/logger.js.map +1 -0
- package/dist/cjs/utils/metrics.d.ts +81 -0
- package/dist/cjs/utils/metrics.d.ts.map +1 -0
- package/dist/cjs/utils/metrics.js +211 -0
- package/dist/cjs/utils/metrics.js.map +1 -0
- package/dist/cjs/utils/rate-limiter.d.ts +86 -0
- package/dist/cjs/utils/rate-limiter.d.ts.map +1 -0
- package/dist/cjs/utils/rate-limiter.js +183 -0
- package/dist/cjs/utils/rate-limiter.js.map +1 -0
- package/dist/core/client.d.ts +21 -80
- package/dist/core/client.d.ts.map +1 -0
- package/dist/core/client.js +110 -316
- package/dist/core/client.js.map +1 -0
- package/dist/core/nostr-server.d.ts +1 -0
- package/dist/core/nostr-server.d.ts.map +1 -0
- package/dist/core/nostr-server.js +1 -0
- package/dist/core/nostr-server.js.map +1 -0
- package/dist/core/queue.d.ts +22 -45
- package/dist/core/queue.d.ts.map +1 -0
- package/dist/core/queue.js +72 -79
- package/dist/core/queue.js.map +1 -0
- package/dist/core/server.d.ts +2 -0
- package/dist/core/server.d.ts.map +1 -0
- package/dist/core/server.js +29 -13
- package/dist/core/server.js.map +1 -0
- package/dist/crypto/bech32.d.ts +1 -0
- package/dist/crypto/bech32.d.ts.map +1 -0
- package/dist/crypto/bech32.js +1 -0
- package/dist/crypto/bech32.js.map +1 -0
- package/dist/crypto/handlers.d.ts +8 -0
- package/dist/crypto/handlers.d.ts.map +1 -0
- package/dist/crypto/handlers.js +27 -2
- package/dist/crypto/handlers.js.map +1 -0
- package/dist/crypto/index.d.ts +1 -0
- package/dist/crypto/index.d.ts.map +1 -0
- package/dist/crypto/index.js +1 -0
- package/dist/crypto/index.js.map +1 -0
- package/dist/endpoints/metrics.d.ts +1 -0
- package/dist/endpoints/metrics.d.ts.map +1 -0
- package/dist/endpoints/metrics.js +1 -0
- package/dist/endpoints/metrics.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -0
- package/dist/nips/index.d.ts +1 -0
- package/dist/nips/index.d.ts.map +1 -0
- package/dist/nips/index.js +1 -0
- package/dist/nips/index.js.map +1 -0
- package/dist/nips/nip-01.d.ts +4 -3
- package/dist/nips/nip-01.d.ts.map +1 -0
- package/dist/nips/nip-01.js +18 -29
- package/dist/nips/nip-01.js.map +1 -0
- package/dist/nips/nip-02.d.ts +2 -2
- package/dist/nips/nip-02.d.ts.map +1 -0
- package/dist/nips/nip-02.js +14 -25
- package/dist/nips/nip-02.js.map +1 -0
- package/dist/nips/nip-04.d.ts +1 -0
- package/dist/nips/nip-04.d.ts.map +1 -0
- package/dist/nips/nip-04.js +16 -23
- package/dist/nips/nip-04.js.map +1 -0
- package/dist/nips/nip-05.d.ts +4 -2
- package/dist/nips/nip-05.d.ts.map +1 -0
- package/dist/nips/nip-05.js +1 -0
- package/dist/nips/nip-05.js.map +1 -0
- package/dist/nips/nip-09.d.ts +2 -1
- package/dist/nips/nip-09.d.ts.map +1 -0
- package/dist/nips/nip-09.js +7 -25
- package/dist/nips/nip-09.js.map +1 -0
- package/dist/nips/nip-11.d.ts +1 -0
- package/dist/nips/nip-11.d.ts.map +1 -0
- package/dist/nips/nip-11.js +1 -0
- package/dist/nips/nip-11.js.map +1 -0
- package/dist/nips/nip-13.d.ts +1 -0
- package/dist/nips/nip-13.d.ts.map +1 -0
- package/dist/nips/nip-13.js +3 -2
- package/dist/nips/nip-13.js.map +1 -0
- package/dist/nips/nip-15.d.ts +1 -0
- package/dist/nips/nip-15.d.ts.map +1 -0
- package/dist/nips/nip-15.js +2 -6
- package/dist/nips/nip-15.js.map +1 -0
- package/dist/nips/nip-16.d.ts +1 -0
- package/dist/nips/nip-16.d.ts.map +1 -0
- package/dist/nips/nip-16.js +3 -2
- package/dist/nips/nip-16.js.map +1 -0
- package/dist/nips/nip-19.d.ts +1 -0
- package/dist/nips/nip-19.d.ts.map +1 -0
- package/dist/nips/nip-19.js +1 -0
- package/dist/nips/nip-19.js.map +1 -0
- package/dist/nips/nip-20.d.ts +2 -1
- package/dist/nips/nip-20.d.ts.map +1 -0
- package/dist/nips/nip-20.js +20 -20
- package/dist/nips/nip-20.js.map +1 -0
- package/dist/nips/nip-22.d.ts +1 -0
- package/dist/nips/nip-22.d.ts.map +1 -0
- package/dist/nips/nip-22.js +4 -3
- package/dist/nips/nip-22.js.map +1 -0
- package/dist/nips/nip-26.d.ts +1 -0
- package/dist/nips/nip-26.d.ts.map +1 -0
- package/dist/nips/nip-26.js +1 -0
- package/dist/nips/nip-26.js.map +1 -0
- package/dist/nips/nip-28.d.ts +1 -0
- package/dist/nips/nip-28.d.ts.map +1 -0
- package/dist/nips/nip-28.js +17 -31
- package/dist/nips/nip-28.js.map +1 -0
- package/dist/nips/nip-33.d.ts +1 -0
- package/dist/nips/nip-33.d.ts.map +1 -0
- package/dist/nips/nip-33.js +7 -12
- package/dist/nips/nip-33.js.map +1 -0
- package/dist/transport/base.d.ts +4 -4
- package/dist/transport/base.d.ts.map +1 -0
- package/dist/transport/base.js +1 -0
- package/dist/transport/base.js.map +1 -0
- package/dist/transport/websocket.d.ts +2 -0
- package/dist/transport/websocket.d.ts.map +1 -0
- package/dist/transport/websocket.js +7 -0
- package/dist/transport/websocket.js.map +1 -0
- package/dist/types/events.d.ts +12 -1
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/events.js +2 -1
- package/dist/types/events.js.map +1 -0
- package/dist/types/filters.d.ts +1 -0
- package/dist/types/filters.d.ts.map +1 -0
- package/dist/types/filters.js +1 -0
- package/dist/types/filters.js.map +1 -0
- package/dist/types/handlers.d.ts +1 -0
- package/dist/types/handlers.d.ts.map +1 -0
- package/dist/types/handlers.js +1 -0
- package/dist/types/handlers.js.map +1 -0
- package/dist/types/index.d.ts +13 -6
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -3
- package/dist/types/index.js.map +1 -0
- package/dist/types/logger.d.ts +1 -0
- package/dist/types/logger.d.ts.map +1 -0
- package/dist/types/logger.js +1 -0
- package/dist/types/logger.js.map +1 -0
- package/dist/types/messages.d.ts +68 -70
- package/dist/types/messages.d.ts.map +1 -0
- package/dist/types/messages.js +28 -26
- package/dist/types/messages.js.map +1 -0
- package/dist/types/nostr.d.ts +3 -2
- package/dist/types/nostr.d.ts.map +1 -0
- package/dist/types/nostr.js +1 -0
- package/dist/types/nostr.js.map +1 -0
- package/dist/types/options.d.ts +1 -0
- package/dist/types/options.d.ts.map +1 -0
- package/dist/types/options.js +1 -0
- package/dist/types/options.js.map +1 -0
- package/dist/types/priority.d.ts +13 -0
- package/dist/types/priority.d.ts.map +1 -0
- package/dist/types/priority.js +14 -0
- package/dist/types/priority.js.map +1 -0
- package/dist/types/relays.d.ts +1 -0
- package/dist/types/relays.d.ts.map +1 -0
- package/dist/types/relays.js +1 -0
- package/dist/types/relays.js.map +1 -0
- package/dist/types/scoring.d.ts +19 -7
- package/dist/types/scoring.d.ts.map +1 -0
- package/dist/types/scoring.js +2 -1
- package/dist/types/scoring.js.map +1 -0
- package/dist/types/socket.d.ts +1 -2
- package/dist/types/socket.d.ts.map +1 -0
- package/dist/types/socket.js +1 -0
- package/dist/types/socket.js.map +1 -0
- package/dist/types/transport.d.ts +1 -0
- package/dist/types/transport.d.ts.map +1 -0
- package/dist/types/transport.js +1 -0
- package/dist/types/transport.js.map +1 -0
- package/dist/types/validation.d.ts +1 -0
- package/dist/types/validation.d.ts.map +1 -0
- package/dist/types/validation.js +1 -0
- package/dist/types/validation.js.map +1 -0
- package/dist/types/websocket.d.ts +116 -38
- package/dist/types/websocket.d.ts.map +1 -0
- package/dist/types/websocket.js +2 -1
- package/dist/types/websocket.js.map +1 -0
- package/dist/utils/http.d.ts +1 -0
- package/dist/utils/http.d.ts.map +1 -0
- package/dist/utils/http.js +1 -0
- package/dist/utils/http.js.map +1 -0
- package/dist/utils/logger.d.ts +17 -2
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +24 -10
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/metrics.d.ts +1 -1
- package/dist/utils/metrics.d.ts.map +1 -0
- package/dist/utils/metrics.js +1 -0
- package/dist/utils/metrics.js.map +1 -0
- package/dist/utils/rate-limiter.d.ts +1 -0
- package/dist/utils/rate-limiter.d.ts.map +1 -0
- package/dist/utils/rate-limiter.js +6 -4
- package/dist/utils/rate-limiter.js.map +1 -0
- package/package.json +14 -2
- package/dist/__mocks__/logger.d.ts +0 -9
- package/dist/__mocks__/logger.js +0 -6
- package/dist/client.d.ts +0 -129
- package/dist/client.js +0 -259
- package/dist/crypto/schnorr.d.ts +0 -16
- package/dist/crypto/schnorr.js +0 -51
- package/dist/nostr-server.js +0 -107
- package/dist/server.d.ts +0 -27
- package/dist/server.js +0 -132
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @file Scoring and metrics type definitions
|
|
4
|
+
* @module types/scoring
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.DefaultScoringStrategy = exports.DEFAULT_WEIGHTS = void 0;
|
|
8
|
+
// Default scoring weights
|
|
9
|
+
exports.DEFAULT_WEIGHTS = {
|
|
10
|
+
latency: 0.2,
|
|
11
|
+
reliability: 0.3,
|
|
12
|
+
uptime: 0.2,
|
|
13
|
+
errors: 0.2,
|
|
14
|
+
activity: 0.1,
|
|
15
|
+
};
|
|
16
|
+
// Default scoring strategy
|
|
17
|
+
class DefaultScoringStrategy {
|
|
18
|
+
constructor(weights = exports.DEFAULT_WEIGHTS) {
|
|
19
|
+
this.weights = weights;
|
|
20
|
+
}
|
|
21
|
+
calculateScore(metrics) {
|
|
22
|
+
const now = Date.now();
|
|
23
|
+
// Basic scoring components that would work for any transport
|
|
24
|
+
const latencyScore = Math.max(0, 100 - (metrics.averageLatency / 10));
|
|
25
|
+
const activityScore = metrics.lastSeen ?
|
|
26
|
+
Math.max(0, 100 - ((now - metrics.lastSeen) / (60 * 1000))) : 0;
|
|
27
|
+
const errorScore = Math.max(0, 100 - (metrics.connectionErrors * 5));
|
|
28
|
+
return Math.round((latencyScore * this.weights.latency) +
|
|
29
|
+
(errorScore * this.weights.errors) +
|
|
30
|
+
(activityScore * this.weights.activity));
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.DefaultScoringStrategy = DefaultScoringStrategy;
|
|
34
|
+
//# sourceMappingURL=scoring.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scoring.js","sourceRoot":"","sources":["../../../src/types/scoring.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AA6CH,0BAA0B;AACb,QAAA,eAAe,GAAG;IAC7B,OAAO,EAAE,GAAG;IACZ,WAAW,EAAE,GAAG;IAChB,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,QAAQ,EAAE,GAAG;CACL,CAAC;AAEX,2BAA2B;AAC3B,MAAa,sBAAsB;IACjC,YAAoB,UAAU,uBAAe;QAAzB,YAAO,GAAP,OAAO,CAAkB;IAAG,CAAC;IAEjD,cAAc,CAAC,OAAoB;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,6DAA6D;QAC7D,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,GAAG,EAAE,CAAC,CAAC,CAAC;QACtE,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;YACtC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC;QAErE,OAAO,IAAI,CAAC,KAAK,CACf,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;YACrC,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YAClC,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CACxC,CAAC;IACJ,CAAC;CACF;AAlBD,wDAkBC"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Socket type definitions
|
|
3
|
+
* @module types/socket
|
|
4
|
+
*/
|
|
5
|
+
import type { WebSocket } from 'ws';
|
|
6
|
+
import type { NostrWSMessage } from './messages';
|
|
7
|
+
/**
|
|
8
|
+
* Extended WebSocket interface with Nostr-specific properties
|
|
9
|
+
*/
|
|
10
|
+
export interface NostrWSSocket extends WebSocket {
|
|
11
|
+
/**
|
|
12
|
+
* Unique client ID
|
|
13
|
+
*/
|
|
14
|
+
clientId?: string;
|
|
15
|
+
/**
|
|
16
|
+
* Set of subscribed channels
|
|
17
|
+
*/
|
|
18
|
+
subscriptions?: Set<string>;
|
|
19
|
+
/**
|
|
20
|
+
* Whether the socket is alive (for heartbeat)
|
|
21
|
+
*/
|
|
22
|
+
isAlive?: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Send a message through the WebSocket
|
|
25
|
+
*/
|
|
26
|
+
send(message: string | Buffer): void;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* WebSocket client options
|
|
30
|
+
*/
|
|
31
|
+
export interface NostrWSClientOptions {
|
|
32
|
+
/**
|
|
33
|
+
* WebSocket implementation to use
|
|
34
|
+
*/
|
|
35
|
+
WebSocketImpl?: typeof WebSocket;
|
|
36
|
+
/**
|
|
37
|
+
* Heartbeat interval in milliseconds
|
|
38
|
+
*/
|
|
39
|
+
heartbeatInterval?: number;
|
|
40
|
+
/**
|
|
41
|
+
* Reconnect interval in milliseconds
|
|
42
|
+
*/
|
|
43
|
+
reconnectInterval?: number;
|
|
44
|
+
/**
|
|
45
|
+
* Maximum number of reconnect attempts
|
|
46
|
+
*/
|
|
47
|
+
maxReconnectAttempts?: number;
|
|
48
|
+
/**
|
|
49
|
+
* Message handlers
|
|
50
|
+
*/
|
|
51
|
+
handlers?: {
|
|
52
|
+
message?: (message: NostrWSMessage) => Promise<void>;
|
|
53
|
+
connect?: () => Promise<void>;
|
|
54
|
+
disconnect?: () => Promise<void>;
|
|
55
|
+
error?: (error: Error) => Promise<void>;
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* WebSocket server options
|
|
60
|
+
*/
|
|
61
|
+
export interface NostrWSServerOptions {
|
|
62
|
+
/**
|
|
63
|
+
* WebSocket server implementation to use
|
|
64
|
+
*/
|
|
65
|
+
WebSocketImpl?: typeof WebSocket;
|
|
66
|
+
/**
|
|
67
|
+
* Heartbeat interval in milliseconds
|
|
68
|
+
*/
|
|
69
|
+
heartbeatInterval?: number;
|
|
70
|
+
/**
|
|
71
|
+
* Message handlers
|
|
72
|
+
*/
|
|
73
|
+
handlers?: {
|
|
74
|
+
message?: (ws: NostrWSSocket, message: NostrWSMessage) => Promise<void>;
|
|
75
|
+
connect?: (ws: NostrWSSocket) => Promise<void>;
|
|
76
|
+
disconnect?: (ws: NostrWSSocket) => Promise<void>;
|
|
77
|
+
error?: (ws: NostrWSSocket, error: Error) => Promise<void>;
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Client event types
|
|
82
|
+
*/
|
|
83
|
+
export type NostrWSClientEvents = {
|
|
84
|
+
message: (message: NostrWSMessage) => void;
|
|
85
|
+
connect: () => void;
|
|
86
|
+
disconnect: () => void;
|
|
87
|
+
error: (error: Error) => void;
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* Server event types
|
|
91
|
+
*/
|
|
92
|
+
export type NostrWSServerEvents = {
|
|
93
|
+
message: (ws: NostrWSSocket, message: NostrWSMessage) => void;
|
|
94
|
+
connect: (ws: NostrWSSocket) => void;
|
|
95
|
+
disconnect: (ws: NostrWSSocket) => void;
|
|
96
|
+
error: (ws: NostrWSSocket, error: Error) => void;
|
|
97
|
+
};
|
|
98
|
+
//# sourceMappingURL=socket.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../../src/types/socket.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,SAAS;IAC9C;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAE5B;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,SAAS,CAAC;IAEjC;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B;;OAEG;IACH,QAAQ,CAAC,EAAE;QACT,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QACrD,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9B,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QACjC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KACzC,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,SAAS,CAAC;IAEjC;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,QAAQ,CAAC,EAAE;QACT,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QACxE,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/C,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAClD,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KAC5D,CAAC;CACH;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IAC3C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAC/B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,CAAC,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IAC9D,OAAO,EAAE,CAAC,EAAE,EAAE,aAAa,KAAK,IAAI,CAAC;IACrC,UAAU,EAAE,CAAC,EAAE,EAAE,aAAa,KAAK,IAAI,CAAC;IACxC,KAAK,EAAE,CAAC,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"socket.js","sourceRoot":"","sources":["../../../src/types/socket.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Transport type definitions
|
|
3
|
+
* @module types/transport
|
|
4
|
+
*/
|
|
5
|
+
import { NostrEvent } from './events';
|
|
6
|
+
import { NostrWSMessage } from './messages';
|
|
7
|
+
/**
|
|
8
|
+
* Base transport interface
|
|
9
|
+
*/
|
|
10
|
+
export interface Transport {
|
|
11
|
+
/**
|
|
12
|
+
* Connect to the transport
|
|
13
|
+
*/
|
|
14
|
+
connect(): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* Disconnect from the transport
|
|
17
|
+
*/
|
|
18
|
+
disconnect(): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Send a message through the transport
|
|
21
|
+
*/
|
|
22
|
+
send(message: NostrWSMessage): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Subscribe to events
|
|
25
|
+
*/
|
|
26
|
+
subscribe(filter: NostrEvent): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Unsubscribe from events
|
|
29
|
+
*/
|
|
30
|
+
unsubscribe(subscriptionId: string): Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* Check if transport is connected
|
|
33
|
+
*/
|
|
34
|
+
isConnected(): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Get transport metrics
|
|
37
|
+
*/
|
|
38
|
+
getMetrics(): TransportMetrics;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Transport metrics
|
|
42
|
+
*/
|
|
43
|
+
export interface TransportMetrics {
|
|
44
|
+
/**
|
|
45
|
+
* Total number of messages sent
|
|
46
|
+
*/
|
|
47
|
+
messagesSent: number;
|
|
48
|
+
/**
|
|
49
|
+
* Total number of messages received
|
|
50
|
+
*/
|
|
51
|
+
messagesReceived: number;
|
|
52
|
+
/**
|
|
53
|
+
* Total number of bytes sent
|
|
54
|
+
*/
|
|
55
|
+
bytesSent: number;
|
|
56
|
+
/**
|
|
57
|
+
* Total number of bytes received
|
|
58
|
+
*/
|
|
59
|
+
bytesReceived: number;
|
|
60
|
+
/**
|
|
61
|
+
* Average message latency in milliseconds
|
|
62
|
+
*/
|
|
63
|
+
averageLatency: number;
|
|
64
|
+
/**
|
|
65
|
+
* Number of active subscriptions
|
|
66
|
+
*/
|
|
67
|
+
activeSubscriptions: number;
|
|
68
|
+
/**
|
|
69
|
+
* Connection uptime in milliseconds
|
|
70
|
+
*/
|
|
71
|
+
uptime: number;
|
|
72
|
+
/**
|
|
73
|
+
* Number of connection attempts
|
|
74
|
+
*/
|
|
75
|
+
connectionAttempts: number;
|
|
76
|
+
/**
|
|
77
|
+
* Number of successful connections
|
|
78
|
+
*/
|
|
79
|
+
successfulConnections: number;
|
|
80
|
+
/**
|
|
81
|
+
* Number of failed connections
|
|
82
|
+
*/
|
|
83
|
+
failedConnections: number;
|
|
84
|
+
/**
|
|
85
|
+
* Transport-specific metrics
|
|
86
|
+
*/
|
|
87
|
+
[key: string]: number | string | boolean | undefined;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Transport factory interface
|
|
91
|
+
*/
|
|
92
|
+
export interface TransportFactory {
|
|
93
|
+
/**
|
|
94
|
+
* Create a new transport instance
|
|
95
|
+
*/
|
|
96
|
+
create(options: unknown): Transport;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/types/transport.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB;;OAEG;IACH,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7C;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7C;;OAEG;IACH,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnD;;OAEG;IACH,WAAW,IAAI,OAAO,CAAC;IAEvB;;OAEG;IACH,UAAU,IAAI,gBAAgB,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,qBAAqB,EAAE,MAAM,CAAC;IAE9B;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;CACtD;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;CACrC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/types/transport.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Validation type definitions
|
|
3
|
+
* @module types/validation
|
|
4
|
+
*/
|
|
5
|
+
import { NostrEvent } from './events';
|
|
6
|
+
import { NostrWSMessage } from './messages';
|
|
7
|
+
/**
|
|
8
|
+
* Validation result interface
|
|
9
|
+
*/
|
|
10
|
+
export interface NostrWSValidationResult {
|
|
11
|
+
/**
|
|
12
|
+
* Whether the validation passed
|
|
13
|
+
*/
|
|
14
|
+
isValid: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Error message if validation failed
|
|
17
|
+
*/
|
|
18
|
+
error?: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Event validator interface
|
|
22
|
+
*/
|
|
23
|
+
export interface NostrEventValidator {
|
|
24
|
+
/**
|
|
25
|
+
* Validate a Nostr event
|
|
26
|
+
*/
|
|
27
|
+
validateEvent(event: NostrEvent): NostrWSValidationResult;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Message validator interface
|
|
31
|
+
*/
|
|
32
|
+
export interface NostrMessageValidator {
|
|
33
|
+
/**
|
|
34
|
+
* Validate a WebSocket message
|
|
35
|
+
*/
|
|
36
|
+
validateMessage(message: NostrWSMessage): NostrWSValidationResult;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Validator factory interface
|
|
40
|
+
*/
|
|
41
|
+
export interface ValidatorFactory {
|
|
42
|
+
/**
|
|
43
|
+
* Create an event validator
|
|
44
|
+
*/
|
|
45
|
+
createEventValidator(): NostrEventValidator;
|
|
46
|
+
/**
|
|
47
|
+
* Create a message validator
|
|
48
|
+
*/
|
|
49
|
+
createMessageValidator(): NostrMessageValidator;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/types/validation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,uBAAuB,CAAC;CAC3D;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,cAAc,GAAG,uBAAuB,CAAC;CACnE;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,oBAAoB,IAAI,mBAAmB,CAAC;IAE5C;;OAEG;IACH,sBAAsB,IAAI,qBAAqB,CAAC;CACjD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/types/validation.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file WebSocket type definitions
|
|
3
|
+
* @module types/websocket
|
|
4
|
+
*/
|
|
5
|
+
import { WebSocket } from 'ws';
|
|
6
|
+
import { MessageType, NostrWSMessage } from './messages';
|
|
7
|
+
import { MessagePriority } from './priority';
|
|
8
|
+
import { RateLimitConfig } from '../utils/rate-limiter';
|
|
9
|
+
import { Logger } from 'pino';
|
|
10
|
+
/**
|
|
11
|
+
* Extended WebSocket interface with additional properties
|
|
12
|
+
* @interface ExtendedWebSocket
|
|
13
|
+
*/
|
|
14
|
+
export interface ExtendedWebSocket extends WebSocket {
|
|
15
|
+
/**
|
|
16
|
+
* Whether the WebSocket connection is alive
|
|
17
|
+
*/
|
|
18
|
+
isAlive?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Set of subscription channels
|
|
21
|
+
*/
|
|
22
|
+
subscriptions?: Set<string>;
|
|
23
|
+
/**
|
|
24
|
+
* Unique client identifier
|
|
25
|
+
*/
|
|
26
|
+
clientId?: string;
|
|
27
|
+
/**
|
|
28
|
+
* Queue of messages to be sent
|
|
29
|
+
*/
|
|
30
|
+
messageQueue?: NostrWSMessage[];
|
|
31
|
+
/**
|
|
32
|
+
* Timestamp of the last ping message
|
|
33
|
+
*/
|
|
34
|
+
lastPing?: number;
|
|
35
|
+
/**
|
|
36
|
+
* Timestamp of the last pong message
|
|
37
|
+
*/
|
|
38
|
+
lastPong?: number;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* WebSocket client configuration options
|
|
42
|
+
*/
|
|
43
|
+
export interface NostrWSClientOptions {
|
|
44
|
+
/**
|
|
45
|
+
* Logger instance
|
|
46
|
+
*/
|
|
47
|
+
logger?: Logger;
|
|
48
|
+
/**
|
|
49
|
+
* Connection timeout in milliseconds
|
|
50
|
+
*/
|
|
51
|
+
connectionTimeout?: number;
|
|
52
|
+
/**
|
|
53
|
+
* Number of retry attempts for reconnection
|
|
54
|
+
*/
|
|
55
|
+
retryAttempts?: number;
|
|
56
|
+
/**
|
|
57
|
+
* Delay between retry attempts in milliseconds
|
|
58
|
+
*/
|
|
59
|
+
retryDelay?: number;
|
|
60
|
+
/**
|
|
61
|
+
* Maximum queue size
|
|
62
|
+
*/
|
|
63
|
+
queueSize?: number;
|
|
64
|
+
/**
|
|
65
|
+
* Maximum number of retries for sending messages
|
|
66
|
+
*/
|
|
67
|
+
maxRetries?: number;
|
|
68
|
+
/**
|
|
69
|
+
* Message handler callback
|
|
70
|
+
*/
|
|
71
|
+
onMessage?: (message: string) => void;
|
|
72
|
+
/**
|
|
73
|
+
* Error handler callback
|
|
74
|
+
*/
|
|
75
|
+
onError?: (error: Error) => void;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* WebSocket client event handlers
|
|
79
|
+
*/
|
|
80
|
+
export interface NostrWSEventHandlers {
|
|
81
|
+
/**
|
|
82
|
+
* Message handler callback
|
|
83
|
+
*/
|
|
84
|
+
onMessage?: (message: string) => void;
|
|
85
|
+
/**
|
|
86
|
+
* Error handler callback
|
|
87
|
+
*/
|
|
88
|
+
onError?: (error: Error) => void;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Queue configuration options
|
|
92
|
+
*/
|
|
93
|
+
export interface QueueOptions {
|
|
94
|
+
/**
|
|
95
|
+
* Maximum size of the queue
|
|
96
|
+
*/
|
|
97
|
+
maxSize?: number;
|
|
98
|
+
/**
|
|
99
|
+
* Maximum number of retries for failed messages
|
|
100
|
+
*/
|
|
101
|
+
maxRetries?: number;
|
|
102
|
+
/**
|
|
103
|
+
* Delay between retries in milliseconds
|
|
104
|
+
*/
|
|
105
|
+
retryDelay?: number;
|
|
106
|
+
/**
|
|
107
|
+
* Timeout for stale messages in milliseconds
|
|
108
|
+
*/
|
|
109
|
+
staleTimeout?: number;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Message queue item
|
|
113
|
+
*/
|
|
114
|
+
export interface QueueItem {
|
|
115
|
+
/**
|
|
116
|
+
* Message to be sent
|
|
117
|
+
*/
|
|
118
|
+
message: NostrWSMessage;
|
|
119
|
+
/**
|
|
120
|
+
* Message priority
|
|
121
|
+
*/
|
|
122
|
+
priority: MessagePriority;
|
|
123
|
+
/**
|
|
124
|
+
* Timestamp when the message was queued
|
|
125
|
+
*/
|
|
126
|
+
queuedAt: number;
|
|
127
|
+
/**
|
|
128
|
+
* Number of retries for the message
|
|
129
|
+
*/
|
|
130
|
+
retryCount?: number;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* State of the NostrWSClient connection
|
|
134
|
+
* @interface NostrWSConnectionState
|
|
135
|
+
*/
|
|
136
|
+
export interface NostrWSConnectionState {
|
|
137
|
+
/**
|
|
138
|
+
* Whether the client is currently connected
|
|
139
|
+
*/
|
|
140
|
+
isConnected: boolean;
|
|
141
|
+
/**
|
|
142
|
+
* Number of reconnection attempts made
|
|
143
|
+
*/
|
|
144
|
+
reconnectAttempts: number;
|
|
145
|
+
/**
|
|
146
|
+
* Last error encountered
|
|
147
|
+
*/
|
|
148
|
+
lastError?: string;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Server configuration options
|
|
152
|
+
* @interface NostrWSServerOptions
|
|
153
|
+
*/
|
|
154
|
+
export interface NostrWSServerOptions {
|
|
155
|
+
/**
|
|
156
|
+
* Port to listen on
|
|
157
|
+
*/
|
|
158
|
+
port: number;
|
|
159
|
+
/**
|
|
160
|
+
* Host to bind to
|
|
161
|
+
*/
|
|
162
|
+
host?: string;
|
|
163
|
+
/**
|
|
164
|
+
* Path for the WebSocket endpoint
|
|
165
|
+
*/
|
|
166
|
+
path?: string;
|
|
167
|
+
/**
|
|
168
|
+
* Maximum payload size in bytes
|
|
169
|
+
*/
|
|
170
|
+
maxPayload?: number;
|
|
171
|
+
/**
|
|
172
|
+
* Maximum number of concurrent connections
|
|
173
|
+
*/
|
|
174
|
+
maxConnections?: number;
|
|
175
|
+
/**
|
|
176
|
+
* Ping interval in milliseconds
|
|
177
|
+
*/
|
|
178
|
+
pingInterval?: number;
|
|
179
|
+
/**
|
|
180
|
+
* Rate limiting configuration
|
|
181
|
+
*/
|
|
182
|
+
rateLimits?: RateLimitConfig;
|
|
183
|
+
/**
|
|
184
|
+
* Logger instance
|
|
185
|
+
*/
|
|
186
|
+
logger?: Logger;
|
|
187
|
+
/**
|
|
188
|
+
* Message handler callback
|
|
189
|
+
*/
|
|
190
|
+
onMessage?: (message: NostrWSMessage, socket: NostrWSServerSocket) => void;
|
|
191
|
+
/**
|
|
192
|
+
* Error handler callback
|
|
193
|
+
*/
|
|
194
|
+
onError?: (error: Error, socket: NostrWSServerSocket) => void;
|
|
195
|
+
/**
|
|
196
|
+
* Close handler
|
|
197
|
+
*/
|
|
198
|
+
onClose?: (socket: NostrWSServerSocket) => void;
|
|
199
|
+
/**
|
|
200
|
+
* Connection handler
|
|
201
|
+
*/
|
|
202
|
+
onConnection?: (socket: NostrWSServerSocket) => Promise<void>;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Server message structure
|
|
206
|
+
* @interface NostrWSServerMessage
|
|
207
|
+
*/
|
|
208
|
+
export type NostrWSServerMessage = NostrWSMessage & {
|
|
209
|
+
/**
|
|
210
|
+
* Unique client identifier
|
|
211
|
+
*/
|
|
212
|
+
clientId?: string;
|
|
213
|
+
};
|
|
214
|
+
/**
|
|
215
|
+
* Extended WebSocket interface for Nostr server
|
|
216
|
+
* @interface NostrWSServerSocket
|
|
217
|
+
*/
|
|
218
|
+
export interface NostrWSServerSocket extends WebSocket {
|
|
219
|
+
/**
|
|
220
|
+
* Unique client identifier
|
|
221
|
+
*/
|
|
222
|
+
clientId: string;
|
|
223
|
+
/**
|
|
224
|
+
* Set of subscription channels
|
|
225
|
+
*/
|
|
226
|
+
subscriptions: Set<string>;
|
|
227
|
+
/**
|
|
228
|
+
* Timestamp of the last ping message
|
|
229
|
+
*/
|
|
230
|
+
lastPing?: number;
|
|
231
|
+
/**
|
|
232
|
+
* Whether the WebSocket connection is alive
|
|
233
|
+
*/
|
|
234
|
+
isAlive: boolean;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Nostr WebSocket server message with client info
|
|
238
|
+
* @interface NostrWSServerClientMessage
|
|
239
|
+
*/
|
|
240
|
+
export type NostrWSServerClientMessage = [MessageType, ...unknown[]] & {
|
|
241
|
+
/**
|
|
242
|
+
* Unique client identifier
|
|
243
|
+
*/
|
|
244
|
+
clientId?: string;
|
|
245
|
+
/**
|
|
246
|
+
* Timestamp of the message
|
|
247
|
+
*/
|
|
248
|
+
timestamp?: number;
|
|
249
|
+
};
|
|
250
|
+
//# sourceMappingURL=websocket.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../../src/types/websocket.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../../src/types/websocket.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file HTTP utility functions
|
|
3
|
+
* @module utils/http
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Fetches JSON data from a URL
|
|
7
|
+
* @param url URL to fetch from
|
|
8
|
+
* @returns Parsed JSON data
|
|
9
|
+
*/
|
|
10
|
+
export declare function fetchJson<T>(url: string): Promise<T>;
|
|
11
|
+
//# sourceMappingURL=http.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/utils/http.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAW1D"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @file HTTP utility functions
|
|
4
|
+
* @module utils/http
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.fetchJson = fetchJson;
|
|
8
|
+
const logger_1 = require("./logger");
|
|
9
|
+
const logger = (0, logger_1.getLogger)('http');
|
|
10
|
+
/**
|
|
11
|
+
* Fetches JSON data from a URL
|
|
12
|
+
* @param url URL to fetch from
|
|
13
|
+
* @returns Parsed JSON data
|
|
14
|
+
*/
|
|
15
|
+
async function fetchJson(url) {
|
|
16
|
+
try {
|
|
17
|
+
const response = await fetch(url);
|
|
18
|
+
if (!response.ok) {
|
|
19
|
+
throw new Error(`HTTP error! status: ${response.status}`);
|
|
20
|
+
}
|
|
21
|
+
return await response.json();
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
logger.error({ error, url }, 'Failed to fetch JSON');
|
|
25
|
+
throw error;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=http.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/utils/http.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAWH,8BAWC;AApBD,qCAAqC;AAErC,MAAM,MAAM,GAAG,IAAA,kBAAS,EAAC,MAAM,CAAC,CAAC;AAEjC;;;;GAIG;AACI,KAAK,UAAU,SAAS,CAAI,GAAW;IAC5C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAO,CAAC;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,sBAAsB,CAAC,CAAC;QACrD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Logger utility
|
|
3
|
+
* @module utils/logger
|
|
4
|
+
*/
|
|
5
|
+
import { Logger } from 'pino';
|
|
6
|
+
/**
|
|
7
|
+
* Create a new logger instance
|
|
8
|
+
* @param name Name of the logger
|
|
9
|
+
* @returns Logger instance
|
|
10
|
+
*/
|
|
11
|
+
export declare function createLogger(name: string): Logger;
|
|
12
|
+
/**
|
|
13
|
+
* Get a logger instance for a specific component
|
|
14
|
+
* @param component Component name for the logger
|
|
15
|
+
* @returns Logger instance
|
|
16
|
+
*/
|
|
17
|
+
export declare function getLogger(component: string): Logger;
|
|
18
|
+
/**
|
|
19
|
+
* Get a child logger instance
|
|
20
|
+
* @param parent Parent logger instance
|
|
21
|
+
* @param bindings Additional bindings for the child logger
|
|
22
|
+
* @returns Child logger instance
|
|
23
|
+
*/
|
|
24
|
+
export declare function getChildLogger(parent: Logger, bindings: object): Logger;
|
|
25
|
+
export { Logger };
|
|
26
|
+
//# sourceMappingURL=logger.d.ts.map
|