@wazo/sdk 0.37.20 → 0.37.24

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.
Files changed (147) hide show
  1. package/dist/wazo-sdk.js +6 -6
  2. package/esm/__tests__/api-client.test.js +91 -21
  3. package/esm/__tests__/web-rtc-client.test.js +214 -165
  4. package/esm/api/agentd.js +25 -2
  5. package/esm/api/amid.js +26 -3
  6. package/esm/api/application.js +25 -2
  7. package/esm/api/auth.js +25 -2
  8. package/esm/api/call-logd.js +34 -4
  9. package/esm/api/calld.js +35 -2
  10. package/esm/api/chatd.js +32 -2
  11. package/esm/api/confd.js +56 -9
  12. package/esm/api/ctid-ng.js +38 -5
  13. package/esm/api/dird.js +29 -3
  14. package/esm/api/webhookd.js +26 -3
  15. package/esm/api-client.js +91 -21
  16. package/esm/checker/Checker.js +241 -190
  17. package/esm/checker/checks/aor.js +91 -21
  18. package/esm/checker/checks/api.js +91 -21
  19. package/esm/checker/checks/index.js +231 -180
  20. package/esm/checker/checks/wazo-websocket.js +42 -17
  21. package/esm/checker/checks/webrtc-transport.js +214 -165
  22. package/esm/checker/checks/webrtc.js +214 -165
  23. package/esm/domain/AdHocAPIConference.js +91 -21
  24. package/esm/domain/Call.js +3 -0
  25. package/esm/domain/CallLog.js +8 -1
  26. package/esm/domain/ChatMessage.js +4 -0
  27. package/esm/domain/ChatRoom.js +3 -0
  28. package/esm/domain/Contact.js +4 -1
  29. package/esm/domain/Features.js +91 -21
  30. package/esm/domain/Meeting.js +28 -5
  31. package/esm/domain/Phone/CTIPhone.js +109 -35
  32. package/esm/domain/Phone/WebRTCPhone.js +159 -102
  33. package/esm/domain/Recording.js +3 -0
  34. package/esm/domain/Voicemail.js +3 -0
  35. package/esm/domain/__tests__/Call.test.js +3 -0
  36. package/esm/domain/__tests__/CallLog.test.js +8 -1
  37. package/esm/domain/__tests__/Contact.test.js +4 -1
  38. package/esm/domain/__tests__/Meeting.test.js +144 -0
  39. package/esm/domain/__tests__/Voicemail.test.js +3 -0
  40. package/esm/index.js +509 -414
  41. package/esm/lib/WazoSessionDescriptionHandler.js +26 -41
  42. package/esm/service/CallApi.js +91 -21
  43. package/esm/service/IssueReporter.js +26 -3
  44. package/esm/service/__tests__/IssueReporter.test.js +26 -3
  45. package/esm/service/getApiClient.js +91 -21
  46. package/esm/simple/Auth.js +499 -404
  47. package/esm/simple/Configuration.js +499 -404
  48. package/esm/simple/Directory.js +91 -21
  49. package/esm/simple/Phone.js +499 -404
  50. package/esm/simple/Websocket.js +45 -19
  51. package/esm/simple/index.js +503 -408
  52. package/esm/simple/room/LocalParticipant.js +503 -408
  53. package/esm/simple/room/Participant.js +503 -408
  54. package/esm/simple/room/RemoteParticipant.js +503 -408
  55. package/esm/simple/room/Room.js +504 -409
  56. package/esm/simple/room/SipRoom.js +503 -408
  57. package/esm/simple/room/Stream.js +503 -408
  58. package/esm/simple/room/__tests__/RemoteParticipant.test.js +503 -408
  59. package/esm/simple/utils.js +503 -408
  60. package/esm/types/WebSocketMessage.js +1 -1
  61. package/esm/utils/__tests__/api-requester.test.js +25 -2
  62. package/esm/utils/api-requester.js +25 -2
  63. package/esm/web-rtc-client.js +214 -165
  64. package/esm/websocket-client.js +43 -18
  65. package/lib/__tests__/api-client.test.js +91 -21
  66. package/lib/__tests__/web-rtc-client.test.js +214 -165
  67. package/lib/api/agentd.js +25 -2
  68. package/lib/api/amid.js +26 -3
  69. package/lib/api/application.js +25 -2
  70. package/lib/api/auth.js +25 -2
  71. package/lib/api/call-logd.js +34 -4
  72. package/lib/api/calld.js +35 -2
  73. package/lib/api/chatd.js +32 -2
  74. package/lib/api/confd.js +56 -9
  75. package/lib/api/ctid-ng.js +38 -5
  76. package/lib/api/dird.js +29 -3
  77. package/lib/api/webhookd.js +26 -3
  78. package/lib/api-client.js +91 -21
  79. package/lib/checker/Checker.js +241 -190
  80. package/lib/checker/checks/aor.js +91 -21
  81. package/lib/checker/checks/api.js +91 -21
  82. package/lib/checker/checks/index.js +231 -180
  83. package/lib/checker/checks/wazo-websocket.js +42 -17
  84. package/lib/checker/checks/webrtc-transport.js +214 -165
  85. package/lib/checker/checks/webrtc.js +214 -165
  86. package/lib/domain/AdHocAPIConference.js +91 -21
  87. package/lib/domain/Call.js +3 -0
  88. package/lib/domain/CallLog.js +8 -1
  89. package/lib/domain/ChatMessage.js +4 -0
  90. package/lib/domain/ChatRoom.js +3 -0
  91. package/lib/domain/Contact.js +4 -1
  92. package/lib/domain/Features.js +91 -21
  93. package/lib/domain/Meeting.js +32 -5
  94. package/lib/domain/Phone/CTIPhone.js +109 -35
  95. package/lib/domain/Phone/WebRTCPhone.js +159 -102
  96. package/lib/domain/Recording.js +3 -0
  97. package/lib/domain/Voicemail.js +3 -0
  98. package/lib/domain/__tests__/Call.test.js +3 -0
  99. package/lib/domain/__tests__/CallLog.test.js +8 -1
  100. package/lib/domain/__tests__/Contact.test.js +4 -1
  101. package/lib/domain/__tests__/Meeting.test.js +150 -0
  102. package/lib/domain/__tests__/Voicemail.test.js +3 -0
  103. package/lib/index.js +509 -414
  104. package/lib/lib/WazoSessionDescriptionHandler.js +26 -41
  105. package/lib/service/CallApi.js +91 -21
  106. package/lib/service/IssueReporter.js +26 -3
  107. package/lib/service/__tests__/IssueReporter.test.js +26 -3
  108. package/lib/service/getApiClient.js +91 -21
  109. package/lib/simple/Auth.js +499 -404
  110. package/lib/simple/Configuration.js +499 -404
  111. package/lib/simple/Directory.js +91 -21
  112. package/lib/simple/Phone.js +499 -404
  113. package/lib/simple/Websocket.js +45 -19
  114. package/lib/simple/index.js +503 -408
  115. package/lib/simple/room/LocalParticipant.js +503 -408
  116. package/lib/simple/room/Participant.js +503 -408
  117. package/lib/simple/room/RemoteParticipant.js +503 -408
  118. package/lib/simple/room/Room.js +504 -409
  119. package/lib/simple/room/SipRoom.js +503 -408
  120. package/lib/simple/room/Stream.js +503 -408
  121. package/lib/simple/room/__tests__/RemoteParticipant.test.js +503 -408
  122. package/lib/simple/utils.js +503 -408
  123. package/lib/types/WebSocketMessage.js +2 -0
  124. package/lib/utils/__tests__/api-requester.test.js +25 -2
  125. package/lib/utils/api-requester.js +25 -2
  126. package/lib/web-rtc-client.js +214 -165
  127. package/lib/websocket-client.js +43 -17
  128. package/package.json +1 -1
  129. package/src/api/confd.js +5 -2
  130. package/src/domain/Call.js +3 -0
  131. package/src/domain/CallLog.js +4 -0
  132. package/src/domain/ChatMessage.js +4 -0
  133. package/src/domain/ChatRoom.js +3 -0
  134. package/src/domain/Contact.js +3 -0
  135. package/src/domain/Meeting.js +28 -5
  136. package/src/domain/Phone/CTIPhone.js +4 -0
  137. package/src/domain/Phone/Phone.js +2 -0
  138. package/src/domain/Phone/WebRTCPhone.js +49 -15
  139. package/src/domain/Recording.js +3 -0
  140. package/src/domain/Voicemail.js +3 -0
  141. package/src/domain/__tests__/Meeting.test.js +50 -0
  142. package/src/lib/WazoSessionDescriptionHandler.js +1 -35
  143. package/src/service/IssueReporter.js +25 -2
  144. package/src/simple/Phone.js +5 -0
  145. package/src/types/WebSocketMessage.js +5 -1
  146. package/src/web-rtc-client.js +41 -24
  147. package/src/websocket-client.js +2 -0
