diff --git a/book/snippets/nostr/js/index.js b/book/snippets/nostr/js/index.js index c132db2a7..d717feaa8 100644 --- a/book/snippets/nostr/js/index.js +++ b/book/snippets/nostr/js/index.js @@ -2,6 +2,7 @@ const keys = require("./src/keys"); const eventJson = require("./src/event/json"); const eventBuilder = require("./src/event/builder"); const filters = require("./src/messages/filters"); +const clientMessages = require("./src/messages/client"); const relayMessages = require("./src/messages/relay"); const nip01 = require("./src/nip01"); const nip05 = require("./src/nip05"); @@ -21,8 +22,9 @@ async function main() { eventJson.eventJson(); eventBuilder.eventBuilder(); + filters.run(); + await clientMessages.run(); await relayMessages.run(); - await filters.run(); nip01.run(); await nip05.run(); diff --git a/book/snippets/nostr/js/src/messages/client.js b/book/snippets/nostr/js/src/messages/client.js new file mode 100644 index 000000000..9569bd96e --- /dev/null +++ b/book/snippets/nostr/js/src/messages/client.js @@ -0,0 +1,63 @@ +const { ClientMessage, EventBuilder, Filter, Keys, loadWasmAsync } = require('@rust-nostr/nostr'); + +async function run() { + await loadWasmAsync(); + + const keys = Keys.generate(); + const event = EventBuilder.textNote("TestTextNoTe", []).toEvent(keys); + + console.log() + console.log("Client Messages:"); + + // ANCHOR: event-message + // Create Event client message + console.log(" Event Client Message:"); + let clientMessage = ClientMessage.event(event); + console.log(` - JSON: ${clientMessage.asJson()}`); + // ANCHOR_END: event-message + + console.log(); + // ANCHOR: req-message + // Create Request client message + console.log(" Request Client Message:"); + let f = new Filter().id(event.id); + clientMessage = ClientMessage.req("ABC123", [f]); + console.log(` - JSON: ${clientMessage.asJson()}`); + // ANCHOR_END: req-message + + console.log(); + // ANCHOR: close-message + // Create Close client message + console.log(" Close Client Message:"); + clientMessage = ClientMessage.close("ABC123"); + console.log(` - JSON: ${clientMessage.asJson()}`); + // ANCHOR_END: close-message + + console.log(); + // ANCHOR: parse-message + // Parse Messages from JSON + console.log(" Parse Client Messages:"); + clientMessage = ClientMessage.fromJson('["REQ","ABC123",{"#p":["421a4dd67be773903f805bcb7975b4d3377893e0e09d7563b8972ee41031f551"]}]'); + console.log(` - JSON: ${clientMessage.asJson()}`); + // ANCHOR_END: parse-message + + console.log(); + // ANCHOR: auth-message + // Create Auth client message (NIP42) + console.log(" Auth Client Message:"); + clientMessage = ClientMessage.auth(event); + console.log(` - JSON: ${clientMessage.asJson()}`); + // ANCHOR_END: auth-message + + console.log(); + // ANCHOR: count-message + // Create Count client message (NIP45) + console.log(" Count Client Message:"); + f = new Filter().pubkey(keys.publicKey); + clientMessage = ClientMessage.count("ABC123", [f]); + console.log(` - JSON: ${clientMessage.asJson()}`); + // ANCHOR_END: count-message + +} + +module.exports.run = run; \ No newline at end of file diff --git a/book/src/nostr/05_01-client-message.md b/book/src/nostr/05_01-client-message.md index b79bd413e..84b98436b 100644 --- a/book/src/nostr/05_01-client-message.md +++ b/book/src/nostr/05_01-client-message.md @@ -56,7 +56,31 @@ When presented with a client message object as either a JSON or an instance of t