ing
This commit is contained in:
parent
d27b8b249f
commit
77387a5e64
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "@overflow/rpc-js",
|
"name": "@overflow/rpc-js",
|
||||||
"version": "0.0.5",
|
"version": "0.0.7",
|
||||||
"description": "TypeScript library setup for multiple compilation targets using tsc and webpack",
|
"description": "TypeScript library setup for multiple compilation targets using tsc and webpack",
|
||||||
"main": "./bundles/index.umd.js",
|
"main": "./bundles/index.umd.js",
|
||||||
"module": "./esm5/index.js",
|
"module": "./esm5/index.js",
|
||||||
|
@ -58,7 +58,9 @@
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"tslib": ">=1.9.0"
|
"tslib": ">=1.9.0"
|
||||||
},
|
},
|
||||||
"dependencies": {},
|
"dependencies": {
|
||||||
|
"@overflow/core-js": "^0.0.7"
|
||||||
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/chokidar": "^1.7.5",
|
"@types/chokidar": "^1.7.5",
|
||||||
"@types/jest": "^23.3.1",
|
"@types/jest": "^23.3.1",
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import { Observable, Subject } from 'rxjs';
|
import { Observable, Subject } from 'rxjs';
|
||||||
|
import { SubscriberParameterError } from '../core/error';
|
||||||
import { Message } from '../core/type';
|
import { Message } from '../core/type';
|
||||||
import {
|
import {
|
||||||
ClientCodec,
|
ClientCodec,
|
||||||
|
@ -177,11 +178,55 @@ export abstract class Client {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public notification(): Observable<ClientNotificationCodec> {
|
protected notification(): Observable<ClientNotificationCodec> {
|
||||||
if (undefined === this.notiSubject) {
|
if (undefined === this.notiSubject) {
|
||||||
this.notiSubject = new Subject<ClientNotificationCodec>();
|
this.notiSubject = new Subject<ClientNotificationCodec>();
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.notiSubject.asObservable();
|
return this.notiSubject.asObservable();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected converNotificationParams(params: string[], paramTypes: string[]): any[] {
|
||||||
|
const results: any[] = [];
|
||||||
|
|
||||||
|
if (0 === params.length) {
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
if (0 === paramTypes.length) {
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
if (params.length !== paramTypes.length) {
|
||||||
|
throw new SubscriberParameterError(`Count is not same from server[${params.length}] and method[${paramTypes.length}]`);
|
||||||
|
}
|
||||||
|
for (let indexI = 0; indexI < params.length; indexI++) {
|
||||||
|
const param = params[indexI];
|
||||||
|
const type = paramTypes[indexI];
|
||||||
|
switch (type) {
|
||||||
|
case 'Object':
|
||||||
|
case 'Array':
|
||||||
|
case 'Map':
|
||||||
|
results.push(JSON.parse(param));
|
||||||
|
break;
|
||||||
|
case 'String':
|
||||||
|
results.push(param);
|
||||||
|
break;
|
||||||
|
case 'Number':
|
||||||
|
results.push(Number(param));
|
||||||
|
break;
|
||||||
|
case 'Boolean':
|
||||||
|
results.push(Boolean(param));
|
||||||
|
break;
|
||||||
|
case 'Date':
|
||||||
|
results.push(new Date(Number(param)));
|
||||||
|
break;
|
||||||
|
case 'Function':
|
||||||
|
throw new SubscriberParameterError(`Function type [${indexI}] is not allowed`);
|
||||||
|
default:
|
||||||
|
throw new SubscriberParameterError(`${type} type parameter[${indexI}] is not allowed`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
13
src/core/error.ts
Normal file
13
src/core/error.ts
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
export class SubscriberParameterError extends Error {
|
||||||
|
public constructor(message?: string) {
|
||||||
|
super(message);
|
||||||
|
Object.setPrototypeOf(this, new.target.prototype);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class SubscriberExistError extends Error {
|
||||||
|
public constructor(message?: string) {
|
||||||
|
super(message);
|
||||||
|
Object.setPrototypeOf(this, new.target.prototype);
|
||||||
|
}
|
||||||
|
}
|
|
@ -1 +1,12 @@
|
||||||
|
import { Method, PropertyKeyType } from '@overflow/core-js';
|
||||||
|
|
||||||
export type Message = string | ArrayBuffer;
|
export type Message = string | ArrayBuffer;
|
||||||
|
|
||||||
|
export interface SubscriberMethod {
|
||||||
|
className: PropertyKeyType;
|
||||||
|
methodName: PropertyKeyType;
|
||||||
|
parameterTypes: string[];
|
||||||
|
|
||||||
|
method: Method;
|
||||||
|
instance: any;
|
||||||
|
}
|
||||||
|
|
10
yarn.lock
10
yarn.lock
|
@ -16,6 +16,12 @@
|
||||||
esutils "^2.0.2"
|
esutils "^2.0.2"
|
||||||
js-tokens "^4.0.0"
|
js-tokens "^4.0.0"
|
||||||
|
|
||||||
|
"@overflow/core-js@^0.0.7":
|
||||||
|
version "0.0.7"
|
||||||
|
resolved "https://nexus.loafle.net/repository/npm-all/@overflow/core-js/-/core-js-0.0.7.tgz#07463557b77d967a011d2f7f6a6f7ab5b2df9252"
|
||||||
|
dependencies:
|
||||||
|
reflect-metadata "^0.1.12"
|
||||||
|
|
||||||
"@samverschueren/stream-to-observable@^0.3.0":
|
"@samverschueren/stream-to-observable@^0.3.0":
|
||||||
version "0.3.0"
|
version "0.3.0"
|
||||||
resolved "https://nexus.loafle.net/repository/npm-all/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f"
|
resolved "https://nexus.loafle.net/repository/npm-all/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f"
|
||||||
|
@ -4334,6 +4340,10 @@ redent@^2.0.0:
|
||||||
indent-string "^3.0.0"
|
indent-string "^3.0.0"
|
||||||
strip-indent "^2.0.0"
|
strip-indent "^2.0.0"
|
||||||
|
|
||||||
|
reflect-metadata@^0.1.12:
|
||||||
|
version "0.1.12"
|
||||||
|
resolved "https://nexus.loafle.net/repository/npm-all/reflect-metadata/-/reflect-metadata-0.1.12.tgz#311bf0c6b63cd782f228a81abe146a2bfa9c56f2"
|
||||||
|
|
||||||
regenerate@^1.2.1:
|
regenerate@^1.2.1:
|
||||||
version "1.4.0"
|
version "1.4.0"
|
||||||
resolved "https://nexus.loafle.net/repository/npm-all/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11"
|
resolved "https://nexus.loafle.net/repository/npm-all/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11"
|
||||||
|
|
Loading…
Reference in New Issue
Block a user