ai-evaluate 2.1.5 → 2.1.6
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 +121 -72
- package/dist/evaluate.d.ts +7 -24
- package/dist/evaluate.d.ts.map +1 -1
- package/dist/evaluate.js +26 -113
- package/dist/evaluate.js.map +1 -1
- package/dist/node.d.ts +17 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +171 -0
- package/dist/node.js.map +1 -0
- package/dist/repl.d.ts +77 -0
- package/dist/repl.d.ts.map +1 -0
- package/dist/repl.js +145 -0
- package/dist/repl.js.map +1 -0
- package/dist/types.d.ts +12 -10
- package/dist/types.d.ts.map +1 -1
- package/dist/worker-template.d.ts +11 -10
- package/dist/worker-template.d.ts.map +1 -1
- package/dist/worker-template.js +107 -20
- package/dist/worker-template.js.map +1 -1
- package/example/package.json +16 -0
- package/example/src/index.ts +67 -0
- package/example/wrangler.jsonc +9 -0
- package/package.json +9 -1
- package/src/evaluate.ts +28 -127
- package/src/node.d.ts +17 -0
- package/src/node.d.ts.map +1 -0
- package/src/node.js +168 -0
- package/src/node.js.map +1 -0
- package/src/node.ts +200 -0
- package/src/repl.ts +228 -0
- package/src/types.d.ts +172 -0
- package/src/types.d.ts.map +1 -0
- package/src/types.js.map +1 -0
- package/src/types.ts +15 -16
- package/src/worker-template.d.ts +41 -0
- package/src/worker-template.d.ts.map +1 -0
- package/src/worker-template.js.map +1 -0
- package/src/worker-template.ts +113 -31
- package/vitest.config.js +6 -0
- package/vitest.config.ts +14 -2
package/dist/node.js
ADDED
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Evaluate code in a sandboxed environment (Node.js version)
|
|
3
|
+
*
|
|
4
|
+
* Uses Cloudflare worker_loaders when available, falls back to Miniflare for local dev.
|
|
5
|
+
* For Workers-only builds, import from 'ai-evaluate' instead.
|
|
6
|
+
*/
|
|
7
|
+
import { generateWorkerCode, generateDevWorkerCode } from './worker-template.js';
|
|
8
|
+
/**
|
|
9
|
+
* Check if code contains JSX syntax that needs transformation
|
|
10
|
+
*/
|
|
11
|
+
function containsJSX(code) {
|
|
12
|
+
if (!code)
|
|
13
|
+
return false;
|
|
14
|
+
const jsxPattern = /<[A-Z][a-zA-Z0-9]*[\s/>]|<[a-z][a-z0-9-]*[\s/>]|<>|<\/>/;
|
|
15
|
+
const jsxReturnPattern = /return\s*\(\s*<|return\s+<[A-Za-z]/;
|
|
16
|
+
return jsxPattern.test(code) || jsxReturnPattern.test(code);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Transform JSX in code using esbuild
|
|
20
|
+
*/
|
|
21
|
+
async function transformJSX(code) {
|
|
22
|
+
if (!code || !containsJSX(code))
|
|
23
|
+
return code;
|
|
24
|
+
try {
|
|
25
|
+
const { transform } = await import('esbuild');
|
|
26
|
+
const result = await transform(code, {
|
|
27
|
+
loader: 'tsx',
|
|
28
|
+
jsxFactory: 'h',
|
|
29
|
+
jsxFragment: 'Fragment',
|
|
30
|
+
target: 'esnext',
|
|
31
|
+
format: 'esm',
|
|
32
|
+
});
|
|
33
|
+
return result.code;
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
console.error('JSX transform failed:', error);
|
|
37
|
+
return code;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Evaluate code in a sandboxed worker (Node.js version with Miniflare fallback)
|
|
42
|
+
*/
|
|
43
|
+
export async function evaluate(options, env) {
|
|
44
|
+
const start = Date.now();
|
|
45
|
+
try {
|
|
46
|
+
// Transform JSX in module, tests, and script before evaluation
|
|
47
|
+
const transformedModule = options.module ? await transformJSX(options.module) : undefined;
|
|
48
|
+
const transformedTests = options.tests ? await transformJSX(options.tests) : undefined;
|
|
49
|
+
const transformedScript = options.script ? await transformJSX(options.script) : undefined;
|
|
50
|
+
const transformedOptions = {
|
|
51
|
+
...options,
|
|
52
|
+
module: transformedModule,
|
|
53
|
+
tests: transformedTests,
|
|
54
|
+
script: transformedScript,
|
|
55
|
+
};
|
|
56
|
+
// Use worker_loaders if available (Cloudflare Workers)
|
|
57
|
+
// Check lowercase first (preferred), then legacy uppercase
|
|
58
|
+
const loader = env?.loader || env?.LOADER;
|
|
59
|
+
const testService = env?.test || env?.TEST;
|
|
60
|
+
if (loader && testService) {
|
|
61
|
+
return await evaluateWithWorkerLoader(transformedOptions, loader, testService, start);
|
|
62
|
+
}
|
|
63
|
+
// Fall back to Miniflare (Node.js/local development)
|
|
64
|
+
return await evaluateWithMiniflare(transformedOptions, start);
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
return {
|
|
68
|
+
success: false,
|
|
69
|
+
logs: [],
|
|
70
|
+
error: error instanceof Error ? error.message : String(error),
|
|
71
|
+
duration: Date.now() - start,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Evaluate using Cloudflare worker_loaders binding
|
|
77
|
+
*/
|
|
78
|
+
async function evaluateWithWorkerLoader(options, loader, testService, start) {
|
|
79
|
+
const workerCode = generateWorkerCode({
|
|
80
|
+
module: options.module,
|
|
81
|
+
tests: options.tests,
|
|
82
|
+
script: options.script,
|
|
83
|
+
sdk: options.sdk,
|
|
84
|
+
imports: options.imports,
|
|
85
|
+
});
|
|
86
|
+
const id = `sandbox-${Date.now()}-${Math.random().toString(36).slice(2)}`;
|
|
87
|
+
const worker = loader.get(id, async () => ({
|
|
88
|
+
mainModule: 'worker.js',
|
|
89
|
+
modules: {
|
|
90
|
+
'worker.js': workerCode,
|
|
91
|
+
},
|
|
92
|
+
compatibilityDate: '2026-01-01',
|
|
93
|
+
globalOutbound: options.fetch === null ? null : undefined,
|
|
94
|
+
bindings: {
|
|
95
|
+
TEST: testService,
|
|
96
|
+
},
|
|
97
|
+
}));
|
|
98
|
+
const entrypoint = worker.getEntrypoint();
|
|
99
|
+
const response = await entrypoint.fetch(new Request('http://sandbox/execute'));
|
|
100
|
+
const result = (await response.json());
|
|
101
|
+
return {
|
|
102
|
+
...result,
|
|
103
|
+
duration: Date.now() - start,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Evaluate using Miniflare (for Node.js/development)
|
|
108
|
+
*/
|
|
109
|
+
async function evaluateWithMiniflare(options, start) {
|
|
110
|
+
const { Miniflare } = await import('miniflare');
|
|
111
|
+
const workerCode = generateDevWorkerCode({
|
|
112
|
+
module: options.module,
|
|
113
|
+
tests: options.tests,
|
|
114
|
+
script: options.script,
|
|
115
|
+
sdk: options.sdk,
|
|
116
|
+
imports: options.imports,
|
|
117
|
+
fetch: options.fetch, // Pass fetch option to worker template
|
|
118
|
+
});
|
|
119
|
+
// Block outbound network requests at Miniflare level when fetch: null
|
|
120
|
+
// This complements the globalThis.fetch override in the worker template
|
|
121
|
+
const blockNetwork = options.fetch === null;
|
|
122
|
+
const mf = new Miniflare({
|
|
123
|
+
modules: true,
|
|
124
|
+
script: workerCode,
|
|
125
|
+
compatibilityDate: '2026-01-01',
|
|
126
|
+
// Block all outbound fetch/connect when network is disabled
|
|
127
|
+
...(blockNetwork && {
|
|
128
|
+
outboundService: () => {
|
|
129
|
+
throw new Error('Network access blocked: fetch is disabled in this sandbox');
|
|
130
|
+
},
|
|
131
|
+
}),
|
|
132
|
+
});
|
|
133
|
+
try {
|
|
134
|
+
const timeout = options.timeout || 5000;
|
|
135
|
+
const controller = new AbortController();
|
|
136
|
+
const timeoutId = setTimeout(() => controller.abort(), timeout);
|
|
137
|
+
try {
|
|
138
|
+
const response = await mf.dispatchFetch('http://sandbox/execute', {
|
|
139
|
+
signal: controller.signal,
|
|
140
|
+
});
|
|
141
|
+
clearTimeout(timeoutId);
|
|
142
|
+
const result = (await response.json());
|
|
143
|
+
return {
|
|
144
|
+
...result,
|
|
145
|
+
duration: Date.now() - start,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
catch (err) {
|
|
149
|
+
clearTimeout(timeoutId);
|
|
150
|
+
if (err.name === 'AbortError') {
|
|
151
|
+
return {
|
|
152
|
+
success: false,
|
|
153
|
+
logs: [],
|
|
154
|
+
error: `Timeout: Script execution exceeded ${timeout}ms`,
|
|
155
|
+
duration: Date.now() - start,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
throw err;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
finally {
|
|
162
|
+
await mf.dispose();
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Create an evaluate function bound to a specific environment
|
|
167
|
+
*/
|
|
168
|
+
export function createEvaluator(env) {
|
|
169
|
+
return (options) => evaluate(options, env);
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=node.js.map
|
package/dist/node.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
|
package/dist/repl.d.ts
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* REPL session support for ai-evaluate
|
|
3
|
+
*
|
|
4
|
+
* Provides persistent evaluation sessions with context preservation.
|
|
5
|
+
*/
|
|
6
|
+
import type { EvaluateResult, SandboxEnv, SDKConfig } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* REPL session configuration
|
|
9
|
+
*/
|
|
10
|
+
export interface ReplSessionConfig {
|
|
11
|
+
/** Use local Miniflare instead of remote workers */
|
|
12
|
+
local?: boolean;
|
|
13
|
+
/** Authentication token for remote execution */
|
|
14
|
+
auth?: string;
|
|
15
|
+
/** SDK configuration for platform primitives */
|
|
16
|
+
sdk?: SDKConfig | boolean;
|
|
17
|
+
/** Code to run when session starts (defines globals, imports) */
|
|
18
|
+
prelude?: string;
|
|
19
|
+
/** Timeout for each evaluation in milliseconds */
|
|
20
|
+
timeout?: number;
|
|
21
|
+
/** Allow network access */
|
|
22
|
+
allowNetwork?: boolean;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Result from a REPL evaluation
|
|
26
|
+
*/
|
|
27
|
+
export interface ReplEvalResult extends EvaluateResult {
|
|
28
|
+
/** Variables exported during evaluation */
|
|
29
|
+
exports?: Record<string, unknown>;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* REPL session with persistent context
|
|
33
|
+
*/
|
|
34
|
+
export interface ReplSession {
|
|
35
|
+
/** Evaluate code in the session context */
|
|
36
|
+
eval(code: string): Promise<ReplEvalResult>;
|
|
37
|
+
/** Get current session context (accumulated exports) */
|
|
38
|
+
getContext(): Record<string, unknown>;
|
|
39
|
+
/** Set a value in the session context */
|
|
40
|
+
setContext(key: string, value: unknown): void;
|
|
41
|
+
/** Clear the session context */
|
|
42
|
+
clearContext(): void;
|
|
43
|
+
/** Run prelude code (called automatically on first eval) */
|
|
44
|
+
runPrelude(): Promise<void>;
|
|
45
|
+
/** Close the session and release resources */
|
|
46
|
+
close(): Promise<void>;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Create a REPL session for interactive code evaluation
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```ts
|
|
53
|
+
* import { createReplSession } from 'ai-evaluate/repl'
|
|
54
|
+
*
|
|
55
|
+
* const session = await createReplSession({ local: true })
|
|
56
|
+
*
|
|
57
|
+
* await session.eval('const sum = (a, b) => a + b')
|
|
58
|
+
* const result = await session.eval('sum(1, 2)')
|
|
59
|
+
* console.log(result.value) // 3
|
|
60
|
+
*
|
|
61
|
+
* await session.close()
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
export declare function createReplSession(config?: ReplSessionConfig, env?: SandboxEnv): Promise<ReplSession>;
|
|
65
|
+
/**
|
|
66
|
+
* Quick evaluation helper for one-off evaluations
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```ts
|
|
70
|
+
* import { quickEval } from 'ai-evaluate/repl'
|
|
71
|
+
*
|
|
72
|
+
* const result = await quickEval('1 + 2 * 3')
|
|
73
|
+
* console.log(result.value) // 7
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
export declare function quickEval(code: string, config?: ReplSessionConfig, env?: SandboxEnv): Promise<ReplEvalResult>;
|
|
77
|
+
//# sourceMappingURL=repl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAmB,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAExF;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,oDAAoD;IACpD,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,gDAAgD;IAChD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,gDAAgD;IAChD,GAAG,CAAC,EAAE,SAAS,GAAG,OAAO,CAAA;IACzB,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,2BAA2B;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,cAAc;IACpD,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,2CAA2C;IAC3C,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAA;IAE3C,wDAAwD;IACxD,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAErC,yCAAyC;IACzC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;IAE7C,gCAAgC;IAChC,YAAY,IAAI,IAAI,CAAA;IAEpB,4DAA4D;IAC5D,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAE3B,8CAA8C;IAC9C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,CAAC,EAAE,iBAAiB,EAC1B,GAAG,CAAC,EAAE,UAAU,GACf,OAAO,CAAC,WAAW,CAAC,CA+HtB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,iBAAiB,EAC1B,GAAG,CAAC,EAAE,UAAU,GACf,OAAO,CAAC,cAAc,CAAC,CAOzB"}
|
package/dist/repl.js
ADDED
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* REPL session support for ai-evaluate
|
|
3
|
+
*
|
|
4
|
+
* Provides persistent evaluation sessions with context preservation.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Create a REPL session for interactive code evaluation
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import { createReplSession } from 'ai-evaluate/repl'
|
|
12
|
+
*
|
|
13
|
+
* const session = await createReplSession({ local: true })
|
|
14
|
+
*
|
|
15
|
+
* await session.eval('const sum = (a, b) => a + b')
|
|
16
|
+
* const result = await session.eval('sum(1, 2)')
|
|
17
|
+
* console.log(result.value) // 3
|
|
18
|
+
*
|
|
19
|
+
* await session.close()
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export async function createReplSession(config, env) {
|
|
23
|
+
// Context accumulates across evaluations
|
|
24
|
+
let context = {};
|
|
25
|
+
let preludeRun = false;
|
|
26
|
+
let miniflare = null;
|
|
27
|
+
// Build module code from accumulated context
|
|
28
|
+
function buildContextModule() {
|
|
29
|
+
const entries = Object.entries(context);
|
|
30
|
+
if (entries.length === 0)
|
|
31
|
+
return '';
|
|
32
|
+
return entries
|
|
33
|
+
.map(([key, value]) => {
|
|
34
|
+
if (typeof value === 'function') {
|
|
35
|
+
return `export const ${key} = ${value.toString()}`;
|
|
36
|
+
}
|
|
37
|
+
return `export const ${key} = ${JSON.stringify(value)}`;
|
|
38
|
+
})
|
|
39
|
+
.join('\n');
|
|
40
|
+
}
|
|
41
|
+
// Get the evaluate function (local or remote)
|
|
42
|
+
async function getEvaluate() {
|
|
43
|
+
if (config?.local) {
|
|
44
|
+
// Use local Miniflare via node.ts
|
|
45
|
+
const { evaluate } = await import('./node.js');
|
|
46
|
+
return evaluate;
|
|
47
|
+
}
|
|
48
|
+
else if (env) {
|
|
49
|
+
// Use remote worker loaders
|
|
50
|
+
const { evaluate } = await import('./evaluate.js');
|
|
51
|
+
return (options) => evaluate(options, env);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
// Default to local if no env
|
|
55
|
+
const { evaluate } = await import('./node.js');
|
|
56
|
+
return evaluate;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
const evaluate = await getEvaluate();
|
|
60
|
+
async function runPrelude() {
|
|
61
|
+
if (preludeRun || !config?.prelude)
|
|
62
|
+
return;
|
|
63
|
+
preludeRun = true;
|
|
64
|
+
const result = await evaluate({
|
|
65
|
+
module: config.prelude,
|
|
66
|
+
script: 'return Object.keys(module)',
|
|
67
|
+
sdk: config.sdk,
|
|
68
|
+
timeout: config.timeout,
|
|
69
|
+
fetch: config.allowNetwork === false ? null : undefined,
|
|
70
|
+
}, env);
|
|
71
|
+
if (result.success && Array.isArray(result.value)) {
|
|
72
|
+
// Store exported names in context
|
|
73
|
+
for (const key of result.value) {
|
|
74
|
+
context[key] = `__prelude_${key}__`;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
async eval(code) {
|
|
80
|
+
await runPrelude();
|
|
81
|
+
// Wrap code to capture any declared variables
|
|
82
|
+
const contextModule = buildContextModule();
|
|
83
|
+
const preludeModule = config?.prelude || '';
|
|
84
|
+
// Try to parse as expression first, then as statement
|
|
85
|
+
const isExpression = !code.includes('const ') &&
|
|
86
|
+
!code.includes('let ') &&
|
|
87
|
+
!code.includes('function ') &&
|
|
88
|
+
!code.includes('class ') &&
|
|
89
|
+
!code.includes('export ');
|
|
90
|
+
const script = isExpression
|
|
91
|
+
? `return (${code})`
|
|
92
|
+
: code.includes('return ')
|
|
93
|
+
? code
|
|
94
|
+
: `${code}\nreturn undefined`;
|
|
95
|
+
const result = await evaluate({
|
|
96
|
+
module: preludeModule + '\n' + contextModule,
|
|
97
|
+
script,
|
|
98
|
+
sdk: config?.sdk,
|
|
99
|
+
timeout: config?.timeout,
|
|
100
|
+
fetch: config?.allowNetwork === false ? null : undefined,
|
|
101
|
+
}, env);
|
|
102
|
+
return result;
|
|
103
|
+
},
|
|
104
|
+
getContext() {
|
|
105
|
+
return { ...context };
|
|
106
|
+
},
|
|
107
|
+
setContext(key, value) {
|
|
108
|
+
context[key] = value;
|
|
109
|
+
},
|
|
110
|
+
clearContext() {
|
|
111
|
+
context = {};
|
|
112
|
+
},
|
|
113
|
+
runPrelude,
|
|
114
|
+
async close() {
|
|
115
|
+
context = {};
|
|
116
|
+
preludeRun = false;
|
|
117
|
+
if (miniflare &&
|
|
118
|
+
typeof miniflare.dispose === 'function') {
|
|
119
|
+
await miniflare.dispose();
|
|
120
|
+
miniflare = null;
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Quick evaluation helper for one-off evaluations
|
|
127
|
+
*
|
|
128
|
+
* @example
|
|
129
|
+
* ```ts
|
|
130
|
+
* import { quickEval } from 'ai-evaluate/repl'
|
|
131
|
+
*
|
|
132
|
+
* const result = await quickEval('1 + 2 * 3')
|
|
133
|
+
* console.log(result.value) // 7
|
|
134
|
+
* ```
|
|
135
|
+
*/
|
|
136
|
+
export async function quickEval(code, config, env) {
|
|
137
|
+
const session = await createReplSession(config, env);
|
|
138
|
+
try {
|
|
139
|
+
return await session.eval(code);
|
|
140
|
+
}
|
|
141
|
+
finally {
|
|
142
|
+
await session.close();
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=repl.js.map
|
package/dist/repl.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repl.js","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -27,25 +27,25 @@ export interface SDKConfig {
|
|
|
27
27
|
*/
|
|
28
28
|
export interface EvaluateOptions {
|
|
29
29
|
/** Module code with exports */
|
|
30
|
-
module?: string;
|
|
30
|
+
module?: string | undefined;
|
|
31
31
|
/** Test code using vitest (describe, expect, it in global scope) */
|
|
32
|
-
tests?: string;
|
|
32
|
+
tests?: string | undefined;
|
|
33
33
|
/** Script code to run immediately (module exports in scope) */
|
|
34
|
-
script?: string;
|
|
34
|
+
script?: string | undefined;
|
|
35
35
|
/** Timeout in milliseconds (default: 5000) */
|
|
36
|
-
timeout?: number;
|
|
36
|
+
timeout?: number | undefined;
|
|
37
37
|
/** Environment variables to pass to the sandbox */
|
|
38
|
-
env?: Record<string, string
|
|
38
|
+
env?: Record<string, string> | undefined;
|
|
39
39
|
/** Fetch configuration. Set to null to block network access. Default: allowed */
|
|
40
|
-
fetch?: null;
|
|
40
|
+
fetch?: null | undefined;
|
|
41
41
|
/** RPC services to expose via capnweb (URL -> handler) */
|
|
42
|
-
rpc?: Record<string, unknown
|
|
42
|
+
rpc?: Record<string, unknown> | undefined;
|
|
43
43
|
/** Outbound RPC interceptor - intercepts fetch calls to RPC URLs */
|
|
44
|
-
outboundRpc?: (url: string, request: Request) => Promise<Response> | Response | null;
|
|
44
|
+
outboundRpc?: ((url: string, request: Request) => Promise<Response> | Response | null) | undefined;
|
|
45
45
|
/** SDK configuration - enables $, db, ai, api, on, send globals */
|
|
46
|
-
sdk?: SDKConfig | boolean;
|
|
46
|
+
sdk?: SDKConfig | boolean | undefined;
|
|
47
47
|
/** Top-level imports to hoist (for MDX test files with external imports) */
|
|
48
|
-
imports?: string[];
|
|
48
|
+
imports?: string[] | undefined;
|
|
49
49
|
}
|
|
50
50
|
/**
|
|
51
51
|
* Result from evaluate()
|
|
@@ -165,7 +165,9 @@ export interface TestServiceBinding {
|
|
|
165
165
|
* Environment with worker loader binding
|
|
166
166
|
*/
|
|
167
167
|
export interface SandboxEnv {
|
|
168
|
+
loader?: WorkerLoader;
|
|
168
169
|
LOADER?: WorkerLoader;
|
|
170
|
+
test?: TestServiceBinding;
|
|
169
171
|
TEST?: TestServiceBinding;
|
|
170
172
|
}
|
|
171
173
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;IAC5B,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,gDAAgD;IAChD,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,iGAAiG;IACjG,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,iDAAiD;IACjD,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,+BAA+B;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,11 +18,11 @@ import type { SDKConfig } from './types.js';
|
|
|
18
18
|
* Generate worker code for production (uses RPC to ai-tests)
|
|
19
19
|
*/
|
|
20
20
|
export declare function generateWorkerCode(options: {
|
|
21
|
-
module?: string;
|
|
22
|
-
tests?: string;
|
|
23
|
-
script?: string;
|
|
24
|
-
sdk?: SDKConfig | boolean;
|
|
25
|
-
imports?: string[];
|
|
21
|
+
module?: string | undefined;
|
|
22
|
+
tests?: string | undefined;
|
|
23
|
+
script?: string | undefined;
|
|
24
|
+
sdk?: SDKConfig | boolean | undefined;
|
|
25
|
+
imports?: string[] | undefined;
|
|
26
26
|
}): string;
|
|
27
27
|
/**
|
|
28
28
|
* Generate worker code for development (embedded test framework)
|
|
@@ -31,10 +31,11 @@ export declare function generateWorkerCode(options: {
|
|
|
31
31
|
* avoiding the need for RPC service bindings in local development.
|
|
32
32
|
*/
|
|
33
33
|
export declare function generateDevWorkerCode(options: {
|
|
34
|
-
module?: string;
|
|
35
|
-
tests?: string;
|
|
36
|
-
script?: string;
|
|
37
|
-
sdk?: SDKConfig | boolean;
|
|
38
|
-
imports?: string[];
|
|
34
|
+
module?: string | undefined;
|
|
35
|
+
tests?: string | undefined;
|
|
36
|
+
script?: string | undefined;
|
|
37
|
+
sdk?: SDKConfig | boolean | undefined;
|
|
38
|
+
imports?: string[] | undefined;
|
|
39
|
+
fetch?: null | undefined;
|
|
39
40
|
}): string;
|
|
40
41
|
//# sourceMappingURL=worker-template.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-template.d.ts","sourceRoot":"","sources":["../src/worker-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"worker-template.d.ts","sourceRoot":"","sources":["../src/worker-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AA03F3C;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IAC1C,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,GAAG,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAA;IACrC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;CAC/B,GAAG,MAAM,CAgPT;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE;IAC7C,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,GAAG,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAA;IACrC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IAC9B,KAAK,CAAC,EAAE,IAAI,GAAG,SAAS,CAAA;CACzB,GAAG,MAAM,CA4hBT"}
|