roku-debug 0.9.4 → 0.10.2

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 (65) hide show
  1. package/CHANGELOG.md +28 -1
  2. package/LICENSE +21 -0
  3. package/README.md +6 -6
  4. package/dist/adapters/DebugProtocolAdapter.d.ts +18 -8
  5. package/dist/adapters/DebugProtocolAdapter.js +147 -103
  6. package/dist/adapters/DebugProtocolAdapter.js.map +1 -1
  7. package/dist/adapters/TelnetAdapter.d.ts +6 -1
  8. package/dist/adapters/TelnetAdapter.js +8 -1
  9. package/dist/adapters/TelnetAdapter.js.map +1 -1
  10. package/dist/debugProtocol/Constants.d.ts +57 -52
  11. package/dist/debugProtocol/Constants.js +74 -50
  12. package/dist/debugProtocol/Constants.js.map +1 -1
  13. package/dist/debugProtocol/Debugger.d.ts +11 -7
  14. package/dist/debugProtocol/Debugger.js +160 -116
  15. package/dist/debugProtocol/Debugger.js.map +1 -1
  16. package/dist/debugProtocol/responses/ConnectIOPortResponse.d.ts +2 -2
  17. package/dist/debugProtocol/responses/ConnectIOPortResponse.js +5 -3
  18. package/dist/debugProtocol/responses/ConnectIOPortResponse.js.map +1 -1
  19. package/dist/debugProtocol/responses/ExecuteResponseV3.d.ts +23 -0
  20. package/dist/debugProtocol/responses/ExecuteResponseV3.js +54 -0
  21. package/dist/debugProtocol/responses/ExecuteResponseV3.js.map +1 -0
  22. package/dist/debugProtocol/responses/HandshakeResponse.d.ts +2 -0
  23. package/dist/debugProtocol/responses/HandshakeResponse.js +8 -0
  24. package/dist/debugProtocol/responses/HandshakeResponse.js.map +1 -1
  25. package/dist/debugProtocol/responses/HandshakeResponseV3.d.ts +14 -0
  26. package/dist/debugProtocol/responses/HandshakeResponseV3.js +47 -0
  27. package/dist/debugProtocol/responses/HandshakeResponseV3.js.map +1 -0
  28. package/dist/debugProtocol/responses/{Response.d.ts → ProtocolEvent.d.ts} +4 -2
  29. package/dist/debugProtocol/responses/{Response.js → ProtocolEvent.js} +13 -7
  30. package/dist/debugProtocol/responses/ProtocolEvent.js.map +1 -0
  31. package/dist/debugProtocol/responses/ProtocolEventV3.d.ts +11 -0
  32. package/dist/debugProtocol/responses/ProtocolEventV3.js +42 -0
  33. package/dist/debugProtocol/responses/ProtocolEventV3.js.map +1 -0
  34. package/dist/debugProtocol/responses/StackTraceResponse.d.ts +1 -1
  35. package/dist/debugProtocol/responses/StackTraceResponse.js +2 -2
  36. package/dist/debugProtocol/responses/StackTraceResponse.js.map +1 -1
  37. package/dist/debugProtocol/responses/StackTraceResponseV3.d.ts +18 -0
  38. package/dist/debugProtocol/responses/StackTraceResponseV3.js +58 -0
  39. package/dist/debugProtocol/responses/StackTraceResponseV3.js.map +1 -0
  40. package/dist/debugProtocol/responses/ThreadsResponse.d.ts +1 -1
  41. package/dist/debugProtocol/responses/ThreadsResponse.js +2 -1
  42. package/dist/debugProtocol/responses/ThreadsResponse.js.map +1 -1
  43. package/dist/debugProtocol/responses/UndefinedResponse.d.ts +2 -2
  44. package/dist/debugProtocol/responses/UndefinedResponse.js +5 -3
  45. package/dist/debugProtocol/responses/UndefinedResponse.js.map +1 -1
  46. package/dist/debugProtocol/responses/UpdateThreadsResponse.d.ts +2 -2
  47. package/dist/debugProtocol/responses/UpdateThreadsResponse.js +26 -6
  48. package/dist/debugProtocol/responses/UpdateThreadsResponse.js.map +1 -1
  49. package/dist/debugProtocol/responses/VariableResponse.d.ts +2 -2
  50. package/dist/debugProtocol/responses/VariableResponse.js +16 -8
  51. package/dist/debugProtocol/responses/VariableResponse.js.map +1 -1
  52. package/dist/debugProtocol/responses/index.d.ts +4 -1
  53. package/dist/debugProtocol/responses/index.js +4 -1
  54. package/dist/debugProtocol/responses/index.js.map +1 -1
  55. package/dist/debugSession/BrightScriptDebugSession.d.ts +8 -2
  56. package/dist/debugSession/BrightScriptDebugSession.js +89 -62
  57. package/dist/debugSession/BrightScriptDebugSession.js.map +1 -1
  58. package/dist/interfaces.d.ts +4 -0
  59. package/dist/util.d.ts +11 -7
  60. package/dist/util.js +82 -0
  61. package/dist/util.js.map +1 -1
  62. package/package.json +6 -5
  63. package/roku-debug-0.10.2.tgz +0 -0
  64. package/dist/debugProtocol/responses/Response.js.map +0 -1
  65. package/roku-debug-0.9.4.tgz +0 -0
