roku-debug 0.20.6 → 0.20.7

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 (211) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/CompileErrorProcessor.d.ts +7 -2
  3. package/dist/CompileErrorProcessor.js +64 -69
  4. package/dist/CompileErrorProcessor.js.map +1 -1
  5. package/dist/DeviceInfo.d.ts +1 -0
  6. package/dist/adapters/DebugProtocolAdapter.d.ts +64 -17
  7. package/dist/adapters/DebugProtocolAdapter.js +264 -157
  8. package/dist/adapters/DebugProtocolAdapter.js.map +1 -1
  9. package/dist/adapters/TelnetAdapter.d.ts +8 -3
  10. package/dist/adapters/TelnetAdapter.js +14 -6
  11. package/dist/adapters/TelnetAdapter.js.map +1 -1
  12. package/dist/debugProtocol/Constants.d.ts +171 -81
  13. package/dist/debugProtocol/Constants.js +206 -126
  14. package/dist/debugProtocol/Constants.js.map +1 -1
  15. package/dist/debugProtocol/DebugProtocolClientReplaySession.d.ts +46 -0
  16. package/dist/debugProtocol/DebugProtocolClientReplaySession.js +278 -0
  17. package/dist/debugProtocol/DebugProtocolClientReplaySession.js.map +1 -0
  18. package/dist/debugProtocol/PluginInterface.d.ts +38 -0
  19. package/dist/debugProtocol/PluginInterface.js +86 -0
  20. package/dist/debugProtocol/PluginInterface.js.map +1 -0
  21. package/dist/debugProtocol/ProtocolUtil.d.ts +56 -0
  22. package/dist/debugProtocol/ProtocolUtil.js +164 -0
  23. package/dist/debugProtocol/ProtocolUtil.js.map +1 -0
  24. package/dist/debugProtocol/client/DebugProtocolClient.d.ts +310 -0
  25. package/dist/debugProtocol/client/DebugProtocolClient.js +1079 -0
  26. package/dist/debugProtocol/client/DebugProtocolClient.js.map +1 -0
  27. package/dist/debugProtocol/client/DebugProtocolClientPlugin.d.ts +44 -0
  28. package/dist/debugProtocol/client/DebugProtocolClientPlugin.js +3 -0
  29. package/dist/debugProtocol/client/DebugProtocolClientPlugin.js.map +1 -0
  30. package/dist/debugProtocol/events/ProtocolEvent.d.ts +66 -0
  31. package/dist/debugProtocol/events/ProtocolEvent.js +3 -0
  32. package/dist/debugProtocol/events/ProtocolEvent.js.map +1 -0
  33. package/dist/debugProtocol/events/requests/AddBreakpointsRequest.d.ts +30 -0
  34. package/dist/debugProtocol/events/requests/AddBreakpointsRequest.js +63 -0
  35. package/dist/debugProtocol/events/requests/AddBreakpointsRequest.js.map +1 -0
  36. package/dist/debugProtocol/events/requests/AddConditionalBreakpointsRequest.d.ts +48 -0
  37. package/dist/debugProtocol/events/requests/AddConditionalBreakpointsRequest.js +69 -0
  38. package/dist/debugProtocol/events/requests/AddConditionalBreakpointsRequest.js.map +1 -0
  39. package/dist/debugProtocol/events/requests/ContinueRequest.d.ts +20 -0
  40. package/dist/debugProtocol/events/requests/ContinueRequest.js +40 -0
  41. package/dist/debugProtocol/events/requests/ContinueRequest.js.map +1 -0
  42. package/dist/debugProtocol/events/requests/ExecuteRequest.d.ts +26 -0
  43. package/dist/debugProtocol/events/requests/ExecuteRequest.js +49 -0
  44. package/dist/debugProtocol/events/requests/ExecuteRequest.js.map +1 -0
  45. package/dist/debugProtocol/events/requests/ExitChannelRequest.d.ts +20 -0
  46. package/dist/debugProtocol/events/requests/ExitChannelRequest.js +40 -0
  47. package/dist/debugProtocol/events/requests/ExitChannelRequest.js.map +1 -0
  48. package/dist/debugProtocol/events/requests/HandshakeRequest.d.ts +26 -0
  49. package/dist/debugProtocol/events/requests/HandshakeRequest.js +47 -0
  50. package/dist/debugProtocol/events/requests/HandshakeRequest.js.map +1 -0
  51. package/dist/debugProtocol/events/requests/ListBreakpointsRequest.d.ts +20 -0
  52. package/dist/debugProtocol/events/requests/ListBreakpointsRequest.js +40 -0
  53. package/dist/debugProtocol/events/requests/ListBreakpointsRequest.js.map +1 -0
  54. package/dist/debugProtocol/events/requests/RemoveBreakpointsRequest.d.ts +29 -0
  55. package/dist/debugProtocol/events/requests/RemoveBreakpointsRequest.js +60 -0
  56. package/dist/debugProtocol/events/requests/RemoveBreakpointsRequest.js.map +1 -0
  57. package/dist/debugProtocol/events/requests/StackTraceRequest.d.ts +22 -0
  58. package/dist/debugProtocol/events/requests/StackTraceRequest.js +43 -0
  59. package/dist/debugProtocol/events/requests/StackTraceRequest.js.map +1 -0
  60. package/dist/debugProtocol/events/requests/StepRequest.d.ts +25 -0
  61. package/dist/debugProtocol/events/requests/StepRequest.js +46 -0
  62. package/dist/debugProtocol/events/requests/StepRequest.js.map +1 -0
  63. package/dist/debugProtocol/events/requests/StopRequest.d.ts +20 -0
  64. package/dist/debugProtocol/events/requests/StopRequest.js +39 -0
  65. package/dist/debugProtocol/events/requests/StopRequest.js.map +1 -0
  66. package/dist/debugProtocol/events/requests/ThreadsRequest.d.ts +20 -0
  67. package/dist/debugProtocol/events/requests/ThreadsRequest.js +40 -0
  68. package/dist/debugProtocol/events/requests/ThreadsRequest.js.map +1 -0
  69. package/dist/debugProtocol/events/requests/VariablesRequest.d.ts +59 -0
  70. package/dist/debugProtocol/events/requests/VariablesRequest.js +123 -0
  71. package/dist/debugProtocol/events/requests/VariablesRequest.js.map +1 -0
  72. package/dist/debugProtocol/events/responses/AddBreakpointsResponse.js.map +1 -0
  73. package/dist/debugProtocol/events/responses/AddConditionalBreakpointsResponse.d.ts +3 -0
  74. package/dist/debugProtocol/events/responses/AddConditionalBreakpointsResponse.js +9 -0
  75. package/dist/debugProtocol/events/responses/AddConditionalBreakpointsResponse.js.map +1 -0
  76. package/dist/debugProtocol/events/responses/ExecuteV3Response.d.ts +42 -0
  77. package/dist/debugProtocol/events/responses/ExecuteV3Response.js +94 -0
  78. package/dist/debugProtocol/events/responses/ExecuteV3Response.js.map +1 -0
  79. package/dist/debugProtocol/events/responses/GenericResponse.d.ts +17 -0
  80. package/dist/debugProtocol/events/responses/GenericResponse.js +40 -0
  81. package/dist/debugProtocol/events/responses/GenericResponse.js.map +1 -0
  82. package/dist/debugProtocol/events/responses/GenericV3Response.d.ts +15 -0
  83. package/dist/debugProtocol/events/responses/GenericV3Response.js +38 -0
  84. package/dist/debugProtocol/events/responses/GenericV3Response.js.map +1 -0
  85. package/dist/debugProtocol/events/responses/HandshakeResponse.d.ts +28 -0
  86. package/dist/debugProtocol/events/responses/HandshakeResponse.js +69 -0
  87. package/dist/debugProtocol/events/responses/HandshakeResponse.js.map +1 -0
  88. package/dist/debugProtocol/events/responses/HandshakeV3Response.d.ts +42 -0
  89. package/dist/debugProtocol/events/responses/HandshakeV3Response.js +98 -0
  90. package/dist/debugProtocol/events/responses/HandshakeV3Response.js.map +1 -0
  91. package/dist/debugProtocol/events/responses/ListBreakpointsResponse.d.ts +35 -0
  92. package/dist/debugProtocol/events/responses/ListBreakpointsResponse.js +68 -0
  93. package/dist/debugProtocol/events/responses/ListBreakpointsResponse.js.map +1 -0
  94. package/dist/debugProtocol/events/responses/RemoveBreakpointsResponse.js.map +1 -0
  95. package/dist/debugProtocol/events/responses/StackTraceResponse.d.ts +24 -0
  96. package/dist/debugProtocol/events/responses/StackTraceResponse.js +72 -0
  97. package/dist/debugProtocol/events/responses/StackTraceResponse.js.map +1 -0
  98. package/dist/debugProtocol/events/responses/StackTraceV3Response.d.ts +37 -0
  99. package/dist/debugProtocol/events/responses/StackTraceV3Response.js +67 -0
  100. package/dist/debugProtocol/events/responses/StackTraceV3Response.js.map +1 -0
  101. package/dist/debugProtocol/events/responses/ThreadsResponse.d.ts +54 -0
  102. package/dist/debugProtocol/events/responses/ThreadsResponse.js +80 -0
  103. package/dist/debugProtocol/events/responses/ThreadsResponse.js.map +1 -0
  104. package/dist/debugProtocol/events/responses/VariablesResponse.d.ts +117 -0
  105. package/dist/debugProtocol/events/responses/VariablesResponse.js +335 -0
  106. package/dist/debugProtocol/events/responses/VariablesResponse.js.map +1 -0
  107. package/dist/debugProtocol/events/updates/AllThreadsStoppedUpdate.d.ts +35 -0
  108. package/dist/debugProtocol/events/updates/AllThreadsStoppedUpdate.js +58 -0
  109. package/dist/debugProtocol/events/updates/AllThreadsStoppedUpdate.js.map +1 -0
  110. package/dist/debugProtocol/events/updates/BreakpointErrorUpdate.d.ts +42 -0
  111. package/dist/debugProtocol/events/updates/BreakpointErrorUpdate.js +97 -0
  112. package/dist/debugProtocol/events/updates/BreakpointErrorUpdate.js.map +1 -0
  113. package/dist/debugProtocol/events/updates/BreakpointVerifiedUpdate.d.ts +41 -0
  114. package/dist/debugProtocol/events/updates/BreakpointVerifiedUpdate.js +74 -0
  115. package/dist/debugProtocol/events/updates/BreakpointVerifiedUpdate.js.map +1 -0
  116. package/dist/debugProtocol/events/updates/CompileErrorUpdate.d.ts +60 -0
  117. package/dist/debugProtocol/events/updates/CompileErrorUpdate.js +89 -0
  118. package/dist/debugProtocol/events/updates/CompileErrorUpdate.js.map +1 -0
  119. package/dist/debugProtocol/events/updates/IOPortOpenedUpdate.d.ts +23 -0
  120. package/dist/debugProtocol/events/updates/IOPortOpenedUpdate.js +49 -0
  121. package/dist/debugProtocol/events/updates/IOPortOpenedUpdate.js.map +1 -0
  122. package/dist/debugProtocol/events/updates/ThreadAttachedUpdate.d.ts +26 -0
  123. package/dist/debugProtocol/events/updates/ThreadAttachedUpdate.js +50 -0
  124. package/dist/debugProtocol/events/updates/ThreadAttachedUpdate.js.map +1 -0
  125. package/dist/debugProtocol/server/DebugProtocolServer.d.ts +110 -0
  126. package/dist/debugProtocol/server/DebugProtocolServer.js +306 -0
  127. package/dist/debugProtocol/server/DebugProtocolServer.js.map +1 -0
  128. package/dist/debugProtocol/server/DebugProtocolServerPlugin.d.ts +41 -0
  129. package/dist/debugProtocol/server/DebugProtocolServerPlugin.js +3 -0
  130. package/dist/debugProtocol/server/DebugProtocolServerPlugin.js.map +1 -0
  131. package/dist/debugSession/BrightScriptDebugSession.d.ts +9 -1
  132. package/dist/debugSession/BrightScriptDebugSession.js +178 -89
  133. package/dist/debugSession/BrightScriptDebugSession.js.map +1 -1
  134. package/dist/index.d.ts +2 -3
  135. package/dist/index.js +2 -3
  136. package/dist/index.js.map +1 -1
  137. package/dist/logging.d.ts +1 -0
  138. package/dist/logging.js +4 -2
  139. package/dist/logging.js.map +1 -1
  140. package/dist/managers/ActionQueue.d.ts +7 -1
  141. package/dist/managers/ActionQueue.js +27 -5
  142. package/dist/managers/ActionQueue.js.map +1 -1
  143. package/dist/managers/BreakpointManager.d.ts +82 -27
  144. package/dist/managers/BreakpointManager.js +168 -63
  145. package/dist/managers/BreakpointManager.js.map +1 -1
  146. package/dist/managers/ProjectManager.d.ts +3 -0
  147. package/dist/managers/ProjectManager.js +42 -36
  148. package/dist/managers/ProjectManager.js.map +1 -1
  149. package/dist/util.d.ts +8 -6
  150. package/dist/util.js +36 -19
  151. package/dist/util.js.map +1 -1
  152. package/package.json +14 -5
  153. package/roku-debug-0.20.7.tgz +0 -0
  154. package/dist/debugProtocol/Debugger.d.ts +0 -161
  155. package/dist/debugProtocol/Debugger.js +0 -635
  156. package/dist/debugProtocol/Debugger.js.map +0 -1
  157. package/dist/debugProtocol/responses/AddBreakpointsResponse.js.map +0 -1
  158. package/dist/debugProtocol/responses/BreakpointErrorUpdateResponse.d.ts +0 -32
  159. package/dist/debugProtocol/responses/BreakpointErrorUpdateResponse.js +0 -67
  160. package/dist/debugProtocol/responses/BreakpointErrorUpdateResponse.js.map +0 -1
  161. package/dist/debugProtocol/responses/BreakpointVerifiedUpdateResponse.d.ts +0 -32
  162. package/dist/debugProtocol/responses/BreakpointVerifiedUpdateResponse.js +0 -56
  163. package/dist/debugProtocol/responses/BreakpointVerifiedUpdateResponse.js.map +0 -1
  164. package/dist/debugProtocol/responses/ConnectIOPortResponse.d.ts +0 -10
  165. package/dist/debugProtocol/responses/ConnectIOPortResponse.js +0 -39
  166. package/dist/debugProtocol/responses/ConnectIOPortResponse.js.map +0 -1
  167. package/dist/debugProtocol/responses/ExecuteResponseV3.d.ts +0 -23
  168. package/dist/debugProtocol/responses/ExecuteResponseV3.js +0 -54
  169. package/dist/debugProtocol/responses/ExecuteResponseV3.js.map +0 -1
  170. package/dist/debugProtocol/responses/HandshakeResponse.d.ts +0 -12
  171. package/dist/debugProtocol/responses/HandshakeResponse.js +0 -39
  172. package/dist/debugProtocol/responses/HandshakeResponse.js.map +0 -1
  173. package/dist/debugProtocol/responses/HandshakeResponseV3.d.ts +0 -14
  174. package/dist/debugProtocol/responses/HandshakeResponseV3.js +0 -47
  175. package/dist/debugProtocol/responses/HandshakeResponseV3.js.map +0 -1
  176. package/dist/debugProtocol/responses/ListBreakpointsResponse.d.ts +0 -25
  177. package/dist/debugProtocol/responses/ListBreakpointsResponse.js +0 -65
  178. package/dist/debugProtocol/responses/ListBreakpointsResponse.js.map +0 -1
  179. package/dist/debugProtocol/responses/ProtocolEvent.d.ts +0 -11
  180. package/dist/debugProtocol/responses/ProtocolEvent.js +0 -38
  181. package/dist/debugProtocol/responses/ProtocolEvent.js.map +0 -1
  182. package/dist/debugProtocol/responses/ProtocolEventV3.d.ts +0 -11
  183. package/dist/debugProtocol/responses/ProtocolEventV3.js +0 -42
  184. package/dist/debugProtocol/responses/ProtocolEventV3.js.map +0 -1
  185. package/dist/debugProtocol/responses/RemoveBreakpointsResponse.js.map +0 -1
  186. package/dist/debugProtocol/responses/StackTraceResponse.d.ts +0 -18
  187. package/dist/debugProtocol/responses/StackTraceResponse.js +0 -58
  188. package/dist/debugProtocol/responses/StackTraceResponse.js.map +0 -1
  189. package/dist/debugProtocol/responses/StackTraceResponseV3.d.ts +0 -18
  190. package/dist/debugProtocol/responses/StackTraceResponseV3.js +0 -58
  191. package/dist/debugProtocol/responses/StackTraceResponseV3.js.map +0 -1
  192. package/dist/debugProtocol/responses/ThreadsResponse.d.ts +0 -22
  193. package/dist/debugProtocol/responses/ThreadsResponse.js +0 -63
  194. package/dist/debugProtocol/responses/ThreadsResponse.js.map +0 -1
  195. package/dist/debugProtocol/responses/UndefinedResponse.d.ts +0 -10
  196. package/dist/debugProtocol/responses/UndefinedResponse.js +0 -39
  197. package/dist/debugProtocol/responses/UndefinedResponse.js.map +0 -1
  198. package/dist/debugProtocol/responses/UpdateThreadsResponse.d.ts +0 -25
  199. package/dist/debugProtocol/responses/UpdateThreadsResponse.js +0 -91
  200. package/dist/debugProtocol/responses/UpdateThreadsResponse.js.map +0 -1
  201. package/dist/debugProtocol/responses/VariableResponse.d.ts +0 -27
  202. package/dist/debugProtocol/responses/VariableResponse.js +0 -141
  203. package/dist/debugProtocol/responses/VariableResponse.js.map +0 -1
  204. package/dist/debugProtocol/responses/index.d.ts +0 -11
  205. package/dist/debugProtocol/responses/index.js +0 -24
  206. package/dist/debugProtocol/responses/index.js.map +0 -1
  207. package/roku-debug-0.20.6.tgz +0 -0
  208. /package/dist/debugProtocol/{responses → events/responses}/AddBreakpointsResponse.d.ts +0 -0
  209. /package/dist/debugProtocol/{responses → events/responses}/AddBreakpointsResponse.js +0 -0
  210. /package/dist/debugProtocol/{responses → events/responses}/RemoveBreakpointsResponse.d.ts +0 -0
  211. /package/dist/debugProtocol/{responses → events/responses}/RemoveBreakpointsResponse.js +0 -0
