From 35ac527e133b21a1a61df63e259bf564545c5bb0 Mon Sep 17 00:00:00 2001 From: ThetaSinner Date: Wed, 8 Nov 2023 18:32:50 +0000 Subject: [PATCH] Prepare for Holochain 0.3 --- README.md | 2 ++ package-lock.json | 4 ++-- package.json | 2 +- src/api/client.ts | 15 +++++++++++++++ src/api/common.ts | 4 ++-- 5 files changed, 22 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index b3a207df..e3213aed 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,8 @@ A JavaScript client for the Holochain Conductor API (works with browsers as well **JS client v0.16.x** are compatible with **Holochain v0.2.x**. +**JS client v0.17.x** are compatible with **Holochain v0.3.x**. + To install from NPM, run ```bash npm install --save-exact @holochain/client diff --git a/package-lock.json b/package-lock.json index 16b85e1b..4f71e9fc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@holochain/client", - "version": "0.16.3", + "version": "0.17.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@holochain/client", - "version": "0.16.3", + "version": "0.17.0", "license": "CAL-1.0", "dependencies": { "@holochain/serialization": "^0.1.0-beta-rc.3", diff --git a/package.json b/package.json index 36cd907e..cfb8ebd9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@holochain/client", - "version": "0.16.3", + "version": "0.17.0", "description": "A JavaScript client for the Holochain Conductor API", "author": "Holochain Foundation (http://holochain.org)", "license": "CAL-1.0", diff --git a/src/api/client.ts b/src/api/client.ts index 2f67fc00..e3e659d8 100644 --- a/src/api/client.ts +++ b/src/api/client.ts @@ -188,6 +188,14 @@ export class WsClient extends Emittery { resolve: RequestResolver, reject: RequestRejecter ) { + function toHexString(byteArray: number[]) { + return Array.from(byteArray, function(byte) { + return ('0' + (byte & 0xFF).toString(16)).slice(-2); + }).join(', ') + } + + console.log("sending message", request, toHexString(encode(request) as unknown as number[])) + const id = this.index; const encodedMsg = encode({ id, @@ -200,6 +208,12 @@ export class WsClient extends Emittery { } private handleResponse(msg: HolochainMessage) { + function toHexString(byteArray: number[]) { + return Array.from(byteArray, function(byte) { + return ('0' + (byte & 0xFF).toString(16)).slice(-2); + }).join(', ') + } + const id = msg.id; if (this.pendingRequests[id]) { if (msg.data === null || msg.data === undefined) { @@ -207,6 +221,7 @@ export class WsClient extends Emittery { new Error("Response canceled by responder") ); } else { + console.log('got a response back', msg.data, toHexString(msg.data as unknown as number[])); this.pendingRequests[id].resolve(decode(msg.data)); } delete this.pendingRequests[id]; diff --git a/src/api/common.ts b/src/api/common.ts index 17e13162..9f7311d3 100644 --- a/src/api/common.ts +++ b/src/api/common.ts @@ -22,7 +22,7 @@ export type RequesterUnit = () => Promise; /** * @public */ -export type Tagged = { type: string; data: T }; +export type Tagged = { type: { [tag: string]: null }; data: T }; /** * Take a Requester function which deals with tagged requests and responses, @@ -39,7 +39,7 @@ export const requesterTransformer = ) => async (req: ReqI, timeout?: number) => { const transformedInput = await transform.input(req); - const input = { type: tag, data: transformedInput }; + const input = { type: { [tag]: null }, data: transformedInput }; const response = await requester(input, timeout); const output = transform.output(response.data); return output;