tywrap 0.7.0 → 0.9.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.
- package/README.md +36 -11
- package/SECURITY.md +39 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +8 -0
- package/dist/config/index.js.map +1 -1
- package/dist/core/annotation-parser.d.ts +2 -1
- package/dist/core/annotation-parser.d.ts.map +1 -1
- package/dist/core/annotation-parser.js +6 -3
- package/dist/core/annotation-parser.js.map +1 -1
- package/dist/core/emit-call.d.ts.map +1 -1
- package/dist/core/emit-call.js +1 -1
- package/dist/core/emit-call.js.map +1 -1
- package/dist/core/generator.d.ts +23 -4
- package/dist/core/generator.d.ts.map +1 -1
- package/dist/core/generator.js +243 -170
- package/dist/core/generator.js.map +1 -1
- package/dist/core/mapper.d.ts +3 -2
- package/dist/core/mapper.d.ts.map +1 -1
- package/dist/core/mapper.js +5 -5
- package/dist/core/mapper.js.map +1 -1
- package/dist/dev.d.ts.map +1 -1
- package/dist/dev.js +1 -3
- package/dist/dev.js.map +1 -1
- package/dist/index.d.ts +7 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/dist/runtime/base-bridge.d.ts +3 -7
- package/dist/runtime/base-bridge.d.ts.map +1 -1
- package/dist/runtime/base-bridge.js +4 -17
- package/dist/runtime/base-bridge.js.map +1 -1
- package/dist/runtime/bounded-context.d.ts +3 -22
- package/dist/runtime/bounded-context.d.ts.map +1 -1
- package/dist/runtime/bounded-context.js +13 -53
- package/dist/runtime/bounded-context.js.map +1 -1
- package/dist/runtime/bridge-codec.d.ts +1 -1
- package/dist/runtime/bridge-codec.d.ts.map +1 -1
- package/dist/runtime/bridge-codec.js +78 -55
- package/dist/runtime/bridge-codec.js.map +1 -1
- package/dist/runtime/errors.d.ts +16 -0
- package/dist/runtime/errors.d.ts.map +1 -1
- package/dist/runtime/errors.js +17 -0
- package/dist/runtime/errors.js.map +1 -1
- package/dist/runtime/frame-codec.d.ts +111 -0
- package/dist/runtime/frame-codec.d.ts.map +1 -0
- package/dist/runtime/frame-codec.js +352 -0
- package/dist/runtime/frame-codec.js.map +1 -0
- package/dist/runtime/http-transport.d.ts +1 -1
- package/dist/runtime/http-transport.d.ts.map +1 -1
- package/dist/runtime/http-transport.js +1 -1
- package/dist/runtime/http-transport.js.map +1 -1
- package/dist/runtime/index.d.ts +2 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +2 -1
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/node.d.ts +7 -23
- package/dist/runtime/node.d.ts.map +1 -1
- package/dist/runtime/node.js +5 -78
- package/dist/runtime/node.js.map +1 -1
- package/dist/runtime/pooled-transport.d.ts +120 -59
- package/dist/runtime/pooled-transport.d.ts.map +1 -1
- package/dist/runtime/pooled-transport.js +345 -78
- package/dist/runtime/pooled-transport.js.map +1 -1
- package/dist/runtime/pyodide-bootstrap-core.generated.d.ts.map +1 -1
- package/dist/runtime/pyodide-bootstrap-core.generated.js +1 -1
- package/dist/runtime/pyodide-bootstrap-core.generated.js.map +1 -1
- package/dist/runtime/pyodide-transport.d.ts +1 -1
- package/dist/runtime/pyodide-transport.d.ts.map +1 -1
- package/dist/runtime/pyodide-transport.js +2 -3
- package/dist/runtime/pyodide-transport.js.map +1 -1
- package/dist/runtime/rpc-client.d.ts +7 -36
- package/dist/runtime/rpc-client.d.ts.map +1 -1
- package/dist/runtime/rpc-client.js +37 -72
- package/dist/runtime/rpc-client.js.map +1 -1
- package/dist/runtime/subprocess-transport.d.ts +134 -8
- package/dist/runtime/subprocess-transport.d.ts.map +1 -1
- package/dist/runtime/subprocess-transport.js +490 -65
- package/dist/runtime/subprocess-transport.js.map +1 -1
- package/dist/runtime/timed-out-request-tracker.d.ts +2 -1
- package/dist/runtime/timed-out-request-tracker.d.ts.map +1 -1
- package/dist/runtime/transport.d.ts +90 -18
- package/dist/runtime/transport.d.ts.map +1 -1
- package/dist/runtime/transport.js +21 -1
- package/dist/runtime/transport.js.map +1 -1
- package/dist/runtime/validators.d.ts +49 -0
- package/dist/runtime/validators.d.ts.map +1 -1
- package/dist/runtime/validators.js +152 -0
- package/dist/runtime/validators.js.map +1 -1
- package/dist/types/index.d.ts +14 -15
- package/dist/types/index.d.ts.map +1 -1
- package/dist/tywrap.d.ts +3 -2
- package/dist/tywrap.d.ts.map +1 -1
- package/dist/tywrap.js +140 -21
- package/dist/tywrap.js.map +1 -1
- package/dist/utils/cache.d.ts +3 -16
- package/dist/utils/cache.d.ts.map +1 -1
- package/dist/utils/codec.d.ts +1 -0
- package/dist/utils/codec.d.ts.map +1 -1
- package/dist/utils/codec.js +165 -17
- package/dist/utils/codec.js.map +1 -1
- package/dist/utils/ir-cache.d.ts +2 -1
- package/dist/utils/ir-cache.d.ts.map +1 -1
- package/dist/utils/runtime.d.ts +0 -29
- package/dist/utils/runtime.d.ts.map +1 -1
- package/dist/utils/runtime.js +16 -107
- package/dist/utils/runtime.js.map +1 -1
- package/dist/version.js +1 -1
- package/package.json +7 -6
- package/runtime/frame_codec.py +430 -0
- package/runtime/python_bridge.py +213 -54
- package/runtime/tywrap_bridge_core.py +217 -147
- package/src/config/index.ts +11 -0
- package/src/core/annotation-parser.ts +9 -5
- package/src/core/emit-call.ts +1 -7
- package/src/core/generator.ts +315 -205
- package/src/core/mapper.ts +8 -8
- package/src/dev.ts +1 -3
- package/src/index.ts +7 -3
- package/src/runtime/base-bridge.ts +5 -30
- package/src/runtime/bounded-context.ts +12 -67
- package/src/runtime/bridge-codec.ts +94 -65
- package/src/runtime/errors.ts +21 -0
- package/src/runtime/frame-codec.ts +469 -0
- package/src/runtime/http-transport.ts +6 -1
- package/src/runtime/index.ts +7 -6
- package/src/runtime/node.ts +17 -104
- package/src/runtime/pooled-transport.ts +424 -90
- package/src/runtime/pyodide-bootstrap-core.generated.ts +1 -1
- package/src/runtime/pyodide-transport.ts +7 -3
- package/src/runtime/rpc-client.ts +58 -93
- package/src/runtime/subprocess-transport.ts +585 -80
- package/src/runtime/timed-out-request-tracker.ts +1 -1
- package/src/runtime/transport.ts +112 -22
- package/src/runtime/validators.ts +204 -0
- package/src/types/index.ts +21 -35
- package/src/tywrap.ts +157 -30
- package/src/utils/cache.ts +3 -3
- package/src/utils/codec.ts +205 -16
- package/src/utils/ir-cache.ts +1 -1
- package/src/utils/runtime.ts +17 -128
- package/src/version.ts +1 -1
- package/dist/core/discovery.d.ts +0 -103
- package/dist/core/discovery.d.ts.map +0 -1
- package/dist/core/discovery.js +0 -380
- package/dist/core/discovery.js.map +0 -1
- package/dist/core/validation.d.ts +0 -102
- package/dist/core/validation.d.ts.map +0 -1
- package/dist/core/validation.js +0 -490
- package/dist/core/validation.js.map +0 -1
- package/dist/runtime/base.d.ts +0 -22
- package/dist/runtime/base.d.ts.map +0 -1
- package/dist/runtime/base.js +0 -23
- package/dist/runtime/base.js.map +0 -1
- package/dist/runtime/transport-pool.d.ts +0 -196
- package/dist/runtime/transport-pool.d.ts.map +0 -1
- package/dist/runtime/transport-pool.js +0 -418
- package/dist/runtime/transport-pool.js.map +0 -1
- package/runtime/__pycache__/_tywrap_member_fixtures.cpython-311.pyc +0 -0
- package/runtime/__pycache__/safe_codec.cpython-311.pyc +0 -0
- package/runtime/__pycache__/tywrap_bridge_core.cpython-311.pyc +0 -0
- package/runtime/safe_codec.py +0 -352
- package/src/core/discovery.ts +0 -477
- package/src/core/validation.ts +0 -729
- package/src/runtime/base.ts +0 -24
- package/src/runtime/transport-pool.ts +0 -538
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-client.js","sourceRoot":"","sources":["../../src/runtime/rpc-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,EAAE,cAAc,EAAuB,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,WAAW,EAAqB,MAAM,mBAAmB,CAAC;AACnE,OAAO,EACL,WAAW,EACX,uBAAuB,GAIxB,MAAM,gBAAgB,CAAC;AA4BxB,SAAS,yBAAyB,CAAC,KAAc;IAC/C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC;QACrF,MAAM,IAAI,mBAAmB,CAAC,qDAAqD,IAAI,EAAE,CAAC,CAAC;IAC7F,CAAC;
|
|
1
|
+
{"version":3,"file":"rpc-client.js","sourceRoot":"","sources":["../../src/runtime/rpc-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* @see https://github.com/bbopen/tywrap/issues/149
|
|
14
14
|
*/
|
|
15
15
|
import { DisposableBase } from './bounded-context.js';
|
|
16
|
-
import type
|
|
16
|
+
import { type Transport, type TransportCapabilities } from './transport.js';
|
|
17
17
|
/**
|
|
18
18
|
* Options for the SubprocessTransport.
|
|
19
19
|
*/
|
|
@@ -32,6 +32,14 @@ export interface SubprocessTransportOptions {
|
|
|
32
32
|
restartAfterRequests?: number;
|
|
33
33
|
/** Write queue timeout in milliseconds. Default: 30000ms */
|
|
34
34
|
writeQueueTimeoutMs?: number;
|
|
35
|
+
/**
|
|
36
|
+
* Cap (UTF-8 bytes) on a single chunked RESPONSE reassembled in memory. A
|
|
37
|
+
* frame stream whose declared or accumulated payload exceeds this fails loud
|
|
38
|
+
* instead of buffering, so chunking cannot OOM the process before the codec's
|
|
39
|
+
* payload cap rejects the result. Should track the codec's `maxPayloadBytes`.
|
|
40
|
+
* Default: 10 MiB (matches the codec default).
|
|
41
|
+
*/
|
|
42
|
+
maxReassemblyBytes?: number;
|
|
35
43
|
}
|
|
36
44
|
/**
|
|
37
45
|
* Transport implementation for subprocess-based Python communication.
|
|
@@ -64,19 +72,48 @@ export declare class SubprocessTransport extends DisposableBase implements Trans
|
|
|
64
72
|
private readonly envOverrides;
|
|
65
73
|
private readonly cwd;
|
|
66
74
|
private readonly maxLineLength;
|
|
75
|
+
private readonly maxReassemblyBytes;
|
|
67
76
|
private readonly restartAfterRequests;
|
|
68
77
|
private readonly writeQueueTimeoutMs;
|
|
78
|
+
/**
|
|
79
|
+
* Per-frame UTF-8 data ceiling. The packaged Python peer receives this
|
|
80
|
+
* transport's `maxLineLength` when it is spawned, so request and response
|
|
81
|
+
* framing use the same fixed ceiling without runtime negotiation.
|
|
82
|
+
*/
|
|
83
|
+
private readonly frameBytes;
|
|
84
|
+
/**
|
|
85
|
+
* Reassembles `tywrap-frame/1` response frames into single logical response
|
|
86
|
+
* lines. Per-id discard tracks
|
|
87
|
+
* timed-out/aborted streams so late frames cannot desync stdout.
|
|
88
|
+
*/
|
|
89
|
+
private responseReassembler;
|
|
69
90
|
private process;
|
|
70
91
|
private processExited;
|
|
71
92
|
private processError;
|
|
72
93
|
private stdoutBuffer;
|
|
94
|
+
private stdoutScanOffset;
|
|
73
95
|
private stderrBuffer;
|
|
74
96
|
private readonly pending;
|
|
75
97
|
private readonly timedOutRequests;
|
|
76
98
|
private requestCount;
|
|
77
99
|
private needsRestart;
|
|
100
|
+
/** Serializes restart decisions with dispatch reservations. */
|
|
101
|
+
private dispatchMutex;
|
|
102
|
+
private activeDispatches;
|
|
103
|
+
private readonly dispatchDrainWaiters;
|
|
78
104
|
private readonly writeQueue;
|
|
105
|
+
private writeQueueHead;
|
|
79
106
|
private draining;
|
|
107
|
+
/**
|
|
108
|
+
* Per-logical-request write mutex (W5). When a request is chunked into
|
|
109
|
+
* `tywrap-frame/1` frames, all of that request's frames must reach stdin
|
|
110
|
+
* contiguously — no other request's frame (or single line) may interleave —
|
|
111
|
+
* or the Python reassembler would see frames from two ids mixed on one stream.
|
|
112
|
+
* `writeChunkedRequest` chains the whole frame burst onto this tail; the
|
|
113
|
+
* single-line write path also serializes behind it so a small request issued
|
|
114
|
+
* concurrently never slips between another request's frames.
|
|
115
|
+
*/
|
|
116
|
+
private writeMutex;
|
|
80
117
|
/**
|
|
81
118
|
* Create a new SubprocessTransport.
|
|
82
119
|
*
|
|
@@ -91,18 +128,31 @@ export declare class SubprocessTransport extends DisposableBase implements Trans
|
|
|
91
128
|
* @param signal - Optional AbortSignal for cancellation
|
|
92
129
|
* @returns The raw JSON response string
|
|
93
130
|
*/
|
|
94
|
-
send(message: string, timeoutMs: number, signal?: AbortSignal): Promise<string>;
|
|
131
|
+
send(message: string, timeoutMs: number, signal?: AbortSignal, requestId?: number): Promise<string>;
|
|
132
|
+
/**
|
|
133
|
+
* Atomically reserve the current process generation for one request. A
|
|
134
|
+
* threshold restart waits for every request reserved on the old generation
|
|
135
|
+
* to settle before killing it; later callers remain queued behind this lock.
|
|
136
|
+
*/
|
|
137
|
+
private withDispatchMutex;
|
|
138
|
+
private reserveDispatch;
|
|
139
|
+
private releaseDispatch;
|
|
140
|
+
private isLifecycleEnding;
|
|
95
141
|
/**
|
|
96
142
|
* Static capability descriptor for the subprocess backend.
|
|
97
143
|
*
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
*
|
|
101
|
-
*
|
|
144
|
+
* Per the {@link Transport.capabilities} contract this is lifecycle-independent
|
|
145
|
+
* (safe before `init()` / after `dispose()`) and never makes a Python round
|
|
146
|
+
* trip. Subprocess carries Arrow IPC and arbitrary binary (bytes envelopes)
|
|
147
|
+
* over the JSONL stream. `supportsChunking` is always `true` because the npm
|
|
148
|
+
* package ships both `tywrap-frame/1` peers. `supportsStreaming` stays `false`.
|
|
149
|
+
* `maxFrameBytes` is the fixed per-frame data ceiling supplied to the Python
|
|
150
|
+
* bridge at spawn time.
|
|
102
151
|
*/
|
|
103
152
|
capabilities(): TransportCapabilities;
|
|
104
153
|
/**
|
|
105
|
-
* Initialize the transport by spawning the Python process.
|
|
154
|
+
* Initialize the transport by spawning the Python process. The packaged
|
|
155
|
+
* bridge always speaks `tywrap-frame/1`.
|
|
106
156
|
*/
|
|
107
157
|
protected doInit(): Promise<void>;
|
|
108
158
|
/**
|
|
@@ -127,14 +177,50 @@ export declare class SubprocessTransport extends DisposableBase implements Trans
|
|
|
127
177
|
* Works independently of restartAfterRequests setting.
|
|
128
178
|
*/
|
|
129
179
|
private markForRestart;
|
|
180
|
+
/**
|
|
181
|
+
* Effective stdout line ceiling.
|
|
182
|
+
*
|
|
183
|
+
* A single wire line may be a `tywrap-frame/1` envelope whose
|
|
184
|
+
* `data` slice is capped at `maxLineLength` UTF-8 bytes by the bridge, but the
|
|
185
|
+
* JSON envelope adds escaping (`"`/`\`) plus fixed keys; the ceiling is widened
|
|
186
|
+
* to bound that overhead so a legitimate frame line is never rejected while a
|
|
187
|
+
* runaway/garbage line still is.
|
|
188
|
+
*/
|
|
189
|
+
private effectiveLineCeiling;
|
|
130
190
|
/**
|
|
131
191
|
* Handle stdout data from the Python process.
|
|
132
192
|
*/
|
|
133
193
|
private handleStdoutData;
|
|
134
194
|
/**
|
|
135
195
|
* Handle a complete response line from stdout.
|
|
196
|
+
*
|
|
197
|
+
* A line may be a `tywrap-frame/1` envelope: it is
|
|
198
|
+
* routed into the per-id {@link Reassembler}, which returns the reassembled
|
|
199
|
+
* logical response only once the stream is complete and valid. Single-line
|
|
200
|
+
* (non-frame) responses keep the original fast path unchanged.
|
|
136
201
|
*/
|
|
137
202
|
private handleResponseLine;
|
|
203
|
+
/**
|
|
204
|
+
* Route one `tywrap-frame/1` response frame into the reassembler.
|
|
205
|
+
*
|
|
206
|
+
* On completion the reassembled logical line resolves the pending request. The
|
|
207
|
+
* reassembler validates structure, ordering, byte count, and UTF-8 internally
|
|
208
|
+
* and throws on any framing violation (malformed/duplicate/byte-mismatch/
|
|
209
|
+
* unknown-protocol) — those reject the pending id and mark the subprocess for
|
|
210
|
+
* restart, since stdout can no longer be trusted to be frame-aligned. Frames
|
|
211
|
+
* for a timed-out/aborted id are silently discarded by the reassembler (it
|
|
212
|
+
* returns `null` and tracks the discard set) so late multi-frame responses
|
|
213
|
+
* cannot desync the stream.
|
|
214
|
+
*/
|
|
215
|
+
private handleResponseFrame;
|
|
216
|
+
/**
|
|
217
|
+
* Reject the pending request correlated to a frame id, if one exists.
|
|
218
|
+
*
|
|
219
|
+
* Used when frame reassembly throws. If the id is unknown (e.g. it already
|
|
220
|
+
* timed out and was dropped from `pending`), the error still surfaces as a
|
|
221
|
+
* protocol error so the desync is not swallowed silently.
|
|
222
|
+
*/
|
|
223
|
+
private rejectFrameId;
|
|
138
224
|
/**
|
|
139
225
|
* Handle stderr data from the Python process.
|
|
140
226
|
*/
|
|
@@ -178,6 +264,38 @@ export declare class SubprocessTransport extends DisposableBase implements Trans
|
|
|
178
264
|
* Write data to stdin with backpressure handling.
|
|
179
265
|
*/
|
|
180
266
|
private writeToStdin;
|
|
267
|
+
/**
|
|
268
|
+
* Write one logical request to stdin, fragmenting it into `tywrap-frame/1`
|
|
269
|
+
* request frames when the encoded request exceeds
|
|
270
|
+
* the per-frame ceiling (W5 — the mirror of W4's response chunking).
|
|
271
|
+
*
|
|
272
|
+
* Both the chunked and single-line paths run under {@link writeMutex} so a
|
|
273
|
+
* logical request's bytes (one line, or a burst of frames) reach stdin
|
|
274
|
+
* contiguously: a small request issued concurrently can never interleave
|
|
275
|
+
* between another request's frames, which would desync the Python
|
|
276
|
+
* reassembler (it correlates frames by id, but the JSONL stream itself must
|
|
277
|
+
* stay frame-aligned). The mutex tail is advanced regardless of success so a
|
|
278
|
+
* failed write never wedges every subsequent request.
|
|
279
|
+
*
|
|
280
|
+
* @param message - the encoded logical JSON request (no trailing newline)
|
|
281
|
+
* @param messageId - the request's correlation id (already validated integer)
|
|
282
|
+
* @param signal - optional abort signal; an abort observed between frames
|
|
283
|
+
* stops further frames and rejects this send (the pending entry is rejected
|
|
284
|
+
* by the abort handler / the caller's `.catch`).
|
|
285
|
+
*/
|
|
286
|
+
private writeRequest;
|
|
287
|
+
/**
|
|
288
|
+
* Fragment a logical request into `tywrap-frame/1` request frames and write
|
|
289
|
+
* them contiguously (one JSONL line per frame). Runs while holding the write
|
|
290
|
+
* mutex (see {@link writeRequest}), so no other write interleaves.
|
|
291
|
+
*
|
|
292
|
+
* Each frame is awaited in turn so backpressure on stdin is respected. Before
|
|
293
|
+
* every frame the abort signal and process liveness are re-checked: an abort
|
|
294
|
+
* mid-burst stops the remaining frames and rejects the send LOUD (the Python
|
|
295
|
+
* reassembler drops the now-incomplete id when the next request's frames /
|
|
296
|
+
* timeout arrive, exactly as the response side handles a discarded id).
|
|
297
|
+
*/
|
|
298
|
+
private writeChunkedRequest;
|
|
181
299
|
/**
|
|
182
300
|
* Reject and clear every entry currently in the write queue.
|
|
183
301
|
* Clears each entry's timeout before rejecting so no late timer fires.
|
|
@@ -207,7 +325,15 @@ export declare class SubprocessTransport extends DisposableBase implements Trans
|
|
|
207
325
|
*/
|
|
208
326
|
private withStderrTail;
|
|
209
327
|
/**
|
|
210
|
-
* Handle a protocol error by rejecting all pending requests
|
|
328
|
+
* Handle a protocol error by rejecting all pending requests and marking the
|
|
329
|
+
* subprocess for restart.
|
|
330
|
+
*
|
|
331
|
+
* Every caller represents genuine stdout-stream corruption (a too-long line, a
|
|
332
|
+
* response with no `id`, a frame with no reassembler, or a truly unexpected id
|
|
333
|
+
* — benign late responses from timed-out requests are already filtered upstream
|
|
334
|
+
* via {@link timedOutRequests}). After such an error stdout can no longer be
|
|
335
|
+
* trusted to be line/frame-aligned, so the process is marked for restart —
|
|
336
|
+
* matching the frame-reassembly-corruption path and the framing spec.
|
|
211
337
|
*/
|
|
212
338
|
private handleProtocolError;
|
|
213
339
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subprocess-transport.d.ts","sourceRoot":"","sources":["../../src/runtime/subprocess-transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"subprocess-transport.d.ts","sourceRoot":"","sources":["../../src/runtime/subprocess-transport.ts"],"names":[],"mappings":"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"}
|