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
@@ -20,17 +20,25 @@ class BreakpointManager {
20
20
  * (this concept may need to be modified once we get live breakpoint support)
21
21
  */
22
22
  this.breakpointsByFilePath = new Map();
23
+ /**
24
+ * A list of breakpoints that failed to delete and will be deleted as soon as possible
25
+ */
26
+ this.failedDeletions = [];
23
27
  /**
24
28
  * A sequence used to generate unique client breakpoint IDs
25
29
  */
26
30
  this.breakpointIdSequence = 1;
27
- this.verifiedBreakpointKeys = [];
28
- this.isVerifyEventQueued = false;
31
+ this.deviceIdByDestHash = new Map();
32
+ this.queueEventStates = new Map();
29
33
  /**
30
34
  * The list of breakpoints that were permanently written to a file at the start of a debug session. Used for line offset calculations.
31
35
  */
32
36
  this.permanentBreakpointsBySrcPath = new Map();
33
37
  this.bpIndex = 1;
38
+ /**
39
+ * A map of breakpoint hashes, and whether that breakpoint is currently pending or not.
40
+ */
41
+ this.breakpointPendingStatus = new Map();
34
42
  /**
35
43
  * Flag indicating whether a `getDiff` function is currently running
36
44
  */
@@ -46,6 +54,14 @@ class BreakpointManager {
46
54
  this.emitter.off(eventName, handler);
47
55
  };
48
56
  }
57
+ once(eventName) {
58
+ return new Promise((resolve) => {
59
+ const disconnect = this.on(eventName, (data) => {
60
+ disconnect();
61
+ resolve(data);
62
+ });
63
+ });
64
+ }
49
65
  /**
50
66
  * breakpoint lines are 1-based, and columns are zero-based
51
67
  */
@@ -80,14 +96,14 @@ class BreakpointManager {
80
96
  ...breakpoint,
81
97
  srcPath: srcPath,
82
98
  //assign a hash-like key to this breakpoint (so we can match against other similar breakpoints in the future)
83
- hash: this.getBreakpointKey(srcPath, breakpoint)
99
+ srcHash: this.getBreakpointSrcHash(srcPath, breakpoint)
84
100
  });
85
101
  //generate a new id for this breakpoint if one does not exist
86
102
  (_b = bp.id) !== null && _b !== void 0 ? _b : (bp.id = this.breakpointIdSequence++);
87
103
  //all breakpoints default to false if not already set to true
88
104
  (_c = bp.verified) !== null && _c !== void 0 ? _c : (bp.verified = false);
89
105
  //if the breakpoint hash changed, mark the breakpoint as unverified
