DWN

DWN Client

1. Instala

npm i @quarkid/dwn-client

2. Inicializa DWN Client

Compartir en redes

Cuando queremos instaciar el DWN lo debemos configurar pasandole un DID, para que pueda pullear mensajes de ese DID, inboxURL que seria el endpoint de nuestro servico de DWN, y un storage que es el lugar donde se van a guardar los mensajes.

const dwnClient = new DWNClient({ did : "did:example"; inboxURL : "dwnURL"; storage : MessageStorage; });

Para esta prueba puedes crear un storage que guarde los datos en memoria

export const storageMock: MessageStorage = { async getMessages(): Promise<Entry[]> { return messagesStorage; }, async getLastPullDate(): Promise<Date> { return lastPullDate; }, async saveMessages(messages: Entry[]): Promise<void> { messagesStorage.push(...messages); }, async updateLastPullDate(date: Date): Promise<void> { lastPullDate = date; }, };

3. Envía un mesnaje al DWN

const sendMsg = await dwnClient.sendMessage({ targetDID: "did:example", //refiere al did del destinatario targetInboxURL: "dwnURL", // refiere al servicio del dwn del destinatario, el mismo se obtiene resolviendo el DidDocument message: { data: packedMessage, //el mensaje a enviar debe ir empaquetado con DidComm descriptor: { method: ThreadMethod.Create, dateCreated: new Date(), dataFormat: "application/json", }, }, });

DWN Types

La estructura de los mensajes estan definidas en el protocolo por lo que lo que seran de la siguiente manera.

export type Entry = { descriptor: MessageDescriptor; data?: any; };

export type MessageDescriptor = { method: ThreadMethod; // UUIDv4 objectId?: string; // Content-Type header (e.g. application/json) dataFormat?: string; // content id cid?: { codec: string; version: number; hash: any; }; // Creation date in UNIX timestamp format dateCreated?: number; // Data Schema URL schema?: string; // Initial thread message id root?: string; // Parent (replying to) message id parent?: string; };

DWN Scheduler para el Pulleo de mensajes

1. Instala

npm i @quarkid/dwn-client-scheduler

2. Inicializa el DwnClientScheduler

const dwnClientScheduler = new DWNClientScheduler(dwnClient, cronExpression); dwnClientScheduler.start(); dwnClient.addSubscriber(async (messages) => { console.log(`Found ${messages.length} messages`); console.log(messages); });

const cronExpression = "*/10 * * * * *";