@pathscale/wss-adapter 1.0.9 → 1.0.12

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.
@@ -9,7 +9,7 @@ interface IService {
9
9
  }
10
10
  declare type ISubscriptions = Record<string, unknown>;
11
11
  interface IServiceConfig extends IService {
12
- subscriptions: ISubscriptions;
12
+ subscriptions?: ISubscriptions;
13
13
  onDisconnect: (event: {
14
14
  code: number;
15
15
  reason: string;
@@ -26,10 +26,6 @@ interface IConfiguration {
26
26
  timeout: number;
27
27
  services: IServices;
28
28
  errors: IErrors;
29
- onError: (error: {
30
- error: number;
31
- message: string;
32
- }) => void;
33
29
  }
34
30
  interface IServiceConnect {
35
31
  connect<T>(payload: string | string[] | undefined, remote?: string): Promise<T>;
@@ -57,6 +53,7 @@ interface IPendingPromises {
57
53
  resolve: (payload: unknown) => void;
58
54
  reject: (error: Error) => void;
59
55
  toHandler: ReturnType<typeof setTimeout>;
56
+ methodName: string;
60
57
  };
61
58
  }
62
59
  interface IStore {
@@ -67,9 +64,5 @@ interface IStore {
67
64
  sessions: ISessions;
68
65
  subscriptions: ISubscriptions;
69
66
  pendingPromises: IPendingPromises;
70
- onError: (error: {
71
- error: number;
72
- message: string;
73
- }) => void;
74
67
  }
75
68
  export { IStore, IWssAdapter, IServiceConfig, IConfiguration, IErrors, IServices, IService, };
@@ -25,15 +25,13 @@ var store = {
25
25
  },
26
26
  sessions: {},
27
27
  pendingPromises: {},
28
- onError: function () { },
29
28
  };
30
29
  wssAdapter.configure = function (configuration) {
31
- var timeout = configuration.timeout, services = configuration.services, errors = configuration.errors, onError = configuration.onError;
30
+ var timeout = configuration.timeout, services = configuration.services, errors = configuration.errors;
32
31
  // save some stuff for later retrieval
33
32
  store.timeout = timeout;
34
33
  store.errors = errors;
35
34
  store.services = services;
36
- store.onError = onError;
37
35
  var _loop_1 = function (serviceName, serviceConfig) {
38
36
  // construct services objects with two simple functions
39
37
  // intended use: `wssAdapter.services.admin.connect([1, 2, 3])` or `wssAdapter.services.auth.connect([1, 2, 3])`
@@ -112,19 +110,20 @@ var sendHandler = function (serviceName, serviceConfig, methodName, params) {
112
110
  resolve: resolve,
113
111
  reject: reject,
114
112
  toHandler: setTimeout(function () {
115
- reject(new Error(methodCode.toString() + ' took to long, aborting'));
113
+ reject(new Error(methodName + ' took to long, aborting'));
116
114
  }, store.timeout),
115
+ methodName: methodName,
117
116
  };
118
117
  });
119
118
  };
120
119
  var receiveHandler = function (event) {
120
+ var _a;
121
121
  var response = JSON.parse(event.data);
122
122
  if (response.method || response.method === 0) {
123
- console.log("app::".concat(response.method, " got:"), response);
123
+ console.log("app::".concat(((_a = store.pendingPromises[response.seq]) === null || _a === void 0 ? void 0 : _a.methodName) || response.method, " got:"), response);
124
124
  var error = response.method === 0;
125
125
  var done = response.method.toString().endsWith('1');
126
126
  var resolve = function (payload, code) {
127
- console.log(code);
128
127
  var executor = store.pendingPromises[response.seq];
129
128
  clearTimeout(store.pendingPromises[response.seq].toHandler);
130
129
  delete store.pendingPromises[response.seq];
@@ -140,7 +139,6 @@ var receiveHandler = function (event) {
140
139
  }
141
140
  }
142
141
  else if (response.resource) {
143
- console.log("app::".concat(response.resource, " got:"), response);
144
142
  var resource = response.resource.split('@')[0];
145
143
  //@ts-ignore
146
144
  var executor = store.subscriptions.app[resource];
@@ -153,19 +151,21 @@ function onError(response) {
153
151
  var errorMsg = (_a = store.errors[errorCode]) !== null && _a !== void 0 ? _a : errorCode;
154
152
  if ([45349638, 45349637].includes(errorCode)) {
155
153
  store.sequence.decreaseSeq();
156
- console.log('seq has been decreased because of error');
157
154
  }
158
- (_b = store.onError) === null || _b === void 0 ? void 0 : _b.call(store, {
159
- error: errorCode,
160
- message: errorMsg,
161
- });
162
155
  // if there was only one executor saved in store.pendingPromises, then it was that request that failed
163
156
  if (Object.keys(store.pendingPromises).length === 1) {
164
157
  var onlyKey = Number.parseInt(Object.keys(store.pendingPromises)[0]);
165
158
  clearTimeout(store.pendingPromises[onlyKey].toHandler);
166
159
  store.pendingPromises[onlyKey].reject(new Error(errorMsg));
160
+ console.error(store.pendingPromises[onlyKey].methodName + ' failed');
167
161
  delete store.pendingPromises[onlyKey];
168
162
  }
163
+ else if (response.seq > 1 && store.pendingPromises[response.seq]) {
164
+ var executor = store.pendingPromises[response.seq];
165
+ clearTimeout(executor.toHandler);
166
+ executor.reject(new Error("".concat((_b = executor.methodName) !== null && _b !== void 0 ? _b : '', ": ").concat(errorCode || JSON.stringify(response.params))));
167
+ delete store.pendingPromises[response.seq];
168
+ }
169
169
  // if there were more than one, there is no way of knowing who failed
170
170
  else {
171
171
  throw new Error('Unkown request failed');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pathscale/wss-adapter",
3
- "version": "1.0.9",
3
+ "version": "1.0.12",
4
4
  "description": "Websocket adapter for the Pathscale WSS",
5
5
  "main": "dist/wssAdapter.js",
6
6
  "types": "dist/wssAdapter.d.ts",
package/types/index.ts CHANGED
@@ -11,7 +11,7 @@ interface IService {
11
11
  type ISubscriptions = Record<string, unknown>
12
12
 
13
13
  interface IServiceConfig extends IService {
14
- subscriptions: ISubscriptions
14
+ subscriptions?: ISubscriptions
15
15
  onDisconnect: (event: {
16
16
  code: number
17
17
  reason: string
@@ -28,7 +28,6 @@ interface IConfiguration {
28
28
  timeout: number
29
29
  services: IServices
30
30
  errors: IErrors
31
- onError: (error: { error: number; message: string }) => void
32
31
  }
33
32
  interface IServiceConnect {
34
33
  connect<T>(
@@ -62,6 +61,7 @@ interface IPendingPromises {
62
61
  resolve: (payload: unknown) => void
63
62
  reject: (error: Error) => void
64
63
  toHandler: ReturnType<typeof setTimeout>
64
+ methodName: string
65
65
  }
66
66
  }
67
67
  interface IStore {
@@ -72,7 +72,6 @@ interface IStore {
72
72
  sessions: ISessions
73
73
  subscriptions: ISubscriptions
74
74
  pendingPromises: IPendingPromises
75
- onError: (error: { error: number; message: string }) => void
76
75
  }
77
76
  export {
78
77
  IStore,
package/wssAdapter.ts CHANGED
@@ -29,17 +29,15 @@ const store: IStore = {
29
29
 
30
30
  sessions: {},
31
31
  pendingPromises: {},
32
- onError() {},
33
32
  }
34
33
 
35
34
  wssAdapter.configure = (configuration) => {
36
- const { timeout, services, errors, onError } = configuration
35
+ const { timeout, services, errors } = configuration
37
36
 
38
37
  // save some stuff for later retrieval
39
38
  store.timeout = timeout
40
39
  store.errors = errors
41
40
  store.services = services
42
- store.onError = onError
43
41
 
44
42
  for (const [serviceName, serviceConfig] of Object.entries(services)) {
45
43
  // construct services objects with two simple functions
@@ -144,8 +142,9 @@ const sendHandler = (
144
142
  resolve,
145
143
  reject,
146
144
  toHandler: setTimeout(() => {
147
- reject(new Error(methodCode.toString() + ' took to long, aborting'))
145
+ reject(new Error(methodName + ' took to long, aborting'))
148
146
  }, store.timeout),
147
+ methodName,
149
148
  }
150
149
  })
151
150
  }
@@ -154,13 +153,17 @@ const receiveHandler = (event: { data: string }) => {
154
153
  const response = JSON.parse(event.data)
155
154
 
156
155
  if (response.method || response.method === 0) {
157
- console.log(`app::${response.method} got:`, response)
156
+ console.log(
157
+ `app::${
158
+ store.pendingPromises[response.seq]?.methodName || response.method
159
+ } got:`,
160
+ response
161
+ )
158
162
 
159
163
  const error = response.method === 0
160
164
  const done = response.method.toString().endsWith('1')
161
165
 
162
166
  const resolve = (payload: unknown, code: number) => {
163
- console.log(code)
164
167
  const executor = store.pendingPromises[response.seq]
165
168
  clearTimeout(store.pendingPromises[response.seq].toHandler)
166
169
  delete store.pendingPromises[response.seq]
@@ -175,7 +178,6 @@ const receiveHandler = (event: { data: string }) => {
175
178
  resolve(response, code)
176
179
  }
177
180
  } else if (response.resource) {
178
- console.log(`app::${response.resource} got:`, response)
179
181
  const resource = response.resource.split('@')[0]
180
182
  //@ts-ignore
181
183
  const executor = store.subscriptions.app[resource] as (
@@ -194,6 +196,7 @@ interface IResponse {
194
196
  params: {
195
197
  error: number
196
198
  }
199
+ seq: number
197
200
  }
198
201
 
199
202
  function onError(response: IResponse) {
@@ -202,22 +205,28 @@ function onError(response: IResponse) {
202
205
 
203
206
  if ([45349638, 45349637].includes(errorCode)) {
204
207
  store.sequence.decreaseSeq()
205
- console.log('seq has been decreased because of error')
206
208
  }
207
209
 
208
- store.onError?.({
209
- error: errorCode,
210
- message: errorMsg,
211
- })
212
-
213
210
  // if there was only one executor saved in store.pendingPromises, then it was that request that failed
214
211
  if (Object.keys(store.pendingPromises).length === 1) {
215
212
  const onlyKey = Number.parseInt(Object.keys(store.pendingPromises)[0])
216
213
  clearTimeout(store.pendingPromises[onlyKey].toHandler)
217
214
  store.pendingPromises[onlyKey].reject(new Error(errorMsg))
215
+ console.error(store.pendingPromises[onlyKey].methodName + ' failed')
218
216
  delete store.pendingPromises[onlyKey]
217
+ } else if (response.seq > 1 && store.pendingPromises[response.seq]) {
218
+ const executor = store.pendingPromises[response.seq]
219
+
220
+ clearTimeout(executor.toHandler)
221
+ executor.reject(
222
+ new Error(
223
+ `${executor.methodName ?? ''}: ${
224
+ errorCode || JSON.stringify(response.params)
225
+ }`
226
+ )
227
+ )
228
+ delete store.pendingPromises[response.seq]
219
229
  }
220
-
221
230
  // if there were more than one, there is no way of knowing who failed
222
231
  else {
223
232
  throw new Error('Unkown request failed')