diff --git a/lib/firefly.ts b/lib/firefly.ts index f977a5f..6d10d66 100644 --- a/lib/firefly.ts +++ b/lib/firefly.ts @@ -344,6 +344,10 @@ export default class FireFly extends HttpBase { return this.getOne(`/tokens/pools/${nameOrId}`, options); } + async deleteTokenPool(nameOrId: string, options?: FireFlyDeleteOptions) { + await this.deleteOne(`/tokens/pools/${nameOrId}`, options); + } + mintTokens(transfer: FireFlyTokenMintRequest, options?: FireFlyCreateOptions) { return this.createOne('/tokens/mint', transfer, options); } @@ -608,26 +612,34 @@ export default class FireFly extends HttpBase { subscriptions: string | string[] | FireFlySubscriptionBase, callback: FireFlyWebSocketCallback, socketOptions?: WebSocket.ClientOptions | http.ClientRequestArgs, - afterConnect?: FireFlyWebSocketConnectCallback, + fireflySocketOptions?: Partial | FireFlyWebSocketConnectCallback, ): FireFlyWebSocket { + if (typeof fireflySocketOptions === 'function') { + // Legacy compatibility (afterConnect callback passed as 4th arg) + fireflySocketOptions = { + afterConnect: fireflySocketOptions, + }; + } const options: FireFlyWebSocketOptions = { host: this.options.websocket.host, namespace: this.options.namespace, username: this.options.username, password: this.options.password, - subscriptions: [], - autoack: false, reconnectDelay: this.options.websocket.reconnectDelay, heartbeatInterval: this.options.websocket.heartbeatInterval, - socketOptions: socketOptions, - afterConnect: afterConnect, + autoack: false, + ...fireflySocketOptions, + socketOptions, + subscriptions: [], }; const handler: FireFlyWebSocketCallback = (socket, event) => { this.queue = this.queue.finally(() => callback(socket, event)); - this.queue.then(() => { - socket.ack(event); - }); + if (!options.noack) { + this.queue.then(() => { + socket.ack(event); + }); + } }; if (Array.isArray(subscriptions)) { diff --git a/lib/interfaces.ts b/lib/interfaces.ts index 0438aa5..3f89324 100644 --- a/lib/interfaces.ts +++ b/lib/interfaces.ts @@ -76,7 +76,8 @@ export interface FireFlyWebSocketOptions { username?: string; password?: string; ephemeral?: FireFlyEphemeralSubscription; - autoack: boolean; + autoack?: boolean; + noack?: boolean; reconnectDelay: number; heartbeatInterval: number; socketOptions?: WebSocket.ClientOptions | http.ClientRequestArgs; @@ -171,7 +172,8 @@ export interface FireFlyEnrichedEvent extends FireFlyEventResponse { operation?: FireFlyOperationResponse; } -export interface FireFlyEventDelivery extends FireFlyEnrichedEvent { +export interface FireFlyEventDelivery extends Omit { + type: FireFlyEnrichedEvent['type'] | 'protocol_error'; subscription: { id: string; name: string; diff --git a/package-lock.json b/package-lock.json index bc914ef..cdaa705 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@hyperledger/firefly-sdk", - "version": "1.2.12", + "version": "1.2.15", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@hyperledger/firefly-sdk", - "version": "1.2.12", + "version": "1.2.15", "license": "Apache-2.0", "dependencies": { "axios": "^0.26.1", diff --git a/package.json b/package.json index 902afd0..27ef704 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@hyperledger/firefly-sdk", - "version": "1.2.14", + "version": "1.2.15", "description": "Client SDK for Hyperledger FireFly", "main": "dist/index.js", "types": "dist/index.d.ts",