90
- if ((existingBreakpoint === null || existingBreakpoint === void 0 ? void 0 : existingBreakpoint.hash) !== bp.hash) {
106
+ if ((existingBreakpoint === null || existingBreakpoint === void 0 ? void 0 : existingBreakpoint.srcHash) !== bp.srcHash) {
91
107
  bp.verified = false;
92
108
  }
93
109
  //if this is a new breakpoint, add it to the list. (otherwise, the existing breakpoint is edited in-place)
@@ -95,64 +111,88 @@ class BreakpointManager {
95
111
  breakpointsArray.push(bp);
96
112
  }
97
113
  //if this is one of the permanent breakpoints, mark it as verified immediately (only applicable to telnet sessions)
98
- if (this.getPermanentBreakpoint(bp.hash)) {
99
- this.setBreakpointDeviceId(bp.hash, bp.id);
114
+ if (this.getPermanentBreakpoint(bp.srcHash)) {
115
+ this.setBreakpointDeviceId(bp.srcHash, bp.srcHash, bp.id);
100
116
  this.verifyBreakpoint(bp.id, true);
101
117
  }
102
118
  return bp;
103
119
  }
120
+ deleteBreakpoint(...args) {
121
+ this.deleteBreakpoints([
122
+ this.getBreakpoint(...args)
123
+ ]);
124
+ }
104
125
  /**
105
- * Find a breakpoint by its hash
106
- * @returns the breakpoint, or undefined if not found
126
+ * Delete a set of breakpoints
107
127
  */
108
- getBreakpointByHash(hash) {
109
- return this.getBreakpointsByHashes([hash])[0];
128
+ deleteBreakpoints(args) {
129
+ for (const breakpoint of this.getBreakpoints(args)) {
130
+ const actualBreakpoint = this.getBreakpoint(breakpoint);
131
+ if (actualBreakpoint) {
132
+ const breakpoints = new Set(this.getBreakpointsForFile(actualBreakpoint.srcPath));
133
+ breakpoints.delete(actualBreakpoint);
134
+ this.replaceBreakpoints(actualBreakpoint.srcPath, [...breakpoints]);
135
+ }
136
+ }
137
+ }
138
+ getBreakpoint(...args) {
139
+ let ref;
140
+ if (typeof args[0] === 'string' && typeof args[1] === 'object') {
141
+ ref = this.getBreakpointSrcHash(args[0], args[1]);
142
+ }
143
+ else {
144
+ ref = args[0];
145
+ }
146
+ return this.getBreakpoints([ref])[0];
110
147
  }
111
148
  /**
112
- * Find a list of breakpoints by their hashes
113
- * @returns the breakpoint, or undefined if not found
149
+ * Given a breakpoint ref, turn it into a hash
114
150
  */
115
- getBreakpointsByHashes(hashes) {
116
- const result = [];
117
- for (const [, breakpoints] of this.breakpointsByFilePath) {
118
- for (const breakpoint of breakpoints) {
119
- if (hashes.includes(breakpoint.hash)) {
120
- result.push(breakpoint);
121
- }
122
- }
151
+ refToHash(ref) {
152
+ if (!ref) {
153
+ return;
154
+ }
155
+ //hash
156
+ if (typeof ref === 'string') {
157
+ return ref;
158
+ }
159
+ //object with a .hash key
160
+ if ('srcHash' in ref) {
161
+ return ref.srcHash;
162
+ }
163
+ //breakpoint with srcPath
164
+ if (ref === null || ref === void 0 ? void 0 : ref.srcPath) {
165
+ return this.getBreakpointSrcHash(ref.srcPath, ref);
123
166
  }
124
- return result;
167
+ }
168
+ /**
169
+ * Get breakpoints by providing a list of breakpoint refs
170
+ * @param refs a list of breakpoint refs for breakpoints to get
171
+ * @param includeHistoric if true, will also look through historic breakpoints for a match.
172
+ */
173
+ getBreakpoints(refs) {
174
+ //convert all refs into a hash
175
+ const refHashes = new Set(refs.map(x => this.refToHash(x)));
176
+ //find all the breakpoints that match one of the specified refs
177
+ return [...this.breakpointsByFilePath].map(x => x[1]).flat().filter((x) => {
178
+ return refHashes.has(x.srcHash);
179
+ });
125
180
  }
126
181
  /**
127
182
  * Find a breakpoint by its deviceId
128
183
  * @returns the breakpoint, or undefined if not found
129
184
  */
130
185
  getBreakpointByDeviceId(deviceId) {
131
- return this.getBreakpointsByDeviceIds([deviceId])[0];
132
- }
133
- /**
134
- * Find a list of breakpoints by their deviceIds
135
- * @returns the breakpoints, or undefined if not found
136
- */
137
- getBreakpointsByDeviceIds(deviceIds) {
138
- const result = [];
139
- for (const [, breakpoints] of this.breakpointsByFilePath) {
140
- for (const breakpoint of breakpoints) {
141
- if (deviceIds.includes(breakpoint.deviceId)) {
142
- result.push(breakpoint);
143
- }
144
- }
145
- }
146
- return result;
186
+ const bpRef = [...this.deviceIdByDestHash.values()].find(x => {
187
+ return x.deviceId === deviceId;
188
+ });
189
+ return this.getBreakpoint(bpRef === null || bpRef === void 0 ? void 0 : bpRef.srcHash);
147
190
  }
148
191
  /**
149
192
  * Set the deviceId of a breakpoint
150
193
  */
151
- setBreakpointDeviceId(hash, deviceId) {
152
- const breakpoint = this.getBreakpointByHash(hash);
153
- if (breakpoint) {
154
- breakpoint.deviceId = deviceId;
155
- }
194
+ setBreakpointDeviceId(srcHash, destHast, deviceId) {
195
+ this.deviceIdByDestHash.set(destHast, { srcHash: srcHash, deviceId: deviceId });
156
196
  }
157
197
  /**
158
198
  * Mark this breakpoint as verified
@@ -161,34 +201,42 @@ class BreakpointManager {
161
201
  const breakpoint = this.getBreakpointByDeviceId(deviceId);
162
202
  if (breakpoint) {
163
203
  breakpoint.verified = isVerified;
164
- this.queueVerifyEvent(breakpoint.hash);
204
+ this.queueEvent('breakpoints-verified', breakpoint.srcHash);
205
+ return true;
206
+ }
207
+ else {
208
+ //couldn't find the breakpoint. return false so the caller can handle that properly
209
+ return false;
165
210
  }
166
- //TODO handle the else case, (might be caused by timing issues?)
167
211
  }
168
212
  /**
169
- * Whenever breakpoints get verified, they need to be synced back to vscode.
170
- * This queues up a future function that will emit a batch of all verified breakpoints.
213
+ * Queue future events to be fired when data settles. Typically this is data that needs synced back to vscode.
214
+ * This queues up a future function that will emit a batch of all the specified breakpoints.
171
215
  * @param hash the breakpoint hash that identifies this specific breakpoint based on its features
172
216
  */
173
- queueVerifyEvent(hash) {
174
- this.verifiedBreakpointKeys.push(hash);
175
- if (!this.isVerifyEventQueued) {
176
- this.isVerifyEventQueued = true;
217
+ queueEvent(event, ref) {
218
+ var _a;
219
+ //get the state (or create a new one)
220
+ const state = (_a = this.queueEventStates.get(event)) !== null && _a !== void 0 ? _a : (this.queueEventStates.set(event, { pendingRefs: [], isQueued: false }).get(event));
221
+ this.queueEventStates.set(event, state);
222
+ state.pendingRefs.push(ref);
223
+ if (!state.isQueued) {
224
+ state.isQueued = true;
177
225
  process.nextTick(() => {
178
- this.isVerifyEventQueued = false;
179
- const breakpoints = this.getBreakpointsByHashes(this.verifiedBreakpointKeys.map(x => x));
180
- this.verifiedBreakpointKeys = [];
181
- this.emit('breakpoints-verified', {
226
+ state.isQueued = false;
227
+ const breakpoints = this.getBreakpoints(state.pendingRefs);
228
+ state.pendingRefs = [];
229
+ this.emit(event, {
182
230
  breakpoints: breakpoints
183
231
  });
184
232
  });
185
233
  }
186
234
  }
187
235
  /**
188
- * Generate a key based on the features of the breakpoint. Every breakpoint that exists at the same location
189
- * and has the same features should have the same key.
236
+ * Generate a hash based on the features of the breakpoint. Every breakpoint that exists at the same location
237
+ * and has the same features should have the same hash.
190
238
  */
191
- getBreakpointKey(filePath, breakpoint) {
239
+ getBreakpointSrcHash(filePath, breakpoint) {
192
240
  var _a, _b, _c;
193
241
  const key = `${(0, FileUtils_1.standardizePath)(filePath)}:${breakpoint.line}:${(_a = breakpoint.column) !== null && _a !== void 0 ? _a : 0}`;
194
242
  const condition = (_b = breakpoint.condition) === null || _b === void 0 ? void 0 : _b.trim();
@@ -204,6 +252,26 @@ class BreakpointManager {
204
252
  }
205
253
  return `${key}-standard`;
206
254
  }
255
+ /**
256
+ * Generate a hash based on the features of the breakpoint. Every breakpoint that exists at the same location
257
+ * and has the same features should have the same hash.
258
+ */
259
+ getBreakpointDestHash(breakpoint) {
260
+ var _a, _b, _c;
261
+ const key = `${(0, FileUtils_1.standardizePath)(breakpoint.stagingFilePath)}:${breakpoint.line}:${(_a = breakpoint.column) !== null && _a !== void 0 ? _a : 0}`;
262
+ const condition = (_b = breakpoint.condition) === null || _b === void 0 ? void 0 : _b.trim();
263
+ if (condition) {
264
+ return `${key}-condition=${condition}`;
265
+ }
266
+ const hitCondition = parseInt((_c = breakpoint.hitCondition) === null || _c === void 0 ? void 0 : _c.trim());
267
+ if (!isNaN(hitCondition)) {
268
+ return `${key}-hitCondition=${hitCondition}`;
269
+ }
270
+ if (breakpoint.logMessage) {
271
+ return `${key}-logMessage=${breakpoint.logMessage}`;
272
+ }
273
+ return `${key}-standard`;
274
+ }
207
275
  /**
208
276
  * Set/replace/delete the list of breakpoints for this file.
209
277
  * @param srcPath
@@ -222,7 +290,7 @@ class BreakpointManager {
222
290
  * This will also exclude files with breakpoints that are not in scope.
223
291
  */
224
292
  async getBreakpointWork(project) {
225
- var _a;
293
+ var _a, _b;
226
294
  let result = {};
227
295
  //iterate over every file that contains breakpoints
228
296
  for (let [sourceFilePath, breakpoints] of this.breakpointsByFilePath) {
@@ -247,6 +315,7 @@ class BreakpointManager {
247
315
  ...breakpoint,
248
316
  //add additional info
249
317
  srcPath: sourceFilePath,
318
+ destHash: undefined,
250
319
  rootDirFilePath: (0, roku_deploy_1.standardizePath) `${project.rootDir}/${relativeStagingPath}`,
251
320
  line: stagingLocation.lineNumber,
252
321
  column: stagingLocation.columnIndex,
@@ -255,6 +324,8 @@ class BreakpointManager {
255
324
  pkgPath: pkgPath,
256
325
  componentLibraryName: project.name
257
326
  };
327
+ obj.destHash = this.getBreakpointDestHash(obj);
328
+ obj.deviceId = (_b = this.deviceIdByDestHash.get(obj.destHash)) === null || _b === void 0 ? void 0 : _b.deviceId;
258
329
  if (!result[stagingLocation.filePath]) {
259
330
  result[stagingLocation.filePath] = [];
260
331
  }
@@ -293,7 +364,7 @@ class BreakpointManager {
293
364
  promises.push(this.writeBreakpointsToFile(stagingFilePath, breakpoints));
294
365
  for (const breakpoint of breakpoints) {
295
366
  //mark this breakpoint as verified
296
- this.setBreakpointDeviceId(breakpoint.hash, breakpoint.id);
367
+ this.setBreakpointDeviceId(breakpoint.srcHash, breakpoint.destHash, breakpoint.id);
297
368
  this.verifyBreakpoint(breakpoint.id, true);
298
369
  //add this breakpoint to the list of "permanent" breakpoints
299
370
  this.registerPermanentBreakpoint(breakpoint);
@@ -454,7 +525,7 @@ class BreakpointManager {
454
525
  getPermanentBreakpoint(hash) {
455
526
  for (const [, breakpoints] of this.permanentBreakpointsBySrcPath) {
456
527
  for (const breakpoint of breakpoints) {
457
- if (breakpoint.hash === hash) {
528
+ if (breakpoint.srcHash === hash) {
458
529
  return breakpoint;
459
530
  }
460
531
  }
@@ -507,6 +578,7 @@ class BreakpointManager {
507
578
  * All projects should be passed in every time.
508
579
  */
509
580
  async getDiff(projects) {
581
+ var _a;
510
582
  //if the diff is currently running, return an empty "nothing has changed" diff
511
583
  if (this.isGetDiffRunning) {
512
584
  return {
@@ -519,6 +591,7 @@ class BreakpointManager {
519
591
  this.isGetDiffRunning = true;
520
592
  const currentState = new Map();
521
593
  await Promise.all(projects.map(async (project) => {
594
+ var _a;
522
595
  //get breakpoint data for every project
523
596
  const work = await this.getBreakpointWork(project);
524
597
  for (const filePath in work) {
@@ -535,7 +608,7 @@ class BreakpointManager {
535
608
  bp.logMessage
536
609
  ].join('--');
537
610
  //clone the breakpoint and then add it to the current state
538
- currentState.set(key, { ...bp });
611
+ currentState.set(key, { ...bp, deviceId: (_a = this.deviceIdByDestHash.get(bp.destHash)) === null || _a === void 0 ? void 0 : _a.deviceId });
539
612
  }
540
613
  }
541
614
  }));
@@ -559,16 +632,48 @@ class BreakpointManager {
559
632
  }
560
633
  }
561
634
  this.lastState = currentState;
562
- return {
635
+ const result = {
563
636
  added: [...added.values()],
564
- removed: [...removed.values()],
637
+ removed: [...removed.values(), ...this.failedDeletions],
565
638
  unchanged: [...unchanged.values()]
566
639
  };
640
+ this.failedDeletions = [];
641
+ //hydrate the breakpoints with any available deviceIds
642
+ for (const breakpoint of [...result.added, ...result.removed, ...result.unchanged]) {
643
+ breakpoint.deviceId = (_a = this.deviceIdByDestHash.get(breakpoint.destHash)) === null || _a === void 0 ? void 0 : _a.deviceId;
644
+ }
645
+ return result;
567
646
  }
568
647
  finally {
569
648
  this.isGetDiffRunning = false;
570
649
  }
571
650
  }
651
+ /**
652
+ * Set the pending status of the given list of breakpoints.
653
+ *
654
+ * Whenever the breakpoint is currently being handled by an adapter (i.e. add/update/delete), it should
655
+ * be marked "pending". Then, when the response comes back (success or fail), "pending" should be set to false.
656
+ * In this way, we can ensure that all breakpoints can be synchronized with the device
657
+ */
658
+ setPending(srcPath, breakpoints, isPending) {
659
+ for (const breakpoint of breakpoints) {
660
+ if (breakpoint) {
661
+ const hash = this.getBreakpointSrcHash(srcPath, breakpoint);
662
+ this.breakpointPendingStatus.set(hash, isPending);
663
+ }
664
+ }
665
+ }
666
+ isPending(...args) {
667
+ var _a;
668
+ let hash;
669
+ if (args[1]) {
670
+ hash = this.getBreakpointSrcHash(args[0], args[1]);
671
+ }
672
+ else {
673
+ hash = args[0];
674
+ }
675
+ return (_a = this.breakpointPendingStatus.get(hash)) !== null && _a !== void 0 ? _a : false;
676
+ }
572
677
  }
573
678
  exports.BreakpointManager = BreakpointManager;
574
679
  //# sourceMappingURL=BreakpointManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BreakpointManager.js","sourceRoot":"","sources":["../../src/managers/BreakpointManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BreakpointManager.js","sourceRoot":"","sources":["../../src/managers/BreakpointManager.ts"],"names":[],"mappings":";;;AAAA,oCAAoC;AACpC,qDAA0C;AAE1C,2CAAwC;AAExC,4CAA0D;AAE1D,6CAAmD;AAGnD,kCAA+B;AAC/B,iDAA6C;AAE7C,MAAa,iBAAiB;IAE1B,YACY,gBAAkC,EAClC,eAAgC;QADhC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,oBAAe,GAAf,eAAe,CAAiB;QAWpC,YAAO,GAAG,IAAI,4BAAY,EAAE,CAAC;QA+BrC;;;;;WAKG;QACK,0BAAqB,GAAG,IAAI,GAAG,EAAuC,CAAC;QAE/E;;WAEG;QACI,oBAAe,GAAG,EAA0B,CAAC;QAEpD;;WAEG;QACK,yBAAoB,GAAG,CAAC,CAAC;QA+IzB,uBAAkB,GAAG,IAAI,GAAG,EAAiD,CAAC;QAoC9E,qBAAgB,GAAG,IAAI,GAAG,EAA+D,CAAC;QA+NlG;;WAEG;QACK,kCAA6B,GAAG,IAAI,GAAG,EAAgC,CAAC;QAuCxE,YAAO,GAAG,CAAC,CAAC;QA4RpB;;WAEG;QACK,4BAAuB,GAAG,IAAI,GAAG,EAAmB,CAAC;QAE7D;;WAEG;QACK,qBAAgB,GAAG,KAAK,CAAC;QACzB,cAAS,GAAG,IAAI,GAAG,EAA8B,CAAC;IAxxB1D,CAAC;IAWO,IAAI,CAAC,SAAiB,EAAE,IAAS;QACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IAMM,EAAE,CAAC,SAAiB,EAAE,OAA2B;QACpD,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACpC,OAAO,GAAG,EAAE;YACR,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACzC,CAAC,CAAC;IACN,CAAC;IAMM,IAAI,CAAC,SAAiB;QACzB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,SAAmC,EAAE,CAAC,IAAI,EAAE,EAAE;gBACrE,UAAU,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAoBD;;OAEG;IACI,aAAa,CAAC,OAAe,EAAE,UAAsE;;QACxG,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAE/C,0GAA0G;QAC1G,8EAA8E;QAC9E,IAAI,CAAA,MAAA,IAAI,CAAC,mBAAmB,0CAAE,UAAU,KAAI,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YACxF,IAAI,eAAe,GAAG,EAAE,CAAC;YACzB,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE;gBACzD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;gBACvE,IAAI,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;oBACjC,eAAe,GAAG,OAAO,CAAC;iBAC7B;aACJ;YACD,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,eAAe,CAAC,CAAC;SAC1D;QAED,qEAAqE;QACrE,IAAI,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAEjE,kJAAkJ;QAClJ,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC;QAElF,IAAI,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,aAAlB,kBAAkB,cAAlB,kBAAkB,GAAI,EAAE,EAAE;YAC7C,sGAAsG;YACtG,GAAG;gBACC,oDAAoD;gBACpD,MAAM,EAAE,CAAC;gBACT,SAAS,EAAE,SAAS;gBACpB,YAAY,EAAE,SAAS;gBACvB,UAAU,EAAE,SAAS;aACxB;YACD,GAAG,UAAU;YACb,OAAO,EAAE,OAAO;YAChB,6GAA6G;YAC7G,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,UAAU,CAAC;SAC7B,CAAC,CAAC;QAEhC,6DAA6D;QAC7D,MAAA,EAAE,CAAC,EAAE,oCAAL,EAAE,CAAC,EAAE,GAAK,IAAI,CAAC,oBAAoB,EAAE,EAAC;QAEtC,6DAA6D;QAC7D,MAAA,EAAE,CAAC,QAAQ,oCAAX,EAAE,CAAC,QAAQ,GAAK,KAAK,EAAC;QAEtB,mEAAmE;QACnE,IAAI,CAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,OAAO,MAAK,EAAE,CAAC,OAAO,EAAE;YAC5C,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC;SACvB;QAED,0GAA0G;QAC1G,IAAI,CAAC,kBAAkB,EAAE;YACrB,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAC7B;QAED,mHAAmH;QACnH,IAAI,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE;YACzC,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YAC1D,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;SACtC;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAQM,gBAAgB,CAAC,GAAG,IAAmE;QAC1F,IAAI,CAAC,iBAAiB,CAAC;YACnB,IAAI,CAAC,aAAa,CAAC,GAAG,IAAgB,CAAC;SAC1C,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACI,iBAAiB,CAAC,IAAqB;QAC1C,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;YAChD,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YACxD,IAAI,gBAAgB,EAAE;gBAClB,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;gBAClF,WAAW,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;gBACrC,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;aACvE;SACJ;IACL,CAAC;IAOM,aAAa,CAAC,GAAG,IAA4C;QAChE,IAAI,GAAkB,CAAC;QACvB,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;YAC5D,GAAG,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;SACrD;aAAM;YACH,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;SACjB;QACD,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACK,SAAS,CAAC,GAAkB;QAChC,IAAI,CAAC,GAAG,EAAE;YACN,OAAO;SACV;QACD,MAAM;QACN,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YACzB,OAAO,GAAG,CAAC;SACd;QACD,yBAAyB;QACzB,IAAI,SAAS,IAAI,GAAG,EAAE;YAClB,OAAO,GAAG,CAAC,OAAO,CAAC;SACtB;QACD,yBAAyB;QACzB,IAAI,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,EAAE;YACd,OAAO,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;SACtD;IACL,CAAC;IAED;;;;OAIG;IACI,cAAc,CAAC,IAAqB;QACvC,8BAA8B;QAC9B,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE5D,+DAA+D;QAC/D,OAAO,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YACtE,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACP,CAAC;IAID;;;QAGI;IACI,uBAAuB,CAAC,QAAgB;QAC5C,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YACzD,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC;QACnC,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACI,qBAAqB,CAAC,OAAe,EAAE,QAAgB,EAAE,QAAgB;QAC5E,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IACpF,CAAC;IAED;;OAEG;IACI,gBAAgB,CAAC,QAAgB,EAAE,UAAU,GAAG,IAAI;QACvD,MAAM,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QAC1D,IAAI,UAAU,EAAE;YACZ,UAAU,CAAC,QAAQ,GAAG,UAAU,CAAC;YAEjC,IAAI,CAAC,UAAU,CAAC,sBAAsB,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;YAC5D,OAAO,IAAI,CAAC;SACf;aAAM;YACH,mFAAmF;YACnF,OAAO,KAAK,CAAC;SAChB;IACL,CAAC;IAKD;;;;OAIG;IACK,UAAU,CAAC,KAA6B,EAAE,GAAkB;;QAChE,qCAAqC;QACrC,MAAM,KAAK,GAAG,MAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,mCAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAEtI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACxC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YACjB,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;YAEtB,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE;gBAClB,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACvB,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAC3D,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC;gBACvB,IAAI,CAAC,IAAI,CAAC,KAAwC,EAAE;oBAChD,WAAW,EAAE,WAAW;iBAC3B,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;SACN;IACL,CAAC;IAED;;;OAGG;IACK,oBAAoB,CAAC,QAAgB,EAAE,UAAsE;;QACjH,MAAM,GAAG,GAAG,GAAG,IAAA,2BAAe,EAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,IAAI,IAAI,MAAA,UAAU,CAAC,MAAM,mCAAI,CAAC,EAAE,CAAC;QAExF,MAAM,SAAS,GAAG,MAAA,UAAU,CAAC,SAAS,0CAAE,IAAI,EAAE,CAAC;QAC/C,IAAI,SAAS,EAAE;YACX,OAAO,GAAG,GAAG,cAAc,SAAS,EAAE,CAAC;SAC1C;QAED,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAA,UAAU,CAAC,YAAY,0CAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;YACtB,OAAO,GAAG,GAAG,iBAAiB,YAAY,EAAE,CAAC;SAChD;QAED,IAAI,UAAU,CAAC,UAAU,EAAE;YACvB,OAAO,GAAG,GAAG,eAAe,UAAU,CAAC,UAAU,EAAE,CAAC;SACvD;QAED,OAAO,GAAG,GAAG,WAAW,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACK,qBAAqB,CAAC,UAA8B;;QACxD,MAAM,GAAG,GAAG,GAAG,IAAA,2BAAe,EAAC,UAAU,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,IAAI,IAAI,MAAA,UAAU,CAAC,MAAM,mCAAI,CAAC,EAAE,CAAC;QAE1G,MAAM,SAAS,GAAG,MAAA,UAAU,CAAC,SAAS,0CAAE,IAAI,EAAE,CAAC;QAC/C,IAAI,SAAS,EAAE;YACX,OAAO,GAAG,GAAG,cAAc,SAAS,EAAE,CAAC;SAC1C;QAED,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAA,UAAU,CAAC,YAAY,0CAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;YACtB,OAAO,GAAG,GAAG,iBAAiB,YAAY,EAAE,CAAC;SAChD;QAED,IAAI,UAAU,CAAC,UAAU,EAAE;YACvB,OAAO,GAAG,GAAG,eAAe,UAAU,CAAC,UAAU,EAAE,CAAC;SACvD;QAED,OAAO,GAAG,GAAG,WAAW,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACI,kBAAkB,CAAC,OAAe,EAAE,qBAAuD;QAC9F,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAE/C,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;QAE5G,0EAA0E;QAC1E,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAC1B,OAAO,EACP,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAClF,CAAC;QAEF,mCAAmC;QACnC,OAAO,kBAAkB,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,iBAAiB,CAAC,OAAgB;;QAC5C,IAAI,MAAM,GAAG,EAA+C,CAAC;QAE7D,mDAAmD;QACnD,KAAK,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAClE,KAAK,IAAI,UAAU,IAAI,WAAW,EAAE;gBAChC,iFAAiF;gBACjF,oDAAoD;gBACpD,IAAI,sBAAsB,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,mBAAmB,CACvE,cAAc,EACd,UAAU,CAAC,IAAI,EACf,UAAU,CAAC,MAAM,EACjB;oBACI,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,mCAAI,EAAE;oBAC5B,OAAO,CAAC,OAAO;iBAClB,EACD,OAAO,CAAC,iBAAiB,EACzB,OAAO,CAAC,YAAY,CACvB,CAAC;gBAEF,KAAK,IAAI,eAAe,IAAI,sBAAsB,CAAC,SAAS,EAAE;oBAC1D,IAAI,mBAAmB,GAAG,qBAAS,CAAC,sBAAsB,CACtD,eAAe,CAAC,QAAQ,EACxB,qBAAS,CAAC,eAAe,CACrB,qBAAS,CAAC,mBAAmB,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,GAAG,CACjE,EACD,EAAE,CACL,CAAC;oBACF,MAAM,OAAO,GAAG,OAAO,GAAG,qBAAS;wBAC/B,uEAAuE;yBACtE,sBAAsB,CACnB,IAAA,6BAAC,EAAA,GAAG,eAAe,CAAC,QAAQ,EAAE,EAC9B,IAAA,6BAAC,EAAA,GAAG,OAAO,CAAC,iBAAiB,EAAE,EAC/B,EAAE,CACL;wBACD,+BAA+B;yBAC9B,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC;wBACzB,sBAAsB;yBACrB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBAExB,IAAI,GAAG,GAAuB;wBAC1B,yBAAyB;wBACzB,GAAG,UAAU;wBACb,qBAAqB;wBACrB,OAAO,EAAE,cAAc;wBACvB,QAAQ,EAAE,SAAS;wBACnB,eAAe,EAAE,IAAA,6BAAC,EAAA,GAAG,OAAO,CAAC,OAAO,IAAI,mBAAmB,EAAE;wBAC7D,IAAI,EAAE,eAAe,CAAC,UAAU;wBAChC,MAAM,EAAE,eAAe,CAAC,WAAW;wBACnC,eAAe,EAAE,eAAe,CAAC,QAAQ;wBACzC,IAAI,EAAE,sBAAsB,CAAC,IAAI;wBACjC,OAAO,EAAE,OAAO;wBAChB,oBAAoB,EAAG,OAAmC,CAAC,IAAI;qBAClE,CAAC;oBACF,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;oBAC/C,GAAG,CAAC,QAAQ,GAAG,MAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,0CAAE,QAAQ,CAAC;oBAEnE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE;wBACnC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;qBACzC;oBACD,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBAC9C;aACJ;SACJ;QACD,mCAAmC;QACnC,KAAK,IAAI,eAAe,IAAI,MAAM,EAAE;YAChC,MAAM,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,iCAAiC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;SAC7F;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAEM,iCAAiC,CACpC,WAAqB;QAErB,WAAW,GAAG,IAAA,yBAAO,EAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QACjE,wEAAwE;QACxE,KAAK,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YAC9C,IAAI,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YAChC,IAAI,gBAAgB,GAAG,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1C,sCAAsC;YACtC,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,EAAE;gBAC/D,mFAAmF;gBACnF,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;aAChC;SACJ;QACD,OAAO,WAAW,CAAC;IACvB,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,0BAA0B,CAAC,OAAgB;QACpD,IAAI,4BAA4B,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAEzE,IAAI,QAAQ,GAAG,EAAoB,CAAC;QACpC,KAAK,IAAI,eAAe,IAAI,4BAA4B,EAAE;YACtD,MAAM,WAAW,GAAG,4BAA4B,CAAC,eAAe,CAAC,CAAC;YAClE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC,CAAC;YACzE,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;gBAClC,kCAAkC;gBAClC,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;gBACnF,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;gBAC3C,4DAA4D;gBAC5D,IAAI,CAAC,2BAA2B,CAAC,UAAU,CAAC,CAAC;aAChD;SACJ;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE5B,mDAAmD;QACnD,KAAK,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,IAAI,CAAC,6BAA6B,EAAE;YACjE,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,GAAG,EAAE,IAAA,yBAAO,EAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SACnG;IACL,CAAC;IAEO,2BAA2B,CAAC,UAA8B;;QAC9D,MAAM,UAAU,GAAG,MAAA,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,mCAAI,EAAE,CAAC;QACpF,yDAAyD;QACzD,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAC3E,CAAC;IAOD;;OAEG;IACK,KAAK,CAAC,sBAAsB,CAAC,eAAuB,EAAE,WAAiC;QAE3F,wCAAwC;QACxC,IAAI,CAAC,MAAM,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE;YAC5C,WAAI,CAAC,GAAG,CAAC,kBAAkB,eAAe,EAAE,CAAC,CAAC;YAC9C,OAAO;SACV;QAED,2BAA2B;QAC3B,IAAI,YAAY,GAAG,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAExE,IAAI,gBAAgB,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW;YACtD,uIAAuI;YACvI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,eAAe;YAChC,4IAA4I;YAC5I,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAE7B,IAAI,YAAY,GAAG,IAAI,CAAC,8BAA8B,CAAC,YAAY,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAAC;QAEpG,uDAAuD;QACvD,IAAI,YAAY,CAAC,GAAG,EAAE;YAClB,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACjD,8FAA8F;YAC9F,iGAAiG;YACjG,6BAA6B;YAC7B,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,eAAe,MAAM,EAAE,SAAS,CAAC,CAAC;YAC7D,iDAAiD;YACjD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,eAAe,MAAM,EAAE,SAAS,CAAC,CAAC;SAClE;QAED,sDAAsD;QACtD,MAAM,OAAO,CAAC,SAAS,CAAC,eAAe,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IAChE,CAAC;IAGM,8BAA8B,CAAC,YAAoB,EAAE,gBAAwB,EAAE,WAAiC;;QACnH,IAAI,MAAM,GAAG,EAAgC,CAAC;QAE9C,2BAA2B;QAC3B,IAAI,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,KAAK,IAAI,iBAAiB,GAAG,CAAC,EAAE,iBAAiB,GAAG,KAAK,CAAC,MAAM,EAAE,iBAAiB,EAAE,EAAE;YACnF,IAAI,IAAI,GAAG,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACpC,kBAAkB;YAClB,IAAI,iBAAiB,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBACxC,OAAO,GAAG,EAAE,CAAC;aAChB;YACD,+FAA+F;YAC/F,IAAI,eAAe,GAAG,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,iBAAiB,CAAC,CAAC;YAClF,sDAAsD;YACtD,KAAK,IAAI,EAAE,IAAI,eAAe,EAAE;gBAC5B,IAAI,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;gBAEvE,uDAAuD;gBACvD,KAAK,IAAI,MAAM,IAAI,kBAAkB,EAAE;oBACnC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACpB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACrB;aACJ;YAED,2BAA2B;YAC3B,MAAM,CAAC,IAAI;YACP,wCAAwC;YACxC,IAAI,uBAAU,CAAC,iBAAiB,GAAG,CAAC,EAAE,CAAC,EAAE,gBAAgB,EAAE,GAAG,IAAI,GAAG,OAAO,EAAE,CAAC,CAClF,CAAC;SACL;QAED,IAAI,IAAI,GAAG,IAAI,uBAAU,CAAC,IAAI,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAEhE,kFAAkF;QAClF,IAAI,CAAA,MAAA,IAAI,CAAC,mBAAmB,0CAAE,gBAAgB,MAAK,KAAK,EAAE;YACtD,OAAO;gBACH,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;gBACrB,GAAG,EAAE,SAAS;aACI,CAAC;SAC1B;aAAM;YACH,OAAO,IAAI,CAAC,qBAAqB,EAAE,CAAC;SACvC;IACL,CAAC;IAEO,kBAAkB,CAAC,UAA8B,EAAE,gBAAwB;QAC/E,IAAI,KAAK,GAAG,EAAgC,CAAC;QAC7C,IAAI,UAAU,CAAC,UAAU,EAAE;YACvB,IAAI,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;YACvC,gCAAgC;YAChC,UAAU,GAAG,IAAI,UAAU,GAAG,CAAC;YAC/B,IAAI,gBAAgB,GAAG,YAAY,CAAC;YACpC,IAAI,KAAsB,CAAC;YAE3B,+CAA+C;YAC/C,OAAO,CAAC,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE;gBAChD,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;aACjE;YAED,6EAA6E;YAC7E,KAAK,CAAC,IAAI,CAAC,IAAI,uBAAU,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,gBAAgB,EAAE,SAAS,UAAU,EAAE,CAAC,CAAC,CAAC;SAC3F;aAAM,IAAI,UAAU,CAAC,SAAS,EAAE;YAC7B,mCAAmC;YACnC,KAAK,CAAC,IAAI,CAAC,IAAI,uBAAU,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC;SACvH;aAAM,IAAI,UAAU,CAAC,YAAY,EAAE;YAChC,IAAI,YAAY,GAAG,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;YAErD,IAAI,KAAK,CAAC,YAAY,CAAC,IAAI,YAAY,KAAK,CAAC,EAAE;gBAC3C,8CAA8C;gBAC9C,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACtB;iBAAM;gBACH,IAAI,MAAM,GAAG,aAAa,CAAC;gBAC3B,IAAI,MAAM,GAAG,KAAK,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;gBACnC,IAAI,SAAS,GAAG,MAAM,MAAM,IAAI,MAAM,OAAO,YAAY,YAAY,CAAC;gBACtE,IAAI,SAAS,GAAG,GAAG,MAAM,IAAI,MAAM,KAAK,CAAC;gBAEzC,0EAA0E;gBAC1E,IAAI,kBAAkB,GAAG;mCACN,MAAM,iBAAiB,MAAM,IAAI,MAAM;uCACnC,MAAM;8BACf,MAAM,OAAO,MAAM;;8BAEnB,MAAM,IAAI,MAAM;;0BAEpB,SAAS,MAAM,SAAS;iBACjC,CAAC;gBACF,wCAAwC;gBACxC,kBAAkB,GAAG,kBAAkB,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;gBACxF,qDAAqD;gBACrD,KAAK,CAAC,IAAI,CAAC,IAAI,uBAAU,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,CAAC,CAAC;aACxF;SACJ;aAAM;YACH,uGAAuG;YACvG,iEAAiE;YACjE,KAAK,CAAC,IAAI,CAAC,IAAI,uBAAU,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC;SAC5E;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,QAAgB,EAAE,iBAAiB,GAAG,KAAK;;QACrE,IAAI,GAAG,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,MAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,mCAAI,EAAE,CAAC;QACzD,IAAI,iBAAiB,KAAK,IAAI,EAAE;YAC5B,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;SAC/C;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;OAGG;IACI,sBAAsB,CAAC,IAAY;QACtC,KAAK,MAAM,CAAC,EAAE,WAAW,CAAC,IAAI,IAAI,CAAC,6BAA6B,EAAE;YAC9D,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;gBAClC,IAAI,UAAU,CAAC,OAAO,KAAK,IAAI,EAAE;oBAC7B,OAAO,UAAU,CAAC;iBACrB;aACJ;SACJ;IACL,CAAC;IAED;;OAEG;IACI,8BAA8B,CAAC,OAAe;;QACjD,OAAO,MAAA,IAAI,CAAC,6BAA6B,CAAC,GAAG,CACzC,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CACvC,mCAAI,EAAE,CAAC;IACZ,CAAC;IAED;;;OAGG;IACI,sBAAsB,CAAC,QAAgB;QAC1C,QAAQ,GAAG,qBAAS,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAE/C,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC1C,IAAI,QAAQ,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,WAAW,EAAE,EAAE;gBAC9C,OAAO,GAAG,CAAC;aACd;SACJ;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,iBAAiB,CAAC,QAAmB,EAAE,OAAe,EAAE,IAAY;QAC7E,MAAM,aAAa,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CACpC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAC3D,CAAC,CAAC;QACH,KAAK,MAAM,WAAW,IAAI,aAAa,EAAE;YACrC,KAAK,IAAI,GAAG,IAAI,WAAW,EAAE;gBACzB,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC9B,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;oBACrB,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,IAAI,EAAE;wBACpD,OAAO,IAAI,CAAC;qBACf;iBACJ;aACJ;SACJ;IACL,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,OAAO,CAAC,QAAmB;;QACpC,8EAA8E;QAC9E,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,OAAO;gBACH,KAAK,EAAE,EAAE;gBACT,OAAO,EAAE,EAAE;gBACX,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;aAC1C,CAAC;SACL;QACD,IAAI;YACA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAE7B,MAAM,YAAY,GAAG,IAAI,GAAG,EAA8B,CAAC;YAC3D,MAAM,OAAO,CAAC,GAAG,CACb,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;;gBAC3B,uCAAuC;gBACvC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;gBACnD,KAAK,MAAM,QAAQ,IAAI,IAAI,EAAE;oBACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAChC,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE;wBACvB,EAAE,CAAC,eAAe,GAAG,qBAAS,CAAC,eAAe,CAAC,EAAE,CAAC,eAAe,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;wBAC9F,EAAE,CAAC,OAAO,GAAG,qBAAS,CAAC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;wBAC9E,MAAM,GAAG,GAAG;4BACR,EAAE,CAAC,eAAe;4BAClB,EAAE,CAAC,IAAI;4BACP,EAAE,CAAC,MAAM;4BACT,EAAE,CAAC,SAAS;4BACZ,EAAE,CAAC,YAAY;4BACf,EAAE,CAAC,UAAU;yBAChB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACb,2DAA2D;wBAC3D,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,MAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,0CAAE,QAAQ,EAAE,CAAC,CAAC;qBAClG;iBACJ;YACL,CAAC,CAAC,CACL,CAAC;YAEF,MAAM,KAAK,GAAG,IAAI,GAAG,EAA8B,CAAC;YACpD,MAAM,OAAO,GAAG,IAAI,GAAG,EAA8B,CAAC;YACtD,MAAM,SAAS,GAAG,IAAI,GAAG,EAA8B,CAAC;YACxD,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE;gBAClE,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACxC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACvC,WAAW;gBACX,IAAI,MAAM,IAAI,SAAS,EAAE;oBACrB,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;oBAE1C,uBAAuB;iBAC1B;qBAAM,IAAI,CAAC,MAAM,IAAI,SAAS,EAAE;oBAC7B,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;oBAEtC,yBAAyB;iBAC5B;qBAAM;oBACH,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;iBAC7C;aACJ;YACD,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC;YAE9B,MAAM,MAAM,GAAG;gBACX,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC1B,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC;gBACvD,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;aACrC,CAAC;YACF,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;YAC1B,sDAAsD;YACtD,KAAK,MAAM,UAAU,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE;gBAChF,UAAU,CAAC,QAAQ,GAAG,MAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,0CAAE,QAAQ,CAAC;aACpF;YACD,OAAO,MAAM,CAAC;SACjB;gBAAS;YACN,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;SACjC;IACL,CAAC;IAED;;;;;;OAMG;IACI,UAAU,CAAC,OAAe,EAAE,WAAyB,EAAE,SAAkB;QAC5E,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;YAClC,IAAI,UAAU,EAAE;gBACZ,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;gBAC5D,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;aACrD;SACJ;IACL,CAAC;IAOM,SAAS,CAAC,GAAG,IAAqC;;QACrD,IAAI,IAAY,CAAC;QACjB,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE;YACT,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;SACtD;aAAM;YACH,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;SAClB;QACD,OAAO,MAAA,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,mCAAI,KAAK,CAAC;IAC3D,CAAC;CAYJ;AAhyBD,8CAgyBC"}
@@ -1,6 +1,7 @@
1
1
  import type { FileEntry } from 'roku-deploy';
2
2
  import type { BreakpointManager } from './BreakpointManager';
3
3
  import type { LocationManager, SourceLocation } from './LocationManager';
4
+ import { Cache } from 'brighterscript/dist/Cache';
4
5
  export declare const componentLibraryPostfix = "__lib";
5
6
  /**
6
7
  * Manages the collection of brightscript projects being used in a debug session.
@@ -23,6 +24,7 @@ export declare class ProjectManager {
23
24
  enableSourceMaps?: boolean;
24
25
  enableDebugProtocol?: boolean;
25
26
  };
27
+ logger: import("@rokucommunity/logger/dist/Logger").Logger;
26
28
  mainProject: Project;
27
29
  componentLibraryProjects: ComponentLibraryProject[];
28
30
  addComponentLibraryProject(project: ComponentLibraryProject): void;
@@ -37,6 +39,7 @@ export declare class ProjectManager {
37
39
  * @param debuggerLineNumber - the line number from the debugger
38
40
  */
39
41
  getLineNumberOffsetByBreakpoints(filePath: string, debuggerLineNumber: number): any;
42
+ sourceLocationCache: Cache<string, Promise<SourceLocation>>;
40
43
  /**
41
44
  * @param debuggerPath
42
45
  * @param debuggerLineNumber - the 1-based line number from the debugger
@@ -11,6 +11,7 @@ const globAsync = (0, util_1.promisify)(glob);
11
11
  const FileUtils_1 = require("../FileUtils");
12
12
  const util_2 = require("../util");
13
13
  const logging_1 = require("../logging");
14
+ const Cache_1 = require("brighterscript/dist/Cache");
14
15
  // eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-require-imports
15
16
  const replaceInFile = require('replace-in-file');
16
17
  exports.componentLibraryPostfix = '__lib';
@@ -27,7 +28,9 @@ class ProjectManager {
27
28
  breakpointManager, locationManager) {
28
29
  this.breakpointManager = breakpointManager;
29
30
  this.locationManager = locationManager;
31
+ this.logger = logging_1.logger.createLogger('[ProjectManager]');
30
32
  this.componentLibraryProjects = [];
33
+ this.sourceLocationCache = new Cache_1.Cache();
31
34
  this.breakpointManager = breakpointManager;
32
35
  }
33
36
  addComponentLibraryProject(project) {
@@ -85,43 +88,45 @@ class ProjectManager {
85
88
  * @param debuggerLineNumber - the 1-based line number from the debugger
86
89
  */
87
90
  async getSourceLocation(debuggerPath, debuggerLineNumber) {
88
- var _a, _b, _c;
89
- //get source location using
90
- let stagingFileInfo = await this.getStagingFileInfo(debuggerPath);
91
- if (!stagingFileInfo) {
92
- return;
93
- }
94
- let project = stagingFileInfo.project;
95
- //remove the component library postfix if present
96
- if (project instanceof ComponentLibraryProject) {
97
- stagingFileInfo.absolutePath = FileUtils_1.fileUtils.unPostfixFilePath(stagingFileInfo.absolutePath, project.postfix);
98
- stagingFileInfo.relativePath = FileUtils_1.fileUtils.unPostfixFilePath(stagingFileInfo.relativePath, project.postfix);
99
- }
100
- let sourceLocation = await this.locationManager.getSourceLocation({
101
- lineNumber: debuggerLineNumber,
102
- columnIndex: 0,
103
- fileMappings: project.fileMappings,
104
- rootDir: project.rootDir,
105
- stagingFilePath: stagingFileInfo.absolutePath,
106
- stagingFolderPath: project.stagingFolderPath,
107
- sourceDirs: project.sourceDirs,
108
- enableSourceMaps: (_b = (_a = this.launchConfiguration) === null || _a === void 0 ? void 0 : _a.enableSourceMaps) !== null && _b !== void 0 ? _b : true
91
+ return this.sourceLocationCache.getOrAdd(`${debuggerPath}-${debuggerLineNumber}`, async () => {
92
+ var _a, _b, _c;
93
+ //get source location using
94
+ let stagingFileInfo = await this.getStagingFileInfo(debuggerPath);
95
+ if (!stagingFileInfo) {
96
+ return;
97
+ }
98
+ let project = stagingFileInfo.project;
99
+ //remove the component library postfix if present
100
+ if (project instanceof ComponentLibraryProject) {
101
+ stagingFileInfo.absolutePath = FileUtils_1.fileUtils.unPostfixFilePath(stagingFileInfo.absolutePath, project.postfix);
102
+ stagingFileInfo.relativePath = FileUtils_1.fileUtils.unPostfixFilePath(stagingFileInfo.relativePath, project.postfix);
103
+ }
104
+ let sourceLocation = await this.locationManager.getSourceLocation({
105
+ lineNumber: debuggerLineNumber,
106
+ columnIndex: 0,
107
+ fileMappings: project.fileMappings,
108
+ rootDir: project.rootDir,
109
+ stagingFilePath: stagingFileInfo.absolutePath,
110
+ stagingFolderPath: project.stagingFolderPath,
111
+ sourceDirs: project.sourceDirs,
112
+ enableSourceMaps: (_b = (_a = this.launchConfiguration) === null || _a === void 0 ? void 0 : _a.enableSourceMaps) !== null && _b !== void 0 ? _b : true
113
+ });
114
+ //if sourcemaps are disabled, and this is a telnet debug dession, account for breakpoint offsets
115
+ if (sourceLocation && ((_c = this.launchConfiguration) === null || _c === void 0 ? void 0 : _c.enableSourceMaps) === false && !this.launchConfiguration.enableDebugProtocol) {
116
+ sourceLocation.lineNumber = this.getLineNumberOffsetByBreakpoints(sourceLocation.filePath, sourceLocation.lineNumber);
117
+ }
118
+ if (!(sourceLocation === null || sourceLocation === void 0 ? void 0 : sourceLocation.filePath)) {
119
+ //couldn't find a source location. At least send back the staging file information so the user can still debug
120
+ return {
121
+ filePath: stagingFileInfo.absolutePath,
122
+ lineNumber: (sourceLocation === null || sourceLocation === void 0 ? void 0 : sourceLocation.lineNumber) || debuggerLineNumber,
123
+ columnIndex: 0
124
+ };
125
+ }
126
+ else {
127
+ return sourceLocation;
128
+ }
109
129
  });
110
- //if sourcemaps are disabled, and this is a telnet debug dession, account for breakpoint offsets
111
- if (sourceLocation && ((_c = this.launchConfiguration) === null || _c === void 0 ? void 0 : _c.enableSourceMaps) === false && !this.launchConfiguration.enableDebugProtocol) {
112
- sourceLocation.lineNumber = this.getLineNumberOffsetByBreakpoints(sourceLocation.filePath, sourceLocation.lineNumber);
113
- }
114
- if (!(sourceLocation === null || sourceLocation === void 0 ? void 0 : sourceLocation.filePath)) {
115
- //couldn't find a source location. At least send back the staging file information so the user can still debug
116
- return {
117
- filePath: stagingFileInfo.absolutePath,
118
- lineNumber: (sourceLocation === null || sourceLocation === void 0 ? void 0 : sourceLocation.lineNumber) || debuggerLineNumber,
119
- columnIndex: 0
120
- };
121
- }
122
- else {
123
- return sourceLocation;
124
- }
125
130
  }
126
131
  /**
127
132
  *
@@ -132,6 +137,7 @@ class ProjectManager {
132
137
  let entryPoint = await FileUtils_1.fileUtils.findEntryPoint(stagingFolderPath);
133
138
  //convert entry point staging location to source location
134
139
  let sourceLocation = await this.getSourceLocation(entryPoint.relativePath, entryPoint.lineNumber);
140
+ this.logger.info(`Registering entry breakpoint at ${sourceLocation.filePath}:${sourceLocation.lineNumber} (${entryPoint.pathAbsolute}:${entryPoint.lineNumber})`);
135
141
  //register the entry breakpoint
136
142
  this.breakpointManager.setBreakpoint(sourceLocation.filePath, {
137
143
  //+1 to select the first line of the function