rocketride 1.0.0

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 (166) hide show
  1. package/README.md +476 -0
  2. package/dist/cjs/client.js +1745 -0
  3. package/dist/cjs/client.js.map +1 -0
  4. package/dist/cjs/constants.js +48 -0
  5. package/dist/cjs/constants.js.map +1 -0
  6. package/dist/cjs/core/DAPBase.js +328 -0
  7. package/dist/cjs/core/DAPBase.js.map +1 -0
  8. package/dist/cjs/core/DAPClient.js +226 -0
  9. package/dist/cjs/core/DAPClient.js.map +1 -0
  10. package/dist/cjs/core/TransportBase.js +152 -0
  11. package/dist/cjs/core/TransportBase.js.map +1 -0
  12. package/dist/cjs/core/TransportWebSocket.js +646 -0
  13. package/dist/cjs/core/TransportWebSocket.js.map +1 -0
  14. package/dist/cjs/exceptions/index.js +119 -0
  15. package/dist/cjs/exceptions/index.js.map +1 -0
  16. package/dist/cjs/index.js +56 -0
  17. package/dist/cjs/index.js.map +1 -0
  18. package/dist/cjs/package.json +3 -0
  19. package/dist/cjs/schema/Doc.js +79 -0
  20. package/dist/cjs/schema/Doc.js.map +1 -0
  21. package/dist/cjs/schema/DocFilter.js +133 -0
  22. package/dist/cjs/schema/DocFilter.js.map +1 -0
  23. package/dist/cjs/schema/DocGroup.js +230 -0
  24. package/dist/cjs/schema/DocGroup.js.map +1 -0
  25. package/dist/cjs/schema/DocMetadata.js +58 -0
  26. package/dist/cjs/schema/DocMetadata.js.map +1 -0
  27. package/dist/cjs/schema/Question.js +414 -0
  28. package/dist/cjs/schema/Question.js.map +1 -0
  29. package/dist/cjs/schema/index.js +50 -0
  30. package/dist/cjs/schema/index.js.map +1 -0
  31. package/dist/cjs/types/client.js +26 -0
  32. package/dist/cjs/types/client.js.map +1 -0
  33. package/dist/cjs/types/data.js +26 -0
  34. package/dist/cjs/types/data.js.map +1 -0
  35. package/dist/cjs/types/events.js +119 -0
  36. package/dist/cjs/types/events.js.map +1 -0
  37. package/dist/cjs/types/index.js +50 -0
  38. package/dist/cjs/types/index.js.map +1 -0
  39. package/dist/cjs/types/pipeline.js +26 -0
  40. package/dist/cjs/types/pipeline.js.map +1 -0
  41. package/dist/cjs/types/task.js +115 -0
  42. package/dist/cjs/types/task.js.map +1 -0
  43. package/dist/cli/cli/rocketride.js +1399 -0
  44. package/dist/cli/cli/rocketride.js.map +1 -0
  45. package/dist/cli/client/client.js +1745 -0
  46. package/dist/cli/client/client.js.map +1 -0
  47. package/dist/cli/client/constants.js +48 -0
  48. package/dist/cli/client/constants.js.map +1 -0
  49. package/dist/cli/client/core/DAPBase.js +328 -0
  50. package/dist/cli/client/core/DAPBase.js.map +1 -0
  51. package/dist/cli/client/core/DAPClient.js +226 -0
  52. package/dist/cli/client/core/DAPClient.js.map +1 -0
  53. package/dist/cli/client/core/TransportBase.js +152 -0
  54. package/dist/cli/client/core/TransportBase.js.map +1 -0
  55. package/dist/cli/client/core/TransportWebSocket.js +646 -0
  56. package/dist/cli/client/core/TransportWebSocket.js.map +1 -0
  57. package/dist/cli/client/exceptions/index.js +119 -0
  58. package/dist/cli/client/exceptions/index.js.map +1 -0
  59. package/dist/cli/client/index.js +56 -0
  60. package/dist/cli/client/index.js.map +1 -0
  61. package/dist/cli/client/schema/Doc.js +79 -0
  62. package/dist/cli/client/schema/Doc.js.map +1 -0
  63. package/dist/cli/client/schema/DocFilter.js +133 -0
  64. package/dist/cli/client/schema/DocFilter.js.map +1 -0
  65. package/dist/cli/client/schema/DocGroup.js +230 -0
  66. package/dist/cli/client/schema/DocGroup.js.map +1 -0
  67. package/dist/cli/client/schema/DocMetadata.js +58 -0
  68. package/dist/cli/client/schema/DocMetadata.js.map +1 -0
  69. package/dist/cli/client/schema/Question.js +414 -0
  70. package/dist/cli/client/schema/Question.js.map +1 -0
  71. package/dist/cli/client/schema/index.js +50 -0
  72. package/dist/cli/client/schema/index.js.map +1 -0
  73. package/dist/cli/client/types/client.js +26 -0
  74. package/dist/cli/client/types/client.js.map +1 -0
  75. package/dist/cli/client/types/data.js +26 -0
  76. package/dist/cli/client/types/data.js.map +1 -0
  77. package/dist/cli/client/types/events.js +119 -0
  78. package/dist/cli/client/types/events.js.map +1 -0
  79. package/dist/cli/client/types/index.js +50 -0
  80. package/dist/cli/client/types/index.js.map +1 -0
  81. package/dist/cli/client/types/pipeline.js +26 -0
  82. package/dist/cli/client/types/pipeline.js.map +1 -0
  83. package/dist/cli/client/types/task.js +115 -0
  84. package/dist/cli/client/types/task.js.map +1 -0
  85. package/dist/esm/client.js +1740 -0
  86. package/dist/esm/client.js.map +1 -0
  87. package/dist/esm/constants.js +45 -0
  88. package/dist/esm/constants.js.map +1 -0
  89. package/dist/esm/core/DAPBase.js +324 -0
  90. package/dist/esm/core/DAPBase.js.map +1 -0
  91. package/dist/esm/core/DAPClient.js +222 -0
  92. package/dist/esm/core/DAPClient.js.map +1 -0
  93. package/dist/esm/core/TransportBase.js +148 -0
  94. package/dist/esm/core/TransportBase.js.map +1 -0
  95. package/dist/esm/core/TransportWebSocket.js +609 -0
  96. package/dist/esm/core/TransportWebSocket.js.map +1 -0
  97. package/dist/esm/exceptions/index.js +109 -0
  98. package/dist/esm/exceptions/index.js.map +1 -0
  99. package/dist/esm/index.js +40 -0
  100. package/dist/esm/index.js.map +1 -0
  101. package/dist/esm/package.json +3 -0
  102. package/dist/esm/schema/Doc.js +75 -0
  103. package/dist/esm/schema/Doc.js.map +1 -0
  104. package/dist/esm/schema/DocFilter.js +129 -0
  105. package/dist/esm/schema/DocFilter.js.map +1 -0
  106. package/dist/esm/schema/DocGroup.js +226 -0
  107. package/dist/esm/schema/DocGroup.js.map +1 -0
  108. package/dist/esm/schema/DocMetadata.js +54 -0
  109. package/dist/esm/schema/DocMetadata.js.map +1 -0
  110. package/dist/esm/schema/Question.js +409 -0
  111. package/dist/esm/schema/Question.js.map +1 -0
  112. package/dist/esm/schema/index.js +34 -0
  113. package/dist/esm/schema/index.js.map +1 -0
  114. package/dist/esm/types/client.js +25 -0
  115. package/dist/esm/types/client.js.map +1 -0
  116. package/dist/esm/types/data.js +25 -0
  117. package/dist/esm/types/data.js.map +1 -0
  118. package/dist/esm/types/events.js +116 -0
  119. package/dist/esm/types/events.js.map +1 -0
  120. package/dist/esm/types/index.js +34 -0
  121. package/dist/esm/types/index.js.map +1 -0
  122. package/dist/esm/types/pipeline.js +25 -0
  123. package/dist/esm/types/pipeline.js.map +1 -0
  124. package/dist/esm/types/task.js +112 -0
  125. package/dist/esm/types/task.js.map +1 -0
  126. package/dist/types/client.d.ts +798 -0
  127. package/dist/types/client.d.ts.map +1 -0
  128. package/dist/types/constants.d.ts +45 -0
  129. package/dist/types/constants.d.ts.map +1 -0
  130. package/dist/types/core/DAPBase.d.ts +152 -0
  131. package/dist/types/core/DAPBase.d.ts.map +1 -0
  132. package/dist/types/core/DAPClient.d.ts +93 -0
  133. package/dist/types/core/DAPClient.d.ts.map +1 -0
  134. package/dist/types/core/TransportBase.d.ts +113 -0
  135. package/dist/types/core/TransportBase.d.ts.map +1 -0
  136. package/dist/types/core/TransportWebSocket.d.ts +100 -0
  137. package/dist/types/core/TransportWebSocket.d.ts.map +1 -0
  138. package/dist/types/exceptions/index.d.ts +87 -0
  139. package/dist/types/exceptions/index.d.ts.map +1 -0
  140. package/dist/types/index.d.ts +36 -0
  141. package/dist/types/index.d.ts.map +1 -0
  142. package/dist/types/schema/Doc.d.ts +69 -0
  143. package/dist/types/schema/Doc.d.ts.map +1 -0
  144. package/dist/types/schema/DocFilter.d.ts +101 -0
  145. package/dist/types/schema/DocFilter.d.ts.map +1 -0
  146. package/dist/types/schema/DocGroup.d.ts +113 -0
  147. package/dist/types/schema/DocGroup.d.ts.map +1 -0
  148. package/dist/types/schema/DocMetadata.d.ts +77 -0
  149. package/dist/types/schema/DocMetadata.d.ts.map +1 -0
  150. package/dist/types/schema/Question.d.ts +163 -0
  151. package/dist/types/schema/Question.d.ts.map +1 -0
  152. package/dist/types/schema/index.d.ts +34 -0
  153. package/dist/types/schema/index.d.ts.map +1 -0
  154. package/dist/types/types/client.d.ts +149 -0
  155. package/dist/types/types/client.d.ts.map +1 -0
  156. package/dist/types/types/data.d.ts +95 -0
  157. package/dist/types/types/data.d.ts.map +1 -0
  158. package/dist/types/types/events.d.ts +246 -0
  159. package/dist/types/types/events.d.ts.map +1 -0
  160. package/dist/types/types/index.d.ts +34 -0
  161. package/dist/types/types/index.d.ts.map +1 -0
  162. package/dist/types/types/pipeline.d.ts +83 -0
  163. package/dist/types/types/pipeline.d.ts.map +1 -0
  164. package/dist/types/types/task.d.ts +314 -0
  165. package/dist/types/types/task.d.ts.map +1 -0
  166. package/package.json +61 -0
