diff --git a/package-lock.json b/package-lock.json index f67cb11..89bc373 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,9 +5,9 @@ "requires": true, "dependencies": { "@apiglobal/typedrequest": { - "version": "1.0.49", - "resolved": "https://verdaccio.lossless.one/@apiglobal%2ftypedrequest/-/typedrequest-1.0.49.tgz", - "integrity": "sha512-9pDu8a7aj2SnbiyRyYK7uyWyZYhH2Ej+ovGI1gXKX8CbG28FchoiiSVMCFnWdvCq2X1+Tm2nybSr50vB8vEvuw==", + "version": "1.0.50", + "resolved": "https://verdaccio.lossless.one/@apiglobal%2ftypedrequest/-/typedrequest-1.0.50.tgz", + "integrity": "sha512-Jk4hkc6CjHf7mc1lw3RCvZEBgw1trf/kJTiXaOin3wMFLTu9JUC+GTjif/nWLmJfZJTXqpv6utL3msO+YkzRYA==", "requires": { "@apiglobal/typedrequest-interfaces": "^1.0.15", "@pushrocks/isounique": "^1.0.4", diff --git a/package.json b/package.json index d3d623f..01816bb 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "tslint-config-prettier": "^1.15.0" }, "dependencies": { - "@apiglobal/typedrequest": "^1.0.49", + "@apiglobal/typedrequest": "^1.0.50", "@apiglobal/typedrequest-interfaces": "^1.0.15" }, "files": [ diff --git a/test/test.browser.ts b/test/test.browser.ts index 9497a0c..8137afd 100644 --- a/test/test.browser.ts +++ b/test/test.browser.ts @@ -3,9 +3,20 @@ import * as deesComms from '../ts/index'; let deesCommsTest: deesComms.DeesComms; -tap.test('first test', async () => { +tap.test('first test', async (tools) => { deesCommsTest = new deesComms.DeesComms(); - deesCommsTest; + deesCommsTest.createTypedHandler('test', async (requestData) => { + return {}; + }); + + // lets fire a request + const typedrequest = deesCommsTest.createTypedRequest('test'); + const resultPromise = typedrequest.fire({ + method: 'test', + request: {}, + response: {} + }); + await tools.delayFor(2000); }); tap.start(); diff --git a/ts/dees-comms.classes.deescomms.ts b/ts/dees-comms.classes.deescomms.ts index e03046c..3a08209 100644 --- a/ts/dees-comms.classes.deescomms.ts +++ b/ts/dees-comms.classes.deescomms.ts @@ -7,14 +7,14 @@ import * as plugins from './dees-comms.plugins'; export class DeesComms { // sending messages private postChannel = new BroadcastChannel('dees-comms'); - private typedrouter = new plugins.typedrequest.TypedRouter(); - + public typedrouter = new plugins.typedrequest.TypedRouter(); + private subscriptionChannel = new BroadcastChannel('dees-comms'); - constructor() { this.subscriptionChannel.onmessage = (eventArg) => { const message = eventArg.data; + console.log(JSON.stringify(message)); this.typedrouter.routeAndAddResponse(message); }; } @@ -25,7 +25,13 @@ export class DeesComms { public createTypedRequest( methodName: T['method'] ): TypedRequest { - const typedrequest = new plugins.typedrequest.TypedRequest(this.postMessage, methodName, this.typedrouter); + const typedrequest = new plugins.typedrequest.TypedRequest( + async (messageArg) => { + this.postMessage(messageArg); + }, + methodName, + this.typedrouter + ); return typedrequest; } @@ -41,5 +47,10 @@ export class DeesComms { /** * subscribe to messages */ - public async subscribe() {} + public async createTypedHandler( + methodArg: T['method'], + handlerFunction: plugins.typedrequest.THandlerFunction + ) { + this.typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler(methodArg, handlerFunction)); + } }