tywrap 0.2.1 → 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 +7 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- 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 +17 -0
- package/dist/runtime/bridge-protocol.d.ts.map +1 -1
- package/dist/runtime/bridge-protocol.js +97 -0
- package/dist/runtime/bridge-protocol.js.map +1 -1
- 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.map +1 -1
- package/dist/runtime/http-io.js.map +1 -1
- package/dist/runtime/http.d.ts +1 -0
- package/dist/runtime/http.d.ts.map +1 -1
- package/dist/runtime/http.js +6 -0
- package/dist/runtime/http.js.map +1 -1
- package/dist/runtime/node.d.ts.map +1 -1
- package/dist/runtime/node.js +170 -32
- 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 +4 -0
- package/dist/runtime/pooled-transport.d.ts.map +1 -1
- package/dist/runtime/pooled-transport.js +2 -0
- package/dist/runtime/pooled-transport.js.map +1 -1
- package/dist/runtime/process-io.d.ts +5 -0
- package/dist/runtime/process-io.d.ts.map +1 -1
- package/dist/runtime/process-io.js +64 -30
- package/dist/runtime/process-io.js.map +1 -1
- package/dist/runtime/pyodide-io.d.ts +4 -5
- package/dist/runtime/pyodide-io.d.ts.map +1 -1
- package/dist/runtime/pyodide-io.js +99 -37
- package/dist/runtime/pyodide-io.js.map +1 -1
- package/dist/runtime/safe-codec.d.ts +25 -3
- package/dist/runtime/safe-codec.d.ts.map +1 -1
- package/dist/runtime/safe-codec.js +231 -57
- package/dist/runtime/safe-codec.js.map +1 -1
- package/dist/runtime/transport.d.ts +6 -1
- package/dist/runtime/transport.d.ts.map +1 -1
- package/dist/runtime/transport.js.map +1 -1
- package/dist/runtime/validators.d.ts +0 -11
- package/dist/runtime/validators.d.ts.map +1 -1
- package/dist/runtime/validators.js +13 -3
- package/dist/runtime/validators.js.map +1 -1
- package/dist/runtime/worker-pool.d.ts +12 -0
- package/dist/runtime/worker-pool.d.ts.map +1 -1
- package/dist/runtime/worker-pool.js +53 -5
- package/dist/runtime/worker-pool.js.map +1 -1
- 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 +10 -16
- 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 +78 -12
- 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 +34 -5
- package/src/runtime/bridge-core.ts +58 -18
- package/src/runtime/bridge-protocol.ts +164 -0
- package/src/runtime/errors.ts +14 -0
- package/src/runtime/http-io.ts +2 -1
- package/src/runtime/http.ts +7 -0
- package/src/runtime/node.ts +264 -44
- package/src/runtime/optimized-node.ts +4 -1
- package/src/runtime/pooled-transport.ts +12 -1
- package/src/runtime/process-io.ts +83 -55
- package/src/runtime/pyodide-io.ts +110 -44
- package/src/runtime/safe-codec.ts +290 -82
- package/src/runtime/transport.ts +6 -1
- package/src/runtime/validators.ts +14 -3
- package/src/runtime/worker-pool.ts +67 -6
- 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 +11 -15
- package/src/utils/ir-cache.ts +51 -0
- package/src/utils/parallel-processor.ts +119 -43
- package/src/utils/runtime.ts +129 -18
|
@@ -43,14 +43,34 @@ export declare class SafeCodec {
|
|
|
43
43
|
private readonly rejectNonStringKeys;
|
|
44
44
|
private readonly maxPayloadBytes;
|
|
45
45
|
private readonly bytesHandling;
|
|
46
|
+
private readonly reviveValueBound;
|
|
47
|
+
private static readonly base64Pattern;
|
|
46
48
|
constructor(options?: CodecOptions);
|
|
49
|
+
private assertValidBase64;
|
|
50
|
+
/**
|
|
51
|
+
* Convert base64 string to Uint8Array.
|
|
52
|
+
*
|
|
53
|
+
* Why: Python bridge represents bytes/bytearray as base64 envelopes. Decoding them here
|
|
54
|
+
* restores ergonomic JS types at the boundary.
|
|
55
|
+
*/
|
|
56
|
+
private fromBase64;
|
|
57
|
+
/**
|
|
58
|
+
* JSON.parse reviver that decodes bytes envelopes.
|
|
59
|
+
*
|
|
60
|
+
* Supported shapes:
|
|
61
|
+
* - { "__tywrap_bytes__": true, "b64": "..." } (JS SafeCodec.encodeRequest; also allowed in responses)
|
|
62
|
+
* - { "__type__": "bytes", "encoding": "base64", "data": "..." } (Python SafeCodec default encoder)
|
|
63
|
+
*/
|
|
64
|
+
private reviveValue;
|
|
65
|
+
private toBridgeExecutionError;
|
|
66
|
+
private extractResultFromResponseEnvelope;
|
|
47
67
|
/**
|
|
48
68
|
* Validate and encode a request payload.
|
|
49
69
|
* Called before sending to Python.
|
|
50
70
|
*
|
|
51
71
|
* @param message - The message to encode
|
|
52
72
|
* @returns JSON string ready to send
|
|
53
|
-
* @throws
|
|
73
|
+
* @throws BridgeCodecError if validation fails or encoding fails
|
|
54
74
|
*/
|
|
55
75
|
encodeRequest(message: unknown): string;
|
|
56
76
|
/**
|
|
@@ -59,7 +79,8 @@ export declare class SafeCodec {
|
|
|
59
79
|
*
|
|
60
80
|
* @param payload - The JSON string received from Python
|
|
61
81
|
* @returns Decoded and validated result
|
|
62
|
-
* @throws
|
|
82
|
+
* @throws BridgeCodecError if payload is invalid or decoding fails
|
|
83
|
+
* @throws BridgeProtocolError if protocol envelope is invalid
|
|
63
84
|
* @throws BridgeExecutionError if response contains a Python error
|
|
64
85
|
*/
|
|
65
86
|
decodeResponse<T>(payload: string): T;
|
|
@@ -69,7 +90,8 @@ export declare class SafeCodec {
|
|
|
69
90
|
*
|
|
70
91
|
* @param payload - The JSON string received from Python
|
|
71
92
|
* @returns Decoded and validated result with Arrow decoding applied
|
|
72
|
-
* @throws
|
|
93
|
+
* @throws BridgeCodecError if payload is invalid or decoding fails
|
|
94
|
+
* @throws BridgeProtocolError if protocol envelope is invalid
|
|
73
95
|
* @throws BridgeExecutionError if response contains a Python error
|
|
74
96
|
*/
|
|
75
97
|
decodeResponseAsync<T>(payload: string): Promise<T>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safe-codec.d.ts","sourceRoot":"","sources":["../../src/runtime/safe-codec.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAWH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,sDAAsD;IACtD,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,uDAAuD;IACvD,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,+CAA+C;IAC/C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uDAAuD;IACvD,aAAa,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,aAAa,CAAC;CACrD;
|
|
1
|
+
{"version":3,"file":"safe-codec.d.ts","sourceRoot":"","sources":["../../src/runtime/safe-codec.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAWH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,sDAAsD;IACtD,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,uDAAuD;IACvD,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,+CAA+C;IAC/C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uDAAuD;IACvD,aAAa,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,aAAa,CAAC;CACrD;AA2QD;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAU;IAC9C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAU;IAC9C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAsC;IACpE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA2C;IAC5E,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CACgC;gBAEzD,OAAO,GAAE,YAAiB;IAQtC,OAAO,CAAC,iBAAiB;IASzB;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IAkBlB;;;;;;OAMG;IACH,OAAO,CAAC,WAAW;IAiCnB,OAAO,CAAC,sBAAsB;IAM9B,OAAO,CAAC,iCAAiC;IAiCzC;;;;;;;OAOG;IACH,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;IAgEvC;;;;;;;;;OASG;IACH,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC;IA0CrC;;;;;;;;;OASG;IACG,mBAAmB,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAuDzD;;OAEG;IACH,OAAO,CAAC,QAAQ;CAajB"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* - Payload size limits
|
|
8
8
|
* - Binary data handling
|
|
9
9
|
*/
|
|
10
|
-
import { BridgeProtocolError, BridgeExecutionError } from './errors.js';
|
|
10
|
+
import { BridgeCodecError, BridgeProtocolError, BridgeExecutionError } from './errors.js';
|
|
11
11
|
import { containsSpecialFloat } from './validators.js';
|
|
12
12
|
import { decodeValueAsync as decodeArrowValue } from '../utils/codec.js';
|
|
13
13
|
import { PROTOCOL_ID } from './transport.js';
|
|
@@ -15,6 +15,7 @@ import { PROTOCOL_ID } from './transport.js';
|
|
|
15
15
|
// CONSTANTS
|
|
16
16
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
17
17
|
const DEFAULT_MAX_PAYLOAD_BYTES = 10 * 1024 * 1024; // 10MB
|
|
18
|
+
const ERROR_PAYLOAD_SNIPPET_LENGTH = 200;
|
|
18
19
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
19
20
|
// HELPER FUNCTIONS
|
|
20
21
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
@@ -39,31 +40,35 @@ function buildPath(basePath, key) {
|
|
|
39
40
|
}
|
|
40
41
|
/**
|
|
41
42
|
* Recursively check for non-string keys in objects and Maps.
|
|
42
|
-
* Throws
|
|
43
|
+
* Throws BridgeCodecError with path indication if found.
|
|
43
44
|
*/
|
|
44
|
-
function assertStringKeys(value, path = '') {
|
|
45
|
+
function assertStringKeys(value, path = '', visited = new WeakSet()) {
|
|
45
46
|
if (value === null || typeof value !== 'object') {
|
|
46
47
|
return;
|
|
47
48
|
}
|
|
49
|
+
if (visited.has(value)) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
visited.add(value);
|
|
48
53
|
// Check Map instances for non-string keys
|
|
49
54
|
if (value instanceof Map) {
|
|
50
55
|
for (const key of value.keys()) {
|
|
51
56
|
if (typeof key !== 'string') {
|
|
52
57
|
const keyDesc = typeof key === 'symbol' ? key.toString() : String(key);
|
|
53
58
|
const location = path ? ` at ${path}` : '';
|
|
54
|
-
throw new
|
|
59
|
+
throw new BridgeCodecError(`Non-string key found in Map${location}: ${keyDesc} (${typeof key})`, { codecPhase: 'encode' });
|
|
55
60
|
}
|
|
56
61
|
}
|
|
57
62
|
// Recurse into Map values
|
|
58
63
|
for (const [key, val] of value.entries()) {
|
|
59
|
-
assertStringKeys(val, buildPath(path, key));
|
|
64
|
+
assertStringKeys(val, buildPath(path, key), visited);
|
|
60
65
|
}
|
|
61
66
|
return;
|
|
62
67
|
}
|
|
63
68
|
// Check arrays
|
|
64
69
|
if (Array.isArray(value)) {
|
|
65
|
-
for (
|
|
66
|
-
assertStringKeys(
|
|
70
|
+
for (const [index, item] of value.entries()) {
|
|
71
|
+
assertStringKeys(item, buildPath(path, index), visited);
|
|
67
72
|
}
|
|
68
73
|
return;
|
|
69
74
|
}
|
|
@@ -75,11 +80,13 @@ function assertStringKeys(value, path = '') {
|
|
|
75
80
|
if (firstSymbol !== undefined) {
|
|
76
81
|
const symbolDesc = firstSymbol.toString();
|
|
77
82
|
const location = path ? ` at ${path}` : '';
|
|
78
|
-
throw new
|
|
83
|
+
throw new BridgeCodecError(`Symbol key found in object${location}: ${symbolDesc}`, {
|
|
84
|
+
codecPhase: 'encode',
|
|
85
|
+
});
|
|
79
86
|
}
|
|
80
87
|
// Recurse into object values
|
|
81
|
-
for (const key of Object.
|
|
82
|
-
assertStringKeys(
|
|
88
|
+
for (const [key, item] of Object.entries(value)) {
|
|
89
|
+
assertStringKeys(item, buildPath(path, key), visited);
|
|
83
90
|
}
|
|
84
91
|
}
|
|
85
92
|
}
|
|
@@ -97,12 +104,65 @@ function isPythonErrorResponse(value) {
|
|
|
97
104
|
const error = obj.error;
|
|
98
105
|
return typeof error.type === 'string' && typeof error.message === 'string';
|
|
99
106
|
}
|
|
100
|
-
|
|
107
|
+
/**
|
|
108
|
+
* Type guard for protocol response envelope.
|
|
109
|
+
* Envelopes must include a numeric id.
|
|
110
|
+
*/
|
|
111
|
+
function isProtocolEnvelope(value) {
|
|
101
112
|
if (value === null || typeof value !== 'object') {
|
|
102
113
|
return false;
|
|
103
114
|
}
|
|
104
115
|
const obj = value;
|
|
105
|
-
return typeof obj.id === 'number'
|
|
116
|
+
return typeof obj.id === 'number';
|
|
117
|
+
}
|
|
118
|
+
function hasOwnKey(value, key) {
|
|
119
|
+
return Object.prototype.hasOwnProperty.call(value, key);
|
|
120
|
+
}
|
|
121
|
+
function normalizeErrorPayload(err) {
|
|
122
|
+
if (!err || typeof err !== 'object' || Array.isArray(err)) {
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
const candidate = err;
|
|
126
|
+
if (typeof candidate.type !== 'string' || typeof candidate.message !== 'string') {
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
if (hasOwnKey(candidate, 'traceback') && typeof candidate.traceback !== 'string') {
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
const normalized = {
|
|
133
|
+
type: candidate.type,
|
|
134
|
+
message: candidate.message,
|
|
135
|
+
};
|
|
136
|
+
if (typeof candidate.traceback === 'string') {
|
|
137
|
+
normalized.traceback = candidate.traceback;
|
|
138
|
+
}
|
|
139
|
+
return normalized;
|
|
140
|
+
}
|
|
141
|
+
function describeInvalidErrorPayload(err) {
|
|
142
|
+
if (!err || typeof err !== 'object' || Array.isArray(err)) {
|
|
143
|
+
return 'expected an object with string "type" and "message" fields';
|
|
144
|
+
}
|
|
145
|
+
const candidate = err;
|
|
146
|
+
if (typeof candidate.type !== 'string') {
|
|
147
|
+
return '"type" must be a string';
|
|
148
|
+
}
|
|
149
|
+
if (typeof candidate.message !== 'string') {
|
|
150
|
+
return '"message" must be a string';
|
|
151
|
+
}
|
|
152
|
+
if (hasOwnKey(candidate, 'traceback') && typeof candidate.traceback !== 'string') {
|
|
153
|
+
return '"traceback" must be a string when provided';
|
|
154
|
+
}
|
|
155
|
+
return 'expected an object with string "type" and "message" fields';
|
|
156
|
+
}
|
|
157
|
+
function summarizePayloadForError(payload) {
|
|
158
|
+
const trimmed = payload.trim();
|
|
159
|
+
if (!trimmed) {
|
|
160
|
+
return '[empty payload]';
|
|
161
|
+
}
|
|
162
|
+
if (trimmed.length <= ERROR_PAYLOAD_SNIPPET_LENGTH) {
|
|
163
|
+
return trimmed;
|
|
164
|
+
}
|
|
165
|
+
return `${trimmed.slice(0, ERROR_PAYLOAD_SNIPPET_LENGTH)}...`;
|
|
106
166
|
}
|
|
107
167
|
/**
|
|
108
168
|
* Validate the protocol version in a response.
|
|
@@ -128,21 +188,28 @@ function validateProtocolVersion(value) {
|
|
|
128
188
|
* Find the path to a special float in a value structure.
|
|
129
189
|
* Returns undefined if no special float is found.
|
|
130
190
|
*/
|
|
131
|
-
function findSpecialFloatPath(value, path = '') {
|
|
191
|
+
function findSpecialFloatPath(value, path = '', visited = new WeakSet()) {
|
|
132
192
|
if (typeof value === 'number' && !Number.isFinite(value)) {
|
|
133
193
|
return path || 'root';
|
|
134
194
|
}
|
|
195
|
+
if (value === null || typeof value !== 'object') {
|
|
196
|
+
return undefined;
|
|
197
|
+
}
|
|
198
|
+
if (visited.has(value)) {
|
|
199
|
+
return undefined;
|
|
200
|
+
}
|
|
201
|
+
visited.add(value);
|
|
135
202
|
if (Array.isArray(value)) {
|
|
136
|
-
for (
|
|
137
|
-
const result = findSpecialFloatPath(
|
|
203
|
+
for (const [index, item] of value.entries()) {
|
|
204
|
+
const result = findSpecialFloatPath(item, buildPath(path, index), visited);
|
|
138
205
|
if (result !== undefined) {
|
|
139
206
|
return result;
|
|
140
207
|
}
|
|
141
208
|
}
|
|
142
209
|
}
|
|
143
210
|
if (isPlainObject(value)) {
|
|
144
|
-
for (const key of Object.
|
|
145
|
-
const result = findSpecialFloatPath(
|
|
211
|
+
for (const [key, item] of Object.entries(value)) {
|
|
212
|
+
const result = findSpecialFloatPath(item, buildPath(path, key), visited);
|
|
146
213
|
if (result !== undefined) {
|
|
147
214
|
return result;
|
|
148
215
|
}
|
|
@@ -176,11 +243,113 @@ export class SafeCodec {
|
|
|
176
243
|
rejectNonStringKeys;
|
|
177
244
|
maxPayloadBytes;
|
|
178
245
|
bytesHandling;
|
|
246
|
+
reviveValueBound;
|
|
247
|
+
static base64Pattern = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;
|
|
179
248
|
constructor(options = {}) {
|
|
180
249
|
this.rejectSpecialFloats = options.rejectSpecialFloats ?? true;
|
|
181
250
|
this.rejectNonStringKeys = options.rejectNonStringKeys ?? true;
|
|
182
251
|
this.maxPayloadBytes = options.maxPayloadBytes ?? DEFAULT_MAX_PAYLOAD_BYTES;
|
|
183
252
|
this.bytesHandling = options.bytesHandling ?? 'base64';
|
|
253
|
+
this.reviveValueBound = this.reviveValue.bind(this);
|
|
254
|
+
}
|
|
255
|
+
assertValidBase64(b64) {
|
|
256
|
+
if (!SafeCodec.base64Pattern.test(b64)) {
|
|
257
|
+
throw new BridgeCodecError('Invalid base64 in bytes envelope', {
|
|
258
|
+
codecPhase: 'decode',
|
|
259
|
+
valueType: 'bytes',
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Convert base64 string to Uint8Array.
|
|
265
|
+
*
|
|
266
|
+
* Why: Python bridge represents bytes/bytearray as base64 envelopes. Decoding them here
|
|
267
|
+
* restores ergonomic JS types at the boundary.
|
|
268
|
+
*/
|
|
269
|
+
fromBase64(b64) {
|
|
270
|
+
this.assertValidBase64(b64);
|
|
271
|
+
if (typeof Buffer !== 'undefined') {
|
|
272
|
+
const buf = Buffer.from(b64, 'base64');
|
|
273
|
+
return new Uint8Array(buf.buffer, buf.byteOffset, buf.length);
|
|
274
|
+
}
|
|
275
|
+
if (globalThis.atob) {
|
|
276
|
+
const bin = globalThis.atob(b64);
|
|
277
|
+
const arr = Array.from(bin, c => c.charCodeAt(0));
|
|
278
|
+
return new Uint8Array(arr);
|
|
279
|
+
}
|
|
280
|
+
throw new BridgeCodecError('Base64 decoding is not available in this runtime', {
|
|
281
|
+
codecPhase: 'decode',
|
|
282
|
+
valueType: 'bytes',
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* JSON.parse reviver that decodes bytes envelopes.
|
|
287
|
+
*
|
|
288
|
+
* Supported shapes:
|
|
289
|
+
* - { "__tywrap_bytes__": true, "b64": "..." } (JS SafeCodec.encodeRequest; also allowed in responses)
|
|
290
|
+
* - { "__type__": "bytes", "encoding": "base64", "data": "..." } (Python SafeCodec default encoder)
|
|
291
|
+
*/
|
|
292
|
+
reviveValue(_key, value) {
|
|
293
|
+
if (value === null || typeof value !== 'object' || Array.isArray(value)) {
|
|
294
|
+
return value;
|
|
295
|
+
}
|
|
296
|
+
const obj = value;
|
|
297
|
+
if (obj.__tywrap_bytes__ === true && typeof obj.b64 === 'string') {
|
|
298
|
+
try {
|
|
299
|
+
return this.fromBase64(obj.b64);
|
|
300
|
+
}
|
|
301
|
+
catch (err) {
|
|
302
|
+
const errorMessage = err instanceof Error ? err.message : String(err);
|
|
303
|
+
throw new BridgeCodecError(`Bytes envelope decode failed: ${errorMessage}`, {
|
|
304
|
+
codecPhase: 'decode',
|
|
305
|
+
valueType: 'bytes',
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
if (obj.__type__ === 'bytes' && obj.encoding === 'base64' && typeof obj.data === 'string') {
|
|
310
|
+
try {
|
|
311
|
+
return this.fromBase64(obj.data);
|
|
312
|
+
}
|
|
313
|
+
catch (err) {
|
|
314
|
+
const errorMessage = err instanceof Error ? err.message : String(err);
|
|
315
|
+
throw new BridgeCodecError(`Bytes envelope decode failed: ${errorMessage}`, {
|
|
316
|
+
codecPhase: 'decode',
|
|
317
|
+
valueType: 'bytes',
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
return value;
|
|
322
|
+
}
|
|
323
|
+
toBridgeExecutionError(error) {
|
|
324
|
+
const bridgeError = new BridgeExecutionError(`${error.type}: ${error.message}`);
|
|
325
|
+
bridgeError.traceback = error.traceback;
|
|
326
|
+
return bridgeError;
|
|
327
|
+
}
|
|
328
|
+
extractResultFromResponseEnvelope(parsed) {
|
|
329
|
+
if (isProtocolEnvelope(parsed)) {
|
|
330
|
+
const envelope = parsed;
|
|
331
|
+
const hasResult = hasOwnKey(envelope, 'result');
|
|
332
|
+
const hasError = hasOwnKey(envelope, 'error');
|
|
333
|
+
if (hasResult && hasError) {
|
|
334
|
+
throw new BridgeProtocolError('Protocol response cannot include both "result" and "error"');
|
|
335
|
+
}
|
|
336
|
+
if (hasError) {
|
|
337
|
+
const normalizedError = normalizeErrorPayload(envelope.error);
|
|
338
|
+
if (!normalizedError) {
|
|
339
|
+
const details = describeInvalidErrorPayload(envelope.error);
|
|
340
|
+
throw new BridgeProtocolError(`Invalid response "error" payload: ${details}`);
|
|
341
|
+
}
|
|
342
|
+
throw this.toBridgeExecutionError(normalizedError);
|
|
343
|
+
}
|
|
344
|
+
if (!hasResult) {
|
|
345
|
+
throw new BridgeProtocolError('Protocol response missing "result" or "error" field');
|
|
346
|
+
}
|
|
347
|
+
return envelope.result;
|
|
348
|
+
}
|
|
349
|
+
if (isPythonErrorResponse(parsed)) {
|
|
350
|
+
throw this.toBridgeExecutionError(parsed.error);
|
|
351
|
+
}
|
|
352
|
+
return parsed;
|
|
184
353
|
}
|
|
185
354
|
/**
|
|
186
355
|
* Validate and encode a request payload.
|
|
@@ -188,13 +357,13 @@ export class SafeCodec {
|
|
|
188
357
|
*
|
|
189
358
|
* @param message - The message to encode
|
|
190
359
|
* @returns JSON string ready to send
|
|
191
|
-
* @throws
|
|
360
|
+
* @throws BridgeCodecError if validation fails or encoding fails
|
|
192
361
|
*/
|
|
193
362
|
encodeRequest(message) {
|
|
194
363
|
// Validate special floats if enabled
|
|
195
364
|
if (this.rejectSpecialFloats && containsSpecialFloat(message)) {
|
|
196
365
|
const floatPath = findSpecialFloatPath(message);
|
|
197
|
-
throw new
|
|
366
|
+
throw new BridgeCodecError(`Cannot encode request: contains non-finite number (NaN or Infinity) at ${floatPath}`, { codecPhase: 'encode', valueType: 'number' });
|
|
198
367
|
}
|
|
199
368
|
// Validate string keys if enabled
|
|
200
369
|
if (this.rejectNonStringKeys) {
|
|
@@ -208,7 +377,7 @@ export class SafeCodec {
|
|
|
208
377
|
if (value instanceof Uint8Array || value instanceof ArrayBuffer) {
|
|
209
378
|
switch (this.bytesHandling) {
|
|
210
379
|
case 'reject':
|
|
211
|
-
throw new
|
|
380
|
+
throw new BridgeCodecError(`Cannot encode request: binary data found at ${key || 'root'} (bytesHandling: reject)`, { codecPhase: 'encode', valueType: 'bytes' });
|
|
212
381
|
case 'base64': {
|
|
213
382
|
const bytes = value instanceof ArrayBuffer ? new Uint8Array(value) : value;
|
|
214
383
|
const b64 = this.toBase64(bytes);
|
|
@@ -223,16 +392,21 @@ export class SafeCodec {
|
|
|
223
392
|
});
|
|
224
393
|
}
|
|
225
394
|
catch (err) {
|
|
395
|
+
if (err instanceof BridgeCodecError) {
|
|
396
|
+
throw err;
|
|
397
|
+
}
|
|
226
398
|
if (err instanceof BridgeProtocolError) {
|
|
227
399
|
throw err;
|
|
228
400
|
}
|
|
229
|
-
const
|
|
230
|
-
throw new
|
|
401
|
+
const errorMessage = err instanceof Error ? err.message : String(err);
|
|
402
|
+
throw new BridgeCodecError(`JSON serialization failed: ${errorMessage}`, {
|
|
403
|
+
codecPhase: 'encode',
|
|
404
|
+
});
|
|
231
405
|
}
|
|
232
406
|
// Check payload size
|
|
233
407
|
const payloadBytes = new TextEncoder().encode(payload).length;
|
|
234
408
|
if (payloadBytes > this.maxPayloadBytes) {
|
|
235
|
-
throw new
|
|
409
|
+
throw new BridgeCodecError(`Payload size ${payloadBytes} bytes exceeds maximum ${this.maxPayloadBytes} bytes`, { codecPhase: 'encode', valueType: 'payload' });
|
|
236
410
|
}
|
|
237
411
|
return payload;
|
|
238
412
|
}
|
|
@@ -242,38 +416,35 @@ export class SafeCodec {
|
|
|
242
416
|
*
|
|
243
417
|
* @param payload - The JSON string received from Python
|
|
244
418
|
* @returns Decoded and validated result
|
|
245
|
-
* @throws
|
|
419
|
+
* @throws BridgeCodecError if payload is invalid or decoding fails
|
|
420
|
+
* @throws BridgeProtocolError if protocol envelope is invalid
|
|
246
421
|
* @throws BridgeExecutionError if response contains a Python error
|
|
247
422
|
*/
|
|
248
423
|
decodeResponse(payload) {
|
|
249
424
|
// Check payload size first
|
|
250
425
|
const payloadBytes = new TextEncoder().encode(payload).length;
|
|
251
426
|
if (payloadBytes > this.maxPayloadBytes) {
|
|
252
|
-
throw new
|
|
427
|
+
throw new BridgeCodecError(`Response payload size ${payloadBytes} bytes exceeds maximum ${this.maxPayloadBytes} bytes`, { codecPhase: 'decode', valueType: 'payload' });
|
|
253
428
|
}
|
|
254
429
|
// Parse JSON
|
|
255
430
|
let parsed;
|
|
256
431
|
try {
|
|
257
|
-
parsed = JSON.parse(payload);
|
|
432
|
+
parsed = JSON.parse(payload, this.reviveValueBound);
|
|
258
433
|
}
|
|
259
434
|
catch (err) {
|
|
260
|
-
|
|
261
|
-
|
|
435
|
+
if (err instanceof BridgeCodecError || err instanceof BridgeProtocolError) {
|
|
436
|
+
throw err;
|
|
437
|
+
}
|
|
438
|
+
const errorMessage = err instanceof Error ? err.message : String(err);
|
|
439
|
+
throw new BridgeCodecError(`JSON parse failed: ${errorMessage}. Payload snippet: ${summarizePayloadForError(payload)}`, { codecPhase: 'decode', valueType: 'json' });
|
|
262
440
|
}
|
|
263
441
|
// Validate protocol version (if present)
|
|
264
442
|
validateProtocolVersion(parsed);
|
|
265
|
-
|
|
266
|
-
if (isPythonErrorResponse(parsed)) {
|
|
267
|
-
const error = new BridgeExecutionError(`${parsed.error.type}: ${parsed.error.message}`);
|
|
268
|
-
error.traceback = parsed.error.traceback;
|
|
269
|
-
throw error;
|
|
270
|
-
}
|
|
271
|
-
// Extract the result field from the response envelope
|
|
272
|
-
const result = isProtocolResultResponse(parsed) ? parsed.result : parsed;
|
|
443
|
+
const result = this.extractResultFromResponseEnvelope(parsed);
|
|
273
444
|
// Post-decode validation for special floats if enabled
|
|
274
445
|
if (this.rejectSpecialFloats && containsSpecialFloat(result)) {
|
|
275
446
|
const floatPath = findSpecialFloatPath(result);
|
|
276
|
-
throw new
|
|
447
|
+
throw new BridgeCodecError(`Response contains non-finite number (NaN or Infinity) at ${floatPath}`, { codecPhase: 'decode', valueType: 'number' });
|
|
277
448
|
}
|
|
278
449
|
return result;
|
|
279
450
|
}
|
|
@@ -283,48 +454,48 @@ export class SafeCodec {
|
|
|
283
454
|
*
|
|
284
455
|
* @param payload - The JSON string received from Python
|
|
285
456
|
* @returns Decoded and validated result with Arrow decoding applied
|
|
286
|
-
* @throws
|
|
457
|
+
* @throws BridgeCodecError if payload is invalid or decoding fails
|
|
458
|
+
* @throws BridgeProtocolError if protocol envelope is invalid
|
|
287
459
|
* @throws BridgeExecutionError if response contains a Python error
|
|
288
460
|
*/
|
|
289
461
|
async decodeResponseAsync(payload) {
|
|
290
462
|
// Check payload size first
|
|
291
463
|
const payloadBytes = new TextEncoder().encode(payload).length;
|
|
292
464
|
if (payloadBytes > this.maxPayloadBytes) {
|
|
293
|
-
throw new
|
|
465
|
+
throw new BridgeCodecError(`Response payload size ${payloadBytes} bytes exceeds maximum ${this.maxPayloadBytes} bytes`, { codecPhase: 'decode', valueType: 'payload' });
|
|
294
466
|
}
|
|
295
467
|
// Parse JSON
|
|
296
468
|
let parsed;
|
|
297
469
|
try {
|
|
298
|
-
parsed = JSON.parse(payload);
|
|
470
|
+
parsed = JSON.parse(payload, this.reviveValueBound);
|
|
299
471
|
}
|
|
300
472
|
catch (err) {
|
|
301
|
-
|
|
302
|
-
|
|
473
|
+
if (err instanceof BridgeCodecError || err instanceof BridgeProtocolError) {
|
|
474
|
+
throw err;
|
|
475
|
+
}
|
|
476
|
+
const errorMessage = err instanceof Error ? err.message : String(err);
|
|
477
|
+
throw new BridgeCodecError(`JSON parse failed: ${errorMessage}. Payload snippet: ${summarizePayloadForError(payload)}`, { codecPhase: 'decode', valueType: 'json' });
|
|
303
478
|
}
|
|
304
479
|
// Validate protocol version (if present)
|
|
305
480
|
validateProtocolVersion(parsed);
|
|
306
|
-
|
|
307
|
-
if (isPythonErrorResponse(parsed)) {
|
|
308
|
-
const error = new BridgeExecutionError(`${parsed.error.type}: ${parsed.error.message}`);
|
|
309
|
-
error.traceback = parsed.error.traceback;
|
|
310
|
-
throw error;
|
|
311
|
-
}
|
|
312
|
-
// Extract the result field from the response envelope
|
|
313
|
-
const result = isProtocolResultResponse(parsed) ? parsed.result : parsed;
|
|
481
|
+
const result = this.extractResultFromResponseEnvelope(parsed);
|
|
314
482
|
// Apply Arrow decoding to the result
|
|
315
483
|
let decoded;
|
|
316
484
|
try {
|
|
317
485
|
decoded = await decodeArrowValue(result);
|
|
318
486
|
}
|
|
319
487
|
catch (err) {
|
|
320
|
-
const
|
|
321
|
-
throw new
|
|
488
|
+
const errorMessage = err instanceof Error ? err.message : String(err);
|
|
489
|
+
throw new BridgeCodecError(`Arrow decoding failed: ${errorMessage}`, {
|
|
490
|
+
codecPhase: 'decode',
|
|
491
|
+
valueType: 'arrow',
|
|
492
|
+
});
|
|
322
493
|
}
|
|
323
494
|
// Post-decode validation for special floats if enabled
|
|
324
|
-
// Note:
|
|
325
|
-
if (this.rejectSpecialFloats && containsSpecialFloat(
|
|
326
|
-
const floatPath = findSpecialFloatPath(
|
|
327
|
-
throw new
|
|
495
|
+
// Note: Arrow decoders can introduce NaN/Infinity from binary representations.
|
|
496
|
+
if (this.rejectSpecialFloats && containsSpecialFloat(decoded)) {
|
|
497
|
+
const floatPath = findSpecialFloatPath(decoded);
|
|
498
|
+
throw new BridgeCodecError(`Response contains non-finite number (NaN or Infinity) at ${floatPath}`, { codecPhase: 'decode', valueType: 'number' });
|
|
328
499
|
}
|
|
329
500
|
return decoded;
|
|
330
501
|
}
|
|
@@ -339,7 +510,10 @@ export class SafeCodec {
|
|
|
339
510
|
const binary = String.fromCharCode(...bytes);
|
|
340
511
|
return globalThis.btoa(binary);
|
|
341
512
|
}
|
|
342
|
-
throw new
|
|
513
|
+
throw new BridgeCodecError('Base64 encoding is not available in this runtime', {
|
|
514
|
+
codecPhase: 'encode',
|
|
515
|
+
valueType: 'bytes',
|
|
516
|
+
});
|
|
343
517
|
}
|
|
344
518
|
}
|
|
345
519
|
//# sourceMappingURL=safe-codec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safe-codec.js","sourceRoot":"","sources":["../../src/runtime/safe-codec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"safe-codec.js","sourceRoot":"","sources":["../../src/runtime/safe-codec.ts"],"names":[],"mappings":"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"}
|
|
@@ -93,7 +93,12 @@ export interface ProtocolResponse {
|
|
|
93
93
|
* await transport.init();
|
|
94
94
|
*
|
|
95
95
|
* const response = await transport.send(
|
|
96
|
-
* JSON.stringify({
|
|
96
|
+
* JSON.stringify({
|
|
97
|
+
* id: 1,
|
|
98
|
+
* protocol: 'tywrap/1',
|
|
99
|
+
* method: 'call',
|
|
100
|
+
* params: { module: 'math', functionName: 'sqrt', args: [16], kwargs: {} },
|
|
101
|
+
* }),
|
|
97
102
|
* 5000
|
|
98
103
|
* );
|
|
99
104
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/runtime/transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAMlD,mDAAmD;AACnD,eAAO,MAAM,WAAW,aAAa,CAAC;AAMtC;;;;;;;;;GASG;AACH,MAAM,WAAW,eAAe;IAC9B,iEAAiE;IACjE,EAAE,EAAE,MAAM,CAAC;IAEX,+CAA+C;IAC/C,QAAQ,EAAE,OAAO,WAAW,CAAC;IAE7B,2BAA2B;IAC3B,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,aAAa,GAAG,kBAAkB,GAAG,MAAM,CAAC;IAE7E,wBAAwB;IACxB,MAAM,EAAE;QACN,oDAAoD;QACpD,MAAM,CAAC,EAAE,MAAM,CAAC;QAEhB,+BAA+B;QAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;QAEtB,mCAAmC;QACnC,SAAS,CAAC,EAAE,MAAM,CAAC;QAEnB,6DAA6D;QAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;QAEhB,oCAAoC;QACpC,UAAU,CAAC,EAAE,MAAM,CAAC;QAEpB,2BAA2B;QAC3B,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;QAEjB,wBAAwB;QACxB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAClC,CAAC;CACH;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0DAA0D;IAC1D,EAAE,EAAE,MAAM,CAAC;IAEX,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,2DAA2D;IAC3D,KAAK,CAAC,EAAE;QACN,iCAAiC;QACjC,IAAI,EAAE,MAAM,CAAC;QACb,oBAAoB;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,8CAA8C;QAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAMD
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/runtime/transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAMlD,mDAAmD;AACnD,eAAO,MAAM,WAAW,aAAa,CAAC;AAMtC;;;;;;;;;GASG;AACH,MAAM,WAAW,eAAe;IAC9B,iEAAiE;IACjE,EAAE,EAAE,MAAM,CAAC;IAEX,+CAA+C;IAC/C,QAAQ,EAAE,OAAO,WAAW,CAAC;IAE7B,2BAA2B;IAC3B,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,aAAa,GAAG,kBAAkB,GAAG,MAAM,CAAC;IAE7E,wBAAwB;IACxB,MAAM,EAAE;QACN,oDAAoD;QACpD,MAAM,CAAC,EAAE,MAAM,CAAC;QAEhB,+BAA+B;QAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;QAEtB,mCAAmC;QACnC,SAAS,CAAC,EAAE,MAAM,CAAC;QAEnB,6DAA6D;QAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;QAEhB,oCAAoC;QACpC,UAAU,CAAC,EAAE,MAAM,CAAC;QAEpB,2BAA2B;QAC3B,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;QAEjB,wBAAwB;QACxB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAClC,CAAC;CACH;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0DAA0D;IAC1D,EAAE,EAAE,MAAM,CAAC;IAEX,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,2DAA2D;IAC3D,KAAK,CAAC,EAAE;QACN,iCAAiC;QACjC,IAAI,EAAE,MAAM,CAAC;QACb,oBAAoB;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,8CAA8C;QAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,WAAW,SAAU,SAAQ,UAAU;IAC3C;;;;;;;;;;OAUG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB;;;;;;;;;;;;OAYG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEhF;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAMD;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAMD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAS9D;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAe1E;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAqB5E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/runtime/transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAEhF,mDAAmD;AACnD,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/runtime/transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAEhF,mDAAmD;AACnD,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC;AAiLtC,gFAAgF;AAChF,cAAc;AACd,gFAAgF;AAEhF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,OAAO,CACL,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAQ,KAAmB,CAAC,IAAI,KAAK,UAAU;QAC/C,OAAQ,KAAmB,CAAC,IAAI,KAAK,UAAU;QAC/C,OAAQ,KAAmB,CAAC,OAAO,KAAK,UAAU;QAClD,SAAS,IAAI,KAAK,CACnB,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,GAAG,GAAG,KAAwB,CAAC;IAErC,OAAO,CACL,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ;QAC1B,GAAG,CAAC,QAAQ,KAAK,WAAW;QAC5B,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;QAC9B,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;QACvF,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;QAC9B,GAAG,CAAC,MAAM,KAAK,IAAI,CACpB,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,IAAI,GAAG,KAAyB,CAAC;IAEvC,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,iEAAiE;IACjE,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7B,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YAC1D,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;QACvB,OAAO,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC;IACzE,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -93,17 +93,6 @@ export declare function assertArray<T = unknown>(value: unknown, name: string):
|
|
|
93
93
|
* @throws ValidationError if the value is not a plain object
|
|
94
94
|
*/
|
|
95
95
|
export declare function assertObject(value: unknown, name: string): Record<string, unknown>;
|
|
96
|
-
/**
|
|
97
|
-
* Check if a value contains non-finite numbers (NaN, Infinity, -Infinity).
|
|
98
|
-
* Recursively checks arrays and objects.
|
|
99
|
-
*
|
|
100
|
-
* This is used to detect values that cannot be safely serialized to JSON,
|
|
101
|
-
* as JSON.stringify converts NaN/Infinity to null, which can cause
|
|
102
|
-
* silent data corruption.
|
|
103
|
-
*
|
|
104
|
-
* @param value - The value to check
|
|
105
|
-
* @returns True if the value contains NaN or Infinity anywhere
|
|
106
|
-
*/
|
|
107
96
|
export declare function containsSpecialFloat(value: unknown): boolean;
|
|
108
97
|
/**
|
|
109
98
|
* Assert that a value does not contain non-finite numbers.
|