@@ -0,0 +1,310 @@
1
+ /// <reference types="node" />
2
+ import { PROTOCOL_ERROR_CODES, Command } from '../Constants';
3
+ import { ExecuteV3Response } from '../events/responses/ExecuteV3Response';
4
+ import { ListBreakpointsResponse } from '../events/responses/ListBreakpointsResponse';
5
+ import { AddBreakpointsResponse } from '../events/responses/AddBreakpointsResponse';
6
+ import { ThreadsRequest } from '../events/requests/ThreadsRequest';
7
+ import type { ProtocolRequest, ProtocolResponse, ProtocolUpdate } from '../events/ProtocolEvent';
8
+ import { HandshakeResponse } from '../events/responses/HandshakeResponse';
9
+ import { HandshakeV3Response } from '../events/responses/HandshakeV3Response';
10
+ import { GenericV3Response } from '../events/responses/GenericV3Response';
11
+ import { AllThreadsStoppedUpdate } from '../events/updates/AllThreadsStoppedUpdate';
12
+ import { CompileErrorUpdate } from '../events/updates/CompileErrorUpdate';
13
+ import { GenericResponse } from '../events/responses/GenericResponse';
14
+ import type { StackTraceResponse } from '../events/responses/StackTraceResponse';
15
+ import { ThreadsResponse } from '../events/responses/ThreadsResponse';
16
+ import { VariablesResponse } from '../events/responses/VariablesResponse';
17
+ import { ThreadAttachedUpdate } from '../events/updates/ThreadAttachedUpdate';
18
+ import { StackTraceV3Response } from '../events/responses/StackTraceV3Response';
19
+ import type { DebugProtocolClientPlugin } from './DebugProtocolClientPlugin';
20
+ import PluginInterface from '../PluginInterface';
21
+ import type { VerifiedBreakpoint } from '../events/updates/BreakpointVerifiedUpdate';
22
+ export declare class DebugProtocolClient {
23
+ logger: import("@rokucommunity/logger/dist/Logger").Logger;
24
+ supportedVersionRange: string;
25
+ constructor(options?: ConstructorOptions);
26
+ private addCorePlugin;
27
+ static DEBUGGER_MAGIC: string;
28
+ scriptTitle: string;
29
+ isHandshakeComplete: boolean;
30
+ connectedToIoPort: boolean;
31
+ /**
32
+ * Debug protocol version 3.0.0 introduced a packet_length to all responses. Prior to that, most responses had no packet length at all.
33
+ * This field indicates whether we should be looking for packet_length or not in the responses we get from the device
34
+ */
35
+ watchPacketLength: boolean;
36
+ protocolVersion: string;
37
+ primaryThread: number;
38
+ stackFrameIndex: number;
39
+ /**
40
+ * A collection of plugins that can interact with the client at lifecycle points
41
+ */
42
+ plugins: PluginInterface<DebugProtocolClientPlugin>;
43
+ private emitter;
44
+ /**
45
+ * The primary socket for this session. It's used to communicate with the debugger by sending commands and receives responses or updates
46
+ */
47
+ private controlSocket;
48
+ /**
49
+ * Promise that is resolved when the control socket is closed
50
+ */
51
+ private controlSocketClosed;
52
+ /**
53
+ * A socket where the debug server will send stdio
54
+ */
55
+ private ioSocket;
56
+ /**
57
+ * Resolves when the ioSocket has closed
58
+ */
59
+ private ioSocketClosed;
60
+ /**
61
+ * The buffer where all unhandled data will be stored until successfully consumed
62
+ */
63
+ private buffer;
64
+ /**
65
+ * Is the debugger currently stopped at a line of code in the program
66
+ */
67
+ isStopped: boolean;
68
+ private requestIdSequence;
69
+ private activeRequests;
70
+ private options;
71
+ /**
72
+ * Prior to protocol v3.1.0, the Roku device would regularly set the wrong thread as "active",
73
+ * so this flag lets us know if we should use our better-than-nothing workaround
74
+ */
75
+ private get enableThreadHoppingWorkaround();
76
+ /**
77
+ * Starting in protocol v3.1.0, component libary breakpoints must be added in the format `lib:/<library_name>/<filepath>`, but prior they didn't require this.
78
+ * So this flag tells us which format to support
79
+ */
80
+ private get enableComponentLibrarySpecificBreakpoints();
81
+ /**
82
+ * Starting in protocol v3.1.0, breakpoints can support conditional expressions. This flag indicates whether the current sessuion supports that functionality.
83
+ */
84
+ private get supportsConditionalBreakpoints();
85
+ get supportsBreakpointRegistrationWhileRunning(): boolean;
86
+ get supportsBreakpointVerification(): boolean;
87
+ /**
88
+ * Get a promise that resolves after an event occurs exactly once
89
+ */
90
+ once(eventName: 'app-exit' | 'cannot-continue' | 'close' | 'start'): Promise<void>;
91
+ once(eventName: 'breakpoints-verified'): Promise<BreakpointsVerifiedEvent>;
92
+ once<T = AllThreadsStoppedUpdate | ThreadAttachedUpdate>(eventName: 'runtime-error' | 'suspend'): Promise<T>;
93
+ once(eventName: 'io-output'): Promise<string>;
94
+ once(eventName: 'data'): Promise<Buffer>;
95
+ once(eventName: 'response'): Promise<ProtocolResponse>;
96
+ once(eventName: 'update'): Promise<ProtocolUpdate>;
97
+ once(eventName: 'protocol-version'): Promise<ProtocolVersionDetails>;
98
+ once(eventName: 'handshake-verified'): Promise<HandshakeResponse>;
99
+ on(eventName: 'compile-error', handler: (event: CompileErrorUpdate) => void): any;
100
+ on(eventName: 'app-exit' | 'cannot-continue' | 'close' | 'start', handler: () => void): any;
101
+ on(eventName: 'breakpoints-verified', handler: (event: BreakpointsVerifiedEvent) => void): any;
102
+ on(eventName: 'response', handler: (response: ProtocolResponse) => void): any;
103
+ on(eventName: 'update', handler: (update: ProtocolUpdate) => void): any;
104
+ /**
105
+ * The raw data from the server socket. You probably don't need this...
106
+ */
107
+ on(eventName: 'data', handler: (data: Buffer) => void): any;
108
+ on<T = AllThreadsStoppedUpdate | ThreadAttachedUpdate>(eventName: 'runtime-error' | 'suspend', handler: (data: T) => void): any;
109
+ on(eventName: 'io-output', handler: (output: string) => void): any;
110
+ on(eventName: 'protocol-version', handler: (data: ProtocolVersionDetails) => void): any;
111
+ on(eventName: 'handshake-verified', handler: (data: HandshakeResponse) => void): any;
112
+ private emit;
113
+ /**
114
+ * A function that can be used to cancel the repeating interval that's running to try and establish a connection to the control socket.
115
+ */
116
+ private cancelControlConnectInterval;
117
+ /**
118
+ * A collection of sockets created when trying to connect to the debug protocol's control socket. We keep these around for quicker tear-down
119
+ * whenever there is an early-terminated debug session
120
+ */
121
+ private pendingControlConnectionSockets;
122
+ private establishControlConnection;
123
+ /**
124
+ * A queue for processing the incoming buffer, every transmission at a time
125
+ */
126
+ private bufferQueue;
127
+ /**
128
+ * Connect to the debug server.
129
+ * @param sendHandshake should the handshake be sent as part of this connect process. If false, `.sendHandshake()` will need to be called before a session can begin
130
+ */
131
+ connect(sendHandshake?: boolean): Promise<boolean>;
132
+ /**
133
+ * Send the initial handshake request, and wait for the handshake response
134
+ */
135
+ sendHandshake(): Promise<HandshakeResponse | HandshakeV3Response>;
136
+ private processHandshakeRequest;
137
+ /**
138
+ * Write a specific buffer log entry to the logger, which, when file logging is enabled
139
+ * can be extracted and processed through the DebugProtocolClientReplaySession
140
+ */
141
+ private writeToBufferLog;
142
+ continue(): Promise<GenericResponse>;
143
+ private processContinueRequest;
144
+ pause(): Promise<GenericResponse>;
145
+ private processStopRequest;
146
+ /**
147
+ * Send the "exit channel" command, which will tell the debug session to immediately quit
148
+ */
149
+ exitChannel(): Promise<GenericResponse>;
150
+ stepIn(threadIndex?: number): Promise<GenericResponse>;
151
+ stepOver(threadIndex?: number): Promise<GenericResponse>;
152
+ stepOut(threadIndex?: number): Promise<GenericResponse>;
153
+ private step;
154
+ private processStepRequest;
155
+ threads(): Promise<ThreadsResponse>;
156
+ processThreadsRequest(request: ThreadsRequest): Promise<ThreadsResponse>;
157
+ /**
158
+ * Get the stackTrace from the device IF currently stopped
159
+ */
160
+ getStackTrace(threadIndex?: number): Promise<StackTraceResponse>;
161
+ private processStackTraceRequest;
162
+ /**
163
+ * @param variablePathEntries One or more path entries to the variable to be inspected. E.g., m.top.myObj["someKey"] can be accessed with ["m","top","myobj","\"someKey\""].
164
+ *
165
+ * If no path is specified, the variables accessible from the specified stack frame are returned.
166
+ *
167
+ * Starting in protocol v3.1.0, The keys for indexed gets (i.e. obj["key"]) should be wrapped in quotes so they can be handled in a case-sensitive fashion (if applicable on device).
168
+ * All non-quoted keys (i.e. strings without leading and trailing quotes inside them) will be treated as case-insensitive).
169
+ * @param getChildKeys If set, VARIABLES response include the child keys for container types like lists and associative arrays
170
+ * @param stackFrameIndex 0 = first function called, nframes-1 = last function. This indexing does not match the order of the frames returned from the STACKTRACE command
171
+ * @param threadIndex the index (or perhaps ID?) of the thread to get variables for
172
+ */
173
+ getVariables(variablePathEntries?: Array<string>, stackFrameIndex?: number, threadIndex?: number): Promise<VariablesResponse>;
174
+ private processVariablesRequest;
175
+ executeCommand(sourceCode: string, stackFrameIndex?: number, threadIndex?: number): Promise<ExecuteV3Response>;
176
+ private processExecuteRequest;
177
+ addBreakpoints(breakpoints: Array<BreakpointSpec & {
178
+ componentLibraryName?: string;
179
+ }>): Promise<AddBreakpointsResponse>;
180
+ listBreakpoints(): Promise<ListBreakpointsResponse>;
181
+ /**
182
+ * Remove breakpoints having the specified IDs
183
+ */
184
+ removeBreakpoints(breakpointIds: number[]): Promise<ListBreakpointsResponse>;
185
+ private processRemoveBreakpointsRequest;
186
+ /**
187
+ * Given a request, process it in the proper fashion. This is mostly used for external mocking/testing of
188
+ * this client, but it should force the client to flow in the same fashion as a live debug session
189
+ */
190
+ processRequest<TResponse extends ProtocolResponse>(request: ProtocolRequest): Promise<TResponse>;
191
+ /**
192
+ * Send a request to the roku device, and get a promise that resolves once we have received the response
193
+ */
194
+ private sendRequest;
195
+ /**
196
+ * Sometimes a request arrives that we don't understand. If that's the case, this function can be used
197
+ * to discard that entire response by discarding `packet_length` number of bytes
198
+ */
199
+ private discardNextResponseOrUpdate;
200
+ /**
201
+ * A counter to help give a unique id to each update (mostly just for logging purposes)
202
+ */
203
+ private updateSequence;
204
+ private logEvent;
205
+ private process;
206
+ /**
207
+ * Given a buffer, try to parse into a specific ProtocolResponse or ProtocolUpdate
208
+ */
209
+ getResponseOrUpdate(buffer: Buffer): Promise<ProtocolResponse | ProtocolUpdate>;
210
+ static getResponse(buffer: Buffer, command: Command): ExecuteV3Response | ListBreakpointsResponse | GenericV3Response | StackTraceV3Response | ThreadsResponse | VariablesResponse;
211
+ getUpdate(buffer: Buffer): ProtocolUpdate;
212
+ private handleUpdateQueue;
213
+ /**
214
+ * Handle/process any received updates from the debug protocol
215
+ */
216
+ private handleUpdate;
217
+ /**
218
+ * Verify all the handshake data
219
+ */
220
+ private verifyHandshake;
221
+ /**
222
+ * When the debugger emits the IOPortOpenedUpdate, we need to immediately connect to the IO port to start receiving that data
223
+ */
224
+ private connectToIoPort;
225
+ /**
226
+ * Destroy this instance, shutting down any sockets or other long-running items and cleaning up.
227
+ * @param immediate if true, all sockets are immediately closed and do not gracefully shut down
228
+ */
229
+ destroy(immediate?: boolean): Promise<void>;
230
+ private shutdown;
231
+ private isDestroyingControlSocket;
232
+ private destroyControlSocket;
233
+ private isDestroyingIOSocket;
234
+ /**
235
+ * @param immediate if true, force close immediately instead of waiting for it to settle
236
+ */
237
+ private destroyIOSocket;
238
+ }
239
+ export interface ProtocolVersionDetails {
240
+ message: string;
241
+ errorCode: PROTOCOL_ERROR_CODES;
242
+ }
243
+ export interface BreakpointSpec {
244
+ /**
245
+ * The path of the source file where the breakpoint is to be inserted.
246
+ */
247
+ filePath: string;
248
+ /**
249
+ * The (1-based) line number in the channel application code where the breakpoint is to be executed.
250
+ */
251
+ lineNumber: number;
252
+ /**
253
+ * The number of times to ignore the breakpoint condition before executing the breakpoint. This number is decremented each time the channel application reaches the breakpoint.
254
+ */
255
+ hitCount?: number;
256
+ /**
257
+ * BrightScript code that evaluates to a boolean value. The expression is compiled and executed in
258
+ * the context where the breakpoint is located. If specified, the hitCount is only be
259
+ * updated if this evaluates to true.
260
+ * @avaiable since protocol version 3.1.0
261
+ */
262
+ conditionalExpression?: string;
263
+ }
264
+ export interface ConstructorOptions {
265
+ /**
266
+ * The host/ip address of the Roku
267
+ */
268
+ host: string;
269
+ /**
270
+ * The port number used to send all debugger commands. This is static/unchanging for Roku devices,
271
+ * but is configurable here to support unit testing or alternate runtimes (i.e. https://www.npmjs.com/package/brs)
272
+ */
273
+ controlPort?: number;
274
+ /**
275
+ * The interval (in milliseconds) for how frequently the `connect`
276
+ * call should retry connecting to the control port. At the start of a debug session,
277
+ * the protocol debugger will start trying to connect the moment the channel is sideloaded,
278
+ * and keep trying until a successful connection is established or the debug session is terminated
279
+ * @default 250
280
+ */
281
+ controlConnectInterval?: number;
282
+ /**
283
+ * The maximum time (in milliseconds) the debugger will keep retrying connections.
284
+ * This is here to prevent infinitely pinging the Roku device.
285
+ */
286
+ controlConnectMaxTime?: number;
287
+ /**
288
+ * The number of milliseconds that the client should wait during a shutdown request before forcefully terminating the sockets
289
+ */
290
+ shutdownTimeout?: number;
291
+ /**
292
+ * The max time the client will wait for the `exit channel` response before forcefully terminating the sockets
293
+ */
294
+ exitChannelTimeout?: number;
295
+ }
296
+ /**
297
+ * Is the event a ProtocolRequest
298
+ */
299
+ export declare function isProtocolRequest(event: ProtocolRequest | ProtocolResponse | ProtocolUpdate): event is ProtocolRequest;
300
+ /**
301
+ * Is the event a ProtocolResponse
302
+ */
303
+ export declare function isProtocolResponse(event: ProtocolRequest | ProtocolResponse | ProtocolUpdate): event is ProtocolResponse;
304
+ /**
305
+ * Is the event a ProtocolUpdate update
306
+ */
307
+ export declare function isProtocolUpdate(event: ProtocolRequest | ProtocolResponse | ProtocolUpdate): event is ProtocolUpdate;
308
+ export interface BreakpointsVerifiedEvent {
309
+ breakpoints: VerifiedBreakpoint[];
310
+ }