diff --git a/dist/index.js b/dist/index.js index df74310..20712a1 100644 --- a/dist/index.js +++ b/dist/index.js @@ -4,4 +4,5 @@ function __export(m) { } __export(require("./smartsocket.classes.smartsocket")); __export(require("./smartsocket.classes.smartsocketclient")); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRUEsaUJBQWMsbUNBQW1DLENBQUMsRUFBQTtBQUNsRCxpQkFBYyx5Q0FBeUMsQ0FBQyxFQUFBIn0= \ No newline at end of file +// need something more exposed? Create an issue on GitLab! +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRUEsaUJBQWMsbUNBQW1DLENBQUMsRUFBQTtBQUNsRCxpQkFBYyx5Q0FBeUMsQ0FBQyxFQUFBO0FBRXhELDBEQUEwRCJ9 \ No newline at end of file diff --git a/dist/smartsocket.classes.smartsocket.d.ts b/dist/smartsocket.classes.smartsocket.d.ts index 2b10472..600fca9 100644 --- a/dist/smartsocket.classes.smartsocket.d.ts +++ b/dist/smartsocket.classes.smartsocket.d.ts @@ -12,10 +12,11 @@ export declare class Smartsocket { /** * the standard handler for new socket connections */ - private _handleSocket(socketArg); + private _handleSocketConnection(socketArg); /** * starts listening to incling sockets: */ startServer: () => void; closeServer: () => void; + clientCall(): void; } diff --git a/dist/smartsocket.classes.smartsocket.js b/dist/smartsocket.classes.smartsocket.js index 7808b02..b5bb117 100644 --- a/dist/smartsocket.classes.smartsocket.js +++ b/dist/smartsocket.classes.smartsocket.js @@ -13,7 +13,7 @@ class Smartsocket { this.startServer = () => { this.io = plugins.socketIo(this.options.port); this.io.on('connection', (socketArg) => { - this._handleSocket(socketArg); + this._handleSocketConnection(socketArg); }); }; this.closeServer = () => { @@ -30,7 +30,7 @@ class Smartsocket { /** * the standard handler for new socket connections */ - _handleSocket(socketArg) { + _handleSocketConnection(socketArg) { let socketConnection = new smartsocket_classes_socketconnection_1.SocketConnection({ authenticated: false, socket: socketArg @@ -41,6 +41,10 @@ class Smartsocket { .then(socketConnection.listenToFunctionRequests); } ; + // communication + clientCall() { + // TODO: target specific client and initiate response + } } exports.Smartsocket = Smartsocket; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzb2NrZXQuY2xhc3Nlcy5zbWFydHNvY2tldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0c29ja2V0LmNsYXNzZXMuc21hcnRzb2NrZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQVksT0FBTyxXQUFNLHVCQUF1QixDQUFDLENBQUE7QUFHakQsVUFBVTtBQUNWLHNCQUEwQixLQUFLLENBQUMsQ0FBQTtBQUdoQyx1REFBaUMsd0NBQXdDLENBQUMsQ0FBQTtBQUt6RSxDQUFDO0FBRUY7SUFJSSxZQUFZLFVBQTBDO1FBRHRELGdCQUFXLEdBQUcsSUFBSSxlQUFTLEVBQW9CLENBQUM7UUFtQmhEOztXQUVHO1FBRUgsZ0JBQVcsR0FBRztZQUNWLElBQUksQ0FBQyxFQUFFLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDLFNBQVM7Z0JBQy9CLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDbEMsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUE7UUFDRCxnQkFBVyxHQUFHO1lBQ1YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxlQUFpQztnQkFDdkQsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsa0NBQWtDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUNqRixlQUFlLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3hDLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3BCLENBQUMsQ0FBQTtRQWxDRyxJQUFJLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQztJQUM5QixDQUFDOztJQUVEOztPQUVHO0lBQ0ssYUFBYSxDQUFDLFNBQVM7UUFDM0IsSUFBSSxnQkFBZ0IsR0FBc0IsSUFBSSx1REFBZ0IsQ0FBQztZQUMzRCxhQUFhLEVBQUMsS0FBSztZQUNuQixNQUFNLEVBQUMsU0FBUztTQUNuQixDQUFDLENBQUM7UUFDSCxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFBO1FBQ3BFLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDdkMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFO2FBQzFCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQ3pELENBQUM7O0FBb0JMLENBQUM7QUF4Q1ksbUJBQVcsY0F3Q3ZCLENBQUEifQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzb2NrZXQuY2xhc3Nlcy5zbWFydHNvY2tldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0c29ja2V0LmNsYXNzZXMuc21hcnRzb2NrZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQVksT0FBTyxXQUFNLHVCQUF1QixDQUFDLENBQUE7QUFHakQsVUFBVTtBQUNWLHNCQUEwQixLQUFLLENBQUMsQ0FBQTtBQUdoQyx1REFBaUMsd0NBQXdDLENBQUMsQ0FBQTtBQUt6RSxDQUFDO0FBRUY7SUFJSSxZQUFZLFVBQTBDO1FBRHRELGdCQUFXLEdBQUcsSUFBSSxlQUFTLEVBQW9CLENBQUM7UUFtQmhEOztXQUVHO1FBRUgsZ0JBQVcsR0FBRztZQUNWLElBQUksQ0FBQyxFQUFFLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDLFNBQVM7Z0JBQy9CLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM1QyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQTtRQUNELGdCQUFXLEdBQUc7WUFDVixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGVBQWlDO2dCQUN2RCxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxrQ0FBa0MsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBQ2pGLGVBQWUsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDeEMsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDcEIsQ0FBQyxDQUFDO1FBbENFLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDO0lBQzlCLENBQUM7O0lBRUQ7O09BRUc7SUFDSyx1QkFBdUIsQ0FBQyxTQUFTO1FBQ3JDLElBQUksZ0JBQWdCLEdBQXNCLElBQUksdURBQWdCLENBQUM7WUFDM0QsYUFBYSxFQUFDLEtBQUs7WUFDbkIsTUFBTSxFQUFDLFNBQVM7U0FDbkIsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsNkNBQTZDLENBQUMsQ0FBQTtRQUNwRSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3ZDLGdCQUFnQixDQUFDLFlBQVksRUFBRTthQUMxQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUN6RCxDQUFDOztJQXFCRCxnQkFBZ0I7SUFDaEIsVUFBVTtRQUNOLDZEQUE2RDtJQUNqRSxDQUFDO0FBQ0wsQ0FBQztBQTdDWSxtQkFBVyxjQTZDdkIsQ0FBQSJ9 \ No newline at end of file diff --git a/dist/smartsocket.classes.smartsocketclient.d.ts b/dist/smartsocket.classes.smartsocketclient.d.ts index cc0e2e2..0f33f15 100644 --- a/dist/smartsocket.classes.smartsocketclient.d.ts +++ b/dist/smartsocket.classes.smartsocketclient.d.ts @@ -1,3 +1,5 @@ +/// +import * as plugins from "./smartsocket.plugins"; import { ISocketFunctionCall } from "./smartsocket.classes.socketfunction"; import { SocketConnection } from "./smartsocket.classes.socketconnection"; /** @@ -6,9 +8,15 @@ import { SocketConnection } from "./smartsocket.classes.socketconnection"; export interface ISmartsocketClientOptions { port: number; url: string; + alias?: string; + password: string; } export declare class SmartsocketClient { socketConnection: SocketConnection; + serverUrl: string; + serverPort: number; + serverPassword: string; constructor(optionsArg: ISmartsocketClientOptions); - serverCall(functionNameArg: string, dataArg: ISocketFunctionCall): void; + private _handleSocketConnection(); + serverCall(functionNameArg: string, dataArg: ISocketFunctionCall): plugins.q.Promise<{}>; } diff --git a/dist/smartsocket.classes.smartsocketclient.js b/dist/smartsocket.classes.smartsocketclient.js index 3cc344e..19a8d66 100644 --- a/dist/smartsocket.classes.smartsocketclient.js +++ b/dist/smartsocket.classes.smartsocketclient.js @@ -1,12 +1,40 @@ "use strict"; const plugins = require("./smartsocket.plugins"); +// import classes +const smartsocket_classes_socketconnection_1 = require("./smartsocket.classes.socketconnection"); const smartsocket_classes_socketrequest_1 = require("./smartsocket.classes.socketrequest"); class SmartsocketClient { constructor(optionsArg) { - // TODO: implement Socket init + this.serverUrl = optionsArg.url; + this.serverPort = optionsArg.port; + this.serverPassword = optionsArg.password; + } + ; + // authenticates the socket against the server + _handleSocketConnection() { + let done = plugins.q.defer(); + let socketUrl = `${this.serverUrl}:${this.serverPort}`; + this.socketConnection = new smartsocket_classes_socketconnection_1.SocketConnection({ + authenticated: false, + socket: plugins.socketIoClient(this.serverUrl, {}) + }); + this.socketConnection.socket.on("requestAuth", function () { + console.log("server requested authentication"); + this.socketConnection.socket.emit("dataAuth", { + role: "coreflowContainer", + password: "somePassword", + alias: "coreflow1" + }); + this.socketConnection.socket.on("authenticated", () => { + console.log("client is authenticated"); + done.resolve(); + }); + }); + return done.promise; } ; serverCall(functionNameArg, dataArg) { + let done = plugins.q.defer(); let socketRequest = new smartsocket_classes_socketrequest_1.SocketRequest({ side: "requesting", originSocketConnection: this.socketConnection, @@ -16,8 +44,13 @@ class SmartsocketClient { funcDataArg: dataArg } }); - socketRequest.dispatch(); + socketRequest.dispatch() + .then(() => { + done.resolve(); + }); + return done.promise; } + ; } exports.SmartsocketClient = SmartsocketClient; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzb2NrZXQuY2xhc3Nlcy5zbWFydHNvY2tldGNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0c29ja2V0LmNsYXNzZXMuc21hcnRzb2NrZXRjbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQVksT0FBTyxXQUFNLHVCQUl6QixDQUFDLENBSitDO0FBVWhELG9EQUE4QixxQ0FBcUMsQ0FBQyxDQUFBO0FBU3BFO0lBRUksWUFBWSxVQUFvQztRQUM1Qyw4QkFBOEI7SUFDbEMsQ0FBQzs7SUFDRCxVQUFVLENBQUMsZUFBc0IsRUFBQyxPQUEyQjtRQUN6RCxJQUFJLGFBQWEsR0FBRyxJQUFJLGlEQUFhLENBQUM7WUFDbEMsSUFBSSxFQUFDLFlBQVk7WUFDakIsc0JBQXNCLEVBQUMsSUFBSSxDQUFDLGdCQUFnQjtZQUM1QyxPQUFPLEVBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7WUFDbEMsWUFBWSxFQUFDO2dCQUNULFFBQVEsRUFBRSxlQUFlO2dCQUN6QixXQUFXLEVBQUMsT0FBTzthQUN0QjtTQUNKLENBQUMsQ0FBQztRQUNILGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM3QixDQUFDO0FBRUwsQ0FBQztBQWxCWSx5QkFBaUIsb0JBa0I3QixDQUFBIn0= \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzb2NrZXQuY2xhc3Nlcy5zbWFydHNvY2tldGNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0c29ja2V0LmNsYXNzZXMuc21hcnRzb2NrZXRjbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQVksT0FBTyxXQUFNLHVCQUl6QixDQUFDLENBSitDO0FBT2hELGlCQUFpQjtBQUNqQix1REFBaUMsd0NBQXdDLENBQUMsQ0FBQTtBQUUxRSxvREFBOEIscUNBQXFDLENBQUMsQ0FBQTtBQVdwRTtJQUtJLFlBQVksVUFBb0M7UUFDNUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFBO1FBQy9CLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztRQUNsQyxJQUFJLENBQUMsY0FBYyxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUE7SUFDN0MsQ0FBQzs7SUFFRCw4Q0FBOEM7SUFDdEMsdUJBQXVCO1FBQzNCLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0IsSUFBSSxTQUFTLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN2RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSx1REFBZ0IsQ0FBQztZQUN6QyxhQUFhLEVBQUMsS0FBSztZQUNuQixNQUFNLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFDLEVBQUUsQ0FBQztTQUNwRCxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUU7WUFDM0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDMUMsSUFBSSxFQUFFLG1CQUFtQjtnQkFDekIsUUFBUSxFQUFFLGNBQWM7Z0JBQ3hCLEtBQUssRUFBRSxXQUFXO2FBQ3JCLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLGVBQWUsRUFBQztnQkFDNUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO2dCQUN2QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbkIsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7O0lBQ0QsVUFBVSxDQUFDLGVBQXNCLEVBQUMsT0FBMkI7UUFDekQsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM3QixJQUFJLGFBQWEsR0FBRyxJQUFJLGlEQUFhLENBQUM7WUFDbEMsSUFBSSxFQUFDLFlBQVk7WUFDakIsc0JBQXNCLEVBQUMsSUFBSSxDQUFDLGdCQUFnQjtZQUM1QyxPQUFPLEVBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7WUFDbEMsWUFBWSxFQUFDO2dCQUNULFFBQVEsRUFBRSxlQUFlO2dCQUN6QixXQUFXLEVBQUMsT0FBTzthQUN0QjtTQUNKLENBQUMsQ0FBQztRQUNILGFBQWEsQ0FBQyxRQUFRLEVBQUU7YUFDbkIsSUFBSSxDQUFDO1lBQ0YsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUFDO1FBQ1AsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQzs7QUFFTCxDQUFDO0FBbkRZLHlCQUFpQixvQkFtRDdCLENBQUEifQ== \ No newline at end of file diff --git a/dist/smartsocket.classes.socketconnection.d.ts b/dist/smartsocket.classes.socketconnection.d.ts index 9b7b522..21d1272 100644 --- a/dist/smartsocket.classes.socketconnection.d.ts +++ b/dist/smartsocket.classes.socketconnection.d.ts @@ -1,15 +1,16 @@ /// +/// /// import * as plugins from "./smartsocket.plugins"; import { SocketRole } from "./smartsocket.classes.socketrole"; /** * interface for constructor of class SocketConnection */ -export interface ISocketConnectionOptions { +export interface ISocketConnectionConstructorOptions { alias?: string; authenticated: boolean; role?: SocketRole; - socket: SocketIO.Socket; + socket?: SocketIO.Socket | SocketIOClient.Socket; } /** * interface for authentication data @@ -26,8 +27,8 @@ export declare class SocketConnection { alias?: string; authenticated: boolean; role?: SocketRole; - socket: SocketIO.Socket; - constructor(optionsArg: ISocketConnectionOptions); + socket: SocketIO.Socket | SocketIOClient.Socket; + constructor(optionsArg: ISocketConnectionConstructorOptions); /** * authenticate the socket */ diff --git a/dist/smartsocket.classes.socketconnection.js b/dist/smartsocket.classes.socketconnection.js index d18c639..e6f51ba 100644 --- a/dist/smartsocket.classes.socketconnection.js +++ b/dist/smartsocket.classes.socketconnection.js @@ -14,6 +14,7 @@ class SocketConnection { this.role = optionsArg.role; this.socket = optionsArg.socket; } + // authenticating -------------------------- /** * authenticate the socket */ @@ -25,7 +26,7 @@ class SocketConnection { if ((true)) { this.alias = dataArg.alias; this.authenticated = true; - this.role = helpers.findSocketRoleByString(dataArg.role); + this.role = helpers.getSocketRoleByName(dataArg.role); this.socket.emit("authenticated"); plugins.beautylog.ok(`socket with >>alias ${this.alias} >>role ${this.role} is authenticated!`); done.resolve(this); @@ -40,6 +41,7 @@ class SocketConnection { return done.promise; } ; + // listening ------------------------------- /** * listen to function requests */ @@ -58,7 +60,7 @@ class SocketConnection { shortId: dataArg.shortId, funcCallData: dataArg.funcCallData }); - localSocketRequest; + localSocketRequest.createResponse(); // takes care of creating response and sending it back } else { plugins.beautylog.warn("function not existent or out of access scope"); @@ -66,6 +68,8 @@ class SocketConnection { ; }); this.socket.on("functionResponse", (dataArg) => { + let targetSocketRequest = helpers.getSocketRequestById(dataArg.shortId); + targetSocketRequest.handleResponse(dataArg); }); } else { @@ -74,7 +78,8 @@ class SocketConnection { ; return done.promise; } + ; } exports.SocketConnection = SocketConnection; ; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzb2NrZXQuY2xhc3Nlcy5zb2NrZXRjb25uZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRzb2NrZXQuY2xhc3Nlcy5zb2NrZXRjb25uZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxNQUFZLE9BQU8sV0FBTSx1QkFBdUIsQ0FBQyxDQUFBO0FBQ2pELE1BQVksT0FBTyxXQUFNLHVCQUF1QixDQUFDLENBQUE7QUFJakQsb0RBQXdELHFDQUFxQyxDQUFDLENBQUE7QUFhN0YsQ0FBQztBQVdGLGlCQUFpQjtBQUVqQjs7R0FFRztBQUNIO0lBS0ksWUFBWSxVQUFvQztRQUM1QyxJQUFJLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDO1FBQzlDLElBQUksQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7SUFDcEMsQ0FBQztJQUNEOztPQUVHO0lBQ0gsWUFBWTtRQUNSLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLE9BQU87WUFDOUIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsNERBQTRELENBQUMsQ0FBQztZQUNwRixJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNsRCxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDVCxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUE7Z0JBQzFCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO2dC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 \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzb2NrZXQuY2xhc3Nlcy5zb2NrZXRjb25uZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRzb2NrZXQuY2xhc3Nlcy5zb2NrZXRjb25uZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxNQUFZLE9BQU8sV0FBTSx1QkFBdUIsQ0FBQyxDQUFBO0FBQ2pELE1BQVksT0FBTyxXQUFNLHVCQUF1QixDQUFDLENBQUE7QUFJakQsb0RBQTJFLHFDQUFxQyxDQUFDLENBQUE7QUFhaEgsQ0FBQztBQVdGLGlCQUFpQjtBQUVqQjs7R0FFRztBQUNIO0lBS0ksWUFBWSxVQUErQztRQUN2RCxJQUFJLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDO1FBQzlDLElBQUksQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7SUFDcEMsQ0FBQztJQUVELDRDQUE0QztJQUU1Qzs7T0FFRztJQUNILFlBQVk7UUFDUixJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxPQUFPO1lBQzlCLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLDREQUE0RCxDQUFDLENBQUM7WUFDcEYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDbEQsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ1QsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFBO2dCQUMxQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztnQkFDMUIsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN0RCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDbEMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsdUJBQXVCLElBQUksQ0FBQyxLQUFLLFdBQVcsSUFBSSxDQUFDLElBQUksb0JBQW9CLENBQUMsQ0FBQztnQkFDaEcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2QixDQUFDO1lBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ0osSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQ3JDLENBQUM7WUFBQSxDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNoQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDOztJQUVELDRDQUE0QztJQUU1Qzs7T0FFRztJQUNILHdCQUF3QjtRQUNwQixJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzdCLEVBQUUsQ0FBQSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQSxDQUFDO1lBQ25CLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQWdDO2dCQUN4RCxpRUFBaUU7Z0JBQ2pFLElBQUksa0JBQWtCLEdBQWtCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsaUJBQWlCO29CQUN0RixNQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO2dCQUNwRSxDQUFDLENBQUMsQ0FBQztnQkFDSCxFQUFFLENBQUEsQ0FBQyxrQkFBa0IsS0FBSyxTQUFTLENBQUMsQ0FBQSxDQUFDO29CQUNqQyxJQUFJLGtCQUFrQixHQUFHLElBQUksaURBQWEsQ0FBQzt3QkFDdkMsSUFBSSxFQUFDLFlBQVk7d0JBQ2pCLHNCQUFzQixFQUFDLElBQUk7d0JBQzNCLE9BQU8sRUFBQyxPQUFPLENBQUMsT0FBTzt3QkFDdkIsWUFBWSxFQUFDLE9BQU8sQ0FBQyxZQUFZO3FCQUNwQyxDQUFDLENBQUM7b0JBQ0gsa0JBQWtCLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyx1REFBdUQ7Z0JBQ2hHLENBQUM7Z0JBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ0osT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsOENBQThDLENBQUMsQ0FBQztnQkFDM0UsQ0FBQztnQkFBQSxDQUFDO1lBQ04sQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLE9BQWdDO2dCQUNoRSxJQUFJLG1CQUFtQixHQUFHLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3hFLG1CQUFtQixDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNoRCxDQUFDLENBQUMsQ0FBQTtRQUNOLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNKLElBQUksQ0FBQyxNQUFNLENBQUMsd0NBQXdDLENBQUMsQ0FBQztRQUMxRCxDQUFDO1FBQUEsQ0FBQztRQUNGLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7O0FBSUwsQ0FBQztBQTNFWSx3QkFBZ0IsbUJBMkU1QixDQUFBO0FBQUEsQ0FBQyJ9 \ No newline at end of file diff --git a/dist/smartsocket.classes.socketfunction.d.ts b/dist/smartsocket.classes.socketfunction.d.ts index 131b542..19b1cb8 100644 --- a/dist/smartsocket.classes.socketfunction.d.ts +++ b/dist/smartsocket.classes.socketfunction.d.ts @@ -1,32 +1,40 @@ /// import * as plugins from "./smartsocket.plugins"; +import { Objectmap } from "lik"; import { SocketRole } from "./smartsocket.classes.socketrole"; /** * interface of the contructor options of class SocketFunction */ -export interface ISocketFunctionOptions { +export interface ISocketFunctionConstructorOptions { funcName: string; funcDef: any; allowedRoles: SocketRole[]; } /** - * interface of the Socket Function call + * interface of the Socket Function call, in other words the object that routes a call to a function */ export interface ISocketFunctionCall { funcName: string; funcDataArg: any; } +/** + * interface for function definition of SocketFunction + */ +export interface IFuncDef { + (dataArg: any): PromiseLike; +} +export declare let allSocketFunctions: Objectmap; /** * class that respresents a function that can be transparently called using a SocketConnection */ export declare class SocketFunction { name: string; - func: any; + funcDef: IFuncDef; roles: SocketRole[]; /** * the constructor for SocketFunction */ - constructor(optionsArg: ISocketFunctionOptions); + constructor(optionsArg: ISocketFunctionConstructorOptions); /** * notifies a role about access to this SocketFunction */ @@ -34,5 +42,5 @@ export declare class SocketFunction { /** * invokes the function of this SocketFunction */ - invoke(dataArg: any): plugins.q.Promise; + invoke(dataArg: ISocketFunctionCall): plugins.q.Promise; } diff --git a/dist/smartsocket.classes.socketfunction.js b/dist/smartsocket.classes.socketfunction.js index 297f43a..8db808e 100644 --- a/dist/smartsocket.classes.socketfunction.js +++ b/dist/smartsocket.classes.socketfunction.js @@ -1,6 +1,11 @@ "use strict"; const plugins = require("./smartsocket.plugins"); +// import classes +const lik_1 = require("lik"); ; +; +// export objects +exports.allSocketFunctions = new lik_1.Objectmap(); // export classes /** * class that respresents a function that can be transparently called using a SocketConnection @@ -11,11 +16,13 @@ class SocketFunction { */ constructor(optionsArg) { this.name = optionsArg.funcName; - this.func = optionsArg.funcDef; + this.funcDef = optionsArg.funcDef; this.roles = optionsArg.allowedRoles; for (let socketRoleArg of this.roles) { this._notifyRole(socketRoleArg); } + ; + exports.allSocketFunctions.add(this); // map instance with Objectmap } ; /** @@ -29,9 +36,18 @@ class SocketFunction { */ invoke(dataArg) { let done = plugins.q.defer(); + if (dataArg.funcName === this.name) { + this.funcDef(dataArg.funcDataArg) + .then((resultData) => { + done.resolve(resultData); + }); + } + else { + throw new Error("SocketFunction.name does not match the data argument's .name!"); + } return done.promise; } ; } exports.SocketFunction = SocketFunction; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzb2NrZXQuY2xhc3Nlcy5zb2NrZXRmdW5jdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0c29ja2V0LmNsYXNzZXMuc29ja2V0ZnVuY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQVksT0FBTyxXQUFNLHVCQUF1QixDQUFDLENBQUE7QUFrQmhELENBQUM7QUFVRixpQkFBaUI7QUFFakI7O0dBRUc7QUFDSDtJQUtJOztPQUVHO0lBQ0gsWUFBWSxVQUFrQztRQUMxQyxJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUM7UUFDaEMsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDO1FBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FBQztRQUNyQyxHQUFHLENBQUMsQ0FBQyxJQUFJLGFBQWEsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQztZQUNsQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7SUFDTCxDQUFDOztJQUVEOztPQUVHO0lBQ0ssV0FBVyxDQUFDLGFBQXdCO1FBQ3hDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsT0FBVztRQUNkLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0IsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQzs7QUFFTCxDQUFDO0FBaENZLHNCQUFjLGlCQWdDMUIsQ0FBQSJ9 \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzb2NrZXQuY2xhc3Nlcy5zb2NrZXRmdW5jdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0c29ja2V0LmNsYXNzZXMuc29ja2V0ZnVuY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQVksT0FBTyxXQUFNLHVCQUF1QixDQUFDLENBQUE7QUFFakQsaUJBQWlCO0FBQ2pCLHNCQUEwQixLQUFLLENBQUMsQ0FBQTtBQVkvQixDQUFDO0FBUUQsQ0FBQztBQVNGLGlCQUFpQjtBQUNOLDBCQUFrQixHQUFHLElBQUksZUFBUyxFQUFrQixDQUFDO0FBRWhFLGlCQUFpQjtBQUVqQjs7R0FFRztBQUNIO0lBS0k7O09BRUc7SUFDSCxZQUFZLFVBQTZDO1FBQ3JELElBQUksQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQztRQUNoQyxJQUFJLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUM7UUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDO1FBQ3JDLEdBQUcsQ0FBQyxDQUFDLElBQUksYUFBYSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUFBLENBQUM7UUFDRiwwQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyw4QkFBOEI7SUFDaEUsQ0FBQzs7SUFFRDs7T0FFRztJQUNLLFdBQVcsQ0FBQyxhQUF3QjtRQUN4QyxhQUFhLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLE9BQTJCO1FBQzlCLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0IsRUFBRSxDQUFBLENBQUMsT0FBTyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQztZQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7aUJBQzVCLElBQUksQ0FBQyxDQUFDLFVBQWM7Z0JBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDN0IsQ0FBQyxDQUFDLENBQUM7UUFFWCxDQUFDO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDSixNQUFNLElBQUksS0FBSyxDQUFDLCtEQUErRCxDQUFDLENBQUM7UUFDckYsQ0FBQztRQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7O0FBRUwsQ0FBQztBQTFDWSxzQkFBYyxpQkEwQzFCLENBQUEifQ== \ No newline at end of file diff --git a/dist/smartsocket.classes.socketrequest.d.ts b/dist/smartsocket.classes.socketrequest.d.ts index d872fb9..8325d75 100644 --- a/dist/smartsocket.classes.socketrequest.d.ts +++ b/dist/smartsocket.classes.socketrequest.d.ts @@ -22,17 +22,25 @@ export interface ISocketRequestDataObject { shortId: string; responseTimeout?: number; } -export declare let allRequestingSocketRequests: Objectmap; -export declare let allRespondingSocketRequests: Objectmap; +export declare let allSocketRequests: Objectmap; export declare class SocketRequest { status: TSocketRequestStatus; side: TSocketRequestSide; shortid: string; originSocketConnection: SocketConnection; - requestData: ISocketRequestDataObject; + funcCallData: ISocketFunctionCall; done: plugins.q.Deferred<{}>; constructor(optionsArg: SocketRequestConstructorOptions); + /** + * dispatches a socketrequest from the requesting to the receiving side + */ dispatch(): plugins.q.Promise<{}>; + /** + * handles the response that is received by the requesting side + */ handleResponse(responseDataArg: ISocketRequestDataObject): void; - respond(dataArg: any): void; + /** + * creates the response on the responding side + */ + createResponse(): void; } diff --git a/dist/smartsocket.classes.socketrequest.js b/dist/smartsocket.classes.socketrequest.js index bf58b1c..ba74301 100644 --- a/dist/smartsocket.classes.socketrequest.js +++ b/dist/smartsocket.classes.socketrequest.js @@ -1,12 +1,12 @@ "use strict"; const plugins = require("./smartsocket.plugins"); +const helpers = require("./smartsocket.helpers"); // import classes const lik_1 = require("lik"); ; ; //export objects -exports.allRequestingSocketRequests = new lik_1.Objectmap(); -exports.allRespondingSocketRequests = new lik_1.Objectmap(); +exports.allSocketRequests = new lik_1.Objectmap(); // export classes class SocketRequest { constructor(optionsArg) { @@ -14,32 +14,47 @@ class SocketRequest { this.done = plugins.q.defer(); this.side = optionsArg.side; this.shortid = optionsArg.shortId; - if (this.side === "requesting") { - exports.allRequestingSocketRequests.add(this); - } - else { - exports.allRespondingSocketRequests.add(this); - } - ; - // build request and response dataArg - this.requestData = { - funcCallData: optionsArg.funcCallData, - shortId: optionsArg.shortId - }; + this.funcCallData = optionsArg.funcCallData; + exports.allSocketRequests.add(this); } ; + // requesting -------------------------- + /** + * dispatches a socketrequest from the requesting to the receiving side + */ dispatch() { - this.originSocketConnection.socket.emit("function", this.requestData); + let requestData = { + funcCallData: this.funcCallData, + shortId: this.shortid + }; + this.originSocketConnection.socket.emit("function", requestData); return this.done.promise; } ; + /** + * handles the response that is received by the requesting side + */ handleResponse(responseDataArg) { this.done.resolve(responseDataArg); + exports.allSocketRequests.remove(this); } - respond(dataArg) { + // responding -------------------------- + /** + * creates the response on the responding side + */ + createResponse() { + let targetSocketFunction = helpers.getSocketFunctionByName(this.funcCallData.funcName); + targetSocketFunction.invoke(this.funcCallData) + .then((resultData) => { + let requestData = { + funcCallData: resultData, + shortId: this.shortid + }; + this.originSocketConnection.socket.emit("functionResponse", requestData); + exports.allSocketRequests.remove(this); + }); } - ; } exports.SocketRequest = SocketRequest; ; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzb2NrZXQuY2xhc3Nlcy5zb2NrZXRyZXF1ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRzb2NrZXQuY2xhc3Nlcy5zb2NrZXRyZXF1ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxNQUFZLE9BQU8sV0FBTSx1QkFBdUIsQ0FBQyxDQUFBO0FBS2pELGlCQUFpQjtBQUNqQixzQkFBMEIsS0FBSyxDQUFDLENBQUE7QUFnQi9CLENBQUM7QUFTRCxDQUFDO0FBRUYsZ0JBQWdCO0FBQ0wsbUNBQTJCLEdBQUcsSUFBSSxlQUFTLEVBQWlCLENBQUM7QUFDN0QsbUNBQTJCLEdBQUcsSUFBSSxlQUFTLEVBQWlCLENBQUM7QUFFeEUsaUJBQWlCO0FBQ2pCO0lBT0ksWUFBWSxVQUEyQztRQU52RCxXQUFNLEdBQXlCLEtBQUssQ0FBQztRQUtyQyxTQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUVyQixJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDO1FBQ2xDLEVBQUUsQ0FBQSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLENBQUEsQ0FBQztZQUMzQixtQ0FBMkIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ0osbUNBQTJCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFBQSxDQUFDO1FBQ0YscUNBQXFDO1FBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUc7WUFDZixZQUFZLEVBQUMsVUFBVSxDQUFDLFlBQVk7WUFDcEMsT0FBTyxFQUFDLFVBQVUsQ0FBQyxPQUFPO1NBQzdCLENBQUE7SUFDTCxDQUFDOztJQUNELFFBQVE7UUFDSixJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUM3QixDQUFDOztJQUNELGNBQWMsQ0FBQyxlQUF3QztRQUNuRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBQ0QsT0FBTyxDQUFDLE9BQU87SUFFZixDQUFDOztBQUNMLENBQUM7QUEvQlkscUJBQWEsZ0JBK0J6QixDQUFBO0FBQUEsQ0FBQyJ9 \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzb2NrZXQuY2xhc3Nlcy5zb2NrZXRyZXF1ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRzb2NrZXQuY2xhc3Nlcy5zb2NrZXRyZXF1ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxNQUFZLE9BQU8sV0FBTSx1QkFBdUIsQ0FBQyxDQUFBO0FBQ2pELE1BQVksT0FBTyxXQUFNLHVCQUF1QixDQUFDLENBQUE7QUFLakQsaUJBQWlCO0FBQ2pCLHNCQUEwQixLQUFLLENBQUMsQ0FBQTtBQWdCL0IsQ0FBQztBQVNELENBQUM7QUFFRixnQkFBZ0I7QUFDTCx5QkFBaUIsR0FBRyxJQUFJLGVBQVMsRUFBaUIsQ0FBQztBQUU5RCxpQkFBaUI7QUFDakI7SUFPSSxZQUFZLFVBQTJDO1FBTnZELFdBQU0sR0FBeUIsS0FBSyxDQUFDO1FBS3JDLFNBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRXJCLElBQUksQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUM7UUFDbEMsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDO1FBQzVDLHlCQUFpQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDOztJQUVELHdDQUF3QztJQUV4Qzs7T0FFRztJQUNILFFBQVE7UUFDSixJQUFJLFdBQVcsR0FBNkI7WUFDeEMsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQy9CLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztTQUN4QixDQUFBO1FBQ0QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUM3QixDQUFDOztJQUVEOztPQUVHO0lBQ0gsY0FBYyxDQUFDLGVBQXlDO1FBQ3BELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ25DLHlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsd0NBQXdDO0lBRXhDOztPQUVHO0lBQ0gsY0FBYztRQUNWLElBQUksb0JBQW9CLEdBQW1CLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZHLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO2FBQ3pDLElBQUksQ0FBQyxDQUFDLFVBQVU7WUFDYixJQUFJLFdBQVcsR0FBNkI7Z0JBQ3hDLFlBQVksRUFBRSxVQUFVO2dCQUN4QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87YUFDeEIsQ0FBQTtZQUNELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3hFLHlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7QUFDTCxDQUFDO0FBckRZLHFCQUFhLGdCQXFEekIsQ0FBQTtBQUFBLENBQUMifQ== \ No newline at end of file diff --git a/dist/smartsocket.helpers.d.ts b/dist/smartsocket.helpers.d.ts index 9d6901c..e14e5a6 100644 --- a/dist/smartsocket.helpers.d.ts +++ b/dist/smartsocket.helpers.d.ts @@ -1,2 +1,12 @@ +import { SocketFunction } from "./smartsocket.classes.socketfunction"; +import { SocketRequest } from "./smartsocket.classes.socketrequest"; import { SocketRole } from "./smartsocket.classes.socketrole"; -export declare let findSocketRoleByString: (socketRoleNameArg: string) => SocketRole; +export declare let getSocketFunctionByName: (functionNameArg: string) => SocketFunction; +/** + * get corresponding Socketrequest instance by shortId + */ +export declare let getSocketRequestById: (shortIdArg: string, requestSide?: "requesting" | "responding") => SocketRequest; +/** + * get corresponding SocketRole instance by name + */ +export declare let getSocketRoleByName: (socketRoleNameArg: string) => SocketRole; diff --git a/dist/smartsocket.helpers.js b/dist/smartsocket.helpers.js index 9a5a3c6..fca22d5 100644 --- a/dist/smartsocket.helpers.js +++ b/dist/smartsocket.helpers.js @@ -1,7 +1,23 @@ "use strict"; +const smartsocket_classes_socketfunction_1 = require("./smartsocket.classes.socketfunction"); +const smartsocket_classes_socketrequest_1 = require("./smartsocket.classes.socketrequest"); const smartsocket_classes_socketrole_1 = require("./smartsocket.classes.socketrole"); +// SocketFunction helpers +exports.getSocketFunctionByName = (functionNameArg) => { + return smartsocket_classes_socketfunction_1.allSocketFunctions.find((socketFunctionArg) => { return socketFunctionArg.name === functionNameArg; }); +}; +// SocketRequest helpers +/** + * get corresponding Socketrequest instance by shortId + */ +exports.getSocketRequestById = (shortIdArg, requestSide) => { + return smartsocket_classes_socketrequest_1.allSocketRequests.find((socketRequestArg) => { return socketRequestArg.shortid === shortIdArg; }); +}; // SocketRole helpers -exports.findSocketRoleByString = (socketRoleNameArg) => { +/** + * get corresponding SocketRole instance by name + */ +exports.getSocketRoleByName = (socketRoleNameArg) => { return smartsocket_classes_socketrole_1.allSocketRoles.find((socketRoleArg) => { return socketRoleArg.name === socketRoleNameArg; }); }; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzb2NrZXQuaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0c29ja2V0LmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQU1BLGlEQUEyQyxrQ0FBa0MsQ0FBQyxDQUFBO0FBRzlFLHFCQUFxQjtBQUNWLDhCQUFzQixHQUFHLENBQUMsaUJBQXlCO0lBQzFELE1BQU0sQ0FBQywrQ0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLGFBQWEsT0FBTyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksS0FBSyxpQkFBaUIsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ3RHLENBQUMsQ0FBQyJ9 \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzb2NrZXQuaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0c29ja2V0LmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUlBLHFEQUFtRCxzQ0FBc0MsQ0FBQyxDQUFBO0FBRTFGLG9EQUFxRSxxQ0FBcUMsQ0FBQyxDQUFBO0FBQzNHLGlEQUEyQyxrQ0FBa0MsQ0FBQyxDQUFBO0FBRTlFLHlCQUF5QjtBQUNkLCtCQUF1QixHQUFHLENBQUMsZUFBdUI7SUFDekQsTUFBTSxDQUFDLHVEQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLGlCQUFpQixPQUFPLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakgsQ0FBQyxDQUFBO0FBRUQsd0JBQXdCO0FBRXhCOztHQUVHO0FBQ1EsNEJBQW9CLEdBQUcsQ0FBQyxVQUFpQixFQUFDLFdBQStCO0lBQ2hGLE1BQU0sQ0FBQyxxREFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxnQkFBZ0IsT0FBTSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxLQUFLLFVBQVUsQ0FBQSxDQUFBLENBQUMsQ0FBQyxDQUFBO0FBQ3pHLENBQUMsQ0FBQTtBQUVELHFCQUFxQjtBQUVyQjs7R0FFRztBQUNRLDJCQUFtQixHQUFHLENBQUMsaUJBQXlCO0lBQ3ZELE1BQU0sQ0FBQywrQ0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLGFBQWEsT0FBTyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksS0FBSyxpQkFBaUIsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ3RHLENBQUMsQ0FBQyJ9 \ No newline at end of file diff --git a/test/test.ts b/test/test.ts index 9438c47..54f13bd 100644 --- a/test/test.ts +++ b/test/test.ts @@ -4,35 +4,33 @@ import socketIoClient = require("socket.io-client"); import smartsocket = require("../dist/index"); let testSmartsocket: smartsocket.Smartsocket; +let testSmartsocketClient: smartsocket.SmartsocketClient; + +let testConfig = { + port:3000 +} describe("smartsocket", function () { it("should create a new smartsocket", function () { - testSmartsocket = new smartsocket.Smartsocket({ port: 3000 }); + testSmartsocket = new smartsocket.Smartsocket({ port: testConfig.port }); testSmartsocket.should.be.instanceOf(smartsocket.Smartsocket); }); - it("should register a new Function",function(){ - + it("should register a new Function", function () { + }) - it("should start listening when .started is called",function(){ + it("should start listening when .started is called", function () { testSmartsocket.startServer(); }) it("should react to a new websocket connection", function (done) { this.timeout(10000); - let socket = socketIoClient("http://localhost:3000", {}); - socket.on("requestAuth", function () { - console.log("server requested authentication"); - socket.emit("dataAuth", { - role: "coreflowContainer", - password: "somePassword", - alias: "coreflow1" - }); - socket.on("authenticated",() => { - console.log("client is authenticated"); - done(); - }); + testSmartsocketClient = new smartsocket.SmartsocketClient({ + port: testConfig.port, + url: "http://localhost", + password:"testPassword", + alias: "testClient1" }); }); - it("should close the server",function(){ + it("should close the server", function () { testSmartsocket.closeServer(); - }) + }); }); \ No newline at end of file diff --git a/ts/smartsocket.classes.socketrequest.ts b/ts/smartsocket.classes.socketrequest.ts index 4b484dc..242f162 100644 --- a/ts/smartsocket.classes.socketrequest.ts +++ b/ts/smartsocket.classes.socketrequest.ts @@ -69,6 +69,7 @@ export class SocketRequest { */ handleResponse(responseDataArg: ISocketRequestDataObject) { this.done.resolve(responseDataArg); + allSocketRequests.remove(this); } // responding -------------------------- @@ -85,6 +86,7 @@ export class SocketRequest { shortId: this.shortid } this.originSocketConnection.socket.emit("functionResponse",requestData); + allSocketRequests.remove(this); }); } };