package/esm/api/agentd.js CHANGED
@@ -126,6 +126,7 @@ class IssueReporter {
126
126
 
127
127
 
128
128
 
129
+
129
130
 
130
131
  constructor() {
131
132
  addLevelsTo(this);
@@ -137,12 +138,17 @@ class IssueReporter {
137
138
  this.bufferTimeout = null;
138
139
  this._boundProcessBuffer = this._processBuffer.bind(this);
139
140
  this._boundParseLoggerBody = this._parseLoggerBody.bind(this);
141
+ this._callback = null;
140
142
  }
141
143
 
142
144
  init() {
143
145
  this._catchConsole();
144
146
  }
145
147
 
148
+ setCallback(cb ) {
149
+ this._callback = cb;
150
+ }
151
+
146
152
  configureRemoteClient(configuration = { tag: 'wazo-sdk', host: null, port: null, level: null, extra: {} }) {
147
153
  this.remoteClientConfiguration = configuration;
148
154
  }
@@ -178,6 +184,7 @@ class IssueReporter {
178
184
 
179
185
  // Handle category label
180
186
  let category = null;
187
+ let skipSendToRemote = false;
181
188
  let extra = {};
182
189
  if (args[0].indexOf(CATEGORY_PREFIX) === 0) {
183
190
  category = args[0].split('=')[1];
@@ -193,6 +200,7 @@ class IssueReporter {
193
200
  errorMessage: lastArg.message,
194
201
  errorStack: lastArg.stack,
195
202
  errorType: lastArg.constructor.name,
203
+ skipSendToRemote: lastArg.skipSendToRemote,
196
204
  };
197
205
  } else {
198
206
  extra = lastArg;
@@ -201,6 +209,11 @@ class IssueReporter {
201
209
  args.splice(1, 1);
202
210
  }
203
211
 
212
+ if (extra.skipSendToRemote) {
213
+ skipSendToRemote = true;
214
+ delete extra.skipSendToRemote;
215
+ }
216
+
204
217
  const date = moment().format('YYYY-MM-DD HH:mm:ss.SSS');
205
218
  const message = args.join(', ');
206
219
  let consoleMessage = message;
@@ -221,7 +234,13 @@ class IssueReporter {
221
234
  const oldMethod = this.oldConsoleMethods[consoleLevel] || this.oldConsoleMethods.log;
222
235
  oldMethod.apply(oldMethod, [date, consoleMessage]);
223
236
 
224
- this._sendToRemoteLogger(level, { date, message, category, ...extra });
237
+ if (this._callback) {
238
+ this._callback(level, consoleMessage);
239
+ }
240
+
241
+ if (!skipSendToRemote) {
242
+ this._sendToRemoteLogger(level, { date, message, category, ...extra });
243
+ }
225
244
  }
226
245
 
227
246
  logRequest(url , options , response , start ) {
@@ -366,7 +385,11 @@ class IssueReporter {
366
385
  },
367
386
  // $FlowFixMe
368
387
  body,
369
- }).catch(() => {
388
+ }).catch((e ) => {
389
+ // $FlowFixMe
390
+ e.skipSendToRemote = true;
391
+ this.log('error', this._makeCategory('grafana'), 'Sending log to grafana, error', e);
392
+
370
393
  setTimeout(() => {
371
394
  if (isArray) {
372
395
  payload = payload.map(message => {
package/esm/api/amid.js CHANGED
@@ -65,6 +65,7 @@ class IssueReporter {
65
65
 
66
66
 
67
67
 
68
+
68
69
 
69
70
  constructor() {
70
71
  addLevelsTo(this);
@@ -76,12 +77,17 @@ class IssueReporter {
76
77
  this.bufferTimeout = null;
77
78
  this._boundProcessBuffer = this._processBuffer.bind(this);
78
79
  this._boundParseLoggerBody = this._parseLoggerBody.bind(this);
80
+ this._callback = null;
79
81
  }
80
82
 
81
83
  init() {
82
84
  this._catchConsole();
83
85
  }
84
86
 
87
+ setCallback(cb ) {
88
+ this._callback = cb;
89
+ }
90
+
85
91
  configureRemoteClient(configuration = { tag: 'wazo-sdk', host: null, port: null, level: null, extra: {} }) {
86
92
  this.remoteClientConfiguration = configuration;
87
93
  }
@@ -117,6 +123,7 @@ class IssueReporter {
117
123
 
118
124
  // Handle category label
119
125
  let category = null;
126
+ let skipSendToRemote = false;
120
127
  let extra = {};
121
128
  if (args[0].indexOf(CATEGORY_PREFIX) === 0) {
122
129
  category = args[0].split('=')[1];
@@ -132,6 +139,7 @@ class IssueReporter {
132
139
  errorMessage: lastArg.message,
133
140
  errorStack: lastArg.stack,
134
141
  errorType: lastArg.constructor.name,
142
+ skipSendToRemote: lastArg.skipSendToRemote,
135
143
  };
136
144
  } else {
137
145
  extra = lastArg;
@@ -140,6 +148,11 @@ class IssueReporter {
140
148
  args.splice(1, 1);
141
149
  }
142
150
 
151
+ if (extra.skipSendToRemote) {
152
+ skipSendToRemote = true;
153
+ delete extra.skipSendToRemote;
154
+ }
155
+
143
156
  const date = moment().format('YYYY-MM-DD HH:mm:ss.SSS');
144
157
  const message = args.join(', ');
145
158
  let consoleMessage = message;
@@ -160,7 +173,13 @@ class IssueReporter {
160
173
  const oldMethod = this.oldConsoleMethods[consoleLevel] || this.oldConsoleMethods.log;
161
174
  oldMethod.apply(oldMethod, [date, consoleMessage]);
162
175
 
163
- this._sendToRemoteLogger(level, { date, message, category, ...extra });
176
+ if (this._callback) {
177
+ this._callback(level, consoleMessage);
178
+ }
179
+
180
+ if (!skipSendToRemote) {
181
+ this._sendToRemoteLogger(level, { date, message, category, ...extra });
182
+ }
164
183
  }
165
184
 
166
185
  logRequest(url , options , response , start ) {
@@ -305,7 +324,11 @@ class IssueReporter {
305
324
  },
306
325
  // $FlowFixMe
307
326
  body,
308
- }).catch(() => {
327
+ }).catch((e ) => {
328
+ // $FlowFixMe
329
+ e.skipSendToRemote = true;
330
+ this.log('error', this._makeCategory('grafana'), 'Sending log to grafana, error', e);
331
+
309
332
  setTimeout(() => {
310
333
  if (isArray) {
311
334
  payload = payload.map(message => {
@@ -341,7 +364,7 @@ var IssueReporter$1 = new IssueReporter();
341
364
 
342
365
  /* */
343
366
 
344
- IssueReporter$1 ? IssueReporter$1.loggerFor('api') : console;
367
+ const logger = IssueReporter$1 ? IssueReporter$1.loggerFor('api') : console;
345
368
 
346
369
  // Use a function here to be able to mock it in tests
347
370
  const realFetch = () => {
@@ -126,6 +126,7 @@ class IssueReporter {
126
126
 
127
127
 
128
128
 
129
+
129
130
 
130
131
  constructor() {
131
132
  addLevelsTo(this);
@@ -137,12 +138,17 @@ class IssueReporter {
137
138
  this.bufferTimeout = null;
138
139
  this._boundProcessBuffer = this._processBuffer.bind(this);
139
140
  this._boundParseLoggerBody = this._parseLoggerBody.bind(this);
141
+ this._callback = null;
140
142
  }
141
143
 
142
144
  init() {
143
145
  this._catchConsole();
144
146
  }
145
147
 
148
+ setCallback(cb ) {
149
+ this._callback = cb;
150
+ }
151
+
146
152
  configureRemoteClient(configuration = { tag: 'wazo-sdk', host: null, port: null, level: null, extra: {} }) {
147
153
  this.remoteClientConfiguration = configuration;
148
154
  }
@@ -178,6 +184,7 @@ class IssueReporter {
178
184
 
179
185
  // Handle category label
180
186
  let category = null;
187
+ let skipSendToRemote = false;
181
188
  let extra = {};
182
189
  if (args[0].indexOf(CATEGORY_PREFIX) === 0) {
183
190
  category = args[0].split('=')[1];
@@ -193,6 +200,7 @@ class IssueReporter {
193
200
  errorMessage: lastArg.message,
194
201
  errorStack: lastArg.stack,
195
202
  errorType: lastArg.constructor.name,
203
+ skipSendToRemote: lastArg.skipSendToRemote,
196
204
  };
197
205
  } else {
198
206
  extra = lastArg;
@@ -201,6 +209,11 @@ class IssueReporter {
201
209
  args.splice(1, 1);
202
210
  }
203
211
 
212
+ if (extra.skipSendToRemote) {
213
+ skipSendToRemote = true;
214
+ delete extra.skipSendToRemote;
215
+ }
216
+
204
217
  const date = moment().format('YYYY-MM-DD HH:mm:ss.SSS');
205
218
  const message = args.join(', ');
206
219
  let consoleMessage = message;
@@ -221,7 +234,13 @@ class IssueReporter {
221
234
  const oldMethod = this.oldConsoleMethods[consoleLevel] || this.oldConsoleMethods.log;
222
235
  oldMethod.apply(oldMethod, [date, consoleMessage]);
223
236
 
224
- this._sendToRemoteLogger(level, { date, message, category, ...extra });
237
+ if (this._callback) {
238
+ this._callback(level, consoleMessage);
239
+ }
240
+
241
+ if (!skipSendToRemote) {
242
+ this._sendToRemoteLogger(level, { date, message, category, ...extra });
243
+ }
225
244
  }
226
245
 
227
246
  logRequest(url , options , response , start ) {
@@ -366,7 +385,11 @@ class IssueReporter {
366
385
  },
367
386
  // $FlowFixMe
368
387
  body,
369
- }).catch(() => {
388
+ }).catch((e ) => {
389
+ // $FlowFixMe
390
+ e.skipSendToRemote = true;
391
+ this.log('error', this._makeCategory('grafana'), 'Sending log to grafana, error', e);
392
+
370
393
  setTimeout(() => {
371
394
  if (isArray) {
372
395
  payload = payload.map(message => {
package/esm/api/auth.js CHANGED
@@ -127,6 +127,7 @@ class IssueReporter {
127
127
 
128
128
 
129
129
 
130
+
130
131
 
131
132
  constructor() {
132
133
  addLevelsTo(this);
@@ -138,12 +139,17 @@ class IssueReporter {
138
139
  this.bufferTimeout = null;
139
140
  this._boundProcessBuffer = this._processBuffer.bind(this);
140
141
  this._boundParseLoggerBody = this._parseLoggerBody.bind(this);
142
+ this._callback = null;
141
143
  }
142
144
 
143
145
  init() {
144
146
  this._catchConsole();
145
147
  }
146
148
 
149
+ setCallback(cb ) {
150
+ this._callback = cb;
151
+ }
152
+
147
153
  configureRemoteClient(configuration = { tag: 'wazo-sdk', host: null, port: null, level: null, extra: {} }) {
148
154
  this.remoteClientConfiguration = configuration;
149
155
  }
@@ -179,6 +185,7 @@ class IssueReporter {
179
185
 
180
186
  // Handle category label
181
187
  let category = null;
188
+ let skipSendToRemote = false;
182
189
  let extra = {};
183
190
  if (args[0].indexOf(CATEGORY_PREFIX) === 0) {
184
191
  category = args[0].split('=')[1];
@@ -194,6 +201,7 @@ class IssueReporter {
194
201
  errorMessage: lastArg.message,
195
202
  errorStack: lastArg.stack,
196
203
  errorType: lastArg.constructor.name,
204
+ skipSendToRemote: lastArg.skipSendToRemote,
197
205
  };
198
206
  } else {
199
207
  extra = lastArg;
@@ -202,6 +210,11 @@ class IssueReporter {
202
210
  args.splice(1, 1);
203
211
  }
204
212
 
213
+ if (extra.skipSendToRemote) {
214
+ skipSendToRemote = true;
215
+ delete extra.skipSendToRemote;
216
+ }
217
+
205
218
  const date = moment().format('YYYY-MM-DD HH:mm:ss.SSS');
206
219
  const message = args.join(', ');
207
220
  let consoleMessage = message;
@@ -222,7 +235,13 @@ class IssueReporter {
222
235
  const oldMethod = this.oldConsoleMethods[consoleLevel] || this.oldConsoleMethods.log;
223
236
  oldMethod.apply(oldMethod, [date, consoleMessage]);
224
237
 
225
- this._sendToRemoteLogger(level, { date, message, category, ...extra });
238
+ if (this._callback) {
239
+ this._callback(level, consoleMessage);
240
+ }
241
+
242
+ if (!skipSendToRemote) {
243
+ this._sendToRemoteLogger(level, { date, message, category, ...extra });
244
+ }
226
245
  }
227
246
 
228
247
  logRequest(url , options , response , start ) {
@@ -367,7 +386,11 @@ class IssueReporter {
367
386
  },
368
387
  // $FlowFixMe
369
388
  body,
370
- }).catch(() => {
389
+ }).catch((e ) => {
390
+ // $FlowFixMe
391
+ e.skipSendToRemote = true;
392
+ this.log('error', this._makeCategory('grafana'), 'Sending log to grafana, error', e);
393
+
371
394
  setTimeout(() => {
372
395
  if (isArray) {
373
396
  payload = payload.map(message => {
@@ -66,6 +66,7 @@ class IssueReporter {
66
66
 
67
67
 
68
68
 
69
+
69
70
 
70
71
  constructor() {
71
72
  addLevelsTo(this);
@@ -77,12 +78,17 @@ class IssueReporter {
77
78
  this.bufferTimeout = null;
78
79
  this._boundProcessBuffer = this._processBuffer.bind(this);
79
80
  this._boundParseLoggerBody = this._parseLoggerBody.bind(this);
81
+ this._callback = null;
80
82
  }
81
83
 
82
84
  init() {
83
85
  this._catchConsole();
84
86
  }
85
87
 
88
+ setCallback(cb ) {
89
+ this._callback = cb;
90
+ }
91
+
86
92
  configureRemoteClient(configuration = { tag: 'wazo-sdk', host: null, port: null, level: null, extra: {} }) {
87
93
  this.remoteClientConfiguration = configuration;
88
94
  }
@@ -118,6 +124,7 @@ class IssueReporter {
118
124
 
119
125
  // Handle category label
120
126
  let category = null;
127
+ let skipSendToRemote = false;
121
128
  let extra = {};
122
129
  if (args[0].indexOf(CATEGORY_PREFIX) === 0) {
123
130
  category = args[0].split('=')[1];
@@ -133,6 +140,7 @@ class IssueReporter {
133
140
  errorMessage: lastArg.message,
134
141
  errorStack: lastArg.stack,
135
142
  errorType: lastArg.constructor.name,
143
+ skipSendToRemote: lastArg.skipSendToRemote,
136
144
  };
137
145
  } else {
138
146
  extra = lastArg;
@@ -141,6 +149,11 @@ class IssueReporter {
141
149
  args.splice(1, 1);
142
150
  }
143
151
 
152
+ if (extra.skipSendToRemote) {
153
+ skipSendToRemote = true;
154
+ delete extra.skipSendToRemote;
155
+ }
156
+
144
157
  const date = moment().format('YYYY-MM-DD HH:mm:ss.SSS');
145
158
  const message = args.join(', ');
146
159
  let consoleMessage = message;
@@ -161,7 +174,13 @@ class IssueReporter {
161
174
  const oldMethod = this.oldConsoleMethods[consoleLevel] || this.oldConsoleMethods.log;
162
175
  oldMethod.apply(oldMethod, [date, consoleMessage]);
163
176
 
164
- this._sendToRemoteLogger(level, { date, message, category, ...extra });
177
+ if (this._callback) {
178
+ this._callback(level, consoleMessage);
179
+ }
180
+
181
+ if (!skipSendToRemote) {
182
+ this._sendToRemoteLogger(level, { date, message, category, ...extra });
183
+ }
165
184
  }
166
185
 
167
186
  logRequest(url , options , response , start ) {
@@ -306,7 +325,11 @@ class IssueReporter {
306
325
  },
307
326
  // $FlowFixMe
308
327
  body,
309
- }).catch(() => {
328
+ }).catch((e ) => {
329
+ // $FlowFixMe
330
+ e.skipSendToRemote = true;
331
+ this.log('error', this._makeCategory('grafana'), 'Sending log to grafana, error', e);
332
+
310
333
  setTimeout(() => {
311
334
  if (isArray) {
312
335
  payload = payload.map(message => {
@@ -342,7 +365,7 @@ var IssueReporter$1 = new IssueReporter();
342
365
 
343
366
  /* */
344
367
 
345
- IssueReporter$1 ? IssueReporter$1.loggerFor('api') : console;
368
+ const logger = IssueReporter$1 ? IssueReporter$1.loggerFor('api') : console;
346
369
 
347
370
  // Use a function here to be able to mock it in tests
348
371
  const realFetch = () => {
@@ -393,7 +416,7 @@ BwIDAQAB
393
416
 
394
417
  //
395
418
 
396
- KEYUTIL.getKey(swarmPublicKey);
419
+ const swarmKey = KEYUTIL.getKey(swarmPublicKey);
397
420
 
398
421
  //
399
422
 
@@ -421,6 +444,9 @@ class Recording {
421
444
 
422
445
 
423
446
  static parseMany(recordings = []) {
447
+ if (!recordings) {
448
+ return [];
449
+ }
424
450
  return recordings.map(item => Recording.parse(item));
425
451
  }
426
452
 
@@ -522,6 +548,10 @@ class CallLog {
522
548
  }
523
549
 
524
550
  static parseMany(plain ) {
551
+ if (!plain || !plain.items) {
552
+ return [];
553
+ }
554
+
525
555
  return plain.items.map(item => CallLog.parse(item));
526
556
  }
527
557
 
package/esm/api/calld.js CHANGED
@@ -127,6 +127,7 @@ class IssueReporter {
127
127
 
128
128
 
129
129
 
130
+
130
131
 
131
132
  constructor() {
132
133
  addLevelsTo(this);
@@ -138,12 +139,17 @@ class IssueReporter {
138
139
  this.bufferTimeout = null;
139
140
  this._boundProcessBuffer = this._processBuffer.bind(this);
140
141
  this._boundParseLoggerBody = this._parseLoggerBody.bind(this);
142
+ this._callback = null;
141
143
  }
142
144
 
143
145
  init() {
144
146
  this._catchConsole();
145
147
  }
146
148
 
149
+ setCallback(cb ) {
150
+ this._callback = cb;
151
+ }
152
+
147
153
  configureRemoteClient(configuration = { tag: 'wazo-sdk', host: null, port: null, level: null, extra: {} }) {
148
154
  this.remoteClientConfiguration = configuration;
149
155
  }
@@ -179,6 +185,7 @@ class IssueReporter {
179
185
 
180
186
  // Handle category label
181
187
  let category = null;
188
+ let skipSendToRemote = false;
182
189
  let extra = {};
183
190
  if (args[0].indexOf(CATEGORY_PREFIX) === 0) {
184
191
  category = args[0].split('=')[1];
@@ -194,6 +201,7 @@ class IssueReporter {
194
201
  errorMessage: lastArg.message,
195
202
  errorStack: lastArg.stack,
196
203
  errorType: lastArg.constructor.name,
204
+ skipSendToRemote: lastArg.skipSendToRemote,
197
205
  };
198
206
  } else {
199
207
  extra = lastArg;
@@ -202,6 +210,11 @@ class IssueReporter {
202
210
  args.splice(1, 1);
203
211
  }
204
212
 
213
+ if (extra.skipSendToRemote) {
214
+ skipSendToRemote = true;
215
+ delete extra.skipSendToRemote;
216
+ }
217
+
205
218
  const date = moment().format('YYYY-MM-DD HH:mm:ss.SSS');
206
219
  const message = args.join(', ');
207
220
  let consoleMessage = message;
@@ -222,7 +235,13 @@ class IssueReporter {
222
235
  const oldMethod = this.oldConsoleMethods[consoleLevel] || this.oldConsoleMethods.log;
223
236
  oldMethod.apply(oldMethod, [date, consoleMessage]);
224
237
 
225
- this._sendToRemoteLogger(level, { date, message, category, ...extra });
238
+ if (this._callback) {
239
+ this._callback(level, consoleMessage);
240
+ }
241
+
242
+ if (!skipSendToRemote) {
243
+ this._sendToRemoteLogger(level, { date, message, category, ...extra });
244
+ }
226
245
  }
227
246
 
228
247
  logRequest(url , options , response , start ) {
@@ -367,7 +386,11 @@ class IssueReporter {
367
386
  },
368
387
  // $FlowFixMe
369
388
  body,
370
- }).catch(() => {
389
+ }).catch((e ) => {
390
+ // $FlowFixMe
391
+ e.skipSendToRemote = true;
392
+ this.log('error', this._makeCategory('grafana'), 'Sending log to grafana, error', e);
393
+
371
394
  setTimeout(() => {
372
395
  if (isArray) {
373
396
  payload = payload.map(message => {
@@ -761,6 +784,10 @@ class ChatMessage {
761
784
 
762
785
 
763
786
  static parseMany(plain ) {
787
+ if (!plain || !plain.items) {
788
+ return [];
789
+ }
790
+
764
791
  return plain.items.map(item => ChatMessage.parse(item));
765
792
  }
766
793
 
@@ -870,6 +897,9 @@ class Voicemail {
870
897
  }
871
898
 
872
899
  static parseMany(plain ) {
900
+ if (!plain) {
901
+ return [];
902
+ }
873
903
  const plainUnread = plain.folders.filter(folder => folder.type === 'new')[0].messages;
874
904
  const plainRead = plain.folders.filter(folder => folder.type === 'old')[0].messages;
875
905
 
@@ -979,6 +1009,9 @@ class Call {
979
1009
 
980
1010
 
981
1011
  static parseMany(plain ) {
1012
+ if (!plain) {
1013
+ return [];
1014
+ }
982
1015
  return plain.map((plainCall ) => Call.parse(plainCall));
983
1016
  }
984
1017
 
package/esm/api/chatd.js CHANGED
@@ -126,6 +126,7 @@ class IssueReporter {
126
126
 
127
127
 
128
128
 
129
+
129
130
 
130
131
  constructor() {
131
132
  addLevelsTo(this);
@@ -137,12 +138,17 @@ class IssueReporter {
137
138
  this.bufferTimeout = null;
138
139
  this._boundProcessBuffer = this._processBuffer.bind(this);
139
140
  this._boundParseLoggerBody = this._parseLoggerBody.bind(this);
141
+ this._callback = null;
140
142
  }
141
143
 
142
144
  init() {
143
145
  this._catchConsole();
144
146
  }
145
147
 
148
+ setCallback(cb ) {
149
+ this._callback = cb;
150
+ }
151
+
146
152
  configureRemoteClient(configuration = { tag: 'wazo-sdk', host: null, port: null, level: null, extra: {} }) {
147
153
  this.remoteClientConfiguration = configuration;
148
154
  }
@@ -178,6 +184,7 @@ class IssueReporter {
178
184
 
179
185
  // Handle category label
180
186
  let category = null;
187
+ let skipSendToRemote = false;
181
188
  let extra = {};
182
189
  if (args[0].indexOf(CATEGORY_PREFIX) === 0) {
183
190
  category = args[0].split('=')[1];
@@ -193,6 +200,7 @@ class IssueReporter {
193
200
  errorMessage: lastArg.message,
194
201
  errorStack: lastArg.stack,
195
202
  errorType: lastArg.constructor.name,
203
+ skipSendToRemote: lastArg.skipSendToRemote,
196
204
  };
197
205
  } else {
198
206
  extra = lastArg;
@@ -201,6 +209,11 @@ class IssueReporter {
201
209
  args.splice(1, 1);
202
210
  }
203
211
 
212
+ if (extra.skipSendToRemote) {
213
+ skipSendToRemote = true;
214
+ delete extra.skipSendToRemote;
215
+ }
216
+
204
217
  const date = moment().format('YYYY-MM-DD HH:mm:ss.SSS');
205
218
  const message = args.join(', ');
206
219
  let consoleMessage = message;
@@ -221,7 +234,13 @@ class IssueReporter {
221
234
  const oldMethod = this.oldConsoleMethods[consoleLevel] || this.oldConsoleMethods.log;
222
235
  oldMethod.apply(oldMethod, [date, consoleMessage]);
223
236
 
224
- this._sendToRemoteLogger(level, { date, message, category, ...extra });
237
+ if (this._callback) {
238
+ this._callback(level, consoleMessage);
239
+ }
240
+
241
+ if (!skipSendToRemote) {
242
+ this._sendToRemoteLogger(level, { date, message, category, ...extra });
243
+ }
225
244
  }
226
245
 
227
246
  logRequest(url , options , response , start ) {
@@ -366,7 +385,11 @@ class IssueReporter {
366
385
  },
367
386
  // $FlowFixMe
368
387
  body,
369
- }).catch(() => {
388
+ }).catch((e ) => {
389
+ // $FlowFixMe
390
+ e.skipSendToRemote = true;
391
+ this.log('error', this._makeCategory('grafana'), 'Sending log to grafana, error', e);
392
+
370
393
  setTimeout(() => {
371
394
  if (isArray) {
372
395
  payload = payload.map(message => {
@@ -1080,6 +1103,9 @@ class ChatRoom {
1080
1103
 
1081
1104
 
1082
1105
  static parseMany(plain ) {
1106
+ if (!plain || !plain.items) {
1107
+ return [];
1108
+ }
1083
1109
  return plain.items.map(item => ChatRoom.parse(item));
1084
1110
  }
1085
1111
 
@@ -1146,6 +1172,10 @@ class ChatMessage {
1146
1172
 
1147
1173
 
1148
1174
  static parseMany(plain ) {
1175
+ if (!plain || !plain.items) {
1176
+ return [];
1177
+ }
1178
+
1149
1179
  return plain.items.map(item => ChatMessage.parse(item));
1150
1180
  }
1151
1181