nostr-websocket-utils 0.3.1 → 0.3.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.
- package/dist/__mocks__/extendedWsMock.d.ts +6 -8
- package/dist/__mocks__/extendedWsMock.d.ts.map +1 -0
- package/dist/__mocks__/extendedWsMock.js +1 -0
- 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 +7 -0
- package/dist/cjs/crypto/index.d.ts.map +1 -0
- package/dist/cjs/crypto/index.js +23 -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 +1 -0
- package/dist/core/client.d.ts.map +1 -0
- package/dist/core/client.js +1 -0
- 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 +1 -0
- package/dist/core/queue.d.ts.map +1 -0
- package/dist/core/queue.js +1 -0
- package/dist/core/queue.js.map +1 -0
- package/dist/core/server.d.ts +1 -0
- package/dist/core/server.d.ts.map +1 -0
- package/dist/core/server.js +1 -0
- 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 +1 -0
- package/dist/crypto/handlers.d.ts.map +1 -0
- package/dist/crypto/handlers.js +1 -0
- package/dist/crypto/handlers.js.map +1 -0
- package/dist/crypto/index.d.ts +3 -1
- package/dist/crypto/index.d.ts.map +1 -0
- package/dist/crypto/index.js +3 -1
- 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 +1 -0
- package/dist/nips/nip-01.d.ts.map +1 -0
- package/dist/nips/nip-01.js +1 -0
- package/dist/nips/nip-01.js.map +1 -0
- package/dist/nips/nip-02.d.ts +1 -0
- package/dist/nips/nip-02.d.ts.map +1 -0
- package/dist/nips/nip-02.js +1 -0
- 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 +1 -0
- package/dist/nips/nip-04.js.map +1 -0
- package/dist/nips/nip-05.d.ts +1 -0
- 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 +1 -0
- package/dist/nips/nip-09.d.ts.map +1 -0
- package/dist/nips/nip-09.js +1 -0
- 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 +1 -0
- 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 +1 -0
- 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 +1 -0
- 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 +1 -0
- package/dist/nips/nip-20.d.ts.map +1 -0
- package/dist/nips/nip-20.js +1 -0
- 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 +1 -0
- 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 +1 -0
- 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 +1 -0
- package/dist/nips/nip-33.js.map +1 -0
- package/dist/transport/base.d.ts +1 -1
- 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 +1 -0
- package/dist/transport/websocket.d.ts.map +1 -0
- package/dist/transport/websocket.js +1 -0
- package/dist/transport/websocket.js.map +1 -0
- package/dist/types/events.d.ts +1 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/events.js +1 -0
- 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 +1 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +1 -0
- 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 +1 -0
- package/dist/types/messages.d.ts.map +1 -0
- package/dist/types/messages.js +1 -0
- package/dist/types/messages.js.map +1 -0
- package/dist/types/nostr.d.ts +1 -0
- 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 +1 -0
- package/dist/types/priority.d.ts.map +1 -0
- package/dist/types/priority.js +1 -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 +1 -2
- package/dist/types/scoring.d.ts.map +1 -0
- package/dist/types/scoring.js +1 -0
- 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 +1 -0
- package/dist/types/websocket.d.ts.map +1 -0
- package/dist/types/websocket.js +1 -0
- 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 +1 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +1 -0
- 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 +1 -0
- 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,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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAa,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEpC;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMjD;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @file Logger utility
|
|
4
|
+
* @module utils/logger
|
|
5
|
+
*/
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.createLogger = createLogger;
|
|
11
|
+
exports.getLogger = getLogger;
|
|
12
|
+
exports.getChildLogger = getChildLogger;
|
|
13
|
+
const pino_1 = __importDefault(require("pino"));
|
|
14
|
+
/**
|
|
15
|
+
* Create a new logger instance
|
|
16
|
+
* @param name Name of the logger
|
|
17
|
+
* @returns Logger instance
|
|
18
|
+
*/
|
|
19
|
+
function createLogger(name) {
|
|
20
|
+
return (0, pino_1.default)({
|
|
21
|
+
name,
|
|
22
|
+
level: process.env.LOG_LEVEL || 'info',
|
|
23
|
+
timestamp: pino_1.default.stdTimeFunctions.isoTime
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Get a logger instance for a specific component
|
|
28
|
+
* @param component Component name for the logger
|
|
29
|
+
* @returns Logger instance
|
|
30
|
+
*/
|
|
31
|
+
function getLogger(component) {
|
|
32
|
+
return createLogger(component);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Get a child logger instance
|
|
36
|
+
* @param parent Parent logger instance
|
|
37
|
+
* @param bindings Additional bindings for the child logger
|
|
38
|
+
* @returns Child logger instance
|
|
39
|
+
*/
|
|
40
|
+
function getChildLogger(parent, bindings) {
|
|
41
|
+
return parent.child(bindings);
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;AASH,oCAMC;AAOD,8BAEC;AAQD,wCAEC;AAhCD,gDAAoC;AAEpC;;;;GAIG;AACH,SAAgB,YAAY,CAAC,IAAY;IACvC,OAAO,IAAA,cAAI,EAAC;QACV,IAAI;QACJ,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM;QACtC,SAAS,EAAE,cAAI,CAAC,gBAAgB,CAAC,OAAO;KACzC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,SAAgB,SAAS,CAAC,SAAiB;IACzC,OAAO,YAAY,CAAC,SAAS,CAAC,CAAC;AACjC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,MAAc,EAAE,QAAgB;IAC7D,OAAO,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Metrics tracking for Nostr WebSocket connections
|
|
3
|
+
* @module metrics
|
|
4
|
+
*/
|
|
5
|
+
import { EventEmitter } from 'events';
|
|
6
|
+
export interface RelayMetrics {
|
|
7
|
+
totalConnections: number;
|
|
8
|
+
activeConnections: number;
|
|
9
|
+
connectionErrors: number;
|
|
10
|
+
messagesReceived: number;
|
|
11
|
+
messagesSent: number;
|
|
12
|
+
bytesReceived: number;
|
|
13
|
+
bytesSent: number;
|
|
14
|
+
averageLatency: number;
|
|
15
|
+
maxLatency: number;
|
|
16
|
+
minLatency: number;
|
|
17
|
+
totalErrors: number;
|
|
18
|
+
lastError?: string;
|
|
19
|
+
eventsReceived: number;
|
|
20
|
+
eventsSent: number;
|
|
21
|
+
subscriptions: number;
|
|
22
|
+
uptime: number;
|
|
23
|
+
reliability: number;
|
|
24
|
+
lastSeen: number;
|
|
25
|
+
score: number;
|
|
26
|
+
}
|
|
27
|
+
export declare class RelayMetricsTracker extends EventEmitter {
|
|
28
|
+
private metrics;
|
|
29
|
+
private startTime;
|
|
30
|
+
constructor();
|
|
31
|
+
/**
|
|
32
|
+
* Get metrics for a specific relay
|
|
33
|
+
*/
|
|
34
|
+
getRelayMetrics(relayUrl: string): RelayMetrics;
|
|
35
|
+
/**
|
|
36
|
+
* Get metrics for all relays
|
|
37
|
+
*/
|
|
38
|
+
getAllMetrics(): Map<string, RelayMetrics>;
|
|
39
|
+
/**
|
|
40
|
+
* Initialize metrics for a new relay
|
|
41
|
+
*/
|
|
42
|
+
private initializeMetrics;
|
|
43
|
+
/**
|
|
44
|
+
* Update connection metrics
|
|
45
|
+
*/
|
|
46
|
+
trackConnection(relayUrl: string, connected: boolean): void;
|
|
47
|
+
/**
|
|
48
|
+
* Track message metrics
|
|
49
|
+
*/
|
|
50
|
+
trackMessage(relayUrl: string, sent: boolean, bytes: number): void;
|
|
51
|
+
/**
|
|
52
|
+
* Track latency
|
|
53
|
+
*/
|
|
54
|
+
trackLatency(relayUrl: string, latencyMs: number): void;
|
|
55
|
+
/**
|
|
56
|
+
* Track errors
|
|
57
|
+
*/
|
|
58
|
+
trackError(relayUrl: string, error: Error): void;
|
|
59
|
+
/**
|
|
60
|
+
* Track protocol-specific events
|
|
61
|
+
*/
|
|
62
|
+
trackProtocolEvent(relayUrl: string, type: 'event' | 'subscription', sent: boolean): void;
|
|
63
|
+
/**
|
|
64
|
+
* Calculate relay score based on metrics
|
|
65
|
+
*/
|
|
66
|
+
private calculateScore;
|
|
67
|
+
/**
|
|
68
|
+
* Update scores for all relays
|
|
69
|
+
*/
|
|
70
|
+
private updateScores;
|
|
71
|
+
/**
|
|
72
|
+
* Get high-value relays (score > threshold)
|
|
73
|
+
*/
|
|
74
|
+
getHighValueRelays(threshold?: number): string[];
|
|
75
|
+
/**
|
|
76
|
+
* Export metrics in Prometheus format
|
|
77
|
+
*/
|
|
78
|
+
getPrometheusMetrics(): string;
|
|
79
|
+
}
|
|
80
|
+
export declare const metricsTracker: RelayMetricsTracker;
|
|
81
|
+
//# sourceMappingURL=metrics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../src/utils/metrics.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAKtC,MAAM,WAAW,YAAY;IAE3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IAGzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAGlB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IAGnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IAGtB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,mBAAoB,SAAQ,YAAY;IACnD,OAAO,CAAC,OAAO,CAAwC;IACvD,OAAO,CAAC,SAAS,CAAsB;;IAQvC;;OAEG;IACI,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY;IAOtD;;OAEG;IACI,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC;IAIjD;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAuBzB;;OAEG;IACI,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO;IAY3D;;OAEG;IACI,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM;IAalE;;OAEG;IACI,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IASvD;;OAEG;IACI,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK;IAQhD;;OAEG;IACI,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,cAAc,EAAE,IAAI,EAAE,OAAO;IAWzF;;OAEG;IACH,OAAO,CAAC,cAAc;IAoBtB;;OAEG;IACH,OAAO,CAAC,YAAY;IAmBpB;;OAEG;IACI,kBAAkB,CAAC,SAAS,GAAE,MAAW,GAAG,MAAM,EAAE;IAM3D;;OAEG;IACI,oBAAoB,IAAI,MAAM;CA2CtC;AAGD,eAAO,MAAM,cAAc,qBAA4B,CAAC"}
|