pynect 0.0.0 → 0.2.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 +1 -1
- package/README.md +476 -2
- package/SECURITY.md +34 -0
- package/binding.gyp +60 -0
- package/dist/cli/codegen.d.ts +3 -0
- package/dist/cli/codegen.d.ts.map +1 -0
- package/dist/cli/codegen.js +543 -0
- package/dist/cli/codegen.js.map +1 -0
- package/dist/cli/sync.d.ts +3 -0
- package/dist/cli/sync.d.ts.map +1 -0
- package/dist/cli/sync.js +48 -0
- package/dist/cli/sync.js.map +1 -0
- package/dist/config/project.d.ts +57 -0
- package/dist/config/project.d.ts.map +1 -0
- package/dist/config/project.js +176 -0
- package/dist/config/project.js.map +1 -0
- package/dist/core/IsolatedWorker.d.ts +39 -0
- package/dist/core/IsolatedWorker.d.ts.map +1 -0
- package/dist/core/IsolatedWorker.js +178 -0
- package/dist/core/IsolatedWorker.js.map +1 -0
- package/dist/core/PyCallable.d.ts +67 -0
- package/dist/core/PyCallable.d.ts.map +1 -0
- package/dist/core/PyCallable.js +104 -0
- package/dist/core/PyCallable.js.map +1 -0
- package/dist/core/PyContext.d.ts +76 -0
- package/dist/core/PyContext.d.ts.map +1 -0
- package/dist/core/PyContext.js +239 -0
- package/dist/core/PyContext.js.map +1 -0
- package/dist/core/PyIterator.d.ts +84 -0
- package/dist/core/PyIterator.d.ts.map +1 -0
- package/dist/core/PyIterator.js +243 -0
- package/dist/core/PyIterator.js.map +1 -0
- package/dist/core/PyModule.d.ts +53 -0
- package/dist/core/PyModule.d.ts.map +1 -0
- package/dist/core/PyModule.js +162 -0
- package/dist/core/PyModule.js.map +1 -0
- package/dist/core/PyProxy.d.ts +75 -0
- package/dist/core/PyProxy.d.ts.map +1 -0
- package/dist/core/PyProxy.js +563 -0
- package/dist/core/PyProxy.js.map +1 -0
- package/dist/core/PyRuntime.d.ts +112 -0
- package/dist/core/PyRuntime.d.ts.map +1 -0
- package/dist/core/PyRuntime.js +546 -0
- package/dist/core/PyRuntime.js.map +1 -0
- package/dist/env/PackageInstaller.d.ts +232 -0
- package/dist/env/PackageInstaller.d.ts.map +1 -0
- package/dist/env/PackageInstaller.js +628 -0
- package/dist/env/PackageInstaller.js.map +1 -0
- package/dist/env/ProjectEnvironment.d.ts +63 -0
- package/dist/env/ProjectEnvironment.d.ts.map +1 -0
- package/dist/env/ProjectEnvironment.js +379 -0
- package/dist/env/ProjectEnvironment.js.map +1 -0
- package/dist/env/PyfigAdapter.d.ts +32 -0
- package/dist/env/PyfigAdapter.d.ts.map +1 -0
- package/dist/env/PyfigAdapter.js +10 -0
- package/dist/env/PyfigAdapter.js.map +1 -0
- package/dist/env/PythonDetector.d.ts +48 -0
- package/dist/env/PythonDetector.d.ts.map +1 -0
- package/dist/env/PythonDetector.js +182 -0
- package/dist/env/PythonDetector.js.map +1 -0
- package/dist/env/PythonProvisioner.d.ts +16 -0
- package/dist/env/PythonProvisioner.d.ts.map +1 -0
- package/dist/env/PythonProvisioner.js +42 -0
- package/dist/env/PythonProvisioner.js.map +1 -0
- package/dist/env/VenvManager.d.ts +55 -0
- package/dist/env/VenvManager.d.ts.map +1 -0
- package/dist/env/VenvManager.js +153 -0
- package/dist/env/VenvManager.js.map +1 -0
- package/dist/env/executables.d.ts +3 -0
- package/dist/env/executables.d.ts.map +1 -0
- package/dist/env/executables.js +14 -0
- package/dist/env/executables.js.map +1 -0
- package/dist/index.d.ts +182 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +393 -0
- package/dist/index.js.map +1 -0
- package/dist/native/NativeAddonLoader.d.ts +11 -0
- package/dist/native/NativeAddonLoader.d.ts.map +1 -0
- package/dist/native/NativeAddonLoader.js +75 -0
- package/dist/native/NativeAddonLoader.js.map +1 -0
- package/dist/plugins/Plugin.interface.d.ts +41 -0
- package/dist/plugins/Plugin.interface.d.ts.map +1 -0
- package/dist/plugins/Plugin.interface.js +12 -0
- package/dist/plugins/Plugin.interface.js.map +1 -0
- package/dist/plugins/PluginManager.d.ts +26 -0
- package/dist/plugins/PluginManager.d.ts.map +1 -0
- package/dist/plugins/PluginManager.js +174 -0
- package/dist/plugins/PluginManager.js.map +1 -0
- package/dist/plugins/builtin/NumpyPlugin.d.ts +17 -0
- package/dist/plugins/builtin/NumpyPlugin.d.ts.map +1 -0
- package/dist/plugins/builtin/NumpyPlugin.js +41 -0
- package/dist/plugins/builtin/NumpyPlugin.js.map +1 -0
- package/dist/plugins/builtin/PandasPlugin.d.ts +19 -0
- package/dist/plugins/builtin/PandasPlugin.d.ts.map +1 -0
- package/dist/plugins/builtin/PandasPlugin.js +57 -0
- package/dist/plugins/builtin/PandasPlugin.js.map +1 -0
- package/dist/plugins/builtin/TorchPlugin.d.ts +23 -0
- package/dist/plugins/builtin/TorchPlugin.d.ts.map +1 -0
- package/dist/plugins/builtin/TorchPlugin.js +50 -0
- package/dist/plugins/builtin/TorchPlugin.js.map +1 -0
- package/dist/plugins/index.d.ts +7 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +12 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/serialization/DataFrameBridge.d.ts +141 -0
- package/dist/serialization/DataFrameBridge.d.ts.map +1 -0
- package/dist/serialization/DataFrameBridge.js +355 -0
- package/dist/serialization/DataFrameBridge.js.map +1 -0
- package/dist/serialization/MsgPackSerializer.d.ts +45 -0
- package/dist/serialization/MsgPackSerializer.d.ts.map +1 -0
- package/dist/serialization/MsgPackSerializer.js +242 -0
- package/dist/serialization/MsgPackSerializer.js.map +1 -0
- package/dist/serialization/NumpyBridge.d.ts +96 -0
- package/dist/serialization/NumpyBridge.d.ts.map +1 -0
- package/dist/serialization/NumpyBridge.js +323 -0
- package/dist/serialization/NumpyBridge.js.map +1 -0
- package/dist/serialization/Serializer.d.ts +78 -0
- package/dist/serialization/Serializer.d.ts.map +1 -0
- package/dist/serialization/Serializer.js +281 -0
- package/dist/serialization/Serializer.js.map +1 -0
- package/dist/types/addon.d.ts +131 -0
- package/dist/types/addon.d.ts.map +1 -0
- package/dist/types/addon.js +32 -0
- package/dist/types/addon.js.map +1 -0
- package/dist/types/config.d.ts +233 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +60 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +12 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/python.d.ts +235 -0
- package/dist/types/python.d.ts.map +1 -0
- package/dist/types/python.js +7 -0
- package/dist/types/python.js.map +1 -0
- package/dist/utils/ErrorTranslator.d.ts +83 -0
- package/dist/utils/ErrorTranslator.d.ts.map +1 -0
- package/dist/utils/ErrorTranslator.js +210 -0
- package/dist/utils/ErrorTranslator.js.map +1 -0
- package/dist/utils/Locking.d.ts +3 -0
- package/dist/utils/Locking.d.ts.map +1 -0
- package/dist/utils/Locking.js +10 -0
- package/dist/utils/Locking.js.map +1 -0
- package/dist/utils/Logger.d.ts +27 -0
- package/dist/utils/Logger.d.ts.map +1 -0
- package/dist/utils/Logger.js +115 -0
- package/dist/utils/Logger.js.map +1 -0
- package/dist/utils/MemoryMonitor.d.ts +43 -0
- package/dist/utils/MemoryMonitor.d.ts.map +1 -0
- package/dist/utils/MemoryMonitor.js +143 -0
- package/dist/utils/MemoryMonitor.js.map +1 -0
- package/package.json +92 -17
- package/python/ast_inspector.py +248 -0
- package/python/error_handler.py +432 -0
- package/python/isolated_worker.py +94 -0
- package/python/pynect_dispatcher.py +382 -0
- package/python/pynect_runtime.py +574 -0
- package/python/serializer.py +373 -0
- package/python/type_inspector.py +315 -0
- package/scripts/build-native.js +50 -0
- package/scripts/cli.js +21 -0
- package/scripts/ensure-native.js +85 -0
- package/scripts/postinstall.js +40 -0
- package/scripts/pyfig.js +113 -0
- package/scripts/python-provisioner.js +23 -0
- package/scripts/smoke-python-boundary.js +103 -0
- package/src/native/NativeAddonLoader.ts +98 -0
- package/src/native/gil_guard.cpp +25 -0
- package/src/native/gil_guard.h +174 -0
- package/src/native/pynect_addon.cpp +942 -0
- package/src/native/python_bridge.cpp +904 -0
- package/src/native/python_bridge.h +263 -0
- package/src/native/thread_pool.cpp +375 -0
- package/src/native/thread_pool.h +185 -0
- package/src/native/type_converter.cpp +906 -0
- package/src/native/type_converter.h +271 -0
- package/index.d.ts +0 -3
- package/index.js +0 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NumpyBridge.js","sourceRoot":"","sources":["../../src/serialization/NumpyBridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pynect - Serializer
|
|
3
|
+
* Central coordinator for Python <-> JavaScript data conversion.
|
|
4
|
+
* Routes to specialized bridges (MsgPack, NumPy, DataFrame) based on format.
|
|
5
|
+
*/
|
|
6
|
+
import type { SerializedValue } from '../types/python';
|
|
7
|
+
/**
|
|
8
|
+
* SerializerOptions - controls serialization behavior.
|
|
9
|
+
*/
|
|
10
|
+
export interface SerializerOptions {
|
|
11
|
+
/** Use SharedArrayBuffer for large NumPy arrays (requires cross-origin isolation) */
|
|
12
|
+
useSharedArrayBuffer?: boolean;
|
|
13
|
+
/** Maximum size for inline JSON (bytes). Larger -> binary */
|
|
14
|
+
maxJsonSize?: number;
|
|
15
|
+
/** Whether to wrap Python objects in PyProxy */
|
|
16
|
+
wrapPythonRefs?: boolean;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Serializer - converts between Python wire format and JavaScript values.
|
|
20
|
+
*
|
|
21
|
+
* This is a singleton accessed via `Serializer.getInstance()`.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* const serializer = Serializer.getInstance();
|
|
26
|
+
*
|
|
27
|
+
* // JavaScript -> Python wire format
|
|
28
|
+
* const sv = await serializer.serialize([1, 2, 3, 4, 5]);
|
|
29
|
+
*
|
|
30
|
+
* // Python wire format -> JavaScript
|
|
31
|
+
* const jsValue = await serializer.deserialize(sv);
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export declare class Serializer {
|
|
35
|
+
private static _instance;
|
|
36
|
+
private readonly _options;
|
|
37
|
+
private readonly _numpyBridge;
|
|
38
|
+
private readonly _dataframeBridge;
|
|
39
|
+
private readonly _msgpackSerializer;
|
|
40
|
+
private constructor();
|
|
41
|
+
static getInstance(options?: SerializerOptions): Serializer;
|
|
42
|
+
static resetInstance(): void;
|
|
43
|
+
/**
|
|
44
|
+
* Deserialize a Python wire format value to JavaScript.
|
|
45
|
+
*
|
|
46
|
+
* Format routing:
|
|
47
|
+
* - JSON (0) -> JSON.parse
|
|
48
|
+
* - MsgPack (1) -> MessagePack decode
|
|
49
|
+
* - NumPy array (2) -> TypedArray
|
|
50
|
+
* - DataFrame (3) -> DataFrameResult
|
|
51
|
+
* - Series (4) -> SeriesResult
|
|
52
|
+
* - PyRef (6) -> PyProxy (via addon)
|
|
53
|
+
* - Bytes (7) -> Uint8Array
|
|
54
|
+
* - None (8) -> null
|
|
55
|
+
*/
|
|
56
|
+
deserialize(sv: SerializedValue): Promise<unknown>;
|
|
57
|
+
/**
|
|
58
|
+
* Deserialize synchronously (for non-async contexts).
|
|
59
|
+
* Limited: only works for simple types.
|
|
60
|
+
*/
|
|
61
|
+
deserializeSync(sv: SerializedValue): unknown;
|
|
62
|
+
/**
|
|
63
|
+
* Serialize a JavaScript value to Python wire format.
|
|
64
|
+
* Chooses the most efficient encoding automatically.
|
|
65
|
+
*/
|
|
66
|
+
serialize(value: unknown): Promise<SerializedValue>;
|
|
67
|
+
/**
|
|
68
|
+
* Serialize synchronously (for non-async contexts).
|
|
69
|
+
*/
|
|
70
|
+
serializeSync(value: unknown): SerializedValue;
|
|
71
|
+
private _deserializeJson;
|
|
72
|
+
private _deserializeMsgPack;
|
|
73
|
+
private _deserializePythonRef;
|
|
74
|
+
private _deserializeBytes;
|
|
75
|
+
private _serializeValue;
|
|
76
|
+
private _serializeValueSync;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=Serializer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Serializer.d.ts","sourceRoot":"","sources":["../../src/serialization/Serializer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EAEhB,MAAM,iBAAiB,CAAC;AAQzB;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,qFAAqF;IACrF,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,6DAA6D;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAC,SAAS,CAA2B;IACnD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8B;IACvD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;IACnD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAoB;IAEvD,OAAO;IAWP,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,UAAU;IAO3D,MAAM,CAAC,aAAa,IAAI,IAAI;IAM5B;;;;;;;;;;;;OAYG;IACG,WAAW,CAAC,EAAE,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IAkCxD;;;OAGG;IACH,eAAe,CAAC,EAAE,EAAE,eAAe,GAAG,OAAO;IAqB7C;;;OAGG;IACG,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC;IAIzD;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe;IAM9C,OAAO,CAAC,gBAAgB;IAkBxB,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,qBAAqB;IAU7B,OAAO,CAAC,iBAAiB;YAYX,eAAe;IAI7B,OAAO,CAAC,mBAAmB;CAkG5B"}
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* pynect - Serializer
|
|
4
|
+
* Central coordinator for Python <-> JavaScript data conversion.
|
|
5
|
+
* Routes to specialized bridges (MsgPack, NumPy, DataFrame) based on format.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.Serializer = void 0;
|
|
9
|
+
const NumpyBridge_1 = require("./NumpyBridge");
|
|
10
|
+
const DataFrameBridge_1 = require("./DataFrameBridge");
|
|
11
|
+
const MsgPackSerializer_1 = require("./MsgPackSerializer");
|
|
12
|
+
const Logger_1 = require("../utils/Logger");
|
|
13
|
+
const logger = new Logger_1.Logger('Serializer');
|
|
14
|
+
/**
|
|
15
|
+
* Serializer - converts between Python wire format and JavaScript values.
|
|
16
|
+
*
|
|
17
|
+
* This is a singleton accessed via `Serializer.getInstance()`.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* const serializer = Serializer.getInstance();
|
|
22
|
+
*
|
|
23
|
+
* // JavaScript -> Python wire format
|
|
24
|
+
* const sv = await serializer.serialize([1, 2, 3, 4, 5]);
|
|
25
|
+
*
|
|
26
|
+
* // Python wire format -> JavaScript
|
|
27
|
+
* const jsValue = await serializer.deserialize(sv);
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
class Serializer {
|
|
31
|
+
static _instance = null;
|
|
32
|
+
_options;
|
|
33
|
+
_numpyBridge;
|
|
34
|
+
_dataframeBridge;
|
|
35
|
+
_msgpackSerializer;
|
|
36
|
+
constructor(options = {}) {
|
|
37
|
+
this._options = {
|
|
38
|
+
useSharedArrayBuffer: options.useSharedArrayBuffer ?? false,
|
|
39
|
+
maxJsonSize: options.maxJsonSize ?? 65536, // 64KB
|
|
40
|
+
wrapPythonRefs: options.wrapPythonRefs ?? true,
|
|
41
|
+
};
|
|
42
|
+
this._numpyBridge = new NumpyBridge_1.NumpyBridge({ useSharedArrayBuffer: this._options.useSharedArrayBuffer });
|
|
43
|
+
this._dataframeBridge = new DataFrameBridge_1.DataFrameBridge();
|
|
44
|
+
this._msgpackSerializer = new MsgPackSerializer_1.MsgPackSerializer();
|
|
45
|
+
}
|
|
46
|
+
static getInstance(options) {
|
|
47
|
+
if (!Serializer._instance) {
|
|
48
|
+
Serializer._instance = new Serializer(options);
|
|
49
|
+
}
|
|
50
|
+
return Serializer._instance;
|
|
51
|
+
}
|
|
52
|
+
static resetInstance() {
|
|
53
|
+
Serializer._instance = null;
|
|
54
|
+
}
|
|
55
|
+
// Python Wire Format -> JavaScript
|
|
56
|
+
/**
|
|
57
|
+
* Deserialize a Python wire format value to JavaScript.
|
|
58
|
+
*
|
|
59
|
+
* Format routing:
|
|
60
|
+
* - JSON (0) -> JSON.parse
|
|
61
|
+
* - MsgPack (1) -> MessagePack decode
|
|
62
|
+
* - NumPy array (2) -> TypedArray
|
|
63
|
+
* - DataFrame (3) -> DataFrameResult
|
|
64
|
+
* - Series (4) -> SeriesResult
|
|
65
|
+
* - PyRef (6) -> PyProxy (via addon)
|
|
66
|
+
* - Bytes (7) -> Uint8Array
|
|
67
|
+
* - None (8) -> null
|
|
68
|
+
*/
|
|
69
|
+
async deserialize(sv) {
|
|
70
|
+
const format = sv.format;
|
|
71
|
+
switch (format) {
|
|
72
|
+
case 0: // JSON
|
|
73
|
+
return this._deserializeJson(sv);
|
|
74
|
+
case 1: // MSGPACK
|
|
75
|
+
return this._deserializeMsgPack(sv);
|
|
76
|
+
case 2: // NUMPY_ARRAY
|
|
77
|
+
return this._numpyBridge.deserialize(sv);
|
|
78
|
+
case 3: // PANDAS_DATAFRAME
|
|
79
|
+
return this._dataframeBridge.deserializeDataFrame(sv);
|
|
80
|
+
case 4: // PANDAS_SERIES
|
|
81
|
+
return this._dataframeBridge.deserializeSeries(sv);
|
|
82
|
+
case 6: // PYTHON_REF
|
|
83
|
+
return this._deserializePythonRef(sv);
|
|
84
|
+
case 7: // BYTES
|
|
85
|
+
return this._deserializeBytes(sv);
|
|
86
|
+
case 8: // NONE
|
|
87
|
+
return null;
|
|
88
|
+
default:
|
|
89
|
+
logger.warn(`Unknown serialization format: ${format}`);
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Deserialize synchronously (for non-async contexts).
|
|
95
|
+
* Limited: only works for simple types.
|
|
96
|
+
*/
|
|
97
|
+
deserializeSync(sv) {
|
|
98
|
+
const format = sv.format;
|
|
99
|
+
switch (format) {
|
|
100
|
+
case 0: // JSON
|
|
101
|
+
return this._deserializeJson(sv);
|
|
102
|
+
case 7: // BYTES
|
|
103
|
+
return sv.data instanceof Uint8Array ? sv.data : null;
|
|
104
|
+
case 8: // NONE
|
|
105
|
+
return null;
|
|
106
|
+
default:
|
|
107
|
+
// For binary formats, return null in sync mode
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
// JavaScript -> Python Wire Format
|
|
112
|
+
/**
|
|
113
|
+
* Serialize a JavaScript value to Python wire format.
|
|
114
|
+
* Chooses the most efficient encoding automatically.
|
|
115
|
+
*/
|
|
116
|
+
async serialize(value) {
|
|
117
|
+
return this._serializeValue(value);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Serialize synchronously (for non-async contexts).
|
|
121
|
+
*/
|
|
122
|
+
serializeSync(value) {
|
|
123
|
+
return this._serializeValueSync(value);
|
|
124
|
+
}
|
|
125
|
+
// Private Deserialization
|
|
126
|
+
_deserializeJson(sv) {
|
|
127
|
+
const data = sv.data;
|
|
128
|
+
if (data === null || data === undefined) {
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
131
|
+
const jsonStr = typeof data === 'string' ? data : new TextDecoder().decode(data);
|
|
132
|
+
if (!jsonStr || jsonStr === 'null') {
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
if (jsonStr === 'true') {
|
|
136
|
+
return true;
|
|
137
|
+
}
|
|
138
|
+
if (jsonStr === 'false') {
|
|
139
|
+
return false;
|
|
140
|
+
}
|
|
141
|
+
try {
|
|
142
|
+
return JSON.parse(jsonStr);
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
// If JSON parse fails, return the raw string
|
|
146
|
+
return jsonStr;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
_deserializeMsgPack(sv) {
|
|
150
|
+
const data = sv.data;
|
|
151
|
+
if (!data || !(data instanceof Uint8Array)) {
|
|
152
|
+
return null;
|
|
153
|
+
}
|
|
154
|
+
try {
|
|
155
|
+
return this._msgpackSerializer.decode(data);
|
|
156
|
+
}
|
|
157
|
+
catch (err) {
|
|
158
|
+
logger.warn('MsgPack deserialization failed', err);
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
_deserializePythonRef(sv) {
|
|
163
|
+
// PyRef deserialization is handled by PyProxy._deserializeAddonResult
|
|
164
|
+
// which has access to the addon. Here we return the raw ref.
|
|
165
|
+
const objectId = sv.metadata?.objectId;
|
|
166
|
+
if (objectId) {
|
|
167
|
+
return { __pyref__: objectId };
|
|
168
|
+
}
|
|
169
|
+
return null;
|
|
170
|
+
}
|
|
171
|
+
_deserializeBytes(sv) {
|
|
172
|
+
const data = sv.data;
|
|
173
|
+
if (!data) {
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
if (data instanceof Uint8Array) {
|
|
177
|
+
return data;
|
|
178
|
+
}
|
|
179
|
+
if (typeof data === 'string') {
|
|
180
|
+
return new TextEncoder().encode(data);
|
|
181
|
+
}
|
|
182
|
+
return null;
|
|
183
|
+
}
|
|
184
|
+
// Private Serialization
|
|
185
|
+
async _serializeValue(value) {
|
|
186
|
+
return this._serializeValueSync(value);
|
|
187
|
+
}
|
|
188
|
+
_serializeValueSync(value) {
|
|
189
|
+
// null / undefined
|
|
190
|
+
if (value === null || value === undefined) {
|
|
191
|
+
return { format: 0, data: 'null', metadata: {} };
|
|
192
|
+
}
|
|
193
|
+
// Boolean
|
|
194
|
+
if (typeof value === 'boolean') {
|
|
195
|
+
return { format: 0, data: String(value), metadata: {} };
|
|
196
|
+
}
|
|
197
|
+
// Number
|
|
198
|
+
if (typeof value === 'number') {
|
|
199
|
+
if (Number.isNaN(value)) {
|
|
200
|
+
return { format: 0, data: 'null', metadata: {} };
|
|
201
|
+
}
|
|
202
|
+
return { format: 0, data: String(value), metadata: {} };
|
|
203
|
+
}
|
|
204
|
+
// BigInt
|
|
205
|
+
if (typeof value === 'bigint') {
|
|
206
|
+
return { format: 0, data: `"${value.toString()}"`, metadata: {} };
|
|
207
|
+
}
|
|
208
|
+
// String
|
|
209
|
+
if (typeof value === 'string') {
|
|
210
|
+
return { format: 0, data: JSON.stringify(value), metadata: {} };
|
|
211
|
+
}
|
|
212
|
+
// TypedArrays -> NumPy format
|
|
213
|
+
if (value instanceof Float32Array) {
|
|
214
|
+
return this._numpyBridge.serializeTypedArray(value, 'float32');
|
|
215
|
+
}
|
|
216
|
+
if (value instanceof Float64Array) {
|
|
217
|
+
return this._numpyBridge.serializeTypedArray(value, 'float64');
|
|
218
|
+
}
|
|
219
|
+
if (value instanceof Int8Array) {
|
|
220
|
+
return this._numpyBridge.serializeTypedArray(value, 'int8');
|
|
221
|
+
}
|
|
222
|
+
if (value instanceof Int16Array) {
|
|
223
|
+
return this._numpyBridge.serializeTypedArray(value, 'int16');
|
|
224
|
+
}
|
|
225
|
+
if (value instanceof Int32Array) {
|
|
226
|
+
return this._numpyBridge.serializeTypedArray(value, 'int32');
|
|
227
|
+
}
|
|
228
|
+
if (value instanceof BigInt64Array) {
|
|
229
|
+
return this._numpyBridge.serializeTypedArray(value, 'int64');
|
|
230
|
+
}
|
|
231
|
+
if (value instanceof Uint8Array) {
|
|
232
|
+
return this._numpyBridge.serializeTypedArray(value, 'uint8');
|
|
233
|
+
}
|
|
234
|
+
if (value instanceof Uint16Array) {
|
|
235
|
+
return this._numpyBridge.serializeTypedArray(value, 'uint16');
|
|
236
|
+
}
|
|
237
|
+
if (value instanceof Uint32Array) {
|
|
238
|
+
return this._numpyBridge.serializeTypedArray(value, 'uint32');
|
|
239
|
+
}
|
|
240
|
+
if (value instanceof BigUint64Array) {
|
|
241
|
+
return this._numpyBridge.serializeTypedArray(value, 'uint64');
|
|
242
|
+
}
|
|
243
|
+
// Raw ArrayBuffer
|
|
244
|
+
if (value instanceof ArrayBuffer) {
|
|
245
|
+
return { format: 7, data: new Uint8Array(value), metadata: {} };
|
|
246
|
+
}
|
|
247
|
+
// Array - use MsgPack for large, JSON for small
|
|
248
|
+
if (Array.isArray(value)) {
|
|
249
|
+
try {
|
|
250
|
+
const json = JSON.stringify(value);
|
|
251
|
+
if (json.length <= this._options.maxJsonSize) {
|
|
252
|
+
return { format: 0, data: json, metadata: { length: value.length } };
|
|
253
|
+
}
|
|
254
|
+
// Large array -> MessagePack
|
|
255
|
+
const packed = this._msgpackSerializer.encode(value);
|
|
256
|
+
return { format: 1, data: packed, metadata: { length: value.length } };
|
|
257
|
+
}
|
|
258
|
+
catch {
|
|
259
|
+
return { format: 8, data: null, metadata: {} };
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
// Plain object - JSON or MsgPack
|
|
263
|
+
if (typeof value === 'object') {
|
|
264
|
+
try {
|
|
265
|
+
const json = JSON.stringify(value);
|
|
266
|
+
if (json.length <= this._options.maxJsonSize) {
|
|
267
|
+
return { format: 0, data: json, metadata: {} };
|
|
268
|
+
}
|
|
269
|
+
const packed = this._msgpackSerializer.encode(value);
|
|
270
|
+
return { format: 1, data: packed, metadata: {} };
|
|
271
|
+
}
|
|
272
|
+
catch {
|
|
273
|
+
return { format: 8, data: null, metadata: {} };
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
// Fallback
|
|
277
|
+
return { format: 8, data: null, metadata: {} };
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
exports.Serializer = Serializer;
|
|
281
|
+
//# sourceMappingURL=Serializer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Serializer.js","sourceRoot":"","sources":["../../src/serialization/Serializer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pynect - Native Addon TypeScript Interface
|
|
3
|
+
* Type declarations for the C++ N-API addon.
|
|
4
|
+
* These map exactly to the exported functions in pynect_addon.cpp.
|
|
5
|
+
*/
|
|
6
|
+
import type { SerializedValue, PyCallResult, PyIteratorNext, PyTypeInfo, AttributePath } from './python';
|
|
7
|
+
export interface AddonInitOptions {
|
|
8
|
+
/** Path to Python home directory */
|
|
9
|
+
pythonHome: string;
|
|
10
|
+
/** Path to Python executable */
|
|
11
|
+
pythonExecutable: string;
|
|
12
|
+
/** Exact CPython embedding library selected by Pyfig */
|
|
13
|
+
pythonLibrary: string;
|
|
14
|
+
/** Thread pool size */
|
|
15
|
+
threadPoolSize: number;
|
|
16
|
+
/** Max thread queue size */
|
|
17
|
+
maxQueueSize: number;
|
|
18
|
+
/** GIL release interval (microseconds) */
|
|
19
|
+
gilReleaseInterval: number;
|
|
20
|
+
/** Call timeout (milliseconds) */
|
|
21
|
+
callTimeout: number;
|
|
22
|
+
/** Additional Python sys.path entries */
|
|
23
|
+
pythonPathExtra: string[];
|
|
24
|
+
/** Environment variables */
|
|
25
|
+
env: Record<string, string>;
|
|
26
|
+
/** Enable profiling */
|
|
27
|
+
enableProfiling: boolean;
|
|
28
|
+
/** Include Python tracebacks in JavaScript errors */
|
|
29
|
+
includeTracebacks: boolean;
|
|
30
|
+
}
|
|
31
|
+
export interface AddonImportResult {
|
|
32
|
+
objectId: number;
|
|
33
|
+
success: boolean;
|
|
34
|
+
error?: string;
|
|
35
|
+
}
|
|
36
|
+
export interface AddonAttributeResult {
|
|
37
|
+
success: boolean;
|
|
38
|
+
value?: SerializedValue;
|
|
39
|
+
objectId?: number;
|
|
40
|
+
isCallable: boolean;
|
|
41
|
+
isObject: boolean;
|
|
42
|
+
error?: string;
|
|
43
|
+
}
|
|
44
|
+
export interface AddonCallOptions {
|
|
45
|
+
/** Positional arguments */
|
|
46
|
+
args: SerializedValue[];
|
|
47
|
+
/** Keyword arguments */
|
|
48
|
+
kwargs: Record<string, SerializedValue>;
|
|
49
|
+
/** Call timeout override (ms) */
|
|
50
|
+
timeout?: number;
|
|
51
|
+
/** Cooperative timeout for async Python execution (ms). */
|
|
52
|
+
executionTimeout?: number;
|
|
53
|
+
/** Unique key used for cancellation. */
|
|
54
|
+
requestId?: string;
|
|
55
|
+
}
|
|
56
|
+
export interface PyCallOptions {
|
|
57
|
+
/** Cancel a queued or asynchronous Python call. */
|
|
58
|
+
signal?: AbortSignal;
|
|
59
|
+
/** Override the queue timeout for this call (ms). */
|
|
60
|
+
queueTimeout?: number;
|
|
61
|
+
/** Override the cooperative async execution timeout for this call (ms). */
|
|
62
|
+
executionTimeout?: number;
|
|
63
|
+
}
|
|
64
|
+
export interface AddonIteratorResult {
|
|
65
|
+
iteratorId: number;
|
|
66
|
+
success: boolean;
|
|
67
|
+
error?: string;
|
|
68
|
+
}
|
|
69
|
+
export interface AddonMemoryStats {
|
|
70
|
+
pythonHeapBytes: number;
|
|
71
|
+
pythonHeapPeakBytes: number;
|
|
72
|
+
trackedObjects: number;
|
|
73
|
+
pendingCallbacks: number;
|
|
74
|
+
threadPoolActive: number;
|
|
75
|
+
threadPoolQueued: number;
|
|
76
|
+
}
|
|
77
|
+
export interface AddonProfilingReport {
|
|
78
|
+
totalCalls: number;
|
|
79
|
+
totalTimeMs: number;
|
|
80
|
+
avgCallTimeMs: number;
|
|
81
|
+
peakCallTimeMs: number;
|
|
82
|
+
callsByModule: Record<string, number>;
|
|
83
|
+
callsByFunction: Record<string, number>;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* The full interface of the compiled C++ addon module.
|
|
87
|
+
* All async methods return Promises (resolved on libuv callback).
|
|
88
|
+
*/
|
|
89
|
+
export interface NativeAddon {
|
|
90
|
+
initializePython(options: AddonInitOptions): Promise<void>;
|
|
91
|
+
finalizePython(): Promise<void>;
|
|
92
|
+
isInitialized(): boolean;
|
|
93
|
+
importModule(moduleName: string): Promise<AddonImportResult>;
|
|
94
|
+
reloadModule(objectId: number): Promise<AddonImportResult>;
|
|
95
|
+
getAttribute(objectId: number, name: string): Promise<AddonAttributeResult>;
|
|
96
|
+
getAttributePath(objectId: number, path: AttributePath): Promise<AddonAttributeResult>;
|
|
97
|
+
setAttribute(objectId: number, name: string, value: SerializedValue): Promise<boolean>;
|
|
98
|
+
hasAttribute(objectId: number, name: string): Promise<boolean>;
|
|
99
|
+
deleteAttribute(objectId: number, name: string): Promise<boolean>;
|
|
100
|
+
callFunction(objectId: number, path: AttributePath, options: AddonCallOptions): Promise<PyCallResult>;
|
|
101
|
+
callMethod(objectId: number, methodName: string, options: AddonCallOptions): Promise<PyCallResult>;
|
|
102
|
+
cancelCall(requestId: string): Promise<unknown>;
|
|
103
|
+
getTypeInfo(objectId: number): Promise<PyTypeInfo>;
|
|
104
|
+
getObjectValue(objectId: number): Promise<SerializedValue>;
|
|
105
|
+
getObjectRepr(objectId: number): Promise<string>;
|
|
106
|
+
getObjectLength(objectId: number): Promise<number>;
|
|
107
|
+
getObjectKeys(objectId: number): Promise<string[]>;
|
|
108
|
+
createIterator(objectId: number, path: AttributePath): Promise<AddonIteratorResult>;
|
|
109
|
+
iteratorNext(iteratorId: number): Promise<PyIteratorNext>;
|
|
110
|
+
destroyIterator(iteratorId: number): Promise<void>;
|
|
111
|
+
runPythonCode(code: string, globals?: SerializedValue): Promise<SerializedValue>;
|
|
112
|
+
runPythonFile(filePath: string): Promise<SerializedValue>;
|
|
113
|
+
evalPython(expression: string): Promise<SerializedValue>;
|
|
114
|
+
incRef(objectId: number): void;
|
|
115
|
+
decRef(objectId: number): void;
|
|
116
|
+
collectGarbage(): Promise<void>;
|
|
117
|
+
getMemoryStats(): AddonMemoryStats;
|
|
118
|
+
getProfilingReport(): AddonProfilingReport;
|
|
119
|
+
resetProfilingStats(): void;
|
|
120
|
+
setThreadPoolSize(size: number): Promise<void>;
|
|
121
|
+
getThreadPoolStats(): {
|
|
122
|
+
active: number;
|
|
123
|
+
queued: number;
|
|
124
|
+
total: number;
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Loads the native addon, trying prebuilds first then build directory.
|
|
129
|
+
*/
|
|
130
|
+
export declare function loadNativeAddon(): NativeAddon;
|
|
131
|
+
//# sourceMappingURL=addon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addon.d.ts","sourceRoot":"","sources":["../../src/types/addon.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* pynect - Native Addon TypeScript Interface
|
|
4
|
+
* Type declarations for the C++ N-API addon.
|
|
5
|
+
* These map exactly to the exported functions in pynect_addon.cpp.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.loadNativeAddon = loadNativeAddon;
|
|
9
|
+
/**
|
|
10
|
+
* Loads the native addon, trying prebuilds first then build directory.
|
|
11
|
+
*/
|
|
12
|
+
function loadNativeAddon() {
|
|
13
|
+
// Try prebuilt binary first (faster, no build tools needed)
|
|
14
|
+
try {
|
|
15
|
+
// node-gyp-build handles platform/arch detection automatically
|
|
16
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
17
|
+
const build = require('node-gyp-build');
|
|
18
|
+
return build(__dirname + '/../../');
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
// Fall back to explicit build path
|
|
22
|
+
try {
|
|
23
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
24
|
+
return require('../../build/Release/pynect_addon.node');
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
28
|
+
return require('../../build/Debug/pynect_addon.node');
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=addon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addon.js","sourceRoot":"","sources":["../../src/types/addon.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAqKH,0CAiBC;AApBD;;GAEG;AACH,SAAgB,eAAe;IAC7B,4DAA4D;IAC5D,IAAI,CAAC;QACH,+DAA+D;QAC/D,8DAA8D;QAC9D,MAAM,KAAK,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACxC,OAAO,KAAK,CAAC,SAAS,GAAG,SAAS,CAAgB,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,mCAAmC;QACnC,IAAI,CAAC;YACH,8DAA8D;YAC9D,OAAO,OAAO,CAAC,uCAAuC,CAAgB,CAAC;QACzE,CAAC;QAAC,MAAM,CAAC;YACP,8DAA8D;YAC9D,OAAO,OAAO,CAAC,qCAAqC,CAAgB,CAAC;QACvE,CAAC;IACH,CAAC;AACH,CAAC"}
|