tywrap 0.4.0 → 0.5.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 +1 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/runtime/base.d.ts +7 -7
- package/dist/runtime/base.js +8 -8
- package/dist/runtime/bounded-context.d.ts +15 -31
- package/dist/runtime/bounded-context.d.ts.map +1 -1
- package/dist/runtime/bounded-context.js +16 -15
- package/dist/runtime/bounded-context.js.map +1 -1
- package/dist/runtime/http.d.ts +24 -5
- package/dist/runtime/http.d.ts.map +1 -1
- package/dist/runtime/http.js +57 -12
- package/dist/runtime/http.js.map +1 -1
- package/dist/runtime/node.d.ts +33 -7
- package/dist/runtime/node.d.ts.map +1 -1
- package/dist/runtime/node.js +139 -151
- package/dist/runtime/node.js.map +1 -1
- package/dist/runtime/pooled-transport.d.ts +2 -18
- package/dist/runtime/pooled-transport.d.ts.map +1 -1
- package/dist/runtime/pooled-transport.js +2 -29
- package/dist/runtime/pooled-transport.js.map +1 -1
- package/dist/runtime/process-io.d.ts +2 -18
- package/dist/runtime/process-io.d.ts.map +1 -1
- package/dist/runtime/process-io.js +3 -30
- package/dist/runtime/process-io.js.map +1 -1
- package/dist/runtime/pyodide-bootstrap-core.generated.d.ts +12 -0
- package/dist/runtime/pyodide-bootstrap-core.generated.d.ts.map +1 -0
- package/dist/runtime/pyodide-bootstrap-core.generated.js +12 -0
- package/dist/runtime/pyodide-bootstrap-core.generated.js.map +1 -0
- package/dist/runtime/pyodide-io.d.ts +7 -37
- package/dist/runtime/pyodide-io.d.ts.map +1 -1
- package/dist/runtime/pyodide-io.js +90 -214
- package/dist/runtime/pyodide-io.js.map +1 -1
- package/dist/runtime/pyodide.d.ts +25 -5
- package/dist/runtime/pyodide.d.ts.map +1 -1
- package/dist/runtime/pyodide.js +59 -10
- package/dist/runtime/pyodide.js.map +1 -1
- package/dist/runtime/{bridge-protocol.d.ts → rpc-client.d.ts} +59 -46
- package/dist/runtime/rpc-client.d.ts.map +1 -0
- package/dist/runtime/{bridge-protocol.js → rpc-client.js} +60 -42
- package/dist/runtime/rpc-client.js.map +1 -0
- package/dist/runtime/worker-pool.d.ts +2 -19
- package/dist/runtime/worker-pool.d.ts.map +1 -1
- package/dist/runtime/worker-pool.js +2 -30
- package/dist/runtime/worker-pool.js.map +1 -1
- package/dist/types/index.d.ts +8 -3
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +10 -10
- package/runtime/__pycache__/safe_codec.cpython-311.pyc +0 -0
- package/runtime/__pycache__/tywrap_bridge_core.cpython-311.pyc +0 -0
- package/runtime/python_bridge.py +85 -702
- package/runtime/safe_codec.py +10 -2
- package/runtime/tywrap_bridge_core.py +875 -0
- package/src/index.ts +6 -6
- package/src/runtime/base.ts +8 -8
- package/src/runtime/bounded-context.ts +17 -56
- package/src/runtime/http.ts +85 -13
- package/src/runtime/node.ts +165 -217
- package/src/runtime/pooled-transport.ts +2 -57
- package/src/runtime/process-io.ts +3 -55
- package/src/runtime/pyodide-bootstrap-core.generated.ts +12 -0
- package/src/runtime/pyodide-io.ts +92 -243
- package/src/runtime/pyodide.ts +87 -10
- package/src/runtime/{bridge-protocol.ts → rpc-client.ts} +76 -49
- package/src/runtime/worker-pool.ts +2 -58
- package/src/types/index.ts +20 -4
- package/dist/runtime/bridge-core.d.ts +0 -65
- package/dist/runtime/bridge-core.d.ts.map +0 -1
- package/dist/runtime/bridge-core.js +0 -379
- package/dist/runtime/bridge-core.js.map +0 -1
- package/dist/runtime/bridge-protocol.d.ts.map +0 -1
- package/dist/runtime/bridge-protocol.js.map +0 -1
- package/src/runtime/bridge-core.ts +0 -494
package/README.md
CHANGED
|
@@ -205,6 +205,7 @@ registerArrowDecoder(bytes => tableFromIPC(bytes));
|
|
|
205
205
|
- [Configuration](https://bbopen.github.io/tywrap/guide/configuration)
|
|
206
206
|
- [API Reference](https://bbopen.github.io/tywrap/reference/api/)
|
|
207
207
|
- [Troubleshooting](https://bbopen.github.io/tywrap/troubleshooting/)
|
|
208
|
+
- [Roadmap](./ROADMAP.md)
|
|
208
209
|
|
|
209
210
|
## Contributing
|
|
210
211
|
|
package/dist/index.d.ts
CHANGED
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
import { tywrap } from './tywrap.js';
|
|
8
8
|
export type { TywrapConfig, ResolvedTywrapConfig } from './config/index.js';
|
|
9
9
|
export { defineConfig, resolveConfig } from './config/index.js';
|
|
10
|
-
export {
|
|
11
|
-
export {
|
|
10
|
+
export { DisposableBase, type ContextState, type ExecuteOptions, } from './runtime/bounded-context.js';
|
|
11
|
+
export { RpcClient, type RpcClientOptions } from './runtime/rpc-client.js';
|
|
12
12
|
export { SafeCodec, type CodecOptions } from './runtime/safe-codec.js';
|
|
13
13
|
export type { Transport, TransportOptions, ProtocolMessage, ProtocolResponse, } from './runtime/transport.js';
|
|
14
14
|
export { PROTOCOL_ID, isTransport, isProtocolMessage, isProtocolResponse, } from './runtime/transport.js';
|
|
@@ -21,7 +21,7 @@ export type { Disposable } from './runtime/disposable.js';
|
|
|
21
21
|
export { isDisposable, safeDispose, disposeAll } from './runtime/disposable.js';
|
|
22
22
|
export { ValidationError, isFiniteNumber, isPositiveNumber, isNonNegativeNumber, isNonEmptyString, isPlainObject, assertFiniteNumber, assertPositive, assertNonNegative, assertString, assertNonEmptyString, assertArray, assertObject, containsSpecialFloat, assertNoSpecialFloats, sanitizeForFilename, containsPathTraversal, } from './runtime/validators.js';
|
|
23
23
|
/**
|
|
24
|
-
* @deprecated Use
|
|
24
|
+
* @deprecated Use DisposableBase instead. RuntimeBridge will be removed in the next major version.
|
|
25
25
|
*/
|
|
26
26
|
export { RuntimeBridge } from './runtime/base.js';
|
|
27
27
|
export { BridgeError, BridgeCodecError, BridgeProtocolError, BridgeTimeoutError, BridgeDisposedError, BridgeExecutionError, } from './runtime/errors.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEhE,OAAO,EACL,cAAc,EACd,KAAK,YAAY,EACjB,KAAK,cAAc,GACpB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { tywrap } from './tywrap.js';
|
|
8
8
|
export { defineConfig, resolveConfig } from './config/index.js';
|
|
9
|
-
//
|
|
10
|
-
export {
|
|
11
|
-
//
|
|
12
|
-
export {
|
|
9
|
+
// DisposableBase - lifecycle/resource base for cross-boundary components
|
|
10
|
+
export { DisposableBase, } from './runtime/bounded-context.js';
|
|
11
|
+
// RpcClient - the single correlated-RPC client (codec + transport), held by bridges
|
|
12
|
+
export { RpcClient } from './runtime/rpc-client.js';
|
|
13
13
|
// SafeCodec - validation and serialization for JS<->Python boundary
|
|
14
14
|
export { SafeCodec } from './runtime/safe-codec.js';
|
|
15
15
|
export { PROTOCOL_ID, isTransport, isProtocolMessage, isProtocolResponse, } from './runtime/transport.js';
|
|
@@ -24,12 +24,12 @@ export { PooledTransport } from './runtime/pooled-transport.js';
|
|
|
24
24
|
export { isDisposable, safeDispose, disposeAll } from './runtime/disposable.js';
|
|
25
25
|
export { ValidationError, isFiniteNumber, isPositiveNumber, isNonNegativeNumber, isNonEmptyString, isPlainObject, assertFiniteNumber, assertPositive, assertNonNegative, assertString, assertNonEmptyString, assertArray, assertObject, containsSpecialFloat, assertNoSpecialFloats, sanitizeForFilename, containsPathTraversal, } from './runtime/validators.js';
|
|
26
26
|
/**
|
|
27
|
-
* @deprecated Use
|
|
27
|
+
* @deprecated Use DisposableBase instead. RuntimeBridge will be removed in the next major version.
|
|
28
28
|
*/
|
|
29
29
|
export { RuntimeBridge } from './runtime/base.js';
|
|
30
30
|
export { BridgeError, BridgeCodecError, BridgeProtocolError, BridgeTimeoutError, BridgeDisposedError, BridgeExecutionError, } from './runtime/errors.js';
|
|
31
31
|
export { getRuntimeBridge, setRuntimeBridge, clearRuntimeBridge } from './runtime/index.js';
|
|
32
|
-
// Runtime-specific exports (
|
|
32
|
+
// Runtime-specific exports (Bridge facades that HOLD an RpcClient)
|
|
33
33
|
export { NodeBridge } from './runtime/node.js';
|
|
34
34
|
export { PyodideBridge } from './runtime/pyodide.js';
|
|
35
35
|
export { HttpBridge } from './runtime/http.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAChE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAChE,yEAAyE;AACzE,OAAO,EACL,cAAc,GAGf,MAAM,8BAA8B,CAAC;AACtC,oFAAoF;AACpF,OAAO,EAAE,SAAS,EAAyB,MAAM,yBAAyB,CAAC;AAC3E,oEAAoE;AACpE,OAAO,EAAE,SAAS,EAAqB,MAAM,yBAAyB,CAAC;AAQvE,OAAO,EACL,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAChC,4BAA4B;AAC5B,OAAO,EAAE,SAAS,EAAyB,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAsB,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,SAAS,EAAyB,MAAM,yBAAyB,CAAC;AAC3E,+CAA+C;AAC/C,OAAO,EAAE,UAAU,EAA6C,MAAM,0BAA0B,CAAC;AACjG,4DAA4D;AAC5D,OAAO,EAAE,eAAe,EAA+B,MAAM,+BAA+B,CAAC;AAE7F,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EACL,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,oBAAoB,EACpB,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AAEjC;;GAEG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE5F,mEAAmE;AACnE,OAAO,EAAE,UAAU,EAA0B,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,aAAa,EAA6B,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,UAAU,EAA0B,MAAM,mBAAmB,CAAC;AAmDvE,WAAW;AACX,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,8BAA8B;AAC9B,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACvF,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,wBAAwB,EACxB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAE1B,eAAe;AACf,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC;AAE/B;;GAEG;AACH,iCAAiC;AACjC,eAAe,MAAM,CAAC"}
|
package/dist/runtime/base.d.ts
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Base runtime bridge
|
|
3
3
|
*
|
|
4
|
-
* @deprecated Use
|
|
4
|
+
* @deprecated Use DisposableBase instead. RuntimeBridge will be removed in the next major version.
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
6
|
+
import { DisposableBase } from './bounded-context.js';
|
|
7
7
|
/**
|
|
8
|
-
* @deprecated Use
|
|
8
|
+
* @deprecated Use DisposableBase instead. RuntimeBridge will be removed in the next major version.
|
|
9
9
|
*
|
|
10
|
-
* All bridges now
|
|
10
|
+
* All bridges now build on DisposableBase which provides:
|
|
11
11
|
* - Lifecycle management (init/dispose state machine)
|
|
12
12
|
* - Validation helpers
|
|
13
13
|
* - Error classification
|
|
14
14
|
* - Bounded execution (timeout, retry)
|
|
15
15
|
* - Resource ownership tracking
|
|
16
16
|
*
|
|
17
|
-
* @see
|
|
17
|
+
* @see DisposableBase
|
|
18
18
|
*/
|
|
19
|
-
export declare abstract class RuntimeBridge extends
|
|
19
|
+
export declare abstract class RuntimeBridge extends DisposableBase {
|
|
20
20
|
}
|
|
21
|
-
export {
|
|
21
|
+
export { DisposableBase };
|
|
22
22
|
//# sourceMappingURL=base.d.ts.map
|
package/dist/runtime/base.js
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Base runtime bridge
|
|
3
3
|
*
|
|
4
|
-
* @deprecated Use
|
|
4
|
+
* @deprecated Use DisposableBase instead. RuntimeBridge will be removed in the next major version.
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
6
|
+
import { DisposableBase } from './bounded-context.js';
|
|
7
7
|
/**
|
|
8
|
-
* @deprecated Use
|
|
8
|
+
* @deprecated Use DisposableBase instead. RuntimeBridge will be removed in the next major version.
|
|
9
9
|
*
|
|
10
|
-
* All bridges now
|
|
10
|
+
* All bridges now build on DisposableBase which provides:
|
|
11
11
|
* - Lifecycle management (init/dispose state machine)
|
|
12
12
|
* - Validation helpers
|
|
13
13
|
* - Error classification
|
|
14
14
|
* - Bounded execution (timeout, retry)
|
|
15
15
|
* - Resource ownership tracking
|
|
16
16
|
*
|
|
17
|
-
* @see
|
|
17
|
+
* @see DisposableBase
|
|
18
18
|
*/
|
|
19
|
-
export class RuntimeBridge extends
|
|
19
|
+
export class RuntimeBridge extends DisposableBase {
|
|
20
20
|
}
|
|
21
|
-
// Re-export
|
|
22
|
-
export {
|
|
21
|
+
// Re-export DisposableBase for backwards compatibility
|
|
22
|
+
export { DisposableBase };
|
|
23
23
|
//# sourceMappingURL=base.js.map
|
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* DisposableBase - Lifecycle-and-resource base for cross-boundary components.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* -
|
|
8
|
-
*
|
|
9
|
-
*
|
|
4
|
+
* Provides ONLY: init/dispose state machine, validation helpers, error
|
|
5
|
+
* classification, bounded execution (timeout/retry/abort), and resource
|
|
6
|
+
* ownership tracking. It carries ZERO RPC methods by design — the
|
|
7
|
+
* cross-boundary RPC contract (call/instantiate/callMethod/disposeInstance)
|
|
8
|
+
* is PythonRuntime, implemented only by the bridge facades, never by a base
|
|
9
|
+
* class or a transport. This separation is what keeps transports (ProcessIO,
|
|
10
|
+
* PooledTransport, WorkerPool, PyodideIO) and RpcClient from having to stub
|
|
11
|
+
* RPC methods they do not implement.
|
|
10
12
|
*
|
|
11
|
-
*
|
|
13
|
+
* Reused by RpcClient and all transports.
|
|
12
14
|
*
|
|
13
15
|
* @see https://github.com/bbopen/tywrap/issues/149
|
|
14
16
|
*/
|
|
15
|
-
import type { RuntimeExecution } from '../types/index.js';
|
|
16
17
|
import { BridgeError } from './errors.js';
|
|
17
18
|
import type { Disposable } from './disposable.js';
|
|
18
19
|
/**
|
|
19
|
-
* Lifecycle states for a
|
|
20
|
+
* Lifecycle states for a DisposableBase.
|
|
20
21
|
*
|
|
21
22
|
* State transitions:
|
|
22
23
|
* - idle → initializing → ready (on successful init)
|
|
@@ -41,12 +42,11 @@ export interface ExecuteOptions<T = unknown> {
|
|
|
41
42
|
signal?: AbortSignal;
|
|
42
43
|
}
|
|
43
44
|
/**
|
|
44
|
-
* Abstract base
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
* bounded execution, and resource tracking.
|
|
45
|
+
* Abstract lifecycle/resource base. Provides lifecycle management, validation,
|
|
46
|
+
* error classification, bounded execution, and resource tracking — and nothing
|
|
47
|
+
* about RPC. See the file header for the DisposableBase vs PythonRuntime split.
|
|
48
48
|
*/
|
|
49
|
-
export declare abstract class
|
|
49
|
+
export declare abstract class DisposableBase {
|
|
50
50
|
private _state;
|
|
51
51
|
private _initPromise?;
|
|
52
52
|
private readonly _resources;
|
|
@@ -232,21 +232,5 @@ export declare abstract class BoundedContext implements RuntimeExecution {
|
|
|
232
232
|
* Number of currently tracked resources.
|
|
233
233
|
*/
|
|
234
234
|
protected get resourceCount(): number;
|
|
235
|
-
/**
|
|
236
|
-
* Call a Python function.
|
|
237
|
-
*/
|
|
238
|
-
abstract call<T = unknown>(module: string, functionName: string, args: unknown[], kwargs?: Record<string, unknown>): Promise<T>;
|
|
239
|
-
/**
|
|
240
|
-
* Instantiate a Python class.
|
|
241
|
-
*/
|
|
242
|
-
abstract instantiate<T = unknown>(module: string, className: string, args: unknown[], kwargs?: Record<string, unknown>): Promise<T>;
|
|
243
|
-
/**
|
|
244
|
-
* Call a method on a Python instance.
|
|
245
|
-
*/
|
|
246
|
-
abstract callMethod<T = unknown>(handle: string, methodName: string, args: unknown[], kwargs?: Record<string, unknown>): Promise<T>;
|
|
247
|
-
/**
|
|
248
|
-
* Dispose a Python instance.
|
|
249
|
-
*/
|
|
250
|
-
abstract disposeInstance(handle: string): Promise<void>;
|
|
251
235
|
}
|
|
252
236
|
//# sourceMappingURL=bounded-context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bounded-context.d.ts","sourceRoot":"","sources":["../../src/runtime/bounded-context.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"bounded-context.d.ts","sourceRoot":"","sources":["../../src/runtime/bounded-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* DisposableBase - Lifecycle-and-resource base for cross-boundary components.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* -
|
|
8
|
-
*
|
|
9
|
-
*
|
|
4
|
+
* Provides ONLY: init/dispose state machine, validation helpers, error
|
|
5
|
+
* classification, bounded execution (timeout/retry/abort), and resource
|
|
6
|
+
* ownership tracking. It carries ZERO RPC methods by design — the
|
|
7
|
+
* cross-boundary RPC contract (call/instantiate/callMethod/disposeInstance)
|
|
8
|
+
* is PythonRuntime, implemented only by the bridge facades, never by a base
|
|
9
|
+
* class or a transport. This separation is what keeps transports (ProcessIO,
|
|
10
|
+
* PooledTransport, WorkerPool, PyodideIO) and RpcClient from having to stub
|
|
11
|
+
* RPC methods they do not implement.
|
|
10
12
|
*
|
|
11
|
-
*
|
|
13
|
+
* Reused by RpcClient and all transports.
|
|
12
14
|
*
|
|
13
15
|
* @see https://github.com/bbopen/tywrap/issues/149
|
|
14
16
|
*/
|
|
@@ -16,15 +18,14 @@ import { BridgeDisposedError, BridgeError, BridgeExecutionError, BridgeProtocolE
|
|
|
16
18
|
import { disposeAll } from './disposable.js';
|
|
17
19
|
import { assertFiniteNumber, assertNonEmptyString, assertPositive, assertString, ValidationError, } from './validators.js';
|
|
18
20
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
19
|
-
//
|
|
21
|
+
// DISPOSABLE BASE CLASS
|
|
20
22
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
21
23
|
/**
|
|
22
|
-
* Abstract base
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* bounded execution, and resource tracking.
|
|
24
|
+
* Abstract lifecycle/resource base. Provides lifecycle management, validation,
|
|
25
|
+
* error classification, bounded execution, and resource tracking — and nothing
|
|
26
|
+
* about RPC. See the file header for the DisposableBase vs PythonRuntime split.
|
|
26
27
|
*/
|
|
27
|
-
export class
|
|
28
|
+
export class DisposableBase {
|
|
28
29
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
29
30
|
// STATE
|
|
30
31
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
@@ -50,7 +51,7 @@ export class BoundedContext {
|
|
|
50
51
|
return this._state === 'disposed';
|
|
51
52
|
}
|
|
52
53
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
53
|
-
// LIFECYCLE
|
|
54
|
+
// LIFECYCLE
|
|
54
55
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
55
56
|
/**
|
|
56
57
|
* Initialize the context.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bounded-context.js","sourceRoot":"","sources":["../../src/runtime/bounded-context.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"bounded-context.js","sourceRoot":"","sources":["../../src/runtime/bounded-context.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime/http.d.ts
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* HTTP runtime bridge
|
|
2
|
+
* HTTP runtime bridge.
|
|
3
3
|
*
|
|
4
|
-
* HttpBridge
|
|
5
|
-
*
|
|
4
|
+
* HttpBridge is a thin facade: it extends DisposableBase (lifecycle/resources)
|
|
5
|
+
* and implements PythonRuntime by HOLDING an RpcClient over an HttpIO transport
|
|
6
|
+
* for stateless HTTP POST-based communication with a Python server.
|
|
6
7
|
*
|
|
7
8
|
* @see https://github.com/bbopen/tywrap/issues/149
|
|
8
9
|
*/
|
|
9
|
-
import {
|
|
10
|
+
import type { PythonRuntime, BridgeInfo } from '../types/index.js';
|
|
11
|
+
import { DisposableBase } from './bounded-context.js';
|
|
12
|
+
import { type GetBridgeInfoOptions } from './rpc-client.js';
|
|
10
13
|
import type { CodecOptions } from './safe-codec.js';
|
|
11
14
|
/**
|
|
12
15
|
* Configuration options for HttpBridge.
|
|
@@ -45,7 +48,8 @@ export interface HttpBridgeOptions {
|
|
|
45
48
|
* await bridge.dispose();
|
|
46
49
|
* ```
|
|
47
50
|
*/
|
|
48
|
-
export declare class HttpBridge extends
|
|
51
|
+
export declare class HttpBridge extends DisposableBase implements PythonRuntime {
|
|
52
|
+
private readonly rpc;
|
|
49
53
|
/**
|
|
50
54
|
* Create a new HttpBridge instance.
|
|
51
55
|
*
|
|
@@ -53,5 +57,20 @@ export declare class HttpBridge extends BridgeProtocol {
|
|
|
53
57
|
*/
|
|
54
58
|
constructor(options: HttpBridgeOptions);
|
|
55
59
|
protected doInit(): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* No facade-specific teardown: the RpcClient (and its transport) is tracked
|
|
62
|
+
* as a resource and disposed automatically by DisposableBase.
|
|
63
|
+
*/
|
|
64
|
+
protected doDispose(): Promise<void>;
|
|
65
|
+
call<T = unknown>(module: string, functionName: string, args: unknown[], kwargs?: Record<string, unknown>): Promise<T>;
|
|
66
|
+
instantiate<T = unknown>(module: string, className: string, args: unknown[], kwargs?: Record<string, unknown>): Promise<T>;
|
|
67
|
+
callMethod<T = unknown>(handle: string, methodName: string, args: unknown[], kwargs?: Record<string, unknown>): Promise<T>;
|
|
68
|
+
disposeInstance(handle: string): Promise<void>;
|
|
69
|
+
getBridgeInfo(options?: GetBridgeInfoOptions): Promise<BridgeInfo>;
|
|
70
|
+
/**
|
|
71
|
+
* Ensure the facade is initialized before delegating an RPC, replicating the
|
|
72
|
+
* auto-init that the bounded execute path provided pre-composition.
|
|
73
|
+
*/
|
|
74
|
+
private ensureReady;
|
|
56
75
|
}
|
|
57
76
|
//# sourceMappingURL=http.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/runtime/http.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/runtime/http.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGnE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAa,KAAK,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAMpD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;IAEhB,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,iDAAiD;IACjD,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAMD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,UAAW,SAAQ,cAAe,YAAW,aAAa;IACrE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAY;IAEhC;;;;OAIG;gBACS,OAAO,EAAE,iBAAiB;cAsBtB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAMvC;;;OAGG;cACa,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAQpC,IAAI,CAAC,CAAC,GAAG,OAAO,EACpB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,OAAO,EAAE,EACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,CAAC,CAAC;IAKP,WAAW,CAAC,CAAC,GAAG,OAAO,EAC3B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,OAAO,EAAE,EACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,CAAC,CAAC;IAKP,UAAU,CAAC,CAAC,GAAG,OAAO,EAC1B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,OAAO,EAAE,EACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,CAAC,CAAC;IAKP,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9C,aAAa,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC;IAKxE;;;OAGG;YACW,WAAW;CAK1B"}
|
package/dist/runtime/http.js
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* HTTP runtime bridge
|
|
2
|
+
* HTTP runtime bridge.
|
|
3
3
|
*
|
|
4
|
-
* HttpBridge
|
|
5
|
-
*
|
|
4
|
+
* HttpBridge is a thin facade: it extends DisposableBase (lifecycle/resources)
|
|
5
|
+
* and implements PythonRuntime by HOLDING an RpcClient over an HttpIO transport
|
|
6
|
+
* for stateless HTTP POST-based communication with a Python server.
|
|
6
7
|
*
|
|
7
8
|
* @see https://github.com/bbopen/tywrap/issues/149
|
|
8
9
|
*/
|
|
9
|
-
import { BridgeProtocol } from './bridge-protocol.js';
|
|
10
|
-
import { HttpIO } from './http-io.js';
|
|
11
10
|
import { autoRegisterArrowDecoder } from '../utils/codec.js';
|
|
11
|
+
import { DisposableBase } from './bounded-context.js';
|
|
12
|
+
import { RpcClient } from './rpc-client.js';
|
|
13
|
+
import { HttpIO } from './http-io.js';
|
|
12
14
|
// =============================================================================
|
|
13
15
|
// HTTP BRIDGE
|
|
14
16
|
// =============================================================================
|
|
@@ -36,31 +38,74 @@ import { autoRegisterArrowDecoder } from '../utils/codec.js';
|
|
|
36
38
|
* await bridge.dispose();
|
|
37
39
|
* ```
|
|
38
40
|
*/
|
|
39
|
-
export class HttpBridge extends
|
|
41
|
+
export class HttpBridge extends DisposableBase {
|
|
42
|
+
rpc;
|
|
40
43
|
/**
|
|
41
44
|
* Create a new HttpBridge instance.
|
|
42
45
|
*
|
|
43
46
|
* @param options - Configuration options for the bridge
|
|
44
47
|
*/
|
|
45
48
|
constructor(options) {
|
|
46
|
-
|
|
49
|
+
super();
|
|
47
50
|
const transport = new HttpIO({
|
|
48
51
|
baseURL: options.baseURL,
|
|
49
52
|
headers: options.headers,
|
|
50
53
|
defaultTimeoutMs: options.timeoutMs,
|
|
51
54
|
});
|
|
52
|
-
|
|
53
|
-
const protocolOptions = {
|
|
55
|
+
this.rpc = new RpcClient({
|
|
54
56
|
transport,
|
|
55
57
|
codec: options.codec,
|
|
56
58
|
defaultTimeoutMs: options.timeoutMs,
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
+
});
|
|
60
|
+
// One disposal chain: facade -> rpc -> transport.
|
|
61
|
+
this.trackResource(this.rpc);
|
|
59
62
|
}
|
|
63
|
+
// ===========================================================================
|
|
64
|
+
// LIFECYCLE
|
|
65
|
+
// ===========================================================================
|
|
60
66
|
async doInit() {
|
|
61
67
|
// Best-effort: keep apache-arrow optional and avoid breaking non-Node runtimes.
|
|
62
68
|
await autoRegisterArrowDecoder();
|
|
63
|
-
await
|
|
69
|
+
await this.rpc.init();
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* No facade-specific teardown: the RpcClient (and its transport) is tracked
|
|
73
|
+
* as a resource and disposed automatically by DisposableBase.
|
|
74
|
+
*/
|
|
75
|
+
async doDispose() {
|
|
76
|
+
// Intentionally empty; tracked resources handle disposal.
|
|
77
|
+
}
|
|
78
|
+
// ===========================================================================
|
|
79
|
+
// RPC METHODS (delegate to the held RpcClient)
|
|
80
|
+
// ===========================================================================
|
|
81
|
+
async call(module, functionName, args, kwargs) {
|
|
82
|
+
await this.ensureReady();
|
|
83
|
+
return this.rpc.call(module, functionName, args, kwargs);
|
|
84
|
+
}
|
|
85
|
+
async instantiate(module, className, args, kwargs) {
|
|
86
|
+
await this.ensureReady();
|
|
87
|
+
return this.rpc.instantiate(module, className, args, kwargs);
|
|
88
|
+
}
|
|
89
|
+
async callMethod(handle, methodName, args, kwargs) {
|
|
90
|
+
await this.ensureReady();
|
|
91
|
+
return this.rpc.callMethod(handle, methodName, args, kwargs);
|
|
92
|
+
}
|
|
93
|
+
async disposeInstance(handle) {
|
|
94
|
+
await this.ensureReady();
|
|
95
|
+
return this.rpc.disposeInstance(handle);
|
|
96
|
+
}
|
|
97
|
+
async getBridgeInfo(options) {
|
|
98
|
+
await this.ensureReady();
|
|
99
|
+
return this.rpc.getBridgeInfo(options);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Ensure the facade is initialized before delegating an RPC, replicating the
|
|
103
|
+
* auto-init that the bounded execute path provided pre-composition.
|
|
104
|
+
*/
|
|
105
|
+
async ensureReady() {
|
|
106
|
+
if (!this.isReady) {
|
|
107
|
+
await this.init();
|
|
108
|
+
}
|
|
64
109
|
}
|
|
65
110
|
}
|
|
66
111
|
//# sourceMappingURL=http.js.map
|
package/dist/runtime/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/runtime/http.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/runtime/http.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,SAAS,EAA6B,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAwBtC,gFAAgF;AAChF,cAAc;AACd,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,OAAO,UAAW,SAAQ,cAAc;IAC3B,GAAG,CAAY;IAEhC;;;;OAIG;IACH,YAAY,OAA0B;QACpC,KAAK,EAAE,CAAC;QAER,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC;YAC3B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,gBAAgB,EAAE,OAAO,CAAC,SAAS;SACpC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,GAAG,IAAI,SAAS,CAAC;YACvB,SAAS;YACT,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,gBAAgB,EAAE,OAAO,CAAC,SAAS;SACpC,CAAC,CAAC;QACH,kDAAkD;QAClD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,8EAA8E;IAC9E,YAAY;IACZ,8EAA8E;IAEpE,KAAK,CAAC,MAAM;QACpB,gFAAgF;QAChF,MAAM,wBAAwB,EAAE,CAAC;QACjC,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;IAED;;;OAGG;IACO,KAAK,CAAC,SAAS;QACvB,0DAA0D;IAC5D,CAAC;IAED,8EAA8E;IAC9E,+CAA+C;IAC/C,8EAA8E;IAE9E,KAAK,CAAC,IAAI,CACR,MAAc,EACd,YAAoB,EACpB,IAAe,EACf,MAAgC;QAEhC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAI,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,WAAW,CACf,MAAc,EACd,SAAiB,EACjB,IAAe,EACf,MAAgC;QAEhC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAI,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,UAAU,CACd,MAAc,EACd,UAAkB,EAClB,IAAe,EACf,MAAgC;QAEhC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAI,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAAc;QAClC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAA8B;QAChD,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,WAAW;QACvB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;CACF"}
|
package/dist/runtime/node.d.ts
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Node.js runtime bridge
|
|
2
|
+
* Node.js runtime bridge.
|
|
3
3
|
*
|
|
4
|
-
* NodeBridge
|
|
5
|
-
*
|
|
4
|
+
* NodeBridge is a thin facade: it extends DisposableBase (lifecycle/resources)
|
|
5
|
+
* and implements PythonRuntime by HOLDING an RpcClient. It uses ProcessIO
|
|
6
|
+
* transports with optional pooling for concurrent Python execution.
|
|
6
7
|
*
|
|
7
8
|
* @see https://github.com/bbopen/tywrap/issues/149
|
|
8
9
|
*/
|
|
9
|
-
import {
|
|
10
|
+
import type { PythonRuntime, BridgeInfo } from '../types/index.js';
|
|
11
|
+
import { DisposableBase } from './bounded-context.js';
|
|
12
|
+
import { type GetBridgeInfoOptions } from './rpc-client.js';
|
|
10
13
|
import type { CodecOptions } from './safe-codec.js';
|
|
11
14
|
/**
|
|
12
15
|
* Configuration options for NodeBridge.
|
|
@@ -101,9 +104,10 @@ export interface NodeBridgeOptions {
|
|
|
101
104
|
* await pooledBridge.init();
|
|
102
105
|
* ```
|
|
103
106
|
*/
|
|
104
|
-
export declare class NodeBridge extends
|
|
107
|
+
export declare class NodeBridge extends DisposableBase implements PythonRuntime {
|
|
105
108
|
private readonly resolvedOptions;
|
|
106
109
|
private readonly pooledTransport;
|
|
110
|
+
private readonly rpc;
|
|
107
111
|
/**
|
|
108
112
|
* Create a new NodeBridge instance.
|
|
109
113
|
*
|
|
@@ -114,13 +118,35 @@ export declare class NodeBridge extends BridgeProtocol {
|
|
|
114
118
|
* Initialize the bridge.
|
|
115
119
|
*
|
|
116
120
|
* Validates the bridge script exists, registers Arrow decoder,
|
|
117
|
-
* and initializes the
|
|
121
|
+
* and initializes the held RpcClient (which initializes the transport pool,
|
|
122
|
+
* running warmup commands per-worker).
|
|
118
123
|
*/
|
|
119
124
|
protected doInit(): Promise<void>;
|
|
120
125
|
/**
|
|
121
|
-
*
|
|
126
|
+
* No facade-specific teardown: the RpcClient (and through it the transport
|
|
127
|
+
* pool) is tracked as a resource and disposed automatically by DisposableBase.
|
|
128
|
+
*/
|
|
129
|
+
protected doDispose(): Promise<void>;
|
|
130
|
+
/**
|
|
131
|
+
* Call a Python function, with optional result caching.
|
|
132
|
+
*
|
|
133
|
+
* Cache lookup stays FIRST so cache hits return without forcing init,
|
|
134
|
+
* preserving the pre-composition behavior.
|
|
122
135
|
*/
|
|
123
136
|
call<T = unknown>(module: string, functionName: string, args: unknown[], kwargs?: Record<string, unknown>): Promise<T>;
|
|
137
|
+
instantiate<T = unknown>(module: string, className: string, args: unknown[], kwargs?: Record<string, unknown>): Promise<T>;
|
|
138
|
+
callMethod<T = unknown>(handle: string, methodName: string, args: unknown[], kwargs?: Record<string, unknown>): Promise<T>;
|
|
139
|
+
disposeInstance(handle: string): Promise<void>;
|
|
140
|
+
/**
|
|
141
|
+
* Fetch bridge diagnostics and feature availability.
|
|
142
|
+
*/
|
|
143
|
+
getBridgeInfo(options?: GetBridgeInfoOptions): Promise<BridgeInfo>;
|
|
144
|
+
/**
|
|
145
|
+
* Ensure the facade is initialized before delegating an RPC. Replicates the
|
|
146
|
+
* auto-init that BoundedContext.execute() gave for free, so the facade's
|
|
147
|
+
* own doInit pre-work (script check, Arrow decoder) runs before any RPC.
|
|
148
|
+
*/
|
|
149
|
+
private ensureReady;
|
|
124
150
|
/**
|
|
125
151
|
* Get current pool statistics.
|
|
126
152
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/runtime/node.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/runtime/node.ts"],"names":[],"mappings":"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"}
|