@pathscale/wss-adapter 1.0.2 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/types/index.d.ts +2 -2
- package/dist/wssAdapter.js +18 -16
- package/package.json +1 -1
- package/types/index.ts +5 -13
- package/wssAdapter.ts +31 -24
package/dist/types/index.d.ts
CHANGED
|
@@ -30,7 +30,7 @@ interface IConfiguration {
|
|
|
30
30
|
}) => void;
|
|
31
31
|
}
|
|
32
32
|
interface IServiceConnect {
|
|
33
|
-
connect<T>(payload: string | string[] | undefined): Promise<T>;
|
|
33
|
+
connect<T>(payload: string | string[] | undefined, remote?: string): Promise<T>;
|
|
34
34
|
disconnect: () => void;
|
|
35
35
|
}
|
|
36
36
|
interface IWssAdapter {
|
|
@@ -38,7 +38,7 @@ interface IWssAdapter {
|
|
|
38
38
|
[serviceName: string]: IServiceConnect;
|
|
39
39
|
};
|
|
40
40
|
sessions: {
|
|
41
|
-
[serviceName: string]:
|
|
41
|
+
[serviceName: string]: any;
|
|
42
42
|
};
|
|
43
43
|
configure: (configuration: IConfiguration) => void;
|
|
44
44
|
}
|
package/dist/wssAdapter.js
CHANGED
|
@@ -37,8 +37,8 @@ wssAdapter.configure = function (configuration) {
|
|
|
37
37
|
// construct services objects with two simple functions
|
|
38
38
|
// intended use: `wssAdapter.services.admin.connect([1, 2, 3])` or `wssAdapter.services.auth.connect([1, 2, 3])`
|
|
39
39
|
wssAdapter.services[serviceName] = {
|
|
40
|
-
connect: function (payload) {
|
|
41
|
-
return connectHandler(serviceName, serviceConfig, payload);
|
|
40
|
+
connect: function (payload, remote) {
|
|
41
|
+
return connectHandler(serviceName, serviceConfig, payload, remote);
|
|
42
42
|
},
|
|
43
43
|
disconnect: function () { return disconnectHandler(serviceName); },
|
|
44
44
|
};
|
|
@@ -55,9 +55,9 @@ wssAdapter.configure = function (configuration) {
|
|
|
55
55
|
_loop_1(serviceName, serviceConfig);
|
|
56
56
|
}
|
|
57
57
|
};
|
|
58
|
-
var connectHandler = function (serviceName, serviceConfig, payload) {
|
|
58
|
+
var connectHandler = function (serviceName, serviceConfig, payload, remote) {
|
|
59
59
|
return new Promise(function (resolve, reject) {
|
|
60
|
-
store.sessions[serviceName] = new WebSocket(serviceConfig.remote, payload);
|
|
60
|
+
store.sessions[serviceName] = new WebSocket(remote || serviceConfig.remote, payload);
|
|
61
61
|
store.sessions[serviceName].onmessage = function (event) {
|
|
62
62
|
var _a;
|
|
63
63
|
var response = JSON.parse(event.data);
|
|
@@ -94,18 +94,20 @@ var sendHandler = function (serviceName, serviceConfig, methodName, params) {
|
|
|
94
94
|
if (!methodCode) {
|
|
95
95
|
throw new Error("method ".concat(methodName, " not available in ").concat(serviceName, " service"));
|
|
96
96
|
}
|
|
97
|
-
if (!Object.keys(params).every(function (param) {
|
|
98
|
-
return serviceConfig.methods[methodCode].parameters.includes(param);
|
|
99
|
-
})) {
|
|
100
|
-
throw new Error("method ".concat(methodCode, " is being called with missing parameters"));
|
|
101
|
-
}
|
|
102
97
|
var purgedParams = {};
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
98
|
+
if (params) {
|
|
99
|
+
if (!Object.keys(params).every(function (param) {
|
|
100
|
+
return serviceConfig.methods[methodCode].parameters.includes(param);
|
|
101
|
+
})) {
|
|
102
|
+
throw new Error("method ".concat(methodCode, " is being called with missing parameters"));
|
|
103
|
+
}
|
|
104
|
+
serviceConfig.methods[methodCode].parameters.forEach(function (k) {
|
|
105
|
+
purgedParams[k] = params[k];
|
|
106
|
+
});
|
|
107
|
+
var difference = Object.keys(params).filter(function (x) { return !serviceConfig.methods[methodCode].parameters.includes(x); });
|
|
108
|
+
if (difference.length) {
|
|
109
|
+
throw new Error("method ".concat(methodCode, " is being called with unknow parameters, ").concat(difference));
|
|
110
|
+
}
|
|
109
111
|
}
|
|
110
112
|
var payload = {
|
|
111
113
|
method: Number.parseInt(methodCode),
|
|
@@ -149,7 +151,7 @@ var receiveHandler = function (event) {
|
|
|
149
151
|
function onError(response) {
|
|
150
152
|
var _a, _b;
|
|
151
153
|
var errorCode = response.params.error;
|
|
152
|
-
var errorMsg = (_a = store.errors[errorCode]) !== null && _a !== void 0 ? _a :
|
|
154
|
+
var errorMsg = (_a = store.errors[errorCode]) !== null && _a !== void 0 ? _a : errorCode;
|
|
153
155
|
if ([45349638, 45349637].includes(errorCode)) {
|
|
154
156
|
store.sequence.decreaseSeq();
|
|
155
157
|
console.log('seq has been decreased because of error');
|
package/package.json
CHANGED
package/types/index.ts
CHANGED
|
@@ -7,7 +7,6 @@ interface IService {
|
|
|
7
7
|
}
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
|
-
|
|
11
10
|
interface IServiceConfig extends IService {
|
|
12
11
|
onDisconnect: (event: {
|
|
13
12
|
code: number
|
|
@@ -15,47 +14,42 @@ interface IServiceConfig extends IService {
|
|
|
15
14
|
wasClean: boolean
|
|
16
15
|
}) => void | null
|
|
17
16
|
}
|
|
18
|
-
|
|
19
17
|
interface IServices {
|
|
20
18
|
[serviceName: string]: IServiceConfig
|
|
21
19
|
}
|
|
22
|
-
|
|
23
20
|
interface IErrors {
|
|
24
21
|
[errorCode: number]: string
|
|
25
22
|
}
|
|
26
|
-
|
|
27
23
|
interface IConfiguration {
|
|
28
24
|
timeout: number
|
|
29
25
|
services: IServices
|
|
30
26
|
errors: IErrors
|
|
31
27
|
onError: (error: { error: number; message: string }) => void
|
|
32
28
|
}
|
|
33
|
-
|
|
34
29
|
interface IServiceConnect {
|
|
35
|
-
connect<T>(
|
|
30
|
+
connect<T>(
|
|
31
|
+
payload: string | string[] | undefined,
|
|
32
|
+
remote?: string
|
|
33
|
+
): Promise<T>
|
|
36
34
|
disconnect: () => void
|
|
37
35
|
}
|
|
38
|
-
|
|
39
36
|
interface IWssAdapter {
|
|
40
37
|
services: {
|
|
41
38
|
[serviceName: string]: IServiceConnect
|
|
42
39
|
}
|
|
43
40
|
sessions: {
|
|
44
|
-
[serviceName: string]:
|
|
41
|
+
[serviceName: string]: any
|
|
45
42
|
}
|
|
46
43
|
configure: (configuration: IConfiguration) => void
|
|
47
44
|
}
|
|
48
|
-
|
|
49
45
|
interface ISequence {
|
|
50
46
|
value: number
|
|
51
47
|
getSeq: () => number
|
|
52
48
|
decreaseSeq: () => void
|
|
53
49
|
}
|
|
54
|
-
|
|
55
50
|
interface ISessions {
|
|
56
51
|
[serviceName: string]: WebSocket
|
|
57
52
|
}
|
|
58
|
-
|
|
59
53
|
interface IPendingPromises {
|
|
60
54
|
[seq: number]: {
|
|
61
55
|
resolve: (payload: unknown) => void
|
|
@@ -63,7 +57,6 @@ interface IPendingPromises {
|
|
|
63
57
|
toHandler: ReturnType<typeof setTimeout>
|
|
64
58
|
}
|
|
65
59
|
}
|
|
66
|
-
|
|
67
60
|
interface IStore {
|
|
68
61
|
timeout: number
|
|
69
62
|
errors: IErrors
|
|
@@ -73,7 +66,6 @@ interface IStore {
|
|
|
73
66
|
pendingPromises: IPendingPromises
|
|
74
67
|
onError: (error: { error: number; message: string }) => void
|
|
75
68
|
}
|
|
76
|
-
|
|
77
69
|
export {
|
|
78
70
|
IStore,
|
|
79
71
|
IWssAdapter,
|
package/wssAdapter.ts
CHANGED
|
@@ -44,8 +44,8 @@ wssAdapter.configure = (configuration) => {
|
|
|
44
44
|
// construct services objects with two simple functions
|
|
45
45
|
// intended use: `wssAdapter.services.admin.connect([1, 2, 3])` or `wssAdapter.services.auth.connect([1, 2, 3])`
|
|
46
46
|
wssAdapter.services[serviceName] = {
|
|
47
|
-
connect: <T>(payload: string | string[] | undefined) =>
|
|
48
|
-
connectHandler<T>(serviceName, serviceConfig, payload),
|
|
47
|
+
connect: <T>(payload: string | string[] | undefined, remote?: string) =>
|
|
48
|
+
connectHandler<T>(serviceName, serviceConfig, payload, remote),
|
|
49
49
|
disconnect: () => disconnectHandler(serviceName),
|
|
50
50
|
}
|
|
51
51
|
|
|
@@ -65,10 +65,14 @@ wssAdapter.configure = (configuration) => {
|
|
|
65
65
|
const connectHandler = <T>(
|
|
66
66
|
serviceName: string,
|
|
67
67
|
serviceConfig: IServiceConfig,
|
|
68
|
-
payload: string | string[] | undefined
|
|
68
|
+
payload: string | string[] | undefined,
|
|
69
|
+
remote?: string
|
|
69
70
|
) => {
|
|
70
71
|
return new Promise((resolve, reject) => {
|
|
71
|
-
store.sessions[serviceName] = new WebSocket(
|
|
72
|
+
store.sessions[serviceName] = new WebSocket(
|
|
73
|
+
remote || serviceConfig.remote,
|
|
74
|
+
payload
|
|
75
|
+
)
|
|
72
76
|
|
|
73
77
|
store.sessions[serviceName].onmessage = function (event: { data: string }) {
|
|
74
78
|
const response = JSON.parse(event.data)
|
|
@@ -119,29 +123,32 @@ const sendHandler = (
|
|
|
119
123
|
)
|
|
120
124
|
}
|
|
121
125
|
|
|
122
|
-
if (
|
|
123
|
-
!Object.keys(params).every((param) =>
|
|
124
|
-
serviceConfig.methods[methodCode].parameters.includes(param)
|
|
125
|
-
)
|
|
126
|
-
) {
|
|
127
|
-
throw new Error(
|
|
128
|
-
`method ${methodCode} is being called with missing parameters`
|
|
129
|
-
)
|
|
130
|
-
}
|
|
131
|
-
|
|
132
126
|
const purgedParams: Record<string, unknown> = {}
|
|
133
|
-
serviceConfig.methods[methodCode].parameters.forEach((k) => {
|
|
134
|
-
purgedParams[k] = params[k]
|
|
135
|
-
})
|
|
136
127
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
128
|
+
if (params) {
|
|
129
|
+
if (
|
|
130
|
+
!Object.keys(params).every((param) =>
|
|
131
|
+
serviceConfig.methods[methodCode].parameters.includes(param)
|
|
132
|
+
)
|
|
133
|
+
) {
|
|
134
|
+
throw new Error(
|
|
135
|
+
`method ${methodCode} is being called with missing parameters`
|
|
136
|
+
)
|
|
137
|
+
}
|
|
140
138
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
139
|
+
serviceConfig.methods[methodCode].parameters.forEach((k) => {
|
|
140
|
+
purgedParams[k] = params[k]
|
|
141
|
+
})
|
|
142
|
+
|
|
143
|
+
const difference = Object.keys(params).filter(
|
|
144
|
+
(x) => !serviceConfig.methods[methodCode].parameters.includes(x)
|
|
144
145
|
)
|
|
146
|
+
|
|
147
|
+
if (difference.length) {
|
|
148
|
+
throw new Error(
|
|
149
|
+
`method ${methodCode} is being called with unknow parameters, ${difference}`
|
|
150
|
+
)
|
|
151
|
+
}
|
|
145
152
|
}
|
|
146
153
|
|
|
147
154
|
const payload = {
|
|
@@ -203,7 +210,7 @@ interface IResponse {
|
|
|
203
210
|
|
|
204
211
|
function onError(response: IResponse) {
|
|
205
212
|
const { error: errorCode } = response.params
|
|
206
|
-
const errorMsg = store.errors[errorCode] ??
|
|
213
|
+
const errorMsg = store.errors[errorCode] ?? errorCode
|
|
207
214
|
|
|
208
215
|
if ([45349638, 45349637].includes(errorCode)) {
|
|
209
216
|
store.sequence.decreaseSeq()
|