@boxlite-ai/boxlite 0.1.0 → 0.1.2
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/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/native.js +1 -1
- package/dist/native.js.map +1 -1
- package/dist/simplebox.d.ts +25 -1
- package/dist/simplebox.d.ts.map +1 -1
- package/dist/simplebox.js +54 -5
- package/dist/simplebox.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
package/dist/native.js
CHANGED
|
@@ -23,7 +23,7 @@ let _nativeModule = null;
|
|
|
23
23
|
function getNativeModule() {
|
|
24
24
|
if (_nativeModule === null) {
|
|
25
25
|
try {
|
|
26
|
-
_nativeModule = (0, helper_1.loadBinding)((0, path_1.join)(__dirname, '..'), 'boxlite', '@boxlite/boxlite');
|
|
26
|
+
_nativeModule = (0, helper_1.loadBinding)((0, path_1.join)(__dirname, '..'), 'boxlite', '@boxlite-ai/boxlite');
|
|
27
27
|
}
|
|
28
28
|
catch (err) {
|
|
29
29
|
throw new Error(`BoxLite native extension not found: ${err}. ` +
|
package/dist/native.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native.js","sourceRoot":"","sources":["../lib/native.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAgBH,0CAYC;AAKD,oCAEC;AAjCD,4CAA8C;AAC9C,+BAA4B;AAE5B,iCAAiC;AACjC,IAAI,aAAa,GAAQ,IAAI,CAAC;AAE9B;;;;;;;GAOG;AACH,SAAgB,eAAe;IAC7B,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,aAAa,GAAG,IAAA,oBAAW,EAAC,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"native.js","sourceRoot":"","sources":["../lib/native.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAgBH,0CAYC;AAKD,oCAEC;AAjCD,4CAA8C;AAC9C,+BAA4B;AAE5B,iCAAiC;AACjC,IAAI,aAAa,GAAQ,IAAI,CAAC;AAE9B;;;;;;;GAOG;AACH,SAAgB,eAAe;IAC7B,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,aAAa,GAAG,IAAA,oBAAW,EAAC,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,qBAAqB,CAAC,CAAC;QACvF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CACb,uCAAuC,GAAG,IAAI;gBAC9C,sDAAsD,CACvD,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY;IAC1B,OAAO,eAAe,EAAE,CAAC,SAAS,CAAC;AACrC,CAAC"}
|
package/dist/simplebox.d.ts
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
import type { ExecResult } from './exec';
|
|
11
11
|
type Boxlite = any;
|
|
12
12
|
type Box = any;
|
|
13
|
+
type BoxOptions = any;
|
|
13
14
|
/**
|
|
14
15
|
* Options for creating a SimpleBox.
|
|
15
16
|
*/
|
|
@@ -85,11 +86,15 @@ export interface SimpleBoxOptions {
|
|
|
85
86
|
*/
|
|
86
87
|
export declare class SimpleBox {
|
|
87
88
|
protected _runtime: Boxlite;
|
|
88
|
-
protected _box: Box;
|
|
89
|
+
protected _box: Box | null;
|
|
90
|
+
protected _boxPromise: Promise<Box> | null;
|
|
89
91
|
protected _name?: string;
|
|
92
|
+
protected _boxOpts: BoxOptions;
|
|
90
93
|
/**
|
|
91
94
|
* Create a new SimpleBox.
|
|
92
95
|
*
|
|
96
|
+
* The box is created lazily on first use (first exec() call).
|
|
97
|
+
*
|
|
93
98
|
* @param options - Box configuration options
|
|
94
99
|
*
|
|
95
100
|
* @example
|
|
@@ -103,18 +108,35 @@ export declare class SimpleBox {
|
|
|
103
108
|
* ```
|
|
104
109
|
*/
|
|
105
110
|
constructor(options?: SimpleBoxOptions);
|
|
111
|
+
/**
|
|
112
|
+
* Ensure the box is created (lazy initialization).
|
|
113
|
+
* @internal
|
|
114
|
+
*/
|
|
115
|
+
protected _ensureBox(): Promise<Box>;
|
|
106
116
|
/**
|
|
107
117
|
* Get the box ID (ULID format).
|
|
118
|
+
*
|
|
119
|
+
* Note: Throws if called before the box is created (e.g., before first exec()).
|
|
108
120
|
*/
|
|
109
121
|
get id(): string;
|
|
122
|
+
/**
|
|
123
|
+
* Get the box ID asynchronously, creating the box if needed.
|
|
124
|
+
*/
|
|
125
|
+
getId(): Promise<string>;
|
|
110
126
|
/**
|
|
111
127
|
* Get the box name (if set).
|
|
112
128
|
*/
|
|
113
129
|
get name(): string | undefined;
|
|
114
130
|
/**
|
|
115
131
|
* Get box metadata.
|
|
132
|
+
*
|
|
133
|
+
* Note: Throws if called before the box is created.
|
|
116
134
|
*/
|
|
117
135
|
info(): any;
|
|
136
|
+
/**
|
|
137
|
+
* Get box metadata asynchronously, creating the box if needed.
|
|
138
|
+
*/
|
|
139
|
+
getInfo(): Promise<any>;
|
|
118
140
|
/**
|
|
119
141
|
* Execute a command in the box and collect the output.
|
|
120
142
|
*
|
|
@@ -152,6 +174,8 @@ export declare class SimpleBox {
|
|
|
152
174
|
* Sends a graceful shutdown signal to the VM. If `autoRemove` is true
|
|
153
175
|
* (default), the box files will be deleted after stopping.
|
|
154
176
|
*
|
|
177
|
+
* Does nothing if the box was never created.
|
|
178
|
+
*
|
|
155
179
|
* @example
|
|
156
180
|
* ```typescript
|
|
157
181
|
* await box.stop();
|
package/dist/simplebox.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simplebox.d.ts","sourceRoot":"","sources":["../lib/simplebox.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAIzC,KAAK,OAAO,GAAG,GAAG,CAAC;AACnB,KAAK,GAAG,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"simplebox.d.ts","sourceRoot":"","sources":["../lib/simplebox.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAIzC,KAAK,OAAO,GAAG,GAAG,CAAC;AACnB,KAAK,GAAG,GAAG,GAAG,CAAC;AAEf,KAAK,UAAU,GAAG,GAAG,CAAC;AAEtB;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,0BAA0B;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,sEAAsE;IACtE,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,iDAAiD;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,8CAA8C;IAC9C,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,4BAA4B;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE7B,oBAAoB;IACpB,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,CAAC,CAAC;IAEH,oBAAoB;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC;QACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;CACJ;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,qBAAa,SAAS;IACpB,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC5B,SAAS,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,CAAQ;IAClC,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAQ;IAClD,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAC;IAE/B;;;;;;;;;;;;;;;;OAgBG;gBACS,OAAO,GAAE,gBAAqB;IA4B1C;;;OAGG;cACa,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC;IAc1C;;;;OAIG;IACH,IAAI,EAAE,IAAI,MAAM,CAKf;IAED;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAK9B;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,GAAG,SAAS,CAE7B;IAED;;;;OAIG;IACH,IAAI;IAOJ;;OAEG;IACG,OAAO;IAKb;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACG,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IACzD,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAsGzF;;;;;;;;;;;;;OAaG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ3B;;;;;;;;;OASG;IACG,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7C"}
|
package/dist/simplebox.js
CHANGED
|
@@ -53,6 +53,8 @@ class SimpleBox {
|
|
|
53
53
|
/**
|
|
54
54
|
* Create a new SimpleBox.
|
|
55
55
|
*
|
|
56
|
+
* The box is created lazily on first use (first exec() call).
|
|
57
|
+
*
|
|
56
58
|
* @param options - Box configuration options
|
|
57
59
|
*
|
|
58
60
|
* @example
|
|
@@ -66,6 +68,8 @@ class SimpleBox {
|
|
|
66
68
|
* ```
|
|
67
69
|
*/
|
|
68
70
|
constructor(options = {}) {
|
|
71
|
+
this._box = null;
|
|
72
|
+
this._boxPromise = null;
|
|
69
73
|
const JsBoxlite = (0, native_1.getJsBoxlite)();
|
|
70
74
|
// Use provided runtime or get global default
|
|
71
75
|
if (options.runtime) {
|
|
@@ -74,8 +78,8 @@ class SimpleBox {
|
|
|
74
78
|
else {
|
|
75
79
|
this._runtime = JsBoxlite.withDefaultConfig();
|
|
76
80
|
}
|
|
77
|
-
// Convert options to BoxOptions format
|
|
78
|
-
|
|
81
|
+
// Convert options to BoxOptions format (stored for lazy creation)
|
|
82
|
+
this._boxOpts = {
|
|
79
83
|
image: options.image,
|
|
80
84
|
cpus: options.cpus,
|
|
81
85
|
memoryMib: options.memoryMib,
|
|
@@ -89,14 +93,40 @@ class SimpleBox {
|
|
|
89
93
|
ports: options.ports,
|
|
90
94
|
};
|
|
91
95
|
this._name = options.name;
|
|
92
|
-
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Ensure the box is created (lazy initialization).
|
|
99
|
+
* @internal
|
|
100
|
+
*/
|
|
101
|
+
async _ensureBox() {
|
|
102
|
+
if (this._box) {
|
|
103
|
+
return this._box;
|
|
104
|
+
}
|
|
105
|
+
// Avoid race condition with concurrent calls
|
|
106
|
+
if (!this._boxPromise) {
|
|
107
|
+
this._boxPromise = this._runtime.create(this._boxOpts, this._name);
|
|
108
|
+
}
|
|
109
|
+
this._box = await this._boxPromise;
|
|
110
|
+
return this._box;
|
|
93
111
|
}
|
|
94
112
|
/**
|
|
95
113
|
* Get the box ID (ULID format).
|
|
114
|
+
*
|
|
115
|
+
* Note: Throws if called before the box is created (e.g., before first exec()).
|
|
96
116
|
*/
|
|
97
117
|
get id() {
|
|
118
|
+
if (!this._box) {
|
|
119
|
+
throw new Error('Box not yet created. Call exec() first or use getId() async method.');
|
|
120
|
+
}
|
|
98
121
|
return this._box.id;
|
|
99
122
|
}
|
|
123
|
+
/**
|
|
124
|
+
* Get the box ID asynchronously, creating the box if needed.
|
|
125
|
+
*/
|
|
126
|
+
async getId() {
|
|
127
|
+
const box = await this._ensureBox();
|
|
128
|
+
return box.id;
|
|
129
|
+
}
|
|
100
130
|
/**
|
|
101
131
|
* Get the box name (if set).
|
|
102
132
|
*/
|
|
@@ -105,10 +135,22 @@ class SimpleBox {
|
|
|
105
135
|
}
|
|
106
136
|
/**
|
|
107
137
|
* Get box metadata.
|
|
138
|
+
*
|
|
139
|
+
* Note: Throws if called before the box is created.
|
|
108
140
|
*/
|
|
109
141
|
info() {
|
|
142
|
+
if (!this._box) {
|
|
143
|
+
throw new Error('Box not yet created. Call exec() first.');
|
|
144
|
+
}
|
|
110
145
|
return this._box.info();
|
|
111
146
|
}
|
|
147
|
+
/**
|
|
148
|
+
* Get box metadata asynchronously, creating the box if needed.
|
|
149
|
+
*/
|
|
150
|
+
async getInfo() {
|
|
151
|
+
const box = await this._ensureBox();
|
|
152
|
+
return box.info();
|
|
153
|
+
}
|
|
112
154
|
async exec(cmd, argsOrFirstArg, envOrSecondArg, ...restArgs) {
|
|
113
155
|
// Parse overloaded arguments
|
|
114
156
|
let args;
|
|
@@ -141,8 +183,9 @@ class SimpleBox {
|
|
|
141
183
|
const envArray = env
|
|
142
184
|
? Object.entries(env).map(([k, v]) => [k, v])
|
|
143
185
|
: undefined;
|
|
144
|
-
//
|
|
145
|
-
const
|
|
186
|
+
// Ensure box is created, then execute via Rust (returns Execution)
|
|
187
|
+
const box = await this._ensureBox();
|
|
188
|
+
const execution = await box.exec(cmd, args, envArray, false);
|
|
146
189
|
// Collect stdout and stderr
|
|
147
190
|
const stdoutLines = [];
|
|
148
191
|
const stderrLines = [];
|
|
@@ -205,6 +248,8 @@ class SimpleBox {
|
|
|
205
248
|
* Sends a graceful shutdown signal to the VM. If `autoRemove` is true
|
|
206
249
|
* (default), the box files will be deleted after stopping.
|
|
207
250
|
*
|
|
251
|
+
* Does nothing if the box was never created.
|
|
252
|
+
*
|
|
208
253
|
* @example
|
|
209
254
|
* ```typescript
|
|
210
255
|
* await box.stop();
|
|
@@ -212,6 +257,10 @@ class SimpleBox {
|
|
|
212
257
|
* ```
|
|
213
258
|
*/
|
|
214
259
|
async stop() {
|
|
260
|
+
if (!this._box) {
|
|
261
|
+
// Box was never created, nothing to stop
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
215
264
|
await this._box.stop();
|
|
216
265
|
}
|
|
217
266
|
/**
|
package/dist/simplebox.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simplebox.js","sourceRoot":"","sources":["../lib/simplebox.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAGH,qCAAwC;AAsDxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAa,SAAS;
|
|
1
|
+
{"version":3,"file":"simplebox.js","sourceRoot":"","sources":["../lib/simplebox.ts"],"names":[],"mappings":"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"}
|