@@ -0,0 +1,226 @@
1
+ "use strict";
2
+ /**
3
+ * MIT License
4
+ *
5
+ * Copyright (c) 2026 RocketRide, Inc.
6
+ *
7
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ * of this software and associated documentation files (the "Software"), to deal
9
+ * in the Software without restriction, including without limitation the rights
10
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ * copies of the Software, and to permit persons to whom the Software is
12
+ * furnished to do so, subject to the following conditions:
13
+ *
14
+ * The above copyright notice and this permission notice shall be included in all
15
+ * copies or substantial portions of the Software.
16
+ *
17
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
+ * SOFTWARE.
24
+ */
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.DAPClient = void 0;
27
+ const DAPBase_1 = require("./DAPBase");
28
+ const exceptions_1 = require("../exceptions");
29
+ /**
30
+ * DAP (Debug Adapter Protocol) client for communicating with RocketRide servers.
31
+ *
32
+ * This class implements the client side of the DAP communication protocol,
33
+ * managing request/response correlation, pending request tracking, and message
34
+ * sequencing. It extends DAPBase to inherit common protocol functionality.
35
+ *
36
+ * Key responsibilities:
37
+ * - Request/response correlation via sequence numbers
38
+ * - Pending request management with promises
39
+ * - Connection lifecycle management
40
+ * - Message routing and handling
41
+ *
42
+ * @extends DAPBase
43
+ */
44
+ class DAPClient extends DAPBase_1.DAPBase {
45
+ constructor(module, transport, config = {}) {
46
+ super(module, transport, config);
47
+ this._pendingRequests = new Map();
48
+ this._sequenceNumber = 0;
49
+ this._requestTimeout = config.requestTimeout;
50
+ }
51
+ /**
52
+ * Generate the next sequence number for outgoing requests.
53
+ */
54
+ getNextSeq() {
55
+ return ++this._sequenceNumber;
56
+ }
57
+ /**
58
+ * Send a message to the DAP server through the transport layer.
59
+ */
60
+ async _send(message) {
61
+ if (!this._transport) {
62
+ throw new Error('Transport not available');
63
+ }
64
+ return this._transport.send(message);
65
+ }
66
+ /**
67
+ * Handle connection established event.
68
+ */
69
+ async onConnected(connectionInfo) {
70
+ await super.onConnected(connectionInfo);
71
+ }
72
+ /**
73
+ * Handle connection attempt failure.
74
+ */
75
+ async onConnectError(error) {
76
+ await super.onConnectError(error);
77
+ }
78
+ /**
79
+ * Handle disconnection event and clean up pending requests.
80
+ */
81
+ async onDisconnected(reason, hasError = false) {
82
+ // Fail all pending requests since connection is lost
83
+ const connectionError = new Error(reason || 'Connection lost');
84
+ for (const [, request] of this._pendingRequests) {
85
+ if (request.timer)
86
+ clearTimeout(request.timer);
87
+ request.reject(connectionError);
88
+ }
89
+ // Clear pending requests
90
+ this._pendingRequests.clear();
91
+ // Notify parent classes
92
+ await super.onDisconnected(reason, hasError);
93
+ }
94
+ /**
95
+ * Handle received messages from the transport layer.
96
+ */
97
+ async onReceive(message) {
98
+ const messageType = message.type;
99
+ if (messageType === 'response') {
100
+ // Handle response correlation
101
+ const requestSeq = message.request_seq;
102
+ if (requestSeq !== undefined && this._pendingRequests.has(requestSeq)) {
103
+ const pendingRequest = this._pendingRequests.get(requestSeq);
104
+ this._pendingRequests.delete(requestSeq);
105
+ if (pendingRequest.timer)
106
+ clearTimeout(pendingRequest.timer);
107
+ pendingRequest.resolve(message);
108
+ }
109
+ else {
110
+ this.debugMessage(`Response received for unknown request: ${JSON.stringify(message)}`);
111
+ }
112
+ }
113
+ else if (messageType === 'event') {
114
+ // Forward events to event handler
115
+ await this.onEvent(message);
116
+ }
117
+ else {
118
+ // Unknown message type
119
+ this.debugMessage(`Unhandled message type: ${JSON.stringify(message)}`);
120
+ }
121
+ }
122
+ /**
123
+ * Send a request and wait for the corresponding response.
124
+ * @param message - The DAP message to send
125
+ * @param timeout - Optional per-request timeout in ms. Overrides the default requestTimeout.
126
+ */
127
+ async request(message, timeout) {
128
+ // Validate required fields
129
+ if (!message.command) {
130
+ this.raiseException(new Error("Request message must include a 'command' field"));
131
+ }
132
+ if (!message.type) {
133
+ this.raiseException(new Error("Request message must include a 'type' field"));
134
+ }
135
+ // Verify connection
136
+ if (!this._transport?.isConnected()) {
137
+ this.raiseException(new Error('Server is not connected'));
138
+ }
139
+ // Generate sequence number for this request
140
+ const seq = this.getNextSeq();
141
+ message.seq = seq;
142
+ // Create promise for response correlation
143
+ return new Promise((resolve, reject) => {
144
+ const entry = { resolve, reject };
145
+ // Set up request timeout if configured
146
+ const effectiveTimeout = timeout ?? this._requestTimeout;
147
+ if (effectiveTimeout) {
148
+ entry.timer = setTimeout(() => {
149
+ if (this._pendingRequests.has(seq)) {
150
+ this._pendingRequests.delete(seq);
151
+ reject(new Error(`Request timed out after ${effectiveTimeout}ms`));
152
+ }
153
+ }, effectiveTimeout);
154
+ }
155
+ // Store the resolve/reject functions for later use
156
+ this._pendingRequests.set(seq, entry);
157
+ // Send request through transport
158
+ this._send(message)
159
+ .catch(_error => {
160
+ this.debugMessage(`Clearing request due to error: ${seq}`);
161
+ // Clean up on send failure
162
+ if (this._pendingRequests.has(seq)) {
163
+ const pending = this._pendingRequests.get(seq);
164
+ if (pending.timer)
165
+ clearTimeout(pending.timer);
166
+ this._pendingRequests.delete(seq);
167
+ }
168
+ reject(new Error('Could not send request'));
169
+ });
170
+ });
171
+ }
172
+ /**
173
+ * Establish connection to the DAP server.
174
+ * When the transport exposes getAuth (e.g. task service), sends auth as the first DAP command
175
+ * and fails connect if authentication fails.
176
+ * @param timeout - Optional overall timeout in ms covering both the WebSocket handshake and auth request.
177
+ */
178
+ async connect(timeout) {
179
+ if (!this._transport) {
180
+ throw new Error('Transport not configured');
181
+ }
182
+ // Track elapsed time so remaining budget can be passed to the auth request
183
+ const start = timeout !== undefined ? Date.now() : 0;
184
+ // Establish transport connection (socket open; no auth on the wire)
185
+ await this._transport.connect(timeout);
186
+ // Calculate remaining timeout for auth request
187
+ let authTimeout;
188
+ if (timeout !== undefined) {
189
+ const elapsed = Date.now() - start;
190
+ authTimeout = Math.max(timeout - elapsed, 0);
191
+ }
192
+ // First DAP message must be auth
193
+ const auth = this._transport.getAuth() ?? '';
194
+ const resp = await this.request({
195
+ type: 'request',
196
+ command: 'auth',
197
+ seq: 0, // request() overwrites with next seq
198
+ arguments: { auth },
199
+ }, authTimeout);
200
+ const success = resp.success;
201
+ if (!success) {
202
+ await this._transport.disconnect(resp.message ?? 'Authentication failed', true);
203
+ throw new exceptions_1.AuthenticationException(resp);
204
+ }
205
+ // Only now notify connected (transport resolved on socket open; callback runs after auth)
206
+ const connectionInfo = this._transport.getConnectionInfo();
207
+ await this.onConnected(connectionInfo);
208
+ }
209
+ /**
210
+ * Close connection to the DAP server and clean up resources.
211
+ */
212
+ async disconnect() {
213
+ // Close transport connection
214
+ if (this._transport) {
215
+ await this._transport.disconnect();
216
+ }
217
+ }
218
+ /**
219
+ * Check if connected to server.
220
+ */
221
+ isConnected() {
222
+ return this._transport?.isConnected() || false;
223
+ }
224
+ }
225
+ exports.DAPClient = DAPClient;
226
+ //# sourceMappingURL=DAPClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DAPClient.js","sourceRoot":"","sources":["../../../src/client/core/DAPClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ /**
3
+ * MIT License
4
+ *
5
+ * Copyright (c) 2026 RocketRide, Inc.
6
+ *
7
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ * of this software and associated documentation files (the "Software"), to deal
9
+ * in the Software without restriction, including without limitation the rights
10
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ * copies of the Software, and to permit persons to whom the Software is
12
+ * furnished to do so, subject to the following conditions:
13
+ *
14
+ * The above copyright notice and this permission notice shall be included in all
15
+ * copies or substantial portions of the Software.
16
+ *
17
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
+ * SOFTWARE.
24
+ */
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.TransportBase = void 0;
27
+ /**
28
+ * Abstract base class for DAP transport implementations.
29
+ *
30
+ * This class defines the standard interface that all transport implementations
31
+ * must follow for DAP communication. It provides common functionality for
32
+ * callback management, connection state tracking, and debug message routing.
33
+ *
34
+ * Concrete implementations must provide:
35
+ * - connect(): Establish the transport connection
36
+ * - disconnect(): Close the transport connection
37
+ * - send(): Transmit a DAP message
38
+ *
39
+ * @abstract This class must be extended by concrete transport implementations
40
+ */
41
+ class TransportBase {
42
+ constructor() {
43
+ this._connected = false;
44
+ }
45
+ /**
46
+ * Send debug message to callback if available.
47
+ */
48
+ _debugMessage(message) {
49
+ if (this._onCallerDebugMessage) {
50
+ this._onCallerDebugMessage(message);
51
+ }
52
+ }
53
+ /**
54
+ * Send protocol debug message to callback if available.
55
+ */
56
+ _debugProtocol(message) {
57
+ if (this._onCallerDebugProtocol) {
58
+ this._onCallerDebugProtocol(message);
59
+ }
60
+ }
61
+ /**
62
+ * Forward received message to callback if available.
63
+ */
64
+ async _transportReceive(message) {
65
+ this._debugProtocol(`RECV: ${JSON.stringify(message)}`);
66
+ if (this._onCallerReceive) {
67
+ await this._onCallerReceive(message);
68
+ }
69
+ }
70
+ /**
71
+ * Connection info for the "connected" callback (e.g. URI). Default none.
72
+ */
73
+ getConnectionInfo() {
74
+ return undefined;
75
+ }
76
+ /**
77
+ * Notify about connection establishment.
78
+ */
79
+ async _transportConnected(connectionInfo) {
80
+ this._debugMessage(`Connected, info=${connectionInfo}`);
81
+ if (this._onCallerConnected) {
82
+ await this._onCallerConnected(connectionInfo);
83
+ }
84
+ }
85
+ /**
86
+ * Notify about connection closure.
87
+ */
88
+ async _transportDisconnected(reason, hasError = false) {
89
+ this._debugMessage(`Disconnected, reason=${reason}, error=${hasError}`);
90
+ if (this._onCallerDisconnected) {
91
+ await this._onCallerDisconnected(reason, hasError);
92
+ }
93
+ }
94
+ /**
95
+ * Bind callback functions to the transport.
96
+ *
97
+ * This must be called before using the transport for communication.
98
+ * The callbacks handle debugging, connection events, and message processing.
99
+ */
100
+ bind(callbacks) {
101
+ if (callbacks.onDebugMessage) {
102
+ this._onCallerDebugMessage = callbacks.onDebugMessage;
103
+ }
104
+ if (callbacks.onDebugProtocol) {
105
+ this._onCallerDebugProtocol = callbacks.onDebugProtocol;
106
+ }
107
+ if (callbacks.onReceive) {
108
+ this._onCallerReceive = callbacks.onReceive;
109
+ }
110
+ if (callbacks.onConnected) {
111
+ this._onCallerConnected = callbacks.onConnected;
112
+ }
113
+ if (callbacks.onDisconnected) {
114
+ this._onCallerDisconnected = callbacks.onDisconnected;
115
+ }
116
+ }
117
+ /**
118
+ * Auth credential for connect flow (e.g. first DAP auth command). Default none.
119
+ */
120
+ getAuth() {
121
+ return undefined;
122
+ }
123
+ /**
124
+ * Update auth credential. Takes effect on the next connect().
125
+ */
126
+ setAuth(_auth) { }
127
+ /**
128
+ * Update connection URI. Takes effect on the next connect().
129
+ */
130
+ setUri(_uri) { }
131
+ /**
132
+ * Check if the transport is currently connected.
133
+ */
134
+ isConnected() {
135
+ return this._connected;
136
+ }
137
+ /**
138
+ * Establish connection to remote endpoint (client-side).
139
+ * @param timeout - Optional connection timeout in milliseconds. Falls back to default when not provided.
140
+ */
141
+ async connect(_timeout) {
142
+ // Default implementation - override in concrete classes
143
+ }
144
+ /**
145
+ * Accept incoming connection (server-side).
146
+ */
147
+ async accept(_connectionInfo) {
148
+ // Default implementation - override in concrete classes
149
+ }
150
+ }
151
+ exports.TransportBase = TransportBase;
152
+ //# sourceMappingURL=TransportBase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransportBase.js","sourceRoot":"","sources":["../../../src/client/core/TransportBase.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;;;AAIH;;;;;;;;;;;;;GAaG;AACH,MAAsB,aAAa;IAAnC;QACW,eAAU,GAAG,KAAK,CAAC;IAwI9B,CAAC;IAjIA;;OAEG;IACO,aAAa,CAAC,OAAe;QACtC,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAChC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC;IACF,CAAC;IAED;;OAEG;IACO,cAAc,CAAC,OAAe;QACvC,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACjC,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;IACF,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,iBAAiB,CAAC,OAAmB;QACpD,IAAI,CAAC,cAAc,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACxD,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;IACF,CAAC;IAED;;OAEG;IACH,iBAAiB;QAChB,OAAO,SAAS,CAAC;IAClB,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,mBAAmB,CAAC,cAAuB;QAC1D,IAAI,CAAC,aAAa,CAAC,mBAAmB,cAAc,EAAE,CAAC,CAAC;QACxD,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC7B,MAAM,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;QAC/C,CAAC;IACF,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,sBAAsB,CAAC,MAAe,EAAE,QAAQ,GAAG,KAAK;QACvE,IAAI,CAAC,aAAa,CAAC,wBAAwB,MAAM,WAAW,QAAQ,EAAE,CAAC,CAAC;QACxE,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACpD,CAAC;IACF,CAAC;IAED;;;;;OAKG;IACH,IAAI,CAAC,SAA6B;QACjC,IAAI,SAAS,CAAC,cAAc,EAAE,CAAC;YAC9B,IAAI,CAAC,qBAAqB,GAAG,SAAS,CAAC,cAAc,CAAC;QACvD,CAAC;QACD,IAAI,SAAS,CAAC,eAAe,EAAE,CAAC;YAC/B,IAAI,CAAC,sBAAsB,GAAG,SAAS,CAAC,eAAe,CAAC;QACzD,CAAC;QACD,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;YACzB,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC,SAAS,CAAC;QAC7C,CAAC;QACD,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;YAC3B,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC,WAAW,CAAC;QACjD,CAAC;QACD,IAAI,SAAS,CAAC,cAAc,EAAE,CAAC;YAC9B,IAAI,CAAC,qBAAqB,GAAG,SAAS,CAAC,cAAc,CAAC;QACvD,CAAC;IACF,CAAC;IAED;;OAEG;IACH,OAAO;QACN,OAAO,SAAS,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,KAAa,IAAU,CAAC;IAEhC;;OAEG;IACH,MAAM,CAAC,IAAY,IAAU,CAAC;IAE9B;;OAEG;IACH,WAAW;QACV,OAAO,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO,CAAC,QAAiB;QAC9B,wDAAwD;IACzD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,eAAwB;QACpC,wDAAwD;IACzD,CAAC;CAaD;AAzID,sCAyIC"}