tywrap 0.1.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/LICENSE +21 -0
- package/README.md +319 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +263 -0
- package/dist/cli.js.map +1 -0
- package/dist/config/index.d.ts +41 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +234 -0
- package/dist/config/index.js.map +1 -0
- package/dist/core/analyzer.d.ts +63 -0
- package/dist/core/analyzer.d.ts.map +1 -0
- package/dist/core/analyzer.js +676 -0
- package/dist/core/analyzer.js.map +1 -0
- package/dist/core/discovery.d.ts +85 -0
- package/dist/core/discovery.d.ts.map +1 -0
- package/dist/core/discovery.js +344 -0
- package/dist/core/discovery.js.map +1 -0
- package/dist/core/generator.d.ts +37 -0
- package/dist/core/generator.d.ts.map +1 -0
- package/dist/core/generator.js +368 -0
- package/dist/core/generator.js.map +1 -0
- package/dist/core/mapper.d.ts +40 -0
- package/dist/core/mapper.d.ts.map +1 -0
- package/dist/core/mapper.js +401 -0
- package/dist/core/mapper.js.map +1 -0
- package/dist/core/validation.d.ts +79 -0
- package/dist/core/validation.d.ts.map +1 -0
- package/dist/core/validation.js +486 -0
- package/dist/core/validation.js.map +1 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/dist/runtime/base.d.ts +12 -0
- package/dist/runtime/base.d.ts.map +1 -0
- package/dist/runtime/base.js +6 -0
- package/dist/runtime/base.js.map +1 -0
- package/dist/runtime/errors.d.ts +17 -0
- package/dist/runtime/errors.d.ts.map +1 -0
- package/dist/runtime/errors.js +21 -0
- package/dist/runtime/errors.js.map +1 -0
- package/dist/runtime/http.d.ts +22 -0
- package/dist/runtime/http.d.ts.map +1 -0
- package/dist/runtime/http.js +79 -0
- package/dist/runtime/http.js.map +1 -0
- package/dist/runtime/index.d.ts +8 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +17 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/node.d.ts +48 -0
- package/dist/runtime/node.d.ts.map +1 -0
- package/dist/runtime/node.js +328 -0
- package/dist/runtime/node.js.map +1 -0
- package/dist/runtime/optimized-node.d.ts +131 -0
- package/dist/runtime/optimized-node.d.ts.map +1 -0
- package/dist/runtime/optimized-node.js +622 -0
- package/dist/runtime/optimized-node.js.map +1 -0
- package/dist/runtime/protocol.d.ts +3 -0
- package/dist/runtime/protocol.d.ts.map +1 -0
- package/dist/runtime/protocol.js +3 -0
- package/dist/runtime/protocol.js.map +1 -0
- package/dist/runtime/pyodide.d.ts +27 -0
- package/dist/runtime/pyodide.d.ts.map +1 -0
- package/dist/runtime/pyodide.js +191 -0
- package/dist/runtime/pyodide.js.map +1 -0
- package/dist/tools/python_suite.js +173 -0
- package/dist/tools/python_suite.js.map +1 -0
- package/dist/types/index.d.ts +299 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/dist/tywrap.d.ts +29 -0
- package/dist/tywrap.d.ts.map +1 -0
- package/dist/tywrap.js +589 -0
- package/dist/tywrap.js.map +1 -0
- package/dist/utils/bundle-optimizer.d.ts +182 -0
- package/dist/utils/bundle-optimizer.d.ts.map +1 -0
- package/dist/utils/bundle-optimizer.js +680 -0
- package/dist/utils/bundle-optimizer.js.map +1 -0
- package/dist/utils/cache.d.ts +149 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +492 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/codec.d.ts +94 -0
- package/dist/utils/codec.d.ts.map +1 -0
- package/dist/utils/codec.js +150 -0
- package/dist/utils/codec.js.map +1 -0
- package/dist/utils/logger.d.ts +42 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +140 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/memory-profiler.d.ts +123 -0
- package/dist/utils/memory-profiler.d.ts.map +1 -0
- package/dist/utils/memory-profiler.js +426 -0
- package/dist/utils/memory-profiler.js.map +1 -0
- package/dist/utils/parallel-processor.d.ts +146 -0
- package/dist/utils/parallel-processor.d.ts.map +1 -0
- package/dist/utils/parallel-processor.js +636 -0
- package/dist/utils/parallel-processor.js.map +1 -0
- package/dist/utils/python.d.ts +8 -0
- package/dist/utils/python.d.ts.map +1 -0
- package/dist/utils/python.js +56 -0
- package/dist/utils/python.js.map +1 -0
- package/dist/utils/runtime.d.ts +153 -0
- package/dist/utils/runtime.d.ts.map +1 -0
- package/dist/utils/runtime.js +519 -0
- package/dist/utils/runtime.js.map +1 -0
- package/package.json +136 -0
- package/runtime/python_bridge.py +476 -0
- package/src/cli.ts +331 -0
- package/src/config/index.ts +289 -0
- package/src/core/analyzer.ts +788 -0
- package/src/core/discovery.ts +415 -0
- package/src/core/generator.ts +447 -0
- package/src/core/mapper.ts +504 -0
- package/src/core/validation.ts +693 -0
- package/src/index.ts +83 -0
- package/src/runtime/base.ts +32 -0
- package/src/runtime/errors.ts +19 -0
- package/src/runtime/http.ts +132 -0
- package/src/runtime/index.ts +24 -0
- package/src/runtime/node.ts +431 -0
- package/src/runtime/optimized-node.ts +838 -0
- package/src/runtime/protocol.ts +2 -0
- package/src/runtime/pyodide.ts +228 -0
- package/src/types/global.d.ts +60 -0
- package/src/types/index.ts +410 -0
- package/src/tywrap.ts +669 -0
- package/src/utils/bundle-optimizer.ts +876 -0
- package/src/utils/cache.ts +634 -0
- package/src/utils/codec.ts +275 -0
- package/src/utils/logger.ts +201 -0
- package/src/utils/memory-profiler.ts +582 -0
- package/src/utils/parallel-processor.ts +879 -0
- package/src/utils/python.ts +79 -0
- package/src/utils/runtime.ts +616 -0
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Optimized Node.js Runtime Bridge with Connection Pooling and Memory Management
|
|
3
|
+
* High-performance Python subprocess management for production workloads
|
|
4
|
+
*/
|
|
5
|
+
import { RuntimeBridge } from './base.js';
|
|
6
|
+
interface ProcessPoolOptions {
|
|
7
|
+
minProcesses?: number;
|
|
8
|
+
maxProcesses?: number;
|
|
9
|
+
maxIdleTime?: number;
|
|
10
|
+
maxRequestsPerProcess?: number;
|
|
11
|
+
pythonPath?: string;
|
|
12
|
+
scriptPath?: string;
|
|
13
|
+
virtualEnv?: string | undefined;
|
|
14
|
+
cwd?: string;
|
|
15
|
+
timeoutMs?: number;
|
|
16
|
+
enableJsonFallback?: boolean;
|
|
17
|
+
env?: Record<string, string | undefined>;
|
|
18
|
+
warmupCommands?: Array<{
|
|
19
|
+
method: string;
|
|
20
|
+
params: unknown;
|
|
21
|
+
}>;
|
|
22
|
+
}
|
|
23
|
+
interface OptimizedBridgeStats {
|
|
24
|
+
totalRequests: number;
|
|
25
|
+
totalTime: number;
|
|
26
|
+
cacheHits: number;
|
|
27
|
+
poolHits: number;
|
|
28
|
+
poolMisses: number;
|
|
29
|
+
processSpawns: number;
|
|
30
|
+
processDeaths: number;
|
|
31
|
+
memoryPeak: number;
|
|
32
|
+
averageTime: number;
|
|
33
|
+
cacheHitRate: number;
|
|
34
|
+
}
|
|
35
|
+
interface OptimizedBridgeStatsSnapshot extends OptimizedBridgeStats {
|
|
36
|
+
poolSize: number;
|
|
37
|
+
busyWorkers: number;
|
|
38
|
+
memoryUsage: NodeJS.MemoryUsage;
|
|
39
|
+
workerStats: Array<{
|
|
40
|
+
id: string;
|
|
41
|
+
requestCount: number;
|
|
42
|
+
averageTime: number;
|
|
43
|
+
errorCount: number;
|
|
44
|
+
busy: boolean;
|
|
45
|
+
pendingRequests: number;
|
|
46
|
+
}>;
|
|
47
|
+
}
|
|
48
|
+
export declare class OptimizedNodeBridge extends RuntimeBridge {
|
|
49
|
+
private processPool;
|
|
50
|
+
private roundRobinIndex;
|
|
51
|
+
private nextId;
|
|
52
|
+
private cleanupTimer?;
|
|
53
|
+
private options;
|
|
54
|
+
private emitter;
|
|
55
|
+
private disposed;
|
|
56
|
+
private stats;
|
|
57
|
+
constructor(options?: ProcessPoolOptions);
|
|
58
|
+
init(): Promise<void>;
|
|
59
|
+
call<T = unknown>(module: string, functionName: string, args: unknown[], kwargs?: Record<string, unknown>): Promise<T>;
|
|
60
|
+
instantiate<T = unknown>(module: string, className: string, args: unknown[], kwargs?: Record<string, unknown>): Promise<T>;
|
|
61
|
+
callMethod<T = unknown>(handle: string, methodName: string, args: unknown[], kwargs?: Record<string, unknown>): Promise<T>;
|
|
62
|
+
disposeInstance(handle: string): Promise<void>;
|
|
63
|
+
/**
|
|
64
|
+
* Execute request with intelligent process selection
|
|
65
|
+
*/
|
|
66
|
+
private executeRequest;
|
|
67
|
+
/**
|
|
68
|
+
* Select optimal worker based on load and performance
|
|
69
|
+
*/
|
|
70
|
+
private selectOptimalWorker;
|
|
71
|
+
/**
|
|
72
|
+
* Wait for any worker to become available
|
|
73
|
+
*/
|
|
74
|
+
private waitForAvailableWorker;
|
|
75
|
+
/**
|
|
76
|
+
* Send request to specific worker
|
|
77
|
+
*/
|
|
78
|
+
private sendToWorker;
|
|
79
|
+
/**
|
|
80
|
+
* Spawn new worker process with optimizations
|
|
81
|
+
*/
|
|
82
|
+
private spawnProcess;
|
|
83
|
+
/**
|
|
84
|
+
* Setup event handlers for worker process
|
|
85
|
+
*/
|
|
86
|
+
private setupProcessHandlers;
|
|
87
|
+
/**
|
|
88
|
+
* Handle response from worker process
|
|
89
|
+
*/
|
|
90
|
+
private handleWorkerResponse;
|
|
91
|
+
/**
|
|
92
|
+
* Handle worker process exit
|
|
93
|
+
*/
|
|
94
|
+
private handleWorkerExit;
|
|
95
|
+
/**
|
|
96
|
+
* Warm up processes with configured commands
|
|
97
|
+
*/
|
|
98
|
+
private warmupProcesses;
|
|
99
|
+
/**
|
|
100
|
+
* Heuristic to determine if function result should be cached
|
|
101
|
+
*/
|
|
102
|
+
private isPureFunctionCandidate;
|
|
103
|
+
/**
|
|
104
|
+
* Update performance statistics
|
|
105
|
+
*/
|
|
106
|
+
private updateStats;
|
|
107
|
+
/**
|
|
108
|
+
* Get performance statistics
|
|
109
|
+
*/
|
|
110
|
+
getStats(): OptimizedBridgeStatsSnapshot;
|
|
111
|
+
/**
|
|
112
|
+
* Cleanup idle processes
|
|
113
|
+
*/
|
|
114
|
+
private cleanup;
|
|
115
|
+
/**
|
|
116
|
+
* Gracefully terminate a worker
|
|
117
|
+
*/
|
|
118
|
+
private terminateWorker;
|
|
119
|
+
/**
|
|
120
|
+
* Start cleanup scheduler
|
|
121
|
+
*/
|
|
122
|
+
private startCleanupScheduler;
|
|
123
|
+
/**
|
|
124
|
+
* Dispose all resources
|
|
125
|
+
*/
|
|
126
|
+
dispose(): Promise<void>;
|
|
127
|
+
private errorFrom;
|
|
128
|
+
private handleProtocolError;
|
|
129
|
+
}
|
|
130
|
+
export {};
|
|
131
|
+
//# sourceMappingURL=optimized-node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optimized-node.d.ts","sourceRoot":"","sources":["../../src/runtime/optimized-node.ts"],"names":[],"mappings":"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"}
|