@@ -2,17 +2,22 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Debugger = void 0;
4
4
  const Net = require("net");
5
- const EventEmitter = require("events");
5
+ const EventEmitter = require("eventemitter3");
6
6
  const semver = require("semver");
7
7
  const responses_1 = require("./responses");
8
+ const Constants_1 = require("./Constants");
8
9
  const smart_buffer_1 = require("smart-buffer");
9
10
  const logging_1 = require("../logging");
11
+ const __1 = require("..");
12
+ const ExecuteResponseV3_1 = require("./responses/ExecuteResponseV3");
10
13
  class Debugger {
11
14
  constructor(options) {
12
15
  this.logger = logging_1.logger.createLogger(`[debugProtocol/${Debugger.name}]`);
13
- this.supportedVersionRange = '=2.0.0';
16
+ // The highest tested version of the protocol we support.
17
+ this.supportedVersionRange = '<=3.0.0';
14
18
  this.handshakeComplete = false;
15
19
  this.connectedToIoPort = false;
20
+ this.watchPacketLength = false;
16
21
  this.emitter = new EventEmitter();
17
22
  this.firstRunContinueFired = false;
18
23
  this.stopped = false;
@@ -116,35 +121,36 @@ class Debugger {
116
121
  let result;
117
122
  if (this.stopped) {
118
123
  this.stopped = false;
119
- result = this.makeRequest(new smart_buffer_1.SmartBuffer({ size: 12 }), 2 /* CONTINUE */);
124
+ result = this.makeRequest(new smart_buffer_1.SmartBuffer({ size: 12 }), Constants_1.COMMANDS.CONTINUE);
120
125
  }
121
126
  return result;
122
127
  }
123
- async pause() {
124
- if (!this.stopped) {
125
- return this.makeRequest(new smart_buffer_1.SmartBuffer({ size: 12 }), 1 /* STOP */);
128
+ async pause(force = false) {
129
+ if (!this.stopped || force) {
130
+ return this.makeRequest(new smart_buffer_1.SmartBuffer({ size: 12 }), Constants_1.COMMANDS.STOP);
126
131
  }
127
132
  }
128
133
  async exitChannel() {
129
- return this.makeRequest(new smart_buffer_1.SmartBuffer({ size: 12 }), 122 /* EXIT_CHANNEL */);
134
+ return this.makeRequest(new smart_buffer_1.SmartBuffer({ size: 12 }), Constants_1.COMMANDS.EXIT_CHANNEL);
130
135
  }
131
136
  async stepIn(threadId = this.primaryThread) {
132
- return this.step(1 /* STEP_TYPE_LINE */, threadId);
137
+ return this.step(Constants_1.STEP_TYPE.STEP_TYPE_LINE, threadId);
133
138
  }
134
139
  async stepOver(threadId = this.primaryThread) {
135
- return this.step(3 /* STEP_TYPE_OVER */, threadId);
140
+ return this.step(Constants_1.STEP_TYPE.STEP_TYPE_OVER, threadId);
136
141
  }
137
142
  async stepOut(threadId = this.primaryThread) {
138
- return this.step(2 /* STEP_TYPE_OUT */, threadId);
143
+ return this.step(Constants_1.STEP_TYPE.STEP_TYPE_OUT, threadId);
139
144
  }
140
145
  async step(stepType, threadId) {
146
+ this.logger.log('[step]', { stepType: Constants_1.STEP_TYPE[stepType], threadId, stopped: this.stopped });
141
147
  let buffer = new smart_buffer_1.SmartBuffer({ size: 17 });
142
148
  buffer.writeUInt32LE(threadId); // thread_index
143
149
  buffer.writeUInt8(stepType); // step_type
144
150
  if (this.stopped) {
145
151
  this.stopped = false;
146
- let stepResult = await this.makeRequest(buffer, 6 /* STEP */);
147
- if (stepResult.errorCode === 'OK') {
152
+ let stepResult = await this.makeRequest(buffer, Constants_1.COMMANDS.STEP);
153
+ if (stepResult.errorCode === __1.ERROR_CODES.OK) {
148
154
  // this.stopped = true;
149
155
  // this.emit('suspend');
150
156
  }
@@ -156,11 +162,10 @@ class Debugger {
156
162
  }
157
163
  }
158
164
  async threads() {
159
- let result;
160
165
  if (this.stopped) {
161
- result = this.makeRequest(new smart_buffer_1.SmartBuffer({ size: 12 }), 3 /* THREADS */);
162
- if (result.errorCode === 'OK') {
163
- for (let i = 0; i < result.threadCount; i++) {
166
+ let result = await this.makeRequest(new smart_buffer_1.SmartBuffer({ size: 12 }), Constants_1.COMMANDS.THREADS);
167
+ if (result.errorCode === __1.ERROR_CODES.OK) {
168
+ for (let i = 0; i < result.threadsCount; i++) {
164
169
  let thread = result.threads[i];
165
170
  if (thread.isPrimary) {
166
171
  this.primaryThread = i;
@@ -175,7 +180,7 @@ class Debugger {
175
180
  let buffer = new smart_buffer_1.SmartBuffer({ size: 16 });
176
181
  buffer.writeUInt32LE(threadIndex); // thread_index
177
182
  if (this.stopped && threadIndex > -1) {
178
- return this.makeRequest(buffer, 4 /* STACKTRACE */);
183
+ return this.makeRequest(buffer, Constants_1.COMMANDS.STACKTRACE);
179
184
  }
180
185
  }
181
186
  async getVariables(variablePathEntries = [], getChildKeys = true, stackFrameIndex = this.stackFrameIndex, threadIndex = this.primaryThread) {
@@ -188,7 +193,17 @@ class Debugger {
188
193
  variablePathEntries.forEach(variablePathEntry => {
189
194
  buffer.writeStringNT(variablePathEntry); // variable_path_entries - optional
190
195
  });
191
- return this.makeRequest(buffer, 5 /* VARIABLES */, variablePathEntries);
196
+ return this.makeRequest(buffer, Constants_1.COMMANDS.VARIABLES, variablePathEntries);
197
+ }
198
+ }
199
+ async executeCommand(sourceCode, stackFrameIndex = this.stackFrameIndex, threadIndex = this.primaryThread) {
200
+ if (this.stopped && threadIndex > -1) {
201
+ console.log(sourceCode);
202
+ let buffer = new smart_buffer_1.SmartBuffer({ size: 8 });
203
+ buffer.writeUInt32LE(threadIndex); // thread_index
204
+ buffer.writeUInt32LE(stackFrameIndex); // stack_frame_index
205
+ buffer.writeStringNT(sourceCode); // source_code
206
+ return this.makeRequest(buffer, Constants_1.COMMANDS.EXECUTE, sourceCode);
192
207
  }
193
208
  }
194
209
  async makeRequest(buffer, command, extraData) {
@@ -202,92 +217,115 @@ class Debugger {
202
217
  extraData: extraData
203
218
  };
204
219
  return new Promise((resolve, reject) => {
205
- let disconnect = this.on('data', (data) => {
220
+ let unsubscribe = this.on('data', (data) => {
206
221
  if (data.requestId === requestId) {
207
- disconnect();
222
+ unsubscribe();
208
223
  resolve(data);
209
224
  }
210
225
  });
211
- this.controllerClient.write(buffer.toBuffer());
226
+ if (this.controllerClient) {
227
+ this.controllerClient.write(buffer.toBuffer());
228
+ }
229
+ else {
230
+ throw new Error(`Controller connection was closed - Command: ${Constants_1.COMMANDS[command]}`);
231
+ }
212
232
  });
213
233
  }
214
- parseUnhandledData(unhandledData) {
234
+ parseUnhandledData(buffer) {
235
+ if (buffer.length < 1) {
236
+ // short circuit if the buffer is empty
237
+ return false;
238
+ }
215
239
  if (this.handshakeComplete) {
216
- let debuggerRequestResponse = new responses_1.Response(unhandledData);
240
+ let debuggerRequestResponse = this.watchPacketLength ? new responses_1.ProtocolEventV3(buffer) : new responses_1.ProtocolEvent(buffer);
241
+ let packetLength = debuggerRequestResponse.packetLength;
242
+ let slicedBuffer = packetLength ? buffer.slice(4) : buffer;
243
+ this.logger.log('incoming data - ', `bytes: ${buffer.length}`, debuggerRequestResponse);
217
244
  if (debuggerRequestResponse.success) {
218
245
  if (debuggerRequestResponse.requestId > this.totalRequests) {
219
- return false;
220
- }
221
- if (debuggerRequestResponse.errorCode !== 'OK') {
222
- console.error(debuggerRequestResponse.errorCode, debuggerRequestResponse);
223
- this.removedProcessedBytes(debuggerRequestResponse, unhandledData);
246
+ this.removedProcessedBytes(debuggerRequestResponse, slicedBuffer, packetLength);
224
247
  return true;
225
248
  }
226
- let commandType = this.activeRequests[debuggerRequestResponse.requestId].commandType;
227
- if (commandType === 1 /* STOP */ || commandType === 2 /* CONTINUE */ || commandType === 6 /* STEP */ || commandType === 122 /* EXIT_CHANNEL */) {
228
- this.removedProcessedBytes(debuggerRequestResponse, unhandledData);
249
+ if (debuggerRequestResponse.errorCode !== __1.ERROR_CODES.OK) {
250
+ this.logger.error(debuggerRequestResponse.errorCode, debuggerRequestResponse);
251
+ this.removedProcessedBytes(debuggerRequestResponse, buffer, packetLength);
229
252
  return true;
230
253
  }
231
- if (commandType === 5 /* VARIABLES */) {
232
- let debuggerVariableRequestResponse = new responses_1.VariableResponse(unhandledData);
233
- if (debuggerVariableRequestResponse.success) {
234
- this.removedProcessedBytes(debuggerVariableRequestResponse, unhandledData);
235
- return true;
254
+ if (debuggerRequestResponse.updateType > 0) {
255
+ this.logger.log('Update Type:', __1.UPDATE_TYPES[debuggerRequestResponse.updateType]);
256
+ switch (debuggerRequestResponse.updateType) {
257
+ case __1.UPDATE_TYPES.IO_PORT_OPENED:
258
+ return this.connectToIoPort(new responses_1.ConnectIOPortResponse(slicedBuffer), buffer, packetLength);
259
+ case __1.UPDATE_TYPES.ALL_THREADS_STOPPED:
260
+ case __1.UPDATE_TYPES.THREAD_ATTACHED:
261
+ let debuggerUpdateThreads = new responses_1.UpdateThreadsResponse(slicedBuffer);
262
+ if (debuggerUpdateThreads.success) {
263
+ this.handleThreadsUpdate(debuggerUpdateThreads);
264
+ this.removedProcessedBytes(debuggerUpdateThreads, slicedBuffer, packetLength);
265
+ return true;
266
+ }
267
+ return false;
268
+ case __1.UPDATE_TYPES.UNDEF:
269
+ return this.checkResponse(new responses_1.UndefinedResponse(slicedBuffer), buffer, packetLength);
270
+ default:
271
+ return this.checkResponse(new responses_1.UndefinedResponse(slicedBuffer), buffer, packetLength);
236
272
  }
237
273
  }
238
- if (commandType === 4 /* STACKTRACE */) {
239
- let debuggerStacktraceRequestResponse = new responses_1.StackTraceResponse(unhandledData);
240
- if (debuggerStacktraceRequestResponse.success) {
241
- this.removedProcessedBytes(debuggerStacktraceRequestResponse, unhandledData);
242
- return true;
243
- }
244
- }
245
- if (commandType === 3 /* THREADS */) {
246
- let debuggerThreadsRequestResponse = new responses_1.ThreadsResponse(unhandledData);
247
- if (debuggerThreadsRequestResponse.success) {
248
- this.removedProcessedBytes(debuggerThreadsRequestResponse, unhandledData);
249
- return true;
274
+ else {
275
+ this.logger.log('Command Type:', Constants_1.COMMANDS[this.activeRequests[debuggerRequestResponse.requestId].commandType]);
276
+ switch (this.activeRequests[debuggerRequestResponse.requestId].commandType) {
277
+ case Constants_1.COMMANDS.STOP:
278
+ case Constants_1.COMMANDS.CONTINUE:
279
+ case Constants_1.COMMANDS.STEP:
280
+ case Constants_1.COMMANDS.EXIT_CHANNEL:
281
+ this.removedProcessedBytes(debuggerRequestResponse, buffer, packetLength);
282
+ return true;
283
+ case Constants_1.COMMANDS.EXECUTE:
284
+ return this.checkResponse(new ExecuteResponseV3_1.ExecuteResponseV3(slicedBuffer), buffer, packetLength);
285
+ case Constants_1.COMMANDS.VARIABLES:
286
+ return this.checkResponse(new responses_1.VariableResponse(slicedBuffer), buffer, packetLength);
287
+ case Constants_1.COMMANDS.STACKTRACE:
288
+ return this.checkResponse(packetLength ? new responses_1.StackTraceResponseV3(slicedBuffer) : new responses_1.StackTraceResponse(slicedBuffer), buffer, packetLength);
289
+ case Constants_1.COMMANDS.THREADS:
290
+ return this.checkResponse(new responses_1.ThreadsResponse(slicedBuffer), buffer, packetLength);
291
+ default:
292
+ return this.checkResponse(debuggerRequestResponse, buffer, packetLength);
250
293
  }
251
294
  }
252
295
  }
253
- let debuggerUpdateThreads = new responses_1.UpdateThreadsResponse(unhandledData);
254
- if (debuggerUpdateThreads.success) {
255
- this.handleThreadsUpdate(debuggerUpdateThreads);
256
- this.removedProcessedBytes(debuggerUpdateThreads, unhandledData);
257
- return true;
258
- }
259
- let debuggerUpdateUndefined = new responses_1.UndefinedResponse(unhandledData);
260
- if (debuggerUpdateUndefined.success) {
261
- this.removedProcessedBytes(debuggerUpdateUndefined, unhandledData);
262
- return true;
263
- }
264
- if (!this.connectedToIoPort) {
265
- let debuggerUpdateConnectIoPort = new responses_1.ConnectIOPortResponse(unhandledData);
266
- if (debuggerUpdateConnectIoPort.success) {
267
- this.connectToIoPort(debuggerUpdateConnectIoPort);
268
- this.removedProcessedBytes(debuggerUpdateConnectIoPort, unhandledData);
269
- return true;
270
- }
271
- }
272
296
  }
273
297
  else {
274
- let debuggerHandshake = new responses_1.HandshakeResponse(unhandledData);
298
+ let debuggerHandshake;
299
+ debuggerHandshake = new responses_1.HandshakeResponseV3(buffer);
300
+ if (!debuggerHandshake.success) {
301
+ debuggerHandshake = new responses_1.HandshakeResponse(buffer);
302
+ }
275
303
  if (debuggerHandshake.success) {
276
304
  this.handshakeComplete = true;
277
305
  this.verifyHandshake(debuggerHandshake);
278
- this.removedProcessedBytes(debuggerHandshake, unhandledData);
306
+ this.removedProcessedBytes(debuggerHandshake, buffer);
279
307
  return true;
280
308
  }
281
309
  }
282
310
  return false;
283
311
  }
284
- removedProcessedBytes(responseHandler, unhandledData) {
285
- console.log(responseHandler);
286
- if (this.activeRequests[responseHandler.requestId]) {
312
+ checkResponse(responseClass, unhandledData, packetLength = 0) {
313
+ if (responseClass.success) {
314
+ this.removedProcessedBytes(responseClass, unhandledData, packetLength);
315
+ return true;
316
+ }
317
+ else if (packetLength > 0 && unhandledData.length >= packetLength) {
318
+ this.removedProcessedBytes(responseClass, unhandledData, packetLength);
319
+ }
320
+ return false;
321
+ }
322
+ removedProcessedBytes(responseHandler, unhandledData, packetLength = 0) {
323
+ if (responseHandler.requestId > 0 && this.activeRequests[responseHandler.requestId]) {
287
324
  delete this.activeRequests[responseHandler.requestId];
288
325
  }
289
326
  this.emit('data', responseHandler);
290
- this.unhandledData = unhandledData.slice(responseHandler.readOffset);
327
+ this.unhandledData = unhandledData.slice(packetLength ? packetLength : responseHandler.readOffset);
328
+ console.log(this.unhandledData.length, responseHandler);
291
329
  this.parseUnhandledData(this.unhandledData);
292
330
  }
293
331
  verifyHandshake(debuggerHandshake) {
@@ -296,26 +334,27 @@ class Debugger {
296
334
  this.logger.log('Magic is valid.');
297
335
  this.protocolVersion = [debuggerHandshake.majorVersion, debuggerHandshake.minorVersion, debuggerHandshake.patchVersion].join('.');
298
336
  this.logger.log('Protocol Version:', this.protocolVersion);
337
+ this.watchPacketLength = debuggerHandshake.watchPacketLength;
299
338
  let handshakeVerified = true;
300
339
  if (semver.satisfies(this.protocolVersion, this.supportedVersionRange)) {
301
340
  this.logger.log('supported');
302
341
  this.emit('protocol-version', {
303
342
  message: `Protocol Version ${this.protocolVersion} is supported!`,
304
- errorCode: 1 /* SUPPORTED */
343
+ errorCode: Constants_1.PROTOCOL_ERROR_CODES.SUPPORTED
305
344
  });
306
345
  }
307
346
  else if (semver.gtr(this.protocolVersion, this.supportedVersionRange)) {
308
347
  this.logger.log('not tested');
309
348
  this.emit('protocol-version', {
310
349
  message: `Protocol Version ${this.protocolVersion} has not been tested and my not work as intended.\nPlease open any issues you have with this version to https://github.com/rokucommunity/roku-debug/issues`,
311
- errorCode: 0 /* NOT_TESTED */
350
+ errorCode: Constants_1.PROTOCOL_ERROR_CODES.NOT_TESTED
312
351
  });
313
352
  }
314
353
  else {
315
354
  this.logger.log('not supported');
316
355
  this.emit('protocol-version', {
317
- message: `Protocol Version ${this.protocolVersion} is not supported.\nIf you believe this is an error please open an issues at https://github.com/rokucommunity/roku-debug/issues`,
318
- errorCode: 2 /* NOT_SUPPORTED */
356
+ message: `Protocol Version ${this.protocolVersion} is not supported.\nIf you believe this is an error please open an issue at https://github.com/rokucommunity/roku-debug/issues`,
357
+ errorCode: Constants_1.PROTOCOL_ERROR_CODES.NOT_SUPPORTED
319
358
  });
320
359
  this.shutdown('close');
321
360
  handshakeVerified = false;
@@ -330,61 +369,66 @@ class Debugger {
330
369
  return false;
331
370
  }
332
371
  }
333
- connectToIoPort(connectIoPortResponse) {
334
- // Create a new TCP client.
335
- this.ioClient = new Net.Socket();
336
- // Send a connection request to the server.
337
- this.logger.log('Connect to IO Port: port', connectIoPortResponse.data, 'host', this.options.host);
338
- this.ioClient.connect({ port: connectIoPortResponse.data, host: this.options.host }, () => {
339
- // If there is no error, the server has accepted the request
340
- this.logger.log('TCP connection established with the IO Port.');
341
- this.connectedToIoPort = true;
342
- let lastPartialLine = '';
343
- this.ioClient.on('data', (buffer) => {
344
- let responseText = buffer.toString();
345
- if (!responseText.endsWith('\n')) {
346
- // buffer was split, save the partial line
347
- lastPartialLine += responseText;
348
- }
349
- else {
350
- if (lastPartialLine) {
351
- // there was leftover lines, join the partial lines back together
352
- responseText = lastPartialLine + responseText;
353
- lastPartialLine = '';
372
+ connectToIoPort(connectIoPortResponse, unhandledData, packetLength = 0) {
373
+ if (connectIoPortResponse.success) {
374
+ // Create a new TCP client.
375
+ this.ioClient = new Net.Socket();
376
+ // Send a connection request to the server.
377
+ this.logger.log('Connect to IO Port: port', connectIoPortResponse.data, 'host', this.options.host);
378
+ this.ioClient.connect({ port: connectIoPortResponse.data, host: this.options.host }, () => {
379
+ // If there is no error, the server has accepted the request
380
+ this.logger.log('TCP connection established with the IO Port.');
381
+ this.connectedToIoPort = true;
382
+ let lastPartialLine = '';
383
+ this.ioClient.on('data', (buffer) => {
384
+ let responseText = buffer.toString();
385
+ if (!responseText.endsWith('\n')) {
386
+ // buffer was split, save the partial line
387
+ lastPartialLine += responseText;
354
388
  }
355
- // Emit the completed io string.
356
- this.emit('io-output', responseText.trim());
357
- }
358
- });
359
- this.ioClient.on('end', () => {
360
- this.ioClient.end();
361
- this.logger.log('Requested an end to the IO connection');
362
- });
363
- // Don't forget to catch error, for your own sake.
364
- this.ioClient.once('error', (err) => {
365
- this.ioClient.end();
366
- this.logger.log(`Error: ${err}`);
389
+ else {
390
+ if (lastPartialLine) {
391
+ // there was leftover lines, join the partial lines back together
392
+ responseText = lastPartialLine + responseText;
393
+ lastPartialLine = '';
394
+ }
395
+ // Emit the completed io string.
396
+ this.emit('io-output', responseText.trim());
397
+ }
398
+ });
399
+ this.ioClient.on('end', () => {
400
+ this.ioClient.end();
401
+ this.logger.log('Requested an end to the IO connection');
402
+ });
403
+ // Don't forget to catch error, for your own sake.
404
+ this.ioClient.once('error', (err) => {
405
+ this.ioClient.end();
406
+ this.logger.log(`Error: ${err}`);
407
+ });
408
+ this.emit('connected', true);
367
409
  });
368
- this.emit('connected', true);
369
- });
410
+ this.removedProcessedBytes(connectIoPortResponse, unhandledData, packetLength);
411
+ return true;
412
+ }
413
+ return false;
370
414
  }
371
415
  async handleThreadsUpdate(update) {
372
416
  this.stopped = true;
373
417
  let stopReason = update.data.stopReason;
374
- let eventName = stopReason === 'RUNTIME_ERROR' ? 'runtime-error' : 'suspend';
375
- if (update.updateType === 'ALL_THREADS_STOPPED') {
418
+ let eventName = stopReason === Constants_1.STOP_REASONS.RUNTIME_ERROR ? 'runtime-error' : 'suspend';
419
+ if (update.updateType === __1.UPDATE_TYPES.ALL_THREADS_STOPPED) {
376
420
  if (!this.firstRunContinueFired && !this.options.stopOnEntry) {
377
421
  this.logger.log('Sending first run continue command');
378
422
  await this.continue();
379
423
  this.firstRunContinueFired = true;
380
424
  }
381
- else if (stopReason === 'RUNTIME_ERROR' || stopReason === 'BREAK' || stopReason === 'STOP_STATEMENT') {
425
+ else if (stopReason === Constants_1.STOP_REASONS.RUNTIME_ERROR || stopReason === Constants_1.STOP_REASONS.BREAK || stopReason === Constants_1.STOP_REASONS.STOP_STATEMENT) {
382
426
  this.primaryThread = update.data.primaryThreadIndex;
383
427
  this.stackFrameIndex = 0;
384
428
  this.emit(eventName, update);
385
429
  }
386
430
  }
387
- else if (stopReason === 'RUNTIME_ERROR' || stopReason === 'BREAK' || stopReason === 'STOP_STATEMENT') {
431
+ else if (stopReason === Constants_1.STOP_REASONS.RUNTIME_ERROR || stopReason === Constants_1.STOP_REASONS.BREAK || stopReason === Constants_1.STOP_REASONS.STOP_STATEMENT) {
388
432
  this.primaryThread = update.data.threadIndex;
389
433
  this.emit(eventName, update);
390
434
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Debugger.js","sourceRoot":"","sources":["../../src/debugProtocol/Debugger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Debugger.js","sourceRoot":"","sources":["../../src/debugProtocol/Debugger.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ export declare class ConnectIOPortResponse {
4
4
  success: boolean;
5
5
  readOffset: number;
6
6
  requestId: number;
7
- errorCode: string;
8
- updateType: string;
7
+ errorCode: number;
8
+ updateType: number;
9
9
  data: number;
10
10
  }
@@ -9,6 +9,8 @@ class ConnectIOPortResponse {
9
9
  this.readOffset = 0;
10
10
  // response fields
11
11
  this.requestId = -1;
12
+ this.errorCode = -1;
13
+ this.updateType = -1;
12
14
  this.data = -1;
13
15
  // The minimum size of a connect to IO port request
14
16
  if (buffer.byteLength >= 16) {
@@ -17,10 +19,10 @@ class ConnectIOPortResponse {
17
19
  this.requestId = bufferReader.readUInt32LE(); // request_id
18
20
  // Updates will always have an id of zero because we didn't ask for this information
19
21
  if (this.requestId === 0) {
20
- this.errorCode = Constants_1.ERROR_CODES[bufferReader.readUInt32LE()]; // error_code
21
- this.updateType = Constants_1.UPDATE_TYPES[bufferReader.readUInt32LE()]; // update_type
22
+ this.errorCode = bufferReader.readUInt32LE(); // error_code
23
+ this.updateType = bufferReader.readUInt32LE(); // update_type
22
24
  // Only handle IO port events in this class
23
- if (this.updateType === 'IO_PORT_OPENED') {
25
+ if (this.updateType === Constants_1.UPDATE_TYPES.IO_PORT_OPENED) {
24
26
  this.data = bufferReader.readUInt32LE(); // data
25
27
  this.readOffset = bufferReader.readOffset;
26
28
  this.success = true;
@@ -1 +1 @@
1
- {"version":3,"file":"ConnectIOPortResponse.js","sourceRoot":"","sources":["../../../src/debugProtocol/responses/ConnectIOPortResponse.ts"],"names":[],"mappings":";;;AAAA,+CAA2C;AAC3C,4CAAyD;AAEzD,MAAa,qBAAqB;IAE9B,YAAY,MAAc;QAwBnB,YAAO,GAAG,KAAK,CAAC;QAChB,eAAU,GAAG,CAAC,CAAC;QAEtB,kBAAkB;QACX,cAAS,GAAG,CAAC,CAAC,CAAC;QAGf,SAAI,GAAG,CAAC,CAAC,CAAC;QA9Bb,mDAAmD;QACnD,IAAI,MAAM,CAAC,UAAU,IAAI,EAAE,EAAE;YACzB,IAAI;gBACA,IAAI,YAAY,GAAG,0BAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAClD,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,aAAa;gBAE3D,oFAAoF;gBACpF,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,EAAE;oBACtB,IAAI,CAAC,SAAS,GAAG,uBAAW,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,aAAa;oBACxE,IAAI,CAAC,UAAU,GAAG,wBAAY,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,cAAc;oBAE3E,2CAA2C;oBAC3C,IAAI,IAAI,CAAC,UAAU,KAAK,gBAAgB,EAAE;wBACtC,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,OAAO;wBAChD,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;wBAC1C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;qBACvB;iBACJ;aACJ;YAAC,OAAO,KAAK,EAAE;gBACZ,kBAAkB;aACrB;SACJ;IACL,CAAC;CASJ;AAlCD,sDAkCC"}
1
+ {"version":3,"file":"ConnectIOPortResponse.js","sourceRoot":"","sources":["../../../src/debugProtocol/responses/ConnectIOPortResponse.ts"],"names":[],"mappings":";;;AAAA,+CAA2C;AAC3C,4CAAyD;AAEzD,MAAa,qBAAqB;IAE9B,YAAY,MAAc;QAwBnB,YAAO,GAAG,KAAK,CAAC;QAChB,eAAU,GAAG,CAAC,CAAC;QAEtB,kBAAkB;QACX,cAAS,GAAG,CAAC,CAAC,CAAC;QACf,cAAS,GAAG,CAAC,CAAC,CAAC;QACf,eAAU,GAAG,CAAC,CAAC,CAAC;QAChB,SAAI,GAAG,CAAC,CAAC,CAAC;QA9Bb,mDAAmD;QACnD,IAAI,MAAM,CAAC,UAAU,IAAI,EAAE,EAAE;YACzB,IAAI;gBACA,IAAI,YAAY,GAAG,0BAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAClD,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,aAAa;gBAE3D,oFAAoF;gBACpF,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,EAAE;oBACtB,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,aAAa;oBAC3D,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,cAAc;oBAE7D,2CAA2C;oBAC3C,IAAI,IAAI,CAAC,UAAU,KAAK,wBAAY,CAAC,cAAc,EAAE;wBACjD,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,OAAO;wBAChD,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;wBAC1C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;qBACvB;iBACJ;aACJ;YAAC,OAAO,KAAK,EAAE;gBACZ,kBAAkB;aACrB;SACJ;IACL,CAAC;CASJ;AAlCD,sDAkCC"}
@@ -0,0 +1,23 @@
1
+ /// <reference types="node" />
2
+ import { SmartBuffer } from 'smart-buffer';
3
+ export declare class ExecuteResponseV3 {
4
+ constructor(buffer: Buffer);
5
+ success: boolean;
6
+ readOffset: number;
7
+ /**
8
+ * true if code ran and completed without errors, false otherwise
9
+ */
10
+ executeSuccess: boolean;
11
+ runtimeStopCode: number;
12
+ compileErrors: ExecuteErrors;
13
+ runtimeErrors: ExecuteErrors;
14
+ otherErrors: ExecuteErrors;
15
+ requestId: number;
16
+ errorCode: number;
17
+ }
18
+ declare class ExecuteErrors {
19
+ constructor(bufferReader: SmartBuffer);
20
+ success: boolean;
21
+ messages: string[];
22
+ }
23
+ export {};
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExecuteResponseV3 = void 0;
4
+ const smart_buffer_1 = require("smart-buffer");
5
+ const util_1 = require("../../util");
6
+ class ExecuteResponseV3 {
7
+ constructor(buffer) {
8
+ this.success = false;
9
+ this.readOffset = 0;
10
+ /**
11
+ * true if code ran and completed without errors, false otherwise
12
+ */
13
+ this.executeSuccess = false;
14
+ // response fields
15
+ this.requestId = -1;
16
+ this.errorCode = -1;
17
+ // The smallest a request response can be
18
+ if (buffer.byteLength >= 12) {
19
+ try {
20
+ let bufferReader = smart_buffer_1.SmartBuffer.fromBuffer(buffer);
21
+ this.requestId = bufferReader.readUInt32LE(); // request_id
22
+ this.errorCode = bufferReader.readUInt32LE(); // error_code
23
+ this.executeSuccess = bufferReader.readUInt8() !== 0; //execute_success
24
+ this.runtimeStopCode = bufferReader.readUInt8(); //runtime_stop_code
25
+ this.compileErrors = new ExecuteErrors(bufferReader);
26
+ this.runtimeErrors = new ExecuteErrors(bufferReader);
27
+ this.otherErrors = new ExecuteErrors(bufferReader);
28
+ this.success = this.compileErrors.success && this.runtimeErrors.success && this.otherErrors.success;
29
+ this.readOffset = bufferReader.readOffset;
30
+ }
31
+ catch (error) {
32
+ // Could not parse
33
+ }
34
+ }
35
+ }
36
+ }
37
+ exports.ExecuteResponseV3 = ExecuteResponseV3;
38
+ class ExecuteErrors {
39
+ constructor(bufferReader) {
40
+ this.success = false;
41
+ this.messages = [];
42
+ if (bufferReader.length >= 4) {
43
+ const errorCount = bufferReader.readUInt32LE();
44
+ for (let i = 0; i < errorCount; i++) {
45
+ const message = util_1.util.readStringNT(bufferReader);
46
+ if (message) {
47
+ this.messages.push(message);
48
+ }
49
+ }
50
+ this.success = this.messages.length === errorCount;
51
+ }
52
+ }
53
+ }
54
+ //# sourceMappingURL=ExecuteResponseV3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExecuteResponseV3.js","sourceRoot":"","sources":["../../../src/debugProtocol/responses/ExecuteResponseV3.ts"],"names":[],"mappings":";;;AAAA,+CAA2C;AAC3C,qCAAkC;AAElC,MAAa,iBAAiB;IAC1B,YAAY,MAAc;QAqBnB,YAAO,GAAG,KAAK,CAAC;QAChB,eAAU,GAAG,CAAC,CAAC;QACtB;;WAEG;QACI,mBAAc,GAAG,KAAK,CAAC;QAO9B,kBAAkB;QACX,cAAS,GAAG,CAAC,CAAC,CAAC;QACf,cAAS,GAAG,CAAC,CAAC,CAAC;QAlClB,yCAAyC;QACzC,IAAI,MAAM,CAAC,UAAU,IAAI,EAAE,EAAE;YACzB,IAAI;gBACA,IAAI,YAAY,GAAG,0BAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAClD,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,aAAa;gBAC3D,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,aAAa;gBAC3D,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,iBAAiB;gBACvE,IAAI,CAAC,eAAe,GAAG,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,mBAAmB;gBAEpE,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,YAAY,CAAC,CAAC;gBACrD,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,YAAY,CAAC,CAAC;gBACrD,IAAI,CAAC,WAAW,GAAG,IAAI,aAAa,CAAC,YAAY,CAAC,CAAC;gBAEnD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;gBACpG,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;aAC7C;YAAC,OAAO,KAAK,EAAE;gBACZ,kBAAkB;aACrB;SACJ;IACL,CAAC;CAgBJ;AArCD,8CAqCC;AAED,MAAM,aAAa;IACf,YAAmB,YAAyB;QAarC,YAAO,GAAG,KAAK,CAAC;QAEhB,aAAQ,GAAa,EAAE,CAAC;QAd3B,IAAI,YAAY,CAAC,MAAM,IAAI,CAAC,EAAE;YAC1B,MAAM,UAAU,GAAG,YAAY,CAAC,YAAY,EAAE,CAAC;YAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;gBACjC,MAAM,OAAO,GAAG,WAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;gBAChD,IAAI,OAAO,EAAE;oBACT,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBAC/B;aACJ;YACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,UAAU,CAAC;SACtD;IACL,CAAC;CAKJ"}