@push.rocks/smartrust 2.5.0 → 2.6.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/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/classes.linescanner.d.ts +13 -1
- package/dist_ts/classes.linescanner.js +57 -24
- package/dist_ts/classes.rustbinarylocator.d.ts +14 -3
- package/dist_ts/classes.rustbinarylocator.js +56 -16
- package/dist_ts/classes.rustbinarylocatorerror.d.ts +15 -3
- package/dist_ts/classes.rustbinarylocatorerror.js +9 -4
- package/dist_ts/classes.rustbridge.d.ts +2 -1
- package/dist_ts/classes.rustbridge.js +3 -2
- package/dist_ts/classes.sockettransport.js +1 -1
- package/dist_ts/classes.stdiotransport.js +1 -1
- package/dist_ts/index.d.ts +1 -1
- package/dist_ts/index.js +1 -1
- package/dist_ts/paths.js +1 -1
- package/dist_ts/plugins.d.ts +2 -1
- package/dist_ts/plugins.js +3 -2
- package/package.json +8 -6
- package/readme.md +22 -4
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/classes.linescanner.ts +62 -25
- package/ts/classes.rustbinarylocator.ts +61 -15
- package/ts/classes.rustbinarylocatorerror.ts +19 -2
- package/ts/classes.rustbridge.ts +2 -1
- package/ts/index.ts +1 -1
- package/ts/plugins.ts +2 -1
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@push.rocks/smartrust',
|
|
6
|
-
version: '2.
|
|
6
|
+
version: '2.6.0',
|
|
7
7
|
description: 'A type-safe bridge between JavaScript engines and Rust binaries.'
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSx1QkFBdUI7SUFDN0IsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLGtFQUFrRTtDQUNoRixDQUFBIn0=
|
|
@@ -3,9 +3,16 @@ import type { IRustBridgeLogger } from './interfaces/index.js';
|
|
|
3
3
|
* Buffer-based newline scanner for streaming binary data.
|
|
4
4
|
* Accumulates chunks and emits complete lines via callback.
|
|
5
5
|
* Used by both StdioTransport and SocketTransport.
|
|
6
|
+
*
|
|
7
|
+
* Each byte is scanned once and copied at most once into its line, so a line that arrives in many
|
|
8
|
+
* chunks costs time linear in its length.
|
|
6
9
|
*/
|
|
7
10
|
export declare class LineScanner {
|
|
8
|
-
|
|
11
|
+
/** Chunks of the line being received; none of them contains a newline. */
|
|
12
|
+
private pending;
|
|
13
|
+
private pendingLength;
|
|
14
|
+
/** Bytes after a line whose callback threw; they may contain newlines and are scanned first. */
|
|
15
|
+
private unscanned;
|
|
9
16
|
private maxPayloadSize;
|
|
10
17
|
private logger;
|
|
11
18
|
constructor(maxPayloadSize: number, logger: IRustBridgeLogger);
|
|
@@ -15,4 +22,9 @@ export declare class LineScanner {
|
|
|
15
22
|
push(chunk: Buffer, onLine: (line: string) => void): void;
|
|
16
23
|
/** Reset the internal buffer. */
|
|
17
24
|
clear(): void;
|
|
25
|
+
/** Joins the pending chunks with the line's last piece; null when the line is too large. */
|
|
26
|
+
private takeLine;
|
|
27
|
+
private appendPartial;
|
|
28
|
+
/** A subarray retains its entire backing allocation; copy a small piece of a large one. */
|
|
29
|
+
private static compact;
|
|
18
30
|
}
|
|
@@ -2,9 +2,16 @@
|
|
|
2
2
|
* Buffer-based newline scanner for streaming binary data.
|
|
3
3
|
* Accumulates chunks and emits complete lines via callback.
|
|
4
4
|
* Used by both StdioTransport and SocketTransport.
|
|
5
|
+
*
|
|
6
|
+
* Each byte is scanned once and copied at most once into its line, so a line that arrives in many
|
|
7
|
+
* chunks costs time linear in its length.
|
|
5
8
|
*/
|
|
6
9
|
export class LineScanner {
|
|
7
|
-
|
|
10
|
+
/** Chunks of the line being received; none of them contains a newline. */
|
|
11
|
+
pending = [];
|
|
12
|
+
pendingLength = 0;
|
|
13
|
+
/** Bytes after a line whose callback threw; they may contain newlines and are scanned first. */
|
|
14
|
+
unscanned = Buffer.alloc(0);
|
|
8
15
|
maxPayloadSize;
|
|
9
16
|
logger;
|
|
10
17
|
constructor(maxPayloadSize, logger) {
|
|
@@ -15,14 +22,15 @@ export class LineScanner {
|
|
|
15
22
|
* Feed a chunk of data. Calls onLine for each complete newline-terminated line found.
|
|
16
23
|
*/
|
|
17
24
|
push(chunk, onLine) {
|
|
18
|
-
this.
|
|
25
|
+
const input = this.unscanned.length > 0 ? Buffer.concat([this.unscanned, chunk]) : chunk;
|
|
26
|
+
this.unscanned = Buffer.alloc(0);
|
|
27
|
+
let start = 0;
|
|
19
28
|
try {
|
|
20
29
|
let newlineIndex;
|
|
21
|
-
while ((newlineIndex =
|
|
22
|
-
const lineBuffer = this.
|
|
23
|
-
|
|
24
|
-
if (lineBuffer
|
|
25
|
-
this.logger.log('error', `Inbound message exceeds maxPayloadSize (${lineBuffer.length} bytes), dropping`);
|
|
30
|
+
while ((newlineIndex = input.indexOf(0x0A, start)) !== -1) {
|
|
31
|
+
const lineBuffer = this.takeLine(input.subarray(start, newlineIndex));
|
|
32
|
+
start = newlineIndex + 1;
|
|
33
|
+
if (!lineBuffer) {
|
|
26
34
|
continue;
|
|
27
35
|
}
|
|
28
36
|
const line = lineBuffer.toString('utf8').trim();
|
|
@@ -30,27 +38,52 @@ export class LineScanner {
|
|
|
30
38
|
onLine(line);
|
|
31
39
|
}
|
|
32
40
|
}
|
|
33
|
-
|
|
34
|
-
if (this.buffer.length > this.maxPayloadSize) {
|
|
35
|
-
this.logger.log('error', `Buffer exceeded maxPayloadSize (${this.buffer.length} bytes) without newline, clearing`);
|
|
36
|
-
this.buffer = Buffer.alloc(0);
|
|
37
|
-
}
|
|
41
|
+
this.appendPartial(input.subarray(start));
|
|
38
42
|
}
|
|
39
|
-
|
|
40
|
-
//
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
if (this.buffer.length === 0) {
|
|
44
|
-
this.buffer = Buffer.alloc(0);
|
|
45
|
-
}
|
|
46
|
-
else if (this.buffer.buffer.byteLength > Math.max(Buffer.poolSize, this.buffer.length * 2)) {
|
|
47
|
-
this.buffer = Buffer.from(this.buffer);
|
|
48
|
-
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
// Keep what follows the failed line for the next push, without retaining what was consumed.
|
|
45
|
+
this.unscanned = LineScanner.compact(input.subarray(start));
|
|
46
|
+
throw error;
|
|
49
47
|
}
|
|
50
48
|
}
|
|
51
49
|
/** Reset the internal buffer. */
|
|
52
50
|
clear() {
|
|
53
|
-
this.
|
|
51
|
+
this.pending = [];
|
|
52
|
+
this.pendingLength = 0;
|
|
53
|
+
this.unscanned = Buffer.alloc(0);
|
|
54
|
+
}
|
|
55
|
+
/** Joins the pending chunks with the line's last piece; null when the line is too large. */
|
|
56
|
+
takeLine(tail) {
|
|
57
|
+
const length = this.pendingLength + tail.length;
|
|
58
|
+
const pending = this.pending;
|
|
59
|
+
this.pending = [];
|
|
60
|
+
this.pendingLength = 0;
|
|
61
|
+
if (length > this.maxPayloadSize) {
|
|
62
|
+
this.logger.log('error', `Inbound message exceeds maxPayloadSize (${length} bytes), dropping`);
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
return pending.length === 0 ? tail : Buffer.concat([...pending, tail], length);
|
|
66
|
+
}
|
|
67
|
+
appendPartial(partial) {
|
|
68
|
+
if (partial.length === 0) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
// Prevent OOM if sender never sends newline
|
|
72
|
+
if (this.pendingLength + partial.length > this.maxPayloadSize) {
|
|
73
|
+
this.logger.log('error', `Buffer exceeded maxPayloadSize (${this.pendingLength + partial.length} bytes) without newline, clearing`);
|
|
74
|
+
this.pending = [];
|
|
75
|
+
this.pendingLength = 0;
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
this.pending.push(LineScanner.compact(partial));
|
|
79
|
+
this.pendingLength += partial.length;
|
|
80
|
+
}
|
|
81
|
+
/** A subarray retains its entire backing allocation; copy a small piece of a large one. */
|
|
82
|
+
static compact(piece) {
|
|
83
|
+
if (piece.length === 0) {
|
|
84
|
+
return Buffer.alloc(0);
|
|
85
|
+
}
|
|
86
|
+
return piece.buffer.byteLength > Math.max(Buffer.poolSize, piece.length * 2) ? Buffer.from(piece) : piece;
|
|
54
87
|
}
|
|
55
88
|
}
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5saW5lc2Nhbm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2NsYXNzZXMubGluZXNjYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7Ozs7R0FPRztBQUNILE1BQU0sT0FBTyxXQUFXO0lBQ3RCLDBFQUEwRTtJQUNsRSxPQUFPLEdBQWEsRUFBRSxDQUFDO0lBQ3ZCLGFBQWEsR0FBRyxDQUFDLENBQUM7SUFDMUIsZ0dBQWdHO0lBQ3hGLFNBQVMsR0FBVyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLGNBQWMsQ0FBUztJQUN2QixNQUFNLENBQW9CO0lBRWxDLFlBQVksY0FBc0IsRUFBRSxNQUF5QjtRQUMzRCxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUNyQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxJQUFJLENBQUMsS0FBYSxFQUFFLE1BQThCO1FBQ3ZELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3pGLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFFZCxJQUFJLENBQUM7WUFDSCxJQUFJLFlBQW9CLENBQUM7WUFDekIsT0FBTyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzFELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMs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
|
|
@@ -3,9 +3,11 @@ import type { IBinaryLocatorOptions, IRustBridgeLogger } from './interfaces/inde
|
|
|
3
3
|
* Locates a Rust binary using a priority-ordered search strategy:
|
|
4
4
|
* 1. Explicit binaryPath override
|
|
5
5
|
* 2. Environment variable
|
|
6
|
-
* 3.
|
|
7
|
-
*
|
|
8
|
-
*
|
|
6
|
+
* 3. Inside a Node.js single executable application: the sidecar embedded under `binaryName`,
|
|
7
|
+
* and nothing else
|
|
8
|
+
* 4. Platform-specific npm package
|
|
9
|
+
* 5. Local development build paths
|
|
10
|
+
* 6. System PATH
|
|
9
11
|
*/
|
|
10
12
|
export declare class RustBinaryLocator {
|
|
11
13
|
private options;
|
|
@@ -16,6 +18,8 @@ export declare class RustBinaryLocator {
|
|
|
16
18
|
* Find the binary path.
|
|
17
19
|
* Returns null if discovery finds no binary. An unusable explicit path
|
|
18
20
|
* rejects with RustBinaryLocatorError without trying discovery or chmod.
|
|
21
|
+
* Inside a single executable application, a sidecar it cannot provide rejects
|
|
22
|
+
* with RustBinaryLocatorError (`ERR_RUST_BINARY_SEA_SIDECAR_UNAVAILABLE`).
|
|
19
23
|
*/
|
|
20
24
|
findBinary(): Promise<string | null>;
|
|
21
25
|
/**
|
|
@@ -23,6 +27,13 @@ export declare class RustBinaryLocator {
|
|
|
23
27
|
*/
|
|
24
28
|
clearCache(): void;
|
|
25
29
|
private searchBinary;
|
|
30
|
+
private findEnvOverride;
|
|
31
|
+
/**
|
|
32
|
+
* Inside a single executable application: the environment override, else the sidecar the
|
|
33
|
+
* executable embeds under `binaryName`. Packages, local paths and PATH belong to the machine,
|
|
34
|
+
* not to the application, and are never searched.
|
|
35
|
+
*/
|
|
36
|
+
private findSeaBinary;
|
|
26
37
|
private findPlatformPackageBinary;
|
|
27
38
|
private isExecutable;
|
|
28
39
|
private validateExplicitPath;
|
|
@@ -7,9 +7,11 @@ const defaultLogger = {
|
|
|
7
7
|
* Locates a Rust binary using a priority-ordered search strategy:
|
|
8
8
|
* 1. Explicit binaryPath override
|
|
9
9
|
* 2. Environment variable
|
|
10
|
-
* 3.
|
|
11
|
-
*
|
|
12
|
-
*
|
|
10
|
+
* 3. Inside a Node.js single executable application: the sidecar embedded under `binaryName`,
|
|
11
|
+
* and nothing else
|
|
12
|
+
* 4. Platform-specific npm package
|
|
13
|
+
* 5. Local development build paths
|
|
14
|
+
* 6. System PATH
|
|
13
15
|
*/
|
|
14
16
|
export class RustBinaryLocator {
|
|
15
17
|
options;
|
|
@@ -32,11 +34,18 @@ export class RustBinaryLocator {
|
|
|
32
34
|
* Find the binary path.
|
|
33
35
|
* Returns null if discovery finds no binary. An unusable explicit path
|
|
34
36
|
* rejects with RustBinaryLocatorError without trying discovery or chmod.
|
|
37
|
+
* Inside a single executable application, a sidecar it cannot provide rejects
|
|
38
|
+
* with RustBinaryLocatorError (`ERR_RUST_BINARY_SEA_SIDECAR_UNAVAILABLE`).
|
|
35
39
|
*/
|
|
36
40
|
async findBinary() {
|
|
37
41
|
if (this.options.binaryPath !== undefined) {
|
|
38
42
|
return this.validateExplicitPath();
|
|
39
43
|
}
|
|
44
|
+
// Inside a SEA every lookup resolves again: smartsea refreshes the extracted
|
|
45
|
+
// generation's lease and re-extracts a pruned tree, which a cached path would skip.
|
|
46
|
+
if (plugins.smartsea.isSea()) {
|
|
47
|
+
return this.findSeaBinary();
|
|
48
|
+
}
|
|
40
49
|
if (this.cachedPath !== null) {
|
|
41
50
|
if (await this.isExecutable(this.cachedPath))
|
|
42
51
|
return this.cachedPath;
|
|
@@ -55,17 +64,11 @@ export class RustBinaryLocator {
|
|
|
55
64
|
async searchBinary() {
|
|
56
65
|
const { binaryName } = this.options;
|
|
57
66
|
// 2. Environment variable override
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
if (await this.isExecutable(envPath)) {
|
|
62
|
-
this.logger.log('info', `Binary found via ${this.options.envVarName}: ${envPath}`);
|
|
63
|
-
return envPath;
|
|
64
|
-
}
|
|
65
|
-
this.logger.log('warn', `${this.options.envVarName} set but not executable: ${envPath}`);
|
|
66
|
-
}
|
|
67
|
+
const envPath = await this.findEnvOverride();
|
|
68
|
+
if (envPath) {
|
|
69
|
+
return envPath;
|
|
67
70
|
}
|
|
68
|
-
//
|
|
71
|
+
// 4. Platform-specific npm package
|
|
69
72
|
if (this.options.platformPackagePrefix) {
|
|
70
73
|
const platformBinary = await this.findPlatformPackageBinary();
|
|
71
74
|
if (platformBinary) {
|
|
@@ -73,7 +76,7 @@ export class RustBinaryLocator {
|
|
|
73
76
|
return platformBinary;
|
|
74
77
|
}
|
|
75
78
|
}
|
|
76
|
-
//
|
|
79
|
+
// 5. Local development build paths
|
|
77
80
|
const localPaths = this.options.localPaths || [
|
|
78
81
|
plugins.path.resolve(process.cwd(), `rust/target/release/${binaryName}`),
|
|
79
82
|
plugins.path.resolve(process.cwd(), `rust/target/debug/${binaryName}`),
|
|
@@ -91,7 +94,7 @@ export class RustBinaryLocator {
|
|
|
91
94
|
return suffixedPath;
|
|
92
95
|
}
|
|
93
96
|
}
|
|
94
|
-
//
|
|
97
|
+
// 6. System PATH
|
|
95
98
|
if (this.options.searchSystemPath !== false) {
|
|
96
99
|
const systemPath = await this.findInPath(binaryName);
|
|
97
100
|
if (systemPath) {
|
|
@@ -102,6 +105,43 @@ export class RustBinaryLocator {
|
|
|
102
105
|
this.logger.log('error', `No binary '${binaryName}' found. Provide an explicit path, set an env var, install the platform package, or build from source.`);
|
|
103
106
|
return null;
|
|
104
107
|
}
|
|
108
|
+
async findEnvOverride() {
|
|
109
|
+
if (!this.options.envVarName) {
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
const envPath = process.env[this.options.envVarName];
|
|
113
|
+
if (!envPath) {
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
if (await this.isExecutable(envPath)) {
|
|
117
|
+
this.logger.log('info', `Binary found via ${this.options.envVarName}: ${envPath}`);
|
|
118
|
+
return envPath;
|
|
119
|
+
}
|
|
120
|
+
this.logger.log('warn', `${this.options.envVarName} set but not executable: ${envPath}`);
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Inside a single executable application: the environment override, else the sidecar the
|
|
125
|
+
* executable embeds under `binaryName`. Packages, local paths and PATH belong to the machine,
|
|
126
|
+
* not to the application, and are never searched.
|
|
127
|
+
*/
|
|
128
|
+
async findSeaBinary() {
|
|
129
|
+
const envPath = await this.findEnvOverride();
|
|
130
|
+
if (envPath) {
|
|
131
|
+
return envPath;
|
|
132
|
+
}
|
|
133
|
+
const { binaryName } = this.options;
|
|
134
|
+
let sidecarPath;
|
|
135
|
+
try {
|
|
136
|
+
sidecarPath = await plugins.smartsea.getSidecarPath(binaryName);
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
const reason = error instanceof Error ? error.message : String(error);
|
|
140
|
+
throw new RustBinaryLocatorError(`This single executable application cannot provide its embedded sidecar '${binaryName}': ${reason}`, undefined, error, 'ERR_RUST_BINARY_SEA_SIDECAR_UNAVAILABLE');
|
|
141
|
+
}
|
|
142
|
+
this.logger.log('info', `Binary found as embedded sidecar: ${sidecarPath}`);
|
|
143
|
+
return sidecarPath;
|
|
144
|
+
}
|
|
105
145
|
async findPlatformPackageBinary() {
|
|
106
146
|
const { binaryName, platformPackagePrefix } = this.options;
|
|
107
147
|
const platform = process.platform;
|
|
@@ -187,4 +227,4 @@ export class RustBinaryLocator {
|
|
|
187
227
|
return null;
|
|
188
228
|
}
|
|
189
229
|
}
|
|
190
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5ydXN0YmluYXJ5bG9jYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2NsYXNzZXMucnVzdGJpbmFyeWxvY2F0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFHN0UsTUFBTSxhQUFhLEdBQXNCO0lBQ3ZDLEdBQUcsS0FBSSxDQUFDO0NBQ1QsQ0FBQztBQUVGOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLE9BQU8saUJBQWlCO0lBQ3BCLE9BQU8sQ0FBd0I7SUFDL0IsTUFBTSxDQUFvQjtJQUMxQixVQUFVLEdBQWtCLElBQUksQ0FBQztJQUV6QyxZQUFZLE9BQThCLEVBQUUsTUFBMEI7UUFDcEUseUZBQXlGO1FBQ3pGLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUMxQixNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN4RixJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ2IsR0FBRyxPQUFPO1lBQ1YsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDcEUsVUFBVSxFQUFFLE9BQU8sT0FBTyxDQUFDLFVBQVUsS0FBSyxRQUFRLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQztnQkFDakYsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFVB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
|
|
230
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5ydXN0YmluYXJ5bG9jYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2NsYXNzZXMucnVzdGJpbmFyeWxvY2F0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFHN0UsTUFBTSxhQUFhLEdBQXNCO0lBQ3ZDLEdBQUcsS0FBSSxDQUFDO0NBQ1QsQ0FBQztBQUVGOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sT0FBTyxpQkFBaUI7SUFDcEIsT0FBTyxDQUF3QjtJQUMvQixNQUFNLENBQW9CO0lBQzFCLFVBQVUsR0FBa0IsSUFBSSxDQUFDO0lBRXpDLFlBQVksT0FBOEIsRUFBRSxNQUEwQjtRQUNwRSx5RkFBeUY7UUFDekYsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzFCLE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3hGLElBQUksQ0FBQyxPQUFPLEdBQUc7WUFDYixHQUFHLE9BQU87WUFDVixVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztZQUNwRSxVQUFVLEVBQUUsT0FBTyxPQUFPLENBQUMsVUFBVSxLQUFLLFFBQVEsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDO2dCQUNqRixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMs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
|
|
@@ -1,6 +1,18 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Why a binary lookup failed:
|
|
3
|
+
* - `ERR_RUST_BINARY_EXPLICIT_PATH_INVALID`: the caller's explicit `binaryPath` is unusable.
|
|
4
|
+
* - `ERR_RUST_BINARY_SEA_SIDECAR_UNAVAILABLE`: inside a Node.js single executable application,
|
|
5
|
+
* the sidecar embedded under the binary's name could not be provided (not embedded, no usable
|
|
6
|
+
* cache directory, extraction failed, …); `cause` carries the `SmartSeaError`.
|
|
7
|
+
*/
|
|
8
|
+
export type TRustBinaryLocatorErrorCode = 'ERR_RUST_BINARY_EXPLICIT_PATH_INVALID' | 'ERR_RUST_BINARY_SEA_SIDECAR_UNAVAILABLE';
|
|
9
|
+
/**
|
|
10
|
+
* A binary lookup that must not continue with other candidates: an unusable explicit
|
|
11
|
+
* `binaryPath`, or an embedded sidecar a single executable application cannot provide.
|
|
12
|
+
* `RustBridge.spawn()` rejects with it instead of resolving `false`.
|
|
13
|
+
*/
|
|
2
14
|
export declare class RustBinaryLocatorError extends Error {
|
|
3
15
|
readonly binaryPath: string | undefined;
|
|
4
|
-
readonly code:
|
|
5
|
-
constructor(message: string, binaryPath: string | undefined, cause?: unknown);
|
|
16
|
+
readonly code: TRustBinaryLocatorErrorCode;
|
|
17
|
+
constructor(message: string, binaryPath: string | undefined, cause?: unknown, code?: TRustBinaryLocatorErrorCode);
|
|
6
18
|
}
|
|
@@ -1,11 +1,16 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* A binary lookup that must not continue with other candidates: an unusable explicit
|
|
3
|
+
* `binaryPath`, or an embedded sidecar a single executable application cannot provide.
|
|
4
|
+
* `RustBridge.spawn()` rejects with it instead of resolving `false`.
|
|
5
|
+
*/
|
|
2
6
|
export class RustBinaryLocatorError extends Error {
|
|
3
7
|
binaryPath;
|
|
4
|
-
code
|
|
5
|
-
constructor(message, binaryPath, cause) {
|
|
8
|
+
code;
|
|
9
|
+
constructor(message, binaryPath, cause, code = 'ERR_RUST_BINARY_EXPLICIT_PATH_INVALID') {
|
|
6
10
|
super(message, cause === undefined ? undefined : { cause });
|
|
7
11
|
this.binaryPath = binaryPath;
|
|
8
12
|
this.name = 'RustBinaryLocatorError';
|
|
13
|
+
this.code = code;
|
|
9
14
|
}
|
|
10
15
|
}
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5ydXN0YmluYXJ5bG9jYXRvcmVycm9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvY2xhc3Nlcy5ydXN0YmluYXJ5bG9jYXRvcmVycm9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVdBOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsS0FBSztJQUs3QixVQUFVO0lBSlosSUFBSSxDQUE4QjtJQUVsRCxZQUNFLE9BQWUsRUFDQyxVQUE4QixFQUM5QyxLQUFlLEVBQ2YsSUFBSSxHQUFnQyx1Q0FBdUM7UUFFM0UsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQzswQkFKNUMsVUFBVTtRQUsxQixJQUFJLENBQUMsSUFBSSxHQUFHLHdCQUF3QixDQUFDO1FBQ3JDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7Q0FDRiJ9
|
|
@@ -32,7 +32,8 @@ export declare class RustBridge<TCommands extends TCommandMap = TCommandMap> ext
|
|
|
32
32
|
/**
|
|
33
33
|
* Spawn the Rust binary and wait for it to signal readiness.
|
|
34
34
|
* Returns true if the binary was found and spawned successfully.
|
|
35
|
-
* Rejects with RustBinaryLocatorError for an invalid explicit binaryPath
|
|
35
|
+
* Rejects with RustBinaryLocatorError for an invalid explicit binaryPath and,
|
|
36
|
+
* inside a single executable application, for an embedded sidecar it cannot provide.
|
|
36
37
|
*/
|
|
37
38
|
spawn(): Promise<boolean>;
|
|
38
39
|
/**
|