tywrap 0.2.0 → 0.3.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 +65 -31
- package/dist/cli.js +49 -2
- package/dist/cli.js.map +1 -1
- package/dist/config/index.d.ts +11 -7
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +43 -7
- package/dist/config/index.js.map +1 -1
- package/dist/core/analyzer.d.ts +1 -0
- package/dist/core/analyzer.d.ts.map +1 -1
- package/dist/core/analyzer.js +47 -12
- package/dist/core/analyzer.js.map +1 -1
- package/dist/core/annotation-parser.d.ts +8 -0
- package/dist/core/annotation-parser.d.ts.map +1 -0
- package/dist/core/annotation-parser.js +409 -0
- package/dist/core/annotation-parser.js.map +1 -0
- package/dist/core/discovery.d.ts +1 -0
- package/dist/core/discovery.d.ts.map +1 -1
- package/dist/core/discovery.js +9 -9
- package/dist/core/discovery.js.map +1 -1
- package/dist/core/generator.d.ts +9 -1
- package/dist/core/generator.d.ts.map +1 -1
- package/dist/core/generator.js +738 -104
- package/dist/core/generator.js.map +1 -1
- package/dist/core/mapper.d.ts +9 -7
- package/dist/core/mapper.d.ts.map +1 -1
- package/dist/core/mapper.js +129 -44
- package/dist/core/mapper.js.map +1 -1
- package/dist/index.d.ts +23 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -3
- package/dist/index.js.map +1 -1
- package/dist/runtime/base.d.ts +17 -7
- package/dist/runtime/base.d.ts.map +1 -1
- package/dist/runtime/base.js +18 -1
- package/dist/runtime/base.js.map +1 -1
- package/dist/runtime/bounded-context.d.ts +252 -0
- package/dist/runtime/bounded-context.d.ts.map +1 -0
- package/dist/runtime/bounded-context.js +454 -0
- package/dist/runtime/bounded-context.js.map +1 -0
- package/dist/runtime/bridge-core.d.ts +1 -0
- package/dist/runtime/bridge-core.d.ts.map +1 -1
- package/dist/runtime/bridge-core.js +52 -17
- package/dist/runtime/bridge-core.js.map +1 -1
- package/dist/runtime/bridge-protocol.d.ts +184 -0
- package/dist/runtime/bridge-protocol.d.ts.map +1 -0
- package/dist/runtime/bridge-protocol.js +344 -0
- package/dist/runtime/bridge-protocol.js.map +1 -0
- package/dist/runtime/disposable.d.ts +40 -0
- package/dist/runtime/disposable.d.ts.map +1 -0
- package/dist/runtime/disposable.js +49 -0
- package/dist/runtime/disposable.js.map +1 -0
- package/dist/runtime/errors.d.ts +10 -0
- package/dist/runtime/errors.d.ts.map +1 -1
- package/dist/runtime/errors.js +9 -0
- package/dist/runtime/errors.js.map +1 -1
- package/dist/runtime/http-io.d.ts +91 -0
- package/dist/runtime/http-io.d.ts.map +1 -0
- package/dist/runtime/http-io.js +195 -0
- package/dist/runtime/http-io.js.map +1 -0
- package/dist/runtime/http.d.ts +48 -13
- package/dist/runtime/http.d.ts.map +1 -1
- package/dist/runtime/http.js +60 -73
- package/dist/runtime/http.js.map +1 -1
- package/dist/runtime/node.d.ts +97 -130
- package/dist/runtime/node.d.ts.map +1 -1
- package/dist/runtime/node.js +392 -521
- package/dist/runtime/node.js.map +1 -1
- package/dist/runtime/optimized-node.d.ts +1 -1
- package/dist/runtime/optimized-node.d.ts.map +1 -1
- package/dist/runtime/optimized-node.js +1 -1
- package/dist/runtime/optimized-node.js.map +1 -1
- package/dist/runtime/pooled-transport.d.ts +135 -0
- package/dist/runtime/pooled-transport.d.ts.map +1 -0
- package/dist/runtime/pooled-transport.js +177 -0
- package/dist/runtime/pooled-transport.js.map +1 -0
- package/dist/runtime/process-io.d.ts +209 -0
- package/dist/runtime/process-io.d.ts.map +1 -0
- package/dist/runtime/process-io.js +729 -0
- package/dist/runtime/process-io.js.map +1 -0
- package/dist/runtime/pyodide-io.d.ts +154 -0
- package/dist/runtime/pyodide-io.d.ts.map +1 -0
- package/dist/runtime/pyodide-io.js +459 -0
- package/dist/runtime/pyodide-io.js.map +1 -0
- package/dist/runtime/pyodide.d.ts +51 -19
- package/dist/runtime/pyodide.d.ts.map +1 -1
- package/dist/runtime/pyodide.js +57 -186
- package/dist/runtime/pyodide.js.map +1 -1
- package/dist/runtime/safe-codec.d.ts +103 -0
- package/dist/runtime/safe-codec.d.ts.map +1 -0
- package/dist/runtime/safe-codec.js +519 -0
- package/dist/runtime/safe-codec.js.map +1 -0
- package/dist/runtime/transport.d.ts +191 -0
- package/dist/runtime/transport.d.ts.map +1 -0
- package/dist/runtime/transport.js +86 -0
- package/dist/runtime/transport.js.map +1 -0
- package/dist/runtime/validators.d.ts +120 -0
- package/dist/runtime/validators.d.ts.map +1 -0
- package/dist/runtime/validators.js +229 -0
- package/dist/runtime/validators.js.map +1 -0
- package/dist/runtime/worker-pool.d.ts +208 -0
- package/dist/runtime/worker-pool.d.ts.map +1 -0
- package/dist/runtime/worker-pool.js +419 -0
- package/dist/runtime/worker-pool.js.map +1 -0
- package/dist/types/index.d.ts +51 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/tywrap.d.ts.map +1 -1
- package/dist/tywrap.js +227 -328
- package/dist/tywrap.js.map +1 -1
- package/dist/utils/cache.d.ts.map +1 -1
- package/dist/utils/cache.js +53 -5
- package/dist/utils/cache.js.map +1 -1
- package/dist/utils/codec.d.ts.map +1 -1
- package/dist/utils/codec.js +114 -1
- package/dist/utils/codec.js.map +1 -1
- package/dist/utils/ir-cache.d.ts +28 -0
- package/dist/utils/ir-cache.d.ts.map +1 -0
- package/dist/utils/ir-cache.js +29 -0
- package/dist/utils/ir-cache.js.map +1 -0
- package/dist/utils/parallel-processor.d.ts +1 -1
- package/dist/utils/parallel-processor.d.ts.map +1 -1
- package/dist/utils/parallel-processor.js +111 -40
- package/dist/utils/parallel-processor.js.map +1 -1
- package/dist/utils/runtime.d.ts +5 -1
- package/dist/utils/runtime.d.ts.map +1 -1
- package/dist/utils/runtime.js +112 -18
- package/dist/utils/runtime.js.map +1 -1
- package/package.json +40 -18
- package/runtime/python_bridge.py +108 -15
- package/runtime/safe_codec.py +344 -0
- package/src/cli.ts +61 -2
- package/src/config/index.ts +63 -17
- package/src/core/analyzer.ts +52 -15
- package/src/core/annotation-parser.ts +500 -0
- package/src/core/discovery.ts +26 -12
- package/src/core/generator.ts +956 -116
- package/src/core/mapper.ts +158 -51
- package/src/index.ts +78 -6
- package/src/runtime/base.ts +18 -26
- package/src/runtime/bounded-context.ts +608 -0
- package/src/runtime/bridge-core.ts +58 -18
- package/src/runtime/bridge-protocol.ts +483 -0
- package/src/runtime/disposable.ts +65 -0
- package/src/runtime/errors.ts +14 -0
- package/src/runtime/http-io.ts +245 -0
- package/src/runtime/http.ts +76 -115
- package/src/runtime/node.ts +563 -676
- package/src/runtime/optimized-node.ts +4 -1
- package/src/runtime/pooled-transport.ts +263 -0
- package/src/runtime/process-io.ts +930 -0
- package/src/runtime/pyodide-io.ts +551 -0
- package/src/runtime/pyodide.ts +75 -215
- package/src/runtime/safe-codec.ts +651 -0
- package/src/runtime/transport.ts +278 -0
- package/src/runtime/validators.ts +252 -0
- package/src/runtime/worker-pool.ts +559 -0
- package/src/types/global.d.ts +11 -1
- package/src/types/index.ts +63 -0
- package/src/tywrap.ts +279 -358
- package/src/utils/cache.ts +59 -5
- package/src/utils/codec.ts +122 -1
- package/src/utils/ir-cache.ts +51 -0
- package/src/utils/parallel-processor.ts +119 -43
- package/src/utils/runtime.ts +129 -18
package/dist/runtime/node.d.ts
CHANGED
|
@@ -1,29 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Node.js
|
|
2
|
+
* Node.js runtime bridge for BridgeProtocol.
|
|
3
3
|
*
|
|
4
|
-
* NodeBridge
|
|
5
|
-
*
|
|
6
|
-
* in single-process mode for maximum compatibility with the original NodeBridge behavior.
|
|
4
|
+
* NodeBridge extends BridgeProtocol and uses ProcessIO transports with
|
|
5
|
+
* optional pooling for concurrent Python execution.
|
|
7
6
|
*
|
|
8
|
-
*
|
|
7
|
+
* @see https://github.com/bbopen/tywrap/issues/149
|
|
9
8
|
*/
|
|
10
|
-
import
|
|
11
|
-
import {
|
|
9
|
+
import { BridgeProtocol } from './bridge-protocol.js';
|
|
10
|
+
import type { CodecOptions } from './safe-codec.js';
|
|
12
11
|
/**
|
|
13
12
|
* Configuration options for NodeBridge.
|
|
14
|
-
*
|
|
15
|
-
* By default, NodeBridge runs in single-process mode (minProcesses=1, maxProcesses=1).
|
|
16
|
-
* For high-throughput workloads, increase these values to enable process pooling.
|
|
17
13
|
*/
|
|
18
14
|
export interface NodeBridgeOptions {
|
|
19
15
|
/** Minimum number of Python processes to keep alive. Default: 1 */
|
|
20
16
|
minProcesses?: number;
|
|
21
17
|
/** Maximum number of Python processes to spawn. Default: 1 (single-process mode) */
|
|
22
18
|
maxProcesses?: number;
|
|
23
|
-
/**
|
|
24
|
-
|
|
25
|
-
/** Restart process after this many requests. Default: 1000 */
|
|
26
|
-
maxRequestsPerProcess?: number;
|
|
19
|
+
/** Maximum concurrent requests per process. Default: 10 */
|
|
20
|
+
maxConcurrentPerProcess?: number;
|
|
27
21
|
/** Path to Python executable. Auto-detected if not specified. */
|
|
28
22
|
pythonPath?: string;
|
|
29
23
|
/** Path to python_bridge.py script. Auto-detected if not specified. */
|
|
@@ -34,161 +28,134 @@ export interface NodeBridgeOptions {
|
|
|
34
28
|
cwd?: string;
|
|
35
29
|
/** Timeout in ms for Python calls. Default: 30000 */
|
|
36
30
|
timeoutMs?: number;
|
|
37
|
-
/**
|
|
38
|
-
|
|
31
|
+
/** Timeout in ms for waiting in pool queue. Default: 30000 */
|
|
32
|
+
queueTimeoutMs?: number;
|
|
39
33
|
/** Inherit all environment variables from parent process. Default: false */
|
|
40
34
|
inheritProcessEnv?: boolean;
|
|
41
|
-
/**
|
|
42
|
-
* When true, sets TYWRAP_CODEC_FALLBACK=json for the Python process to prefer JSON encoding
|
|
43
|
-
* for rich types (ndarray/dataframe/series). Default: false for fast-fail on Arrow path issues.
|
|
44
|
-
*/
|
|
45
|
-
enableJsonFallback?: boolean;
|
|
46
35
|
/** Enable result caching for pure functions. Default: false */
|
|
47
36
|
enableCache?: boolean;
|
|
48
37
|
/** Optional extra environment variables to pass to the Python subprocess. */
|
|
49
38
|
env?: Record<string, string | undefined>;
|
|
39
|
+
/** Codec options for validation/serialization */
|
|
40
|
+
codec?: CodecOptions;
|
|
50
41
|
/** Commands to run on each process at startup for warming up. */
|
|
51
42
|
warmupCommands?: Array<{
|
|
43
|
+
module: string;
|
|
44
|
+
functionName: string;
|
|
45
|
+
args?: unknown[];
|
|
46
|
+
} | {
|
|
52
47
|
method: string;
|
|
53
48
|
params: unknown;
|
|
54
49
|
}>;
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
memoryUsage: NodeJS.MemoryUsage;
|
|
72
|
-
workerStats: Array<{
|
|
73
|
-
id: string;
|
|
74
|
-
requestCount: number;
|
|
75
|
-
averageTime: number;
|
|
76
|
-
errorCount: number;
|
|
77
|
-
busy: boolean;
|
|
78
|
-
pendingRequests: number;
|
|
79
|
-
}>;
|
|
50
|
+
/**
|
|
51
|
+
* @deprecated No longer used. Pool idle time is managed by WorkerPool.
|
|
52
|
+
*/
|
|
53
|
+
maxIdleTime?: number;
|
|
54
|
+
/**
|
|
55
|
+
* @deprecated No longer used. Process restart is managed by ProcessIO.
|
|
56
|
+
*/
|
|
57
|
+
maxRequestsPerProcess?: number;
|
|
58
|
+
/**
|
|
59
|
+
* @deprecated Use codec.bytesHandling option instead.
|
|
60
|
+
*/
|
|
61
|
+
enableJsonFallback?: boolean;
|
|
62
|
+
/**
|
|
63
|
+
* @deprecated Use ProcessIO options instead.
|
|
64
|
+
*/
|
|
65
|
+
maxLineLength?: number;
|
|
80
66
|
}
|
|
81
67
|
/**
|
|
82
68
|
* Node.js runtime bridge for executing Python code.
|
|
83
69
|
*
|
|
84
|
-
*
|
|
85
|
-
*
|
|
70
|
+
* NodeBridge provides subprocess-based Python execution with optional pooling
|
|
71
|
+
* for high-throughput workloads. By default, it runs in single-process mode.
|
|
72
|
+
*
|
|
73
|
+
* Features:
|
|
74
|
+
* - Single or multi-process execution via process pooling
|
|
75
|
+
* - Virtual environment support
|
|
76
|
+
* - Full SafeCodec validation (NaN/Infinity rejection, key validation)
|
|
77
|
+
* - Automatic Arrow decoding for DataFrames/ndarrays
|
|
78
|
+
* - Optional result caching for pure functions
|
|
79
|
+
* - Process warmup commands
|
|
86
80
|
*
|
|
87
81
|
* @example
|
|
88
82
|
* ```typescript
|
|
89
83
|
* // Single-process mode (default)
|
|
90
84
|
* const bridge = new NodeBridge();
|
|
85
|
+
* await bridge.init();
|
|
91
86
|
*
|
|
87
|
+
* const result = await bridge.call('math', 'sqrt', [16]);
|
|
88
|
+
* console.log(result); // 4.0
|
|
89
|
+
*
|
|
90
|
+
* await bridge.dispose();
|
|
91
|
+
* ```
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* ```typescript
|
|
92
95
|
* // Multi-process pooling for high throughput
|
|
93
96
|
* const pooledBridge = new NodeBridge({
|
|
94
|
-
*
|
|
95
|
-
*
|
|
97
|
+
* maxProcesses: 4,
|
|
98
|
+
* maxConcurrentPerProcess: 2,
|
|
96
99
|
* enableCache: true,
|
|
97
100
|
* });
|
|
101
|
+
* await pooledBridge.init();
|
|
98
102
|
* ```
|
|
99
103
|
*/
|
|
100
|
-
export declare class NodeBridge extends
|
|
101
|
-
private
|
|
102
|
-
private
|
|
103
|
-
private cleanupTimer?;
|
|
104
|
-
private options;
|
|
105
|
-
private emitter;
|
|
106
|
-
private disposed;
|
|
107
|
-
private bridgeInfo?;
|
|
108
|
-
private initPromise?;
|
|
109
|
-
private stats;
|
|
110
|
-
constructor(options?: NodeBridgeOptions);
|
|
111
|
-
init(): Promise<void>;
|
|
112
|
-
private doInit;
|
|
113
|
-
getBridgeInfo(options?: {
|
|
114
|
-
refresh?: boolean;
|
|
115
|
-
}): Promise<BridgeInfo>;
|
|
116
|
-
call<T = unknown>(module: string, functionName: string, args: unknown[], kwargs?: Record<string, unknown>): Promise<T>;
|
|
117
|
-
instantiate<T = unknown>(module: string, className: string, args: unknown[], kwargs?: Record<string, unknown>): Promise<T>;
|
|
118
|
-
callMethod<T = unknown>(handle: string, methodName: string, args: unknown[], kwargs?: Record<string, unknown>): Promise<T>;
|
|
119
|
-
disposeInstance(handle: string): Promise<void>;
|
|
120
|
-
/**
|
|
121
|
-
* Execute request with intelligent process selection
|
|
122
|
-
*/
|
|
123
|
-
private executeRequest;
|
|
124
|
-
/**
|
|
125
|
-
* Select optimal worker based on load and performance
|
|
126
|
-
*/
|
|
127
|
-
private selectOptimalWorker;
|
|
128
|
-
/**
|
|
129
|
-
* Wait for any worker to become available
|
|
130
|
-
*/
|
|
131
|
-
private waitForAvailableWorker;
|
|
104
|
+
export declare class NodeBridge extends BridgeProtocol {
|
|
105
|
+
private readonly resolvedOptions;
|
|
106
|
+
private readonly pooledTransport;
|
|
132
107
|
/**
|
|
133
|
-
*
|
|
108
|
+
* Create a new NodeBridge instance.
|
|
109
|
+
*
|
|
110
|
+
* @param options - Configuration options for the bridge
|
|
134
111
|
*/
|
|
135
|
-
|
|
136
|
-
private quarantineWorker;
|
|
112
|
+
constructor(options?: NodeBridgeOptions);
|
|
137
113
|
/**
|
|
138
|
-
*
|
|
114
|
+
* Initialize the bridge.
|
|
115
|
+
*
|
|
116
|
+
* Validates the bridge script exists, registers Arrow decoder,
|
|
117
|
+
* and initializes the transport pool (which runs warmup commands per-worker).
|
|
139
118
|
*/
|
|
140
|
-
|
|
119
|
+
protected doInit(): Promise<void>;
|
|
141
120
|
/**
|
|
142
|
-
*
|
|
121
|
+
* Override call() to add optional caching.
|
|
143
122
|
*/
|
|
144
|
-
|
|
123
|
+
call<T = unknown>(module: string, functionName: string, args: unknown[], kwargs?: Record<string, unknown>): Promise<T>;
|
|
145
124
|
/**
|
|
146
|
-
*
|
|
147
|
-
*/
|
|
148
|
-
|
|
125
|
+
* Get current pool statistics.
|
|
126
|
+
*/
|
|
127
|
+
getPoolStats(): {
|
|
128
|
+
workerCount: number;
|
|
129
|
+
queueLength: number;
|
|
130
|
+
totalInFlight: number;
|
|
131
|
+
};
|
|
132
|
+
/**
|
|
133
|
+
* Get bridge statistics.
|
|
134
|
+
*
|
|
135
|
+
* @deprecated Use getPoolStats() instead. This method is provided for
|
|
136
|
+
* backwards compatibility and returns a subset of the previous stats.
|
|
137
|
+
*/
|
|
138
|
+
getStats(): {
|
|
139
|
+
totalRequests: number;
|
|
140
|
+
totalTime: number;
|
|
141
|
+
cacheHits: number;
|
|
142
|
+
poolHits: number;
|
|
143
|
+
poolMisses: number;
|
|
144
|
+
processSpawns: number;
|
|
145
|
+
processDeaths: number;
|
|
146
|
+
memoryPeak: number;
|
|
147
|
+
averageTime: number;
|
|
148
|
+
cacheHitRate: number;
|
|
149
|
+
poolSize: number;
|
|
150
|
+
busyWorkers: number;
|
|
151
|
+
};
|
|
149
152
|
/**
|
|
150
|
-
*
|
|
153
|
+
* Generate a cache key, returning null if generation fails.
|
|
151
154
|
*/
|
|
152
|
-
private warmupProcesses;
|
|
153
155
|
private safeCacheKey;
|
|
154
156
|
/**
|
|
155
|
-
* Heuristic to determine if function result should be cached
|
|
157
|
+
* Heuristic to determine if function result should be cached.
|
|
156
158
|
*/
|
|
157
159
|
private isPureFunctionCandidate;
|
|
158
|
-
/**
|
|
159
|
-
* Update performance statistics
|
|
160
|
-
*/
|
|
161
|
-
private updateStats;
|
|
162
|
-
/**
|
|
163
|
-
* Get performance statistics
|
|
164
|
-
*/
|
|
165
|
-
getStats(): BridgeStatsSnapshot;
|
|
166
|
-
/**
|
|
167
|
-
* Cleanup idle processes
|
|
168
|
-
*/
|
|
169
|
-
private cleanup;
|
|
170
|
-
/**
|
|
171
|
-
* Gracefully terminate a worker
|
|
172
|
-
*/
|
|
173
|
-
private terminateWorker;
|
|
174
|
-
/**
|
|
175
|
-
* Start cleanup scheduler
|
|
176
|
-
*/
|
|
177
|
-
private startCleanupScheduler;
|
|
178
|
-
/**
|
|
179
|
-
* Dispose all resources
|
|
180
|
-
*/
|
|
181
|
-
dispose(): Promise<void>;
|
|
182
|
-
private buildEnv;
|
|
183
|
-
private refreshBridgeInfo;
|
|
184
160
|
}
|
|
185
|
-
/**
|
|
186
|
-
* @deprecated Use NodeBridge with minProcesses/maxProcesses options instead.
|
|
187
|
-
* This alias is provided for backward compatibility.
|
|
188
|
-
*/
|
|
189
|
-
export { NodeBridge as OptimizedNodeBridge };
|
|
190
|
-
/**
|
|
191
|
-
* @deprecated Use NodeBridgeOptions instead.
|
|
192
|
-
*/
|
|
193
|
-
export type { NodeBridgeOptions as ProcessPoolOptions };
|
|
194
161
|
//# sourceMappingURL=node.d.ts.map
|
|
@@ -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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"}
|