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 @@
|
|
|
1
|
+
{"version":3,"file":"nip-28.d.ts","sourceRoot":"","sources":["../../../src/nips/nip-28.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;CAOjB,CAAC;AAEX;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,eAAe,GACxB,cAAc,CAMhB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,GACf,cAAc,CAWhB;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,cAAc,CAShB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtD;;;;OAIG;IACH,gBAAgB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1D;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB,CA8D3E;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;;OAIG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAAC;IAE7C;;;;OAIG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAAC;IAE/C;;;;OAIG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC;CACtE;AAED;;;;GAIG;AACH,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,MAAM,GACb,0BAA0B,CAoC5B"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @file NIP-28: Public Chat
|
|
4
|
+
* @module nips/nip-28
|
|
5
|
+
* @see https://github.com/nostr-protocol/nips/blob/master/28.md
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.ChatEventKinds = void 0;
|
|
9
|
+
exports.createChannelCreationEvent = createChannelCreationEvent;
|
|
10
|
+
exports.createChannelMessage = createChannelMessage;
|
|
11
|
+
exports.createHideMessageEvent = createHideMessageEvent;
|
|
12
|
+
exports.createChatMessageHandler = createChatMessageHandler;
|
|
13
|
+
exports.createChannelSubscriptionManager = createChannelSubscriptionManager;
|
|
14
|
+
/**
|
|
15
|
+
* Chat event kinds
|
|
16
|
+
*/
|
|
17
|
+
exports.ChatEventKinds = {
|
|
18
|
+
CHANNEL_CREATION: 40,
|
|
19
|
+
CHANNEL_METADATA: 41,
|
|
20
|
+
CHANNEL_MESSAGE: 42,
|
|
21
|
+
CHANNEL_HIDE_MESSAGE: 43,
|
|
22
|
+
CHANNEL_MUTE_USER: 44,
|
|
23
|
+
USER_MUTE: 45
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Creates a channel creation message
|
|
27
|
+
* @param metadata - Channel metadata
|
|
28
|
+
* @returns {NostrWSMessage} Channel creation event
|
|
29
|
+
*/
|
|
30
|
+
function createChannelCreationEvent(metadata) {
|
|
31
|
+
return ['EVENT', {
|
|
32
|
+
kind: exports.ChatEventKinds.CHANNEL_CREATION,
|
|
33
|
+
content: JSON.stringify(metadata),
|
|
34
|
+
tags: []
|
|
35
|
+
}];
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Creates a channel message
|
|
39
|
+
* @param channelId - Channel ID
|
|
40
|
+
* @param content - Message content
|
|
41
|
+
* @param replyTo - Optional ID of message being replied to
|
|
42
|
+
* @returns {NostrWSMessage} Channel message event
|
|
43
|
+
*/
|
|
44
|
+
function createChannelMessage(channelId, content, replyTo) {
|
|
45
|
+
const tags = [['e', channelId, '', 'root']];
|
|
46
|
+
if (replyTo) {
|
|
47
|
+
tags.push(['e', replyTo, '', 'reply']);
|
|
48
|
+
}
|
|
49
|
+
return ['EVENT', {
|
|
50
|
+
kind: exports.ChatEventKinds.CHANNEL_MESSAGE,
|
|
51
|
+
content,
|
|
52
|
+
tags
|
|
53
|
+
}];
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Creates a message moderation event
|
|
57
|
+
* @param channelId - Channel ID
|
|
58
|
+
* @param messageId - Message ID to moderate
|
|
59
|
+
* @param reason - Moderation reason
|
|
60
|
+
* @returns {NostrWSMessage} Hide message event
|
|
61
|
+
*/
|
|
62
|
+
function createHideMessageEvent(channelId, messageId, reason) {
|
|
63
|
+
return ['EVENT', {
|
|
64
|
+
kind: exports.ChatEventKinds.CHANNEL_HIDE_MESSAGE,
|
|
65
|
+
content: reason,
|
|
66
|
+
tags: [
|
|
67
|
+
['e', channelId, '', 'root'],
|
|
68
|
+
['e', messageId, '', 'reply']
|
|
69
|
+
]
|
|
70
|
+
}];
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Creates a chat message handler
|
|
74
|
+
* @param logger - Logger instance
|
|
75
|
+
* @returns {ChatMessageHandler} Message handler
|
|
76
|
+
*/
|
|
77
|
+
function createChatMessageHandler(logger) {
|
|
78
|
+
return {
|
|
79
|
+
async handleMessage(message) {
|
|
80
|
+
try {
|
|
81
|
+
if (!Array.isArray(message) || message[0] !== 'EVENT')
|
|
82
|
+
return;
|
|
83
|
+
const event = message[1];
|
|
84
|
+
if (event.kind !== exports.ChatEventKinds.CHANNEL_MESSAGE)
|
|
85
|
+
return;
|
|
86
|
+
// Extract channel ID and reply ID from tags
|
|
87
|
+
const { tags } = event;
|
|
88
|
+
const channelId = tags.find(tag => tag[0] === 'e' && tag[3] === 'root')?.[1];
|
|
89
|
+
const replyId = tags.find(tag => tag[0] === 'e' && tag[3] === 'reply')?.[1];
|
|
90
|
+
// Process message
|
|
91
|
+
logger.debug('Processing chat message', {
|
|
92
|
+
channelId,
|
|
93
|
+
replyId,
|
|
94
|
+
content: event.content
|
|
95
|
+
});
|
|
96
|
+
// Additional message processing logic here
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
logger.error('Error handling chat message:', error);
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
async handleModeration(message) {
|
|
103
|
+
try {
|
|
104
|
+
if (!Array.isArray(message) || message[0] !== 'EVENT')
|
|
105
|
+
return;
|
|
106
|
+
const event = message[1];
|
|
107
|
+
if (event.kind !== exports.ChatEventKinds.CHANNEL_HIDE_MESSAGE)
|
|
108
|
+
return;
|
|
109
|
+
// Extract channel and message IDs
|
|
110
|
+
const { tags } = event;
|
|
111
|
+
const channelId = tags.find(tag => tag[0] === 'e' && tag[3] === 'root')?.[1];
|
|
112
|
+
const messageId = tags.find(tag => tag[0] === 'e' && tag[3] === 'reply')?.[1];
|
|
113
|
+
// Process moderation
|
|
114
|
+
logger.debug('Processing message moderation', {
|
|
115
|
+
channelId,
|
|
116
|
+
messageId,
|
|
117
|
+
reason: event.content
|
|
118
|
+
});
|
|
119
|
+
// Additional moderation logic here
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
logger.error('Error handling message moderation:', error);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Creates a channel subscription manager
|
|
129
|
+
* @param logger - Logger instance
|
|
130
|
+
* @returns {ChannelSubscriptionManager} Subscription manager
|
|
131
|
+
*/
|
|
132
|
+
function createChannelSubscriptionManager(logger) {
|
|
133
|
+
const subscriptions = new Map(); // channelId -> subscriptionId
|
|
134
|
+
const metadata = new Map();
|
|
135
|
+
return {
|
|
136
|
+
subscribe(channelId) {
|
|
137
|
+
const subscriptionId = `chat:${channelId}:${Date.now()}`;
|
|
138
|
+
subscriptions.set(channelId, subscriptionId);
|
|
139
|
+
return ['REQ', {
|
|
140
|
+
subscription_id: subscriptionId,
|
|
141
|
+
filter: {
|
|
142
|
+
kinds: [
|
|
143
|
+
exports.ChatEventKinds.CHANNEL_MESSAGE,
|
|
144
|
+
exports.ChatEventKinds.CHANNEL_HIDE_MESSAGE
|
|
145
|
+
],
|
|
146
|
+
'#e': [channelId]
|
|
147
|
+
}
|
|
148
|
+
}];
|
|
149
|
+
},
|
|
150
|
+
unsubscribe(channelId) {
|
|
151
|
+
const subscriptionId = subscriptions.get(channelId);
|
|
152
|
+
if (!subscriptionId) {
|
|
153
|
+
logger.debug(`No subscription found for channel ${channelId}`);
|
|
154
|
+
return ['CLOSE', { subscription_id: '' }];
|
|
155
|
+
}
|
|
156
|
+
subscriptions.delete(channelId);
|
|
157
|
+
return ['CLOSE', { subscription_id: subscriptionId }];
|
|
158
|
+
},
|
|
159
|
+
async getMetadata(channelId) {
|
|
160
|
+
return metadata.get(channelId);
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=nip-28.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nip-28.js","sourceRoot":"","sources":["../../../src/nips/nip-28.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file NIP-33: Parameterized Replaceable Events
|
|
3
|
+
* @module nips/nip-33
|
|
4
|
+
* @see https://github.com/nostr-protocol/nips/blob/master/33.md
|
|
5
|
+
*/
|
|
6
|
+
import type { NostrWSMessage } from '../types/messages';
|
|
7
|
+
import type { Logger } from '../types/logger';
|
|
8
|
+
/**
|
|
9
|
+
* Parameterized replaceable event kinds (30000-39999)
|
|
10
|
+
*/
|
|
11
|
+
export declare const PARAMETERIZED_REPLACEABLE_KINDS: {
|
|
12
|
+
CATEGORIZED_BOOKMARK: number;
|
|
13
|
+
CATEGORIZED_HIGHLIGHT: number;
|
|
14
|
+
CATEGORIZED_PEOPLE_LIST: number;
|
|
15
|
+
PROFILE_BADGES: number;
|
|
16
|
+
BADGE_DEFINITION: number;
|
|
17
|
+
CUSTOM_START: number;
|
|
18
|
+
CUSTOM_END: number;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Creates a parameterized replaceable event
|
|
22
|
+
* @param kind - Event kind
|
|
23
|
+
* @param content - Event content
|
|
24
|
+
* @param identifier - Unique identifier for the parameter
|
|
25
|
+
* @param additionalTags - Additional tags
|
|
26
|
+
* @returns {NostrWSMessage} Parameterized replaceable event
|
|
27
|
+
*/
|
|
28
|
+
export declare function createParameterizedEvent(kind: number, content: string, identifier: string, additionalTags?: string[][]): NostrWSMessage;
|
|
29
|
+
/**
|
|
30
|
+
* Validates a parameterized replaceable event
|
|
31
|
+
* @param message - Message to validate
|
|
32
|
+
* @param _logger - Logger instance
|
|
33
|
+
* @returns {boolean} True if valid
|
|
34
|
+
*/
|
|
35
|
+
export declare function validateParameterizedEvent(message: NostrWSMessage, _logger: Logger): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Parameterized event manager interface
|
|
38
|
+
*/
|
|
39
|
+
export interface ParameterizedEventManager {
|
|
40
|
+
/**
|
|
41
|
+
* Creates a new parameterized event
|
|
42
|
+
* @param kind - Event kind
|
|
43
|
+
* @param content - Event content
|
|
44
|
+
* @param identifier - Parameter identifier
|
|
45
|
+
* @param tags - Additional tags
|
|
46
|
+
* @returns {NostrWSMessage} Created event
|
|
47
|
+
*/
|
|
48
|
+
createEvent(kind: number, content: string, identifier: string, tags?: string[][]): NostrWSMessage;
|
|
49
|
+
/**
|
|
50
|
+
* Updates an existing parameterized event
|
|
51
|
+
* @param kind - Event kind
|
|
52
|
+
* @param identifier - Parameter identifier
|
|
53
|
+
* @param content - New content
|
|
54
|
+
* @returns {NostrWSMessage} Update event
|
|
55
|
+
*/
|
|
56
|
+
updateEvent(kind: number, identifier: string, content: string): NostrWSMessage;
|
|
57
|
+
/**
|
|
58
|
+
* Subscribes to parameterized events
|
|
59
|
+
* @param kinds - Event kinds to subscribe to
|
|
60
|
+
* @param identifiers - Parameter identifiers
|
|
61
|
+
* @returns {NostrWSMessage} Subscription message
|
|
62
|
+
*/
|
|
63
|
+
subscribe(kinds: number[], identifiers: string[]): NostrWSMessage;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Creates a parameterized event manager
|
|
67
|
+
* @param _logger - Logger instance
|
|
68
|
+
* @returns {ParameterizedEventManager} Event manager
|
|
69
|
+
*/
|
|
70
|
+
export declare function createParameterizedEventManager(_logger: Logger): ParameterizedEventManager;
|
|
71
|
+
/**
|
|
72
|
+
* Event replacement handler interface
|
|
73
|
+
*/
|
|
74
|
+
export interface EventReplacementHandler {
|
|
75
|
+
/**
|
|
76
|
+
* Checks if an event should replace another
|
|
77
|
+
* @param newEvent - New event
|
|
78
|
+
* @param existingEvent - Existing event
|
|
79
|
+
* @returns {boolean} True if should replace
|
|
80
|
+
*/
|
|
81
|
+
shouldReplace(newEvent: Record<string, unknown>, existingEvent: Record<string, unknown>): boolean;
|
|
82
|
+
/**
|
|
83
|
+
* Gets replacement key for an event
|
|
84
|
+
* @param event - Event to get key for
|
|
85
|
+
* @returns {string} Replacement key
|
|
86
|
+
*/
|
|
87
|
+
getReplacementKey(event: Record<string, unknown>): string;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Creates an event replacement handler
|
|
91
|
+
* @param _logger - Logger instance
|
|
92
|
+
* @returns {EventReplacementHandler} Replacement handler
|
|
93
|
+
*/
|
|
94
|
+
export declare function createEventReplacementHandler(_logger: Logger): EventReplacementHandler;
|
|
95
|
+
//# sourceMappingURL=nip-33.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nip-33.d.ts","sourceRoot":"","sources":["../../../src/nips/nip-33.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C;;GAEG;AACH,eAAO,MAAM,+BAA+B;;;;;;;;CAQ3C,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,cAAc,GAAE,MAAM,EAAE,EAAO,GAC9B,cAAc,CAShB;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,MAAM,GACd,OAAO,CAmCT;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC;;;;;;;OAOG;IACH,WAAW,CACT,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,GAChB,cAAc,CAAC;IAElB;;;;;;OAMG;IACH,WAAW,CACT,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,cAAc,CAAC;IAElB;;;;;OAKG;IACH,SAAS,CACP,KAAK,EAAE,MAAM,EAAE,EACf,WAAW,EAAE,MAAM,EAAE,GACpB,cAAc,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,MAAM,GACd,yBAAyB,CA4B3B;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;;;OAKG;IACH,aAAa,CACX,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACrC,OAAO,CAAC;IAEX;;;;OAIG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC;CAC3D;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,MAAM,GACd,uBAAuB,CAiCzB"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @file NIP-33: Parameterized Replaceable Events
|
|
4
|
+
* @module nips/nip-33
|
|
5
|
+
* @see https://github.com/nostr-protocol/nips/blob/master/33.md
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.PARAMETERIZED_REPLACEABLE_KINDS = void 0;
|
|
9
|
+
exports.createParameterizedEvent = createParameterizedEvent;
|
|
10
|
+
exports.validateParameterizedEvent = validateParameterizedEvent;
|
|
11
|
+
exports.createParameterizedEventManager = createParameterizedEventManager;
|
|
12
|
+
exports.createEventReplacementHandler = createEventReplacementHandler;
|
|
13
|
+
/**
|
|
14
|
+
* Parameterized replaceable event kinds (30000-39999)
|
|
15
|
+
*/
|
|
16
|
+
exports.PARAMETERIZED_REPLACEABLE_KINDS = {
|
|
17
|
+
CATEGORIZED_BOOKMARK: 30000,
|
|
18
|
+
CATEGORIZED_HIGHLIGHT: 30001,
|
|
19
|
+
CATEGORIZED_PEOPLE_LIST: 30002,
|
|
20
|
+
PROFILE_BADGES: 30008,
|
|
21
|
+
BADGE_DEFINITION: 30009,
|
|
22
|
+
CUSTOM_START: 31000,
|
|
23
|
+
CUSTOM_END: 39999
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Creates a parameterized replaceable event
|
|
27
|
+
* @param kind - Event kind
|
|
28
|
+
* @param content - Event content
|
|
29
|
+
* @param identifier - Unique identifier for the parameter
|
|
30
|
+
* @param additionalTags - Additional tags
|
|
31
|
+
* @returns {NostrWSMessage} Parameterized replaceable event
|
|
32
|
+
*/
|
|
33
|
+
function createParameterizedEvent(kind, content, identifier, additionalTags = []) {
|
|
34
|
+
return ['EVENT', {
|
|
35
|
+
kind,
|
|
36
|
+
content,
|
|
37
|
+
tags: [
|
|
38
|
+
['d', identifier],
|
|
39
|
+
...additionalTags
|
|
40
|
+
]
|
|
41
|
+
}];
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Validates a parameterized replaceable event
|
|
45
|
+
* @param message - Message to validate
|
|
46
|
+
* @param _logger - Logger instance
|
|
47
|
+
* @returns {boolean} True if valid
|
|
48
|
+
*/
|
|
49
|
+
function validateParameterizedEvent(message, _logger) {
|
|
50
|
+
try {
|
|
51
|
+
if (!Array.isArray(message) || message[0] !== 'EVENT') {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
const event = message[1];
|
|
55
|
+
const kind = event.kind;
|
|
56
|
+
// Check if kind is in valid range
|
|
57
|
+
if (kind < 30000 || kind > 39999) {
|
|
58
|
+
_logger.debug('Invalid kind for parameterized replaceable event');
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
// Must have exactly one 'd' tag
|
|
62
|
+
if (!Array.isArray(event.tags)) {
|
|
63
|
+
_logger.debug('Missing tags array');
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
const dTags = event.tags.filter(tag => Array.isArray(tag) && tag[0] === 'd' && tag[1]);
|
|
67
|
+
if (dTags.length !== 1) {
|
|
68
|
+
_logger.debug('Must have exactly one d tag');
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
_logger.error('Error validating parameterized event:', error);
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Creates a parameterized event manager
|
|
80
|
+
* @param _logger - Logger instance
|
|
81
|
+
* @returns {ParameterizedEventManager} Event manager
|
|
82
|
+
*/
|
|
83
|
+
function createParameterizedEventManager(_logger) {
|
|
84
|
+
return {
|
|
85
|
+
createEvent(kind, content, identifier, tags = []) {
|
|
86
|
+
return createParameterizedEvent(kind, content, identifier, tags);
|
|
87
|
+
},
|
|
88
|
+
updateEvent(kind, identifier, content) {
|
|
89
|
+
return createParameterizedEvent(kind, content, identifier);
|
|
90
|
+
},
|
|
91
|
+
subscribe(kinds, identifiers) {
|
|
92
|
+
return ['REQ', {
|
|
93
|
+
filter: {
|
|
94
|
+
kinds,
|
|
95
|
+
'#d': identifiers
|
|
96
|
+
}
|
|
97
|
+
}];
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Creates an event replacement handler
|
|
103
|
+
* @param _logger - Logger instance
|
|
104
|
+
* @returns {EventReplacementHandler} Replacement handler
|
|
105
|
+
*/
|
|
106
|
+
function createEventReplacementHandler(_logger) {
|
|
107
|
+
return {
|
|
108
|
+
shouldReplace(newEvent, existingEvent) {
|
|
109
|
+
try {
|
|
110
|
+
// Must be same kind
|
|
111
|
+
if (newEvent.kind !== existingEvent.kind)
|
|
112
|
+
return false;
|
|
113
|
+
// Must have same 'd' tag value
|
|
114
|
+
const newTags = newEvent.tags;
|
|
115
|
+
const existingTags = existingEvent.tags;
|
|
116
|
+
const newDTag = newTags?.find(tag => tag[0] === 'd')?.[1];
|
|
117
|
+
const existingDTag = existingTags?.find(tag => tag[0] === 'd')?.[1];
|
|
118
|
+
if (newDTag !== existingDTag)
|
|
119
|
+
return false;
|
|
120
|
+
// Replace if newer
|
|
121
|
+
return newEvent.created_at > existingEvent.created_at;
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
_logger.error('Error checking event replacement:', error);
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
getReplacementKey(event) {
|
|
129
|
+
const kind = event.kind;
|
|
130
|
+
const dTag = event.tags?.find(tag => tag[0] === 'd')?.[1];
|
|
131
|
+
return `${kind}:${dTag}`;
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=nip-33.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nip-33.js","sourceRoot":"","sources":["../../../src/nips/nip-33.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Base transport layer for Nostr connections
|
|
3
|
+
* @module transport/base
|
|
4
|
+
*/
|
|
5
|
+
import { EventEmitter } from 'events';
|
|
6
|
+
import type { MetricsProvider, ScoringStrategy, MetricValue, TransportData } from '../types/scoring';
|
|
7
|
+
export interface TransportOptions {
|
|
8
|
+
metricsProvider?: MetricsProvider;
|
|
9
|
+
scoringStrategy?: ScoringStrategy;
|
|
10
|
+
metricsEnabled?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare abstract class BaseTransport extends EventEmitter {
|
|
13
|
+
protected scoringStrategy: ScoringStrategy;
|
|
14
|
+
protected metricsProvider?: MetricsProvider;
|
|
15
|
+
protected metricsEnabled: boolean;
|
|
16
|
+
constructor(options?: TransportOptions);
|
|
17
|
+
/**
|
|
18
|
+
* Create a default metrics provider if none is supplied
|
|
19
|
+
*/
|
|
20
|
+
protected createDefaultMetricsProvider(): MetricsProvider;
|
|
21
|
+
/**
|
|
22
|
+
* Track a metric update
|
|
23
|
+
*/
|
|
24
|
+
protected trackMetric(endpoint: string, metricType: string, value: MetricValue): void;
|
|
25
|
+
/**
|
|
26
|
+
* Gets the score for an endpoint
|
|
27
|
+
* @param endpoint - Endpoint to get score for
|
|
28
|
+
* @returns {number} Score between 0 and 100
|
|
29
|
+
*/
|
|
30
|
+
getScore(endpoint: string): number;
|
|
31
|
+
/**
|
|
32
|
+
* Gets scores for all endpoints
|
|
33
|
+
* @returns {Map<string, number>} Map of endpoint scores
|
|
34
|
+
*/
|
|
35
|
+
getAllScores(): Map<string, number>;
|
|
36
|
+
/**
|
|
37
|
+
* Enable/disable metrics
|
|
38
|
+
*/
|
|
39
|
+
setMetricsEnabled(enabled: boolean): void;
|
|
40
|
+
/**
|
|
41
|
+
* Updates the scoring strategy
|
|
42
|
+
* @param strategy - New scoring strategy
|
|
43
|
+
*/
|
|
44
|
+
updateScoringStrategy(strategy: ScoringStrategy): void;
|
|
45
|
+
/**
|
|
46
|
+
* Updates the metrics provider
|
|
47
|
+
* @param provider - New metrics provider
|
|
48
|
+
*/
|
|
49
|
+
updateMetricsProvider(provider?: MetricsProvider): void;
|
|
50
|
+
abstract connect(endpoint: string): Promise<void>;
|
|
51
|
+
abstract disconnect(endpoint: string): Promise<void>;
|
|
52
|
+
abstract send(endpoint: string, data: TransportData): Promise<void>;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/transport/base.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EAEf,WAAW,EACX,aAAa,EACd,MAAM,kBAAkB,CAAC;AAI1B,MAAM,WAAW,gBAAgB;IAC/B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,8BAAsB,aAAc,SAAQ,YAAY;IACtD,SAAS,CAAC,eAAe,EAAE,eAAe,CAAC;IAC3C,SAAS,CAAC,eAAe,CAAC,EAAE,eAAe,CAAC;IAC5C,SAAS,CAAC,cAAc,EAAE,OAAO,CAAC;gBAEtB,OAAO,GAAE,gBAAqB;IAO1C;;OAEG;IACH,SAAS,CAAC,4BAA4B,IAAI,eAAe;IAkBzD;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW;IAoB9E;;;;OAIG;IACI,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IASzC;;;OAGG;IACI,YAAY,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAW1C;;OAEG;IACI,iBAAiB,CAAC,OAAO,EAAE,OAAO;IAIzC;;;OAGG;IACI,qBAAqB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAI7D;;;OAGG;IACI,qBAAqB,CAAC,QAAQ,CAAC,EAAE,eAAe,GAAG,IAAI;IAM9D,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACjD,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACpD,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;CACpE"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @file Base transport layer for Nostr connections
|
|
4
|
+
* @module transport/base
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.BaseTransport = void 0;
|
|
8
|
+
const events_1 = require("events");
|
|
9
|
+
const logger_1 = require("../utils/logger");
|
|
10
|
+
const scoring_1 = require("../types/scoring");
|
|
11
|
+
const logger = (0, logger_1.getLogger)('BaseTransport');
|
|
12
|
+
class BaseTransport extends events_1.EventEmitter {
|
|
13
|
+
constructor(options = {}) {
|
|
14
|
+
super();
|
|
15
|
+
this.scoringStrategy = options.scoringStrategy ?? new scoring_1.DefaultScoringStrategy();
|
|
16
|
+
this.metricsProvider = options.metricsProvider;
|
|
17
|
+
this.metricsEnabled = !!this.metricsProvider;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Create a default metrics provider if none is supplied
|
|
21
|
+
*/
|
|
22
|
+
createDefaultMetricsProvider() {
|
|
23
|
+
return {
|
|
24
|
+
getMetrics: () => ({
|
|
25
|
+
totalConnections: 0,
|
|
26
|
+
activeConnections: 0,
|
|
27
|
+
connectionErrors: 0,
|
|
28
|
+
messagesReceived: 0,
|
|
29
|
+
messagesSent: 0,
|
|
30
|
+
bytesReceived: 0,
|
|
31
|
+
bytesSent: 0,
|
|
32
|
+
averageLatency: 0,
|
|
33
|
+
lastSeen: Date.now()
|
|
34
|
+
}),
|
|
35
|
+
getAllMetrics: () => new Map(),
|
|
36
|
+
trackMetric: () => { }
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Track a metric update
|
|
41
|
+
*/
|
|
42
|
+
trackMetric(endpoint, metricType, value) {
|
|
43
|
+
if (!this.metricsEnabled)
|
|
44
|
+
return;
|
|
45
|
+
try {
|
|
46
|
+
this.metricsProvider?.trackMetric(endpoint, metricType, value);
|
|
47
|
+
const event = {
|
|
48
|
+
endpoint,
|
|
49
|
+
metricType,
|
|
50
|
+
value,
|
|
51
|
+
timestamp: Date.now()
|
|
52
|
+
};
|
|
53
|
+
this.emit('metric', event);
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
logger.error({ error, endpoint, metricType }, 'Error tracking metric');
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Gets the score for an endpoint
|
|
61
|
+
* @param endpoint - Endpoint to get score for
|
|
62
|
+
* @returns {number} Score between 0 and 100
|
|
63
|
+
*/
|
|
64
|
+
getScore(endpoint) {
|
|
65
|
+
if (!this.metricsEnabled)
|
|
66
|
+
return 100;
|
|
67
|
+
const metrics = this.metricsProvider?.getMetrics(endpoint);
|
|
68
|
+
if (!metrics)
|
|
69
|
+
return 100;
|
|
70
|
+
return this.scoringStrategy.calculateScore(metrics);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Gets scores for all endpoints
|
|
74
|
+
* @returns {Map<string, number>} Map of endpoint scores
|
|
75
|
+
*/
|
|
76
|
+
getAllScores() {
|
|
77
|
+
if (!this.metricsEnabled || !this.metricsProvider)
|
|
78
|
+
return new Map();
|
|
79
|
+
const scores = new Map();
|
|
80
|
+
const allMetrics = this.metricsProvider.getAllMetrics();
|
|
81
|
+
for (const [endpoint, metrics] of allMetrics) {
|
|
82
|
+
scores.set(endpoint, this.scoringStrategy.calculateScore(metrics));
|
|
83
|
+
}
|
|
84
|
+
return scores;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Enable/disable metrics
|
|
88
|
+
*/
|
|
89
|
+
setMetricsEnabled(enabled) {
|
|
90
|
+
this.metricsEnabled = enabled;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Updates the scoring strategy
|
|
94
|
+
* @param strategy - New scoring strategy
|
|
95
|
+
*/
|
|
96
|
+
updateScoringStrategy(strategy) {
|
|
97
|
+
this.scoringStrategy = strategy;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Updates the metrics provider
|
|
101
|
+
* @param provider - New metrics provider
|
|
102
|
+
*/
|
|
103
|
+
updateMetricsProvider(provider) {
|
|
104
|
+
this.metricsProvider = provider;
|
|
105
|
+
this.metricsEnabled = !!provider;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
exports.BaseTransport = BaseTransport;
|
|
109
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/transport/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file WebSocket transport implementation
|
|
3
|
+
* @module transport/websocket
|
|
4
|
+
*/
|
|
5
|
+
import { BaseTransport } from './base';
|
|
6
|
+
import type { TransportOptions } from './base';
|
|
7
|
+
export declare class WebSocketTransport extends BaseTransport {
|
|
8
|
+
private connections;
|
|
9
|
+
constructor(options?: TransportOptions);
|
|
10
|
+
connect(endpoint: string): Promise<void>;
|
|
11
|
+
disconnect(endpoint: string): Promise<void>;
|
|
12
|
+
send(endpoint: string, data: any): Promise<void>;
|
|
13
|
+
protected trackMetric(endpoint: string, metric: string, value: unknown): void;
|
|
14
|
+
private checkEndpointHealth;
|
|
15
|
+
/**
|
|
16
|
+
* Get all active WebSocket connections
|
|
17
|
+
*/
|
|
18
|
+
getActiveConnections(): string[];
|
|
19
|
+
/**
|
|
20
|
+
* Check if connected to endpoint
|
|
21
|
+
*/
|
|
22
|
+
isConnected(endpoint: string): boolean;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=websocket.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../../src/transport/websocket.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAI/C,qBAAa,kBAAmB,SAAQ,aAAa;IACnD,OAAO,CAAC,WAAW,CAAqC;gBAE5C,OAAO,GAAE,gBAAqB;IAIpC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuDxC,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc3C,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBtD,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;YAOxD,mBAAmB;IAsBjC;;OAEG;IACI,oBAAoB,IAAI,MAAM,EAAE;IAIvC;;OAEG;IACI,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAI9C"}
|