airdcpp-apisocket 3.0.0-beta.12 → 3.0.0-beta.13

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.
@@ -1,14 +1,18 @@
1
1
  import { WebSocket } from 'mock-socket';
2
2
  import { OutgoingRequest, RequestSuccessResponse, RequestErrorResponse } from '../../types/api_internal.js';
3
3
  import { EventEmitter } from 'events';
4
+ import { LoggerOptions } from '../../NodeSocket.js';
4
5
  interface MockFunctionCreator {
5
6
  fn: (...args: any[]) => any;
6
7
  }
7
8
  type RequestCallback = (requestData: object) => void;
8
- interface MockServerOptions {
9
+ type DelayF = () => number;
10
+ export interface MockServerOptions {
9
11
  url: string;
10
12
  reportMissingListeners?: boolean;
11
13
  mockF: MockFunctionCreator;
14
+ delayMs: number | DelayF;
15
+ loggerOptions: LoggerOptions;
12
16
  }
13
17
  type MockRequestResponseDataObject<DataT extends object | undefined> = Omit<RequestSuccessResponse<DataT>, 'callback_id'> | Omit<RequestErrorResponse, 'callback_id'>;
14
18
  type MockRequestResponseDataHandler<DataT extends object | undefined> = (request: OutgoingRequest, s: WebSocket) => MockRequestResponseDataObject<DataT>;
@@ -1,6 +1,7 @@
1
1
  import { Server } from 'mock-socket';
2
2
  import { EventEmitter } from 'events';
3
3
  import { MOCK_SERVER_URL } from './mock-data.js';
4
+ import Logger from '../../SocketLogger.js';
4
5
  ;
5
6
  const toEmitId = (path, method) => {
6
7
  return `${path}_${method}`;
@@ -12,12 +13,18 @@ const DEFAULT_MOCK_SERVER_OPTIONS = {
12
13
  url: MOCK_SERVER_URL,
13
14
  reportMissingListeners: true,
14
15
  mockF: getDefaultMockCreatorF(),
16
+ delayMs: 0,
17
+ loggerOptions: {
18
+ logLevel: 'warn',
19
+ logOutput: console,
20
+ }
15
21
  };
16
22
  const getMockServer = (initialOptions = {}) => {
17
- const { url, reportMissingListeners, mockF } = {
23
+ const { url, reportMissingListeners, mockF, delayMs, loggerOptions } = {
18
24
  ...DEFAULT_MOCK_SERVER_OPTIONS,
19
25
  ...initialOptions,
20
26
  };
27
+ const logger = Logger(loggerOptions);
21
28
  const mockServer = new Server(url);
22
29
  let socket;
23
30
  const emitter = new EventEmitter();
@@ -28,9 +35,6 @@ const getMockServer = (initialOptions = {}) => {
28
35
  const handlers = new Map();
29
36
  const addServerHandler = (method, path, responseData, subscriptionCallback) => {
30
37
  const requestHandler = (request, s) => {
31
- if (subscriptionCallback) {
32
- subscriptionCallback(request);
33
- }
34
38
  const data = typeof responseData === 'function' ? responseData(request, s) : responseData;
35
39
  if (!data || !data.code) {
36
40
  throw new Error(`Mock server: response handler for path ${path} must return a status code`);
@@ -39,7 +43,14 @@ const getMockServer = (initialOptions = {}) => {
39
43
  callback_id: request.callback_id,
40
44
  ...data,
41
45
  };
42
- s.send(JSON.stringify(response));
46
+ const delay = typeof delayMs === 'function' ? delayMs() : delayMs;
47
+ setTimeout(() => {
48
+ logger.verbose(`Mock server: sending response for request ${request.callback_id} (${method} ${path}):`, data);
49
+ if (subscriptionCallback) {
50
+ subscriptionCallback(request);
51
+ }
52
+ s.send(JSON.stringify(response));
53
+ }, delay);
43
54
  };
44
55
  // Don't add duplicates
45
56
  const emitId = toEmitId(path, method);
@@ -86,6 +97,12 @@ const getMockServer = (initialOptions = {}) => {
86
97
  const subscribeRemove = addRequestHandler('POST', path, undefined, subscribeFn);
87
98
  const unsubscribeRemove = addRequestHandler('DELETE', path, undefined, unsubscribeFn);
88
99
  const fire = (data, entityId) => {
100
+ if (entityId) {
101
+ logger.verbose(`Mock server: firing subscriber ${moduleName} ${listenerName} for entity ${entityId}:`, data);
102
+ }
103
+ else {
104
+ logger.verbose(`Mock server: firing subscriber ${moduleName} ${listenerName}:`, data);
105
+ }
89
106
  send({
90
107
  event: listenerName,
91
108
  data,
@@ -119,6 +136,7 @@ const getMockServer = (initialOptions = {}) => {
119
136
  rejectRemove();
120
137
  };
121
138
  const fire = (data) => {
139
+ logger.verbose(`Mock server: firing hook ${moduleName} ${listenerName}:`, data);
122
140
  send({
123
141
  event: listenerName,
124
142
  data,
@@ -143,7 +161,7 @@ const getMockServer = (initialOptions = {}) => {
143
161
  const emitId = toEmitId(request.path, request.method);
144
162
  const processed = emitter.emit(emitId, request, s);
145
163
  if (reportMissingListeners && !processed) {
146
- console.warn(`Mock server: no listeners for event ${request.method} ${request.path}`);
164
+ logger.warn(`Mock server: no listeners for event ${request.method} ${request.path}`);
147
165
  }
148
166
  });
149
167
  });
@@ -1 +1 @@
1
- {"version":3,"file":"mock-server.js","sourceRoot":"","sources":["../../../src/tests/mocks/mock-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mock-server.js","sourceRoot":"","sources":["../../../src/tests/mocks/mock-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,MAAM,EAAa,MAAM,aAAa,CAAC;AAGxD,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,MAAM,MAAM,uBAAuB,CAAC;AAK1C,CAAC;AAIF,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,MAAc,EAAE,EAAE;IAChD,OAAO,GAAG,IAAI,IAAI,MAAM,EAAE,CAAC;AAC7B,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAG,GAAG,EAAE,CAAC,CAAC;IACpC,EAAE,EAAE,GAAG,EAAE,GAAE,CAAC;CACb,CAAC,CAAC;AAYH,MAAM,2BAA2B,GAAsB;IACrD,GAAG,EAAE,eAAe;IACpB,sBAAsB,EAAE,IAAI;IAC5B,KAAK,EAAE,sBAAsB,EAAE;IAC/B,OAAO,EAAE,CAAC;IACV,aAAa,EAAE;QACb,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,OAAO;KACnB;CACF,CAAA;AAMD,MAAM,aAAa,GAAG,CAAC,iBAA6C,EAAE,EAAE,EAAE;IACxE,MAAM,EAAE,GAAG,EAAE,sBAAsB,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,GAAsB;QACxF,GAAG,2BAA2B;QAC9B,GAAG,cAAc;KAClB,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,MAAc,CAAC;IACnB,MAAM,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;IACnC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAE3B,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE;QAC5B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC;IAEF,MAAM,QAAQ,GAA2B,IAAI,GAAG,EAAE,CAAC;IAEnD,MAAM,gBAAgB,GAAG,CACvB,MAAc,EACd,IAAY,EACZ,YAA4C,EAC5C,oBAAsC,EACtC,EAAE;QACF,MAAM,cAAc,GAAG,CAAC,OAAwB,EAAE,CAAY,EAAE,EAAE;YAChE,MAAM,IAAI,GAAG,OAAO,YAAY,KAAK,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;YAC1F,IAAI,CAAC,IAAI,IAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,0CAA0C,IAAI,4BAA4B,CAAC,CAAC;YAC9F,CAAC;YAED,MAAM,QAAQ,GAAkD;gBAC9D,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,GAAG,IAAI;aACR,CAAC;YAEF,MAAM,KAAK,GAAG,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YAClE,UAAU,CAAC,GAAG,EAAE;gBACd,MAAM,CAAC,OAAO,CAAC,6CAA6C,OAAO,CAAC,WAAW,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC9G,IAAI,oBAAoB,EAAE,CAAC;oBACzB,oBAAoB,CAAC,OAAO,CAAC,CAAC;gBAChC,CAAC;gBAED,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;YACnC,CAAC,EAAE,KAAK,CAAC,CAAC;QACZ,CAAC,CAAC;QAEF,uBAAuB;QACvB,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACtC,MAAM,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,cAAc,EAAE,CAAC;YACnB,cAAc,EAAE,CAAC;YACjB,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;QAED,UAAU;QACV,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAE5C,sBAAsB;QACtB,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAC5E,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;QACpC,OAAO,cAAc,CAAC;IACxB,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,CAAC,MAAc,EAAE,IAAY,EAAE,EAAE;QAC3D,MAAM,OAAO,GAAG,CAAC,OAAwB,EAAE,CAAY,EAAE,EAAE;YACzD,aAAa;QACf,CAAC,CAAC;QAEF,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACtC,OAAO,CAAC,WAAW,CACjB,MAAM,EACN,OAAO,CACR,CAAC;QACF,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAE3B,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC,CAAA;IAED,MAAM,iBAAiB,GAAG,CACxB,MAAc,EACd,IAAY,EACZ,IAAoD,EACpD,oBAAsC,EACtC,EAAE;QACF,MAAM,WAAW,GAAG,OAAO,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACtD,IAAI;YACJ,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;SACvB,CAAA;QAED,OAAO,gBAAgB,CACrB,MAAM,EACN,IAAI,EACJ,WAAW,EACX,oBAAoB,CACrB,CAAC;IACJ,CAAC,CAAA;IAED,MAAM,eAAe,GAAG,CACtB,MAAc,EACd,IAAY,EACZ,QAAuB,EACvB,SAAiB,EACjB,oBAAsC,EACtC,EAAE;QACF,OAAO,gBAAgB,CACrB,MAAM,EACN,IAAI,EACJ;YACE,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAW,CAAC,CAAC,CAAC;gBAC/B,OAAO,EAAE,QAAQ;aAClB;YACD,IAAI,EAAE,SAAS;SAChB,EACD,oBAAoB,CACrB,CAAC;IACJ,CAAC,CAAA;IAED,MAAM,0BAA0B,GAAG,CACjC,UAAkB,EAClB,IAAY,EACZ,YAAoB,EACpB,QAA0B,EAC1B,EAAE;QACF,MAAM,WAAW,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC;QAC/B,MAAM,aAAa,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC;QAEjC,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,UAAU,IAAI,QAAQ,IAAI,IAAI,IAAI,YAAY,EAAE,CAAC,CAAC,CAAC,GAAG,UAAU,IAAI,IAAI,IAAI,YAAY,EAAE,CAAC;QAEtH,MAAM,eAAe,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QAChF,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;QAEtF,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,QAA0B,EAAE,EAAE;YACxD,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,CAAC,OAAO,CAAC,kCAAkC,UAAU,IAAI,YAAY,eAAe,QAAQ,GAAG,EAAE,IAAI,CAAC,CAAC;YAC/G,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,OAAO,CAAC,kCAAkC,UAAU,IAAI,YAAY,GAAG,EAAE,IAAI,CAAC,CAAC;YACxF,CAAC;YAED,IAAI,CAAC;gBACH,KAAK,EAAE,YAAY;gBACnB,IAAI;gBACJ,EAAE,EAAE,QAAQ;aACb,CAAC,CAAC;QACL,CAAC,CAAA;QAED,MAAM,MAAM,GAAG,GAAG,EAAE;YAClB,eAAe,EAAE,CAAC;YAClB,iBAAiB,EAAE,CAAC;QACtB,CAAC,CAAC;QAEF,OAAO;YACL,IAAI;YACJ,MAAM;YAEN,WAAW;YACX,aAAa;YAEb,IAAI;SACL,CAAA;IACH,CAAC,CAAA;IAGD,MAAM,sBAAsB,GAAG,CAC7B,UAAkB,EAClB,YAAoB,EACpB,QAA0B,EAC1B,EAAE;QACF,OAAO,0BAA0B,CAAC,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;IACrF,CAAC,CAAA;IAED,MAAM,cAAc,GAAG,CACrB,UAAkB,EAClB,YAAoB,EACpB,EAAE;QACF,MAAM,UAAU,GAAG,0BAA0B,CAAC,UAAU,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QAEjF,MAAM,WAAW,GAAG,CAAC,YAAoB,EAAE,EAAE;YAC3C,MAAM,SAAS,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC;YAE5B,MAAM,aAAa,GAAG,iBAAiB,CACrC,MAAM,EACN,GAAG,UAAU,CAAC,IAAI,IAAI,YAAY,UAAU,EAC5C,SAAS,EACT,SAAS,CACV,CAAC;YAEF,MAAM,YAAY,GAAG,iBAAiB,CACpC,MAAM,EACN,GAAG,UAAU,CAAC,IAAI,IAAI,YAAY,SAAS,EAC3C,SAAS,EACT,QAAQ,CACT,CAAC;YAEF,MAAM,MAAM,GAAG,GAAG,EAAE;gBAClB,aAAa,EAAE,CAAC;gBAChB,YAAY,EAAE,CAAC;YACjB,CAAC,CAAA;YAED,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE;gBAC5B,MAAM,CAAC,OAAO,CAAC,4BAA4B,UAAU,IAAI,YAAY,GAAG,EAAE,IAAI,CAAC,CAAC;gBAChF,IAAI,CAAC;oBACH,KAAK,EAAE,YAAY;oBACnB,IAAI;oBACJ,aAAa,EAAE,YAAY;iBAC5B,CAAC,CAAC;YACL,CAAC,CAAA;YAED,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;QAC/C,CAAC,CAAC;QAEF,OAAO;YACL,WAAW;YAEX,GAAG,UAAU;SACd,CAAA;IACH,CAAC,CAAA;IAED,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAC7B,QAAQ,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC,CAAA;IAED,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE;QAC9B,MAAM,GAAG,CAAC,CAAC;QAEX,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,EAAE;YAClC,MAAM,OAAO,GAAoB,IAAI,CAAC,KAAK,CAAC,UAAoB,CAAC,CAAC;YAClE,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YACtD,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;YACnD,IAAI,sBAAsB,IAAI,CAAC,SAAS,EAAE,CAAC;gBACzC,MAAM,CAAC,IAAI,CAAC,uCAAuC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YACvF,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QAC1B,yDAAyD;QACzD,uCAAuC;QACvC,aAAa,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,iBAAiB;QACjB,eAAe;QAEf,sBAAsB;QACtB,cAAc;QAEd,oBAAoB,EAAE,mBAAmB;QACzC,IAAI,EAAE,GAAG,EAAE;YACT,UAAU,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC;QACD,IAAI;QACJ,GAAG;KACJ,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "airdcpp-apisocket",
3
- "version": "3.0.0-beta.12",
3
+ "version": "3.0.0-beta.13",
4
4
  "description": "Javascript connector for AirDC++ Web API",
5
5
  "license": "MIT",
6
6
  "authors": [
@@ -248,6 +248,7 @@ describe('socket', () => {
248
248
  jest.runOnlyPendingTimers();
249
249
  jest.runOnlyPendingTimers();
250
250
  jest.runOnlyPendingTimers();
251
+ jest.runOnlyPendingTimers();
251
252
 
252
253
  expect(socket.isConnected()).toEqual(true);
253
254
  expect(mockConsole.warn.mock.calls.length).toBe(0);
@@ -4,6 +4,9 @@ import { OutgoingRequest, RequestSuccessResponse, RequestErrorResponse } from '.
4
4
  import { EventEmitter } from 'events';
5
5
  import { MOCK_SERVER_URL } from './mock-data.js';
6
6
 
7
+ import Logger from '../../SocketLogger.js';
8
+ import { LoggerOptions } from '../../NodeSocket.js';
9
+
7
10
  interface MockFunctionCreator {
8
11
  fn: (...args: any[]) => any;
9
12
  };
@@ -18,16 +21,25 @@ const getDefaultMockCreatorF = () => ({
18
21
  fn: () => {},
19
22
  });
20
23
 
21
- interface MockServerOptions {
24
+ type DelayF = () => number;
25
+
26
+ export interface MockServerOptions {
22
27
  url: string;
23
28
  reportMissingListeners?: boolean;
24
29
  mockF: MockFunctionCreator;
30
+ delayMs: number | DelayF;
31
+ loggerOptions: LoggerOptions;
25
32
  }
26
33
 
27
34
  const DEFAULT_MOCK_SERVER_OPTIONS: MockServerOptions = {
28
35
  url: MOCK_SERVER_URL,
29
36
  reportMissingListeners: true,
30
37
  mockF: getDefaultMockCreatorF(),
38
+ delayMs: 0,
39
+ loggerOptions: {
40
+ logLevel: 'warn',
41
+ logOutput: console,
42
+ }
31
43
  }
32
44
 
33
45
  type MockRequestResponseDataObject<DataT extends object | undefined> = Omit<RequestSuccessResponse<DataT>, 'callback_id'> | Omit<RequestErrorResponse, 'callback_id'>;
@@ -35,11 +47,12 @@ type MockRequestResponseDataHandler<DataT extends object | undefined> = (request
35
47
  type MockRequestResponseData<DataT extends object | undefined> = MockRequestResponseDataObject<DataT> | MockRequestResponseDataHandler<DataT>;
36
48
 
37
49
  const getMockServer = (initialOptions: Partial<MockServerOptions> = {}) => {
38
- const { url, reportMissingListeners, mockF }: MockServerOptions = {
50
+ const { url, reportMissingListeners, mockF, delayMs, loggerOptions }: MockServerOptions = {
39
51
  ...DEFAULT_MOCK_SERVER_OPTIONS,
40
52
  ...initialOptions,
41
53
  };
42
54
 
55
+ const logger = Logger(loggerOptions);
43
56
  const mockServer = new Server(url);
44
57
  let socket: Client;
45
58
  const emitter = new EventEmitter();
@@ -58,10 +71,6 @@ const getMockServer = (initialOptions: Partial<MockServerOptions> = {}) => {
58
71
  subscriptionCallback?: RequestCallback,
59
72
  ) => {
60
73
  const requestHandler = (request: OutgoingRequest, s: WebSocket) => {
61
- if (subscriptionCallback) {
62
- subscriptionCallback(request);
63
- }
64
-
65
74
  const data = typeof responseData === 'function' ? responseData(request, s) : responseData;
66
75
  if (!data ||!data.code) {
67
76
  throw new Error(`Mock server: response handler for path ${path} must return a status code`);
@@ -72,7 +81,15 @@ const getMockServer = (initialOptions: Partial<MockServerOptions> = {}) => {
72
81
  ...data,
73
82
  };
74
83
 
75
- s.send(JSON.stringify(response));
84
+ const delay = typeof delayMs === 'function' ? delayMs() : delayMs;
85
+ setTimeout(() => {
86
+ logger.verbose(`Mock server: sending response for request ${request.callback_id} (${method} ${path}):`, data);
87
+ if (subscriptionCallback) {
88
+ subscriptionCallback(request);
89
+ }
90
+
91
+ s.send(JSON.stringify(response));
92
+ }, delay);
76
93
  };
77
94
 
78
95
  // Don't add duplicates
@@ -161,6 +178,12 @@ const getMockServer = (initialOptions: Partial<MockServerOptions> = {}) => {
161
178
  const unsubscribeRemove = addRequestHandler('DELETE', path, undefined, unsubscribeFn);
162
179
 
163
180
  const fire = (data: object, entityId?: string | number) => {
181
+ if (entityId) {
182
+ logger.verbose(`Mock server: firing subscriber ${moduleName} ${listenerName} for entity ${entityId}:`, data);
183
+ } else {
184
+ logger.verbose(`Mock server: firing subscriber ${moduleName} ${listenerName}:`, data);
185
+ }
186
+
164
187
  send({
165
188
  event: listenerName,
166
189
  data,
@@ -223,6 +246,7 @@ const getMockServer = (initialOptions: Partial<MockServerOptions> = {}) => {
223
246
  }
224
247
 
225
248
  const fire = (data: object) => {
249
+ logger.verbose(`Mock server: firing hook ${moduleName} ${listenerName}:`, data);
226
250
  send({
227
251
  event: listenerName,
228
252
  data,
@@ -253,7 +277,7 @@ const getMockServer = (initialOptions: Partial<MockServerOptions> = {}) => {
253
277
  const emitId = toEmitId(request.path, request.method);
254
278
  const processed = emitter.emit(emitId, request, s);
255
279
  if (reportMissingListeners && !processed) {
256
- console.warn(`Mock server: no listeners for event ${request.method} ${request.path}`);
280
+ logger.warn(`Mock server: no listeners for event ${request.method} ${request.path}`);
257
281
  }
258
282
  });
259
283
  });