UNPKG

8.28 kBSource Map (JSON)View Raw
1{"version":3,"file":"rpc.js","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"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","sourcesContent":["import Promise = require(\"bluebird\")\n\nclass PromiseCallback {\n constructor(public resolve: (value?: any) => void, public reject: (error?: any) => void) {\n }\n}\n\nexport interface Transport {\n opened?: () => void\n\n /**\n * Internal use only (JsonRpc configure it).\n */\n messageReceived: (message: Array<any>) => void\n\n connect(port: number): void\n\n send(id: number, domain: string, command: string, params: any[]): void\n\n sendResult(id: number, result: any):void\n\n sendError(id: number, error: any):void\n}\n\ninterface Map<K, V> {\n clear(): void;\n delete(key: K): boolean;\n get(key: K): V;\n has(key: K): boolean;\n set(key: K, value?: V): Map<K, V>;\n}\n\ninterface MapConstructor {\n new <K, V>(): Map<K, V>\n\n prototype: Map<any, any>\n}\ndeclare var Map: MapConstructor\n\nexport class JsonRpc {\n private messageIdCounter = 0\n private callbacks: Map<number, PromiseCallback> = new Map<number, PromiseCallback>()\n private domains = new Map<string, any>()\n\n constructor(private transport: Transport, domains: { [domainName:string]: { [methodName:string]:Function; }; } = null) {\n this.domains = new Map()\n if (domains != null) {\n for (let name of Object.getOwnPropertyNames(domains)) {\n this.domains.set(name, domains[name])\n }\n }\n\n transport.messageReceived = this.messageReceived.bind(this)\n }\n\n public registerDomain(name: string, commands: any) {\n if (this.domains.has(name)) {\n throw Error(\"Domain \" + name + \" is already registered\")\n }\n\n this.domains.set(name, commands)\n }\n\n public send(domain: string, command: string, ...params: any[]) {\n this.transport.send(-1, domain, command, params)\n }\n\n public call<T>(domain: string, command: string, ...params: any[]): Promise<T> {\n return new Promise((resolve: (value: T) => void, reject: (error?: any) => void) => {\n const id = this.messageIdCounter++\n this.callbacks.set(id, new PromiseCallback(resolve, reject))\n this.transport.send(id, domain, command, params)\n })\n }\n\n private messageReceived(message: Array<any>) {\n if (message.length === 1 || (message.length === 2 && !(typeof message[1] === \"string\"))) {\n const promiseCallback = this.callbacks.get(message[0])\n const singletonArray = safeGet(message, 1)\n if (singletonArray == null) {\n promiseCallback.resolve()\n }\n else {\n promiseCallback.resolve(singletonArray[0])\n }\n }\n else {\n let id: number\n let offset: number\n if (typeof message[0] === \"string\") {\n id = -1\n offset = 0\n }\n else {\n id = message[0]\n offset = 1\n }\n\n const domainName = message[offset]\n if (domainName === \"e\") {\n console.assert(id != -1)\n console.assert(message.length === 3)\n this.callbacks.get(id).reject(message[2])\n return\n }\n\n const onRejected = id === -1 ? null : (error: any) => this.transport.sendError(id, error)\n try {\n const object = this.domains.get(domainName)\n if (object == null) {\n const e = \"Cannot find domain \" + domainName\n console.warn(e)\n if (onRejected != null) {\n onRejected(e)\n }\n return\n }\n\n const method = object[message[offset + 1]]\n const args = safeGet(message, offset + 2)\n const result: any = (args === null) ? method.call(object) : method.apply(object, args)\n if (id !== -1) {\n const onFulfilled = (result: any) => this.transport.sendResult(id, result)\n if (result instanceof Promise) {\n (<Promise<any>>result).done(onFulfilled, onRejected)\n }\n else {\n onFulfilled(result)\n }\n }\n }\n catch (e) {\n console.error(e)\n if (onRejected != null) {\n onRejected(e)\n }\n }\n }\n }\n}\n\nfunction safeGet(a: any[], index: number): Array<any> {\n return index < a.length ? a[index] : null\n}"]}
\No newline at end of file