ai-evaluate 2.1.6 → 2.1.8

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.
Files changed (100) hide show
  1. package/README.md +90 -3
  2. package/dist/capnweb-bundle.d.ts +10 -0
  3. package/dist/capnweb-bundle.d.ts.map +1 -0
  4. package/dist/capnweb-bundle.js +2596 -0
  5. package/dist/capnweb-bundle.js.map +1 -0
  6. package/dist/evaluate.d.ts +1 -1
  7. package/dist/evaluate.d.ts.map +1 -1
  8. package/dist/evaluate.js +186 -7
  9. package/dist/evaluate.js.map +1 -1
  10. package/dist/index.d.ts +2 -1
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +1 -0
  13. package/dist/index.js.map +1 -1
  14. package/dist/miniflare-pool.d.ts +109 -0
  15. package/dist/miniflare-pool.d.ts.map +1 -0
  16. package/dist/miniflare-pool.js +308 -0
  17. package/dist/miniflare-pool.js.map +1 -0
  18. package/dist/node.d.ts.map +1 -1
  19. package/dist/node.js +42 -10
  20. package/dist/node.js.map +1 -1
  21. package/dist/shared.d.ts +66 -0
  22. package/dist/shared.d.ts.map +1 -0
  23. package/dist/shared.js +169 -0
  24. package/dist/shared.js.map +1 -0
  25. package/dist/type-guards.d.ts +21 -0
  26. package/dist/type-guards.d.ts.map +1 -0
  27. package/dist/type-guards.js +216 -0
  28. package/dist/type-guards.js.map +1 -0
  29. package/dist/types.d.ts +17 -2
  30. package/dist/types.d.ts.map +1 -1
  31. package/dist/validation.d.ts +26 -0
  32. package/dist/validation.d.ts.map +1 -0
  33. package/dist/validation.js +104 -0
  34. package/dist/validation.js.map +1 -0
  35. package/dist/worker-template/code-transforms.d.ts +9 -0
  36. package/dist/worker-template/code-transforms.d.ts.map +1 -0
  37. package/dist/worker-template/code-transforms.js +28 -0
  38. package/dist/worker-template/code-transforms.js.map +1 -0
  39. package/{src/worker-template.d.ts → dist/worker-template/core.d.ts} +7 -15
  40. package/dist/worker-template/core.d.ts.map +1 -0
  41. package/dist/worker-template/core.js +502 -0
  42. package/dist/worker-template/core.js.map +1 -0
  43. package/dist/worker-template/helpers.d.ts +14 -0
  44. package/dist/worker-template/helpers.d.ts.map +1 -0
  45. package/dist/worker-template/helpers.js +79 -0
  46. package/dist/worker-template/helpers.js.map +1 -0
  47. package/dist/worker-template/index.d.ts +14 -0
  48. package/dist/worker-template/index.d.ts.map +1 -0
  49. package/dist/worker-template/index.js +19 -0
  50. package/dist/worker-template/index.js.map +1 -0
  51. package/dist/worker-template/sdk-generator.d.ts +17 -0
  52. package/dist/worker-template/sdk-generator.d.ts.map +1 -0
  53. package/{src/worker-template.js → dist/worker-template/sdk-generator.js} +377 -1506
  54. package/dist/worker-template/sdk-generator.js.map +1 -0
  55. package/dist/worker-template/test-generator.d.ts +16 -0
  56. package/dist/worker-template/test-generator.d.ts.map +1 -0
  57. package/dist/worker-template/test-generator.js +357 -0
  58. package/dist/worker-template/test-generator.js.map +1 -0
  59. package/dist/worker-template.d.ts +2 -2
  60. package/dist/worker-template.d.ts.map +1 -1
  61. package/dist/worker-template.js +64 -31
  62. package/dist/worker-template.js.map +1 -1
  63. package/example/package.json +7 -3
  64. package/example/src/index.ts +194 -40
  65. package/example/wrangler.jsonc +18 -2
  66. package/package.json +1 -3
  67. package/src/capnweb-bundle.ts +2596 -0
  68. package/src/evaluate.ts +216 -7
  69. package/src/index.ts +3 -1
  70. package/src/miniflare-pool.ts +395 -0
  71. package/src/node.ts +56 -11
  72. package/src/shared.ts +186 -0
  73. package/src/type-guards.ts +323 -0
  74. package/src/types.ts +18 -2
  75. package/src/validation.ts +120 -0
  76. package/src/worker-template/code-transforms.ts +32 -0
  77. package/src/worker-template/core.ts +557 -0
  78. package/src/worker-template/helpers.ts +90 -0
  79. package/src/worker-template/index.ts +23 -0
  80. package/src/{worker-template.ts → worker-template/sdk-generator.ts} +322 -1566
  81. package/src/worker-template/test-generator.ts +358 -0
  82. package/test/miniflare-pool.test.ts +246 -0
  83. package/test/node.test.ts +467 -0
  84. package/test/security.test.ts +1009 -0
  85. package/test/shared.test.ts +105 -0
  86. package/test/type-guards.test.ts +303 -0
  87. package/test/validation.test.ts +240 -0
  88. package/test/worker-template.test.ts +21 -19
  89. package/src/evaluate.js +0 -187
  90. package/src/index.js +0 -10
  91. package/src/node.d.ts +0 -17
  92. package/src/node.d.ts.map +0 -1
  93. package/src/node.js +0 -168
  94. package/src/node.js.map +0 -1
  95. package/src/types.d.ts +0 -172
  96. package/src/types.d.ts.map +0 -1
  97. package/src/types.js +0 -4
  98. package/src/types.js.map +0 -1
  99. package/src/worker-template.d.ts.map +0 -1
  100. package/src/worker-template.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Runtime type guards for JSON response validation
3
+ */
4
+ import type { EvaluateResult } from './types.js';
5
+ /**
6
+ * Type guard to check if a value is a valid EvaluateResult
7
+ *
8
+ * Validates all required fields: success, duration, logs
9
+ *
10
+ * @param value - The value to check
11
+ * @returns True if the value is a valid EvaluateResult
12
+ */
13
+ export declare function isEvaluateResult(value: unknown): value is EvaluateResult;
14
+ /**
15
+ * Assertion function that throws a descriptive error if the value is not a valid EvaluateResult
16
+ *
17
+ * @param value - The value to validate
18
+ * @throws Error with descriptive message if validation fails
19
+ */
20
+ export declare function assertEvaluateResult(value: unknown): asserts value is EvaluateResult;
21
+ //# sourceMappingURL=type-guards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-guards.d.ts","sourceRoot":"","sources":["../src/type-guards.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAqC,MAAM,YAAY,CAAA;AA2GnF;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAuCxE;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,cAAc,CAsJpF"}
@@ -0,0 +1,216 @@
1
+ /**
2
+ * Runtime type guards for JSON response validation
3
+ */
4
+ /**
5
+ * Check if a value is a valid LogEntry
6
+ */
7
+ function isLogEntry(value) {
8
+ if (typeof value !== 'object' || value === null) {
9
+ return false;
10
+ }
11
+ const obj = value;
12
+ // Check level is one of the allowed values
13
+ const validLevels = ['log', 'warn', 'error', 'info', 'debug'];
14
+ if (typeof obj.level !== 'string' || !validLevels.includes(obj.level)) {
15
+ return false;
16
+ }
17
+ // Check message is a string
18
+ if (typeof obj.message !== 'string') {
19
+ return false;
20
+ }
21
+ // Check timestamp is a number
22
+ if (typeof obj.timestamp !== 'number') {
23
+ return false;
24
+ }
25
+ return true;
26
+ }
27
+ /**
28
+ * Check if a value is a valid TestResult
29
+ */
30
+ function isTestResult(value) {
31
+ if (typeof value !== 'object' || value === null) {
32
+ return false;
33
+ }
34
+ const obj = value;
35
+ // Check required fields
36
+ if (typeof obj.name !== 'string') {
37
+ return false;
38
+ }
39
+ if (typeof obj.passed !== 'boolean') {
40
+ return false;
41
+ }
42
+ if (typeof obj.duration !== 'number') {
43
+ return false;
44
+ }
45
+ // Check optional error field
46
+ if (obj.error !== undefined && typeof obj.error !== 'string') {
47
+ return false;
48
+ }
49
+ return true;
50
+ }
51
+ /**
52
+ * Check if a value is a valid TestResults
53
+ */
54
+ function isTestResults(value) {
55
+ if (typeof value !== 'object' || value === null) {
56
+ return false;
57
+ }
58
+ const obj = value;
59
+ // Check required numeric fields
60
+ if (typeof obj.total !== 'number') {
61
+ return false;
62
+ }
63
+ if (typeof obj.passed !== 'number') {
64
+ return false;
65
+ }
66
+ if (typeof obj.failed !== 'number') {
67
+ return false;
68
+ }
69
+ if (typeof obj.skipped !== 'number') {
70
+ return false;
71
+ }
72
+ if (typeof obj.duration !== 'number') {
73
+ return false;
74
+ }
75
+ // Check tests array
76
+ if (!Array.isArray(obj.tests)) {
77
+ return false;
78
+ }
79
+ for (const test of obj.tests) {
80
+ if (!isTestResult(test)) {
81
+ return false;
82
+ }
83
+ }
84
+ return true;
85
+ }
86
+ /**
87
+ * Type guard to check if a value is a valid EvaluateResult
88
+ *
89
+ * Validates all required fields: success, duration, logs
90
+ *
91
+ * @param value - The value to check
92
+ * @returns True if the value is a valid EvaluateResult
93
+ */
94
+ export function isEvaluateResult(value) {
95
+ if (typeof value !== 'object' || value === null) {
96
+ return false;
97
+ }
98
+ const obj = value;
99
+ // Check required fields
100
+ if (typeof obj.success !== 'boolean') {
101
+ return false;
102
+ }
103
+ if (typeof obj.duration !== 'number') {
104
+ return false;
105
+ }
106
+ // Check logs is an array of valid LogEntry objects
107
+ if (!Array.isArray(obj.logs)) {
108
+ return false;
109
+ }
110
+ for (const log of obj.logs) {
111
+ if (!isLogEntry(log)) {
112
+ return false;
113
+ }
114
+ }
115
+ // Check optional fields have correct types if present
116
+ if (obj.error !== undefined && typeof obj.error !== 'string') {
117
+ return false;
118
+ }
119
+ if (obj.testResults !== undefined && !isTestResults(obj.testResults)) {
120
+ return false;
121
+ }
122
+ // value can be any type, so no validation needed for it
123
+ return true;
124
+ }
125
+ /**
126
+ * Assertion function that throws a descriptive error if the value is not a valid EvaluateResult
127
+ *
128
+ * @param value - The value to validate
129
+ * @throws Error with descriptive message if validation fails
130
+ */
131
+ export function assertEvaluateResult(value) {
132
+ if (typeof value !== 'object' || value === null) {
133
+ throw new Error(`Invalid EvaluateResult: expected object, got ${value === null ? 'null' : typeof value}`);
134
+ }
135
+ const obj = value;
136
+ // Validate required field: success
137
+ if (typeof obj.success !== 'boolean') {
138
+ throw new Error(`Invalid EvaluateResult: 'success' must be a boolean, got ${typeof obj.success}`);
139
+ }
140
+ // Validate required field: duration
141
+ if (typeof obj.duration !== 'number') {
142
+ throw new Error(`Invalid EvaluateResult: 'duration' must be a number, got ${typeof obj.duration}`);
143
+ }
144
+ // Validate required field: logs
145
+ if (!Array.isArray(obj.logs)) {
146
+ throw new Error(`Invalid EvaluateResult: 'logs' must be an array, got ${typeof obj.logs}`);
147
+ }
148
+ // Validate each log entry
149
+ for (let i = 0; i < obj.logs.length; i++) {
150
+ const log = obj.logs[i];
151
+ if (typeof log !== 'object' || log === null) {
152
+ throw new Error(`Invalid EvaluateResult: logs[${i}] must be an object, got ${log === null ? 'null' : typeof log}`);
153
+ }
154
+ const logObj = log;
155
+ const validLevels = ['log', 'warn', 'error', 'info', 'debug'];
156
+ if (typeof logObj.level !== 'string' || !validLevels.includes(logObj.level)) {
157
+ throw new Error(`Invalid EvaluateResult: logs[${i}].level must be one of ${validLevels.join(', ')}, got '${logObj.level}'`);
158
+ }
159
+ if (typeof logObj.message !== 'string') {
160
+ throw new Error(`Invalid EvaluateResult: logs[${i}].message must be a string, got ${typeof logObj.message}`);
161
+ }
162
+ if (typeof logObj.timestamp !== 'number') {
163
+ throw new Error(`Invalid EvaluateResult: logs[${i}].timestamp must be a number, got ${typeof logObj.timestamp}`);
164
+ }
165
+ }
166
+ // Validate optional field: error
167
+ if (obj.error !== undefined && typeof obj.error !== 'string') {
168
+ throw new Error(`Invalid EvaluateResult: 'error' must be a string if present, got ${typeof obj.error}`);
169
+ }
170
+ // Validate optional field: testResults
171
+ if (obj.testResults !== undefined) {
172
+ if (typeof obj.testResults !== 'object' || obj.testResults === null) {
173
+ throw new Error(`Invalid EvaluateResult: 'testResults' must be an object if present, got ${obj.testResults === null ? 'null' : typeof obj.testResults}`);
174
+ }
175
+ const testResults = obj.testResults;
176
+ if (typeof testResults.total !== 'number') {
177
+ throw new Error(`Invalid EvaluateResult: testResults.total must be a number, got ${typeof testResults.total}`);
178
+ }
179
+ if (typeof testResults.passed !== 'number') {
180
+ throw new Error(`Invalid EvaluateResult: testResults.passed must be a number, got ${typeof testResults.passed}`);
181
+ }
182
+ if (typeof testResults.failed !== 'number') {
183
+ throw new Error(`Invalid EvaluateResult: testResults.failed must be a number, got ${typeof testResults.failed}`);
184
+ }
185
+ if (typeof testResults.skipped !== 'number') {
186
+ throw new Error(`Invalid EvaluateResult: testResults.skipped must be a number, got ${typeof testResults.skipped}`);
187
+ }
188
+ if (typeof testResults.duration !== 'number') {
189
+ throw new Error(`Invalid EvaluateResult: testResults.duration must be a number, got ${typeof testResults.duration}`);
190
+ }
191
+ if (!Array.isArray(testResults.tests)) {
192
+ throw new Error(`Invalid EvaluateResult: testResults.tests must be an array, got ${typeof testResults.tests}`);
193
+ }
194
+ // Validate each test result
195
+ for (let i = 0; i < testResults.tests.length; i++) {
196
+ const test = testResults.tests[i];
197
+ if (typeof test !== 'object' || test === null) {
198
+ throw new Error(`Invalid EvaluateResult: testResults.tests[${i}] must be an object, got ${test === null ? 'null' : typeof test}`);
199
+ }
200
+ const testObj = test;
201
+ if (typeof testObj.name !== 'string') {
202
+ throw new Error(`Invalid EvaluateResult: testResults.tests[${i}].name must be a string, got ${typeof testObj.name}`);
203
+ }
204
+ if (typeof testObj.passed !== 'boolean') {
205
+ throw new Error(`Invalid EvaluateResult: testResults.tests[${i}].passed must be a boolean, got ${typeof testObj.passed}`);
206
+ }
207
+ if (typeof testObj.duration !== 'number') {
208
+ throw new Error(`Invalid EvaluateResult: testResults.tests[${i}].duration must be a number, got ${typeof testObj.duration}`);
209
+ }
210
+ if (testObj.error !== undefined && typeof testObj.error !== 'string') {
211
+ throw new Error(`Invalid EvaluateResult: testResults.tests[${i}].error must be a string if present, got ${typeof testObj.error}`);
212
+ }
213
+ }
214
+ }
215
+ }
216
+ //# sourceMappingURL=type-guards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-guards.js","sourceRoot":"","sources":["../src/type-guards.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -22,6 +22,16 @@ export interface SDKConfig {
22
22
  /** Cloudflare AI Gateway authentication token */
23
23
  aiGatewayToken?: string;
24
24
  }
25
+ /**
26
+ * Network access configuration
27
+ *
28
+ * @example
29
+ * fetch: true // allow all (default)
30
+ * fetch: false // block all
31
+ * fetch: null // block all (backwards compat)
32
+ * fetch: ['api.example.com', '*.trusted.com'] // allowlist with wildcards
33
+ */
34
+ export type FetchConfig = boolean | null | string[];
25
35
  /**
26
36
  * Options for evaluate()
27
37
  */
@@ -36,8 +46,13 @@ export interface EvaluateOptions {
36
46
  timeout?: number | undefined;
37
47
  /** Environment variables to pass to the sandbox */
38
48
  env?: Record<string, string> | undefined;
39
- /** Fetch configuration. Set to null to block network access. Default: allowed */
40
- fetch?: null | undefined;
49
+ /**
50
+ * Network access control
51
+ * - true: allow all (default)
52
+ * - false/null: block all
53
+ * - string[]: allowlist of domains (wildcards: '*.example.com')
54
+ */
55
+ fetch?: FetchConfig;
41
56
  /** RPC services to expose via capnweb (URL -> handler) */
42
57
  rpc?: Record<string, unknown> | undefined;
43
58
  /** Outbound RPC interceptor - intercepts fetch calls to RPC URLs */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Input validation for EvaluateOptions
3
+ *
4
+ * Validates options to prevent resource exhaustion and provide clear error messages.
5
+ */
6
+ import type { EvaluateOptions } from './types.js';
7
+ /**
8
+ * Validation limits for EvaluateOptions
9
+ */
10
+ export declare const MAX_SCRIPT_SIZE: number;
11
+ export declare const MAX_IMPORTS = 100;
12
+ export declare const MAX_TIMEOUT = 60000;
13
+ export declare const DEFAULT_TIMEOUT = 5000;
14
+ /**
15
+ * Validation error thrown when options fail validation
16
+ */
17
+ export declare class ValidationError extends Error {
18
+ constructor(message: string);
19
+ }
20
+ /**
21
+ * Validate EvaluateOptions
22
+ *
23
+ * @throws ValidationError if any validation fails
24
+ */
25
+ export declare function validateOptions(options: EvaluateOptions): void;
26
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD;;GAEG;AACH,eAAO,MAAM,eAAe,QAAc,CAAA;AAC1C,eAAO,MAAM,WAAW,MAAM,CAAA;AAC9B,eAAO,MAAM,WAAW,QAAQ,CAAA;AAChC,eAAO,MAAM,eAAe,OAAO,CAAA;AAEnC;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AAcD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CA4E9D"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Input validation for EvaluateOptions
3
+ *
4
+ * Validates options to prevent resource exhaustion and provide clear error messages.
5
+ */
6
+ /**
7
+ * Validation limits for EvaluateOptions
8
+ */
9
+ export const MAX_SCRIPT_SIZE = 1024 * 1024; // 1MB
10
+ export const MAX_IMPORTS = 100;
11
+ export const MAX_TIMEOUT = 60000; // 60 seconds
12
+ export const DEFAULT_TIMEOUT = 5000; // 5 seconds
13
+ /**
14
+ * Validation error thrown when options fail validation
15
+ */
16
+ export class ValidationError extends Error {
17
+ constructor(message) {
18
+ super(message);
19
+ this.name = 'ValidationError';
20
+ }
21
+ }
22
+ /**
23
+ * Validate a URL string
24
+ */
25
+ function isValidUrl(urlString) {
26
+ try {
27
+ const url = new URL(urlString);
28
+ return url.protocol === 'http:' || url.protocol === 'https:';
29
+ }
30
+ catch {
31
+ return false;
32
+ }
33
+ }
34
+ /**
35
+ * Validate EvaluateOptions
36
+ *
37
+ * @throws ValidationError if any validation fails
38
+ */
39
+ export function validateOptions(options) {
40
+ // Validate timeout
41
+ if (options.timeout !== undefined) {
42
+ if (typeof options.timeout !== 'number') {
43
+ throw new ValidationError('timeout must be a number');
44
+ }
45
+ if (!Number.isFinite(options.timeout)) {
46
+ throw new ValidationError('timeout must be a finite number');
47
+ }
48
+ if (options.timeout <= 0) {
49
+ throw new ValidationError('timeout must be a positive number');
50
+ }
51
+ if (options.timeout > MAX_TIMEOUT) {
52
+ throw new ValidationError(`timeout exceeds maximum allowed value of ${MAX_TIMEOUT}ms`);
53
+ }
54
+ }
55
+ // Validate script length
56
+ if (options.script !== undefined && options.script !== null) {
57
+ if (typeof options.script !== 'string') {
58
+ throw new ValidationError('script must be a string');
59
+ }
60
+ const scriptBytes = new TextEncoder().encode(options.script).length;
61
+ if (scriptBytes > MAX_SCRIPT_SIZE) {
62
+ throw new ValidationError(`script size (${scriptBytes} bytes) exceeds maximum allowed size of ${MAX_SCRIPT_SIZE} bytes (1MB)`);
63
+ }
64
+ }
65
+ // Validate module length
66
+ if (options.module !== undefined && options.module !== null) {
67
+ if (typeof options.module !== 'string') {
68
+ throw new ValidationError('module must be a string');
69
+ }
70
+ const moduleBytes = new TextEncoder().encode(options.module).length;
71
+ if (moduleBytes > MAX_SCRIPT_SIZE) {
72
+ throw new ValidationError(`module size (${moduleBytes} bytes) exceeds maximum allowed size of ${MAX_SCRIPT_SIZE} bytes (1MB)`);
73
+ }
74
+ }
75
+ // Validate tests length
76
+ if (options.tests !== undefined && options.tests !== null) {
77
+ if (typeof options.tests !== 'string') {
78
+ throw new ValidationError('tests must be a string');
79
+ }
80
+ const testsBytes = new TextEncoder().encode(options.tests).length;
81
+ if (testsBytes > MAX_SCRIPT_SIZE) {
82
+ throw new ValidationError(`tests size (${testsBytes} bytes) exceeds maximum allowed size of ${MAX_SCRIPT_SIZE} bytes (1MB)`);
83
+ }
84
+ }
85
+ // Validate imports
86
+ if (options.imports !== undefined && options.imports !== null) {
87
+ if (!Array.isArray(options.imports)) {
88
+ throw new ValidationError('imports must be an array');
89
+ }
90
+ if (options.imports.length > MAX_IMPORTS) {
91
+ throw new ValidationError(`imports count (${options.imports.length}) exceeds maximum allowed count of ${MAX_IMPORTS}`);
92
+ }
93
+ for (let i = 0; i < options.imports.length; i++) {
94
+ const importUrl = options.imports[i];
95
+ if (typeof importUrl !== 'string') {
96
+ throw new ValidationError(`imports[${i}] must be a string`);
97
+ }
98
+ if (!isValidUrl(importUrl)) {
99
+ throw new ValidationError(`imports[${i}] is not a valid URL: ${importUrl}`);
100
+ }
101
+ }
102
+ }
103
+ }
104
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Module transformation and export detection utilities
3
+ */
4
+ /**
5
+ * Transform module code to work in sandbox
6
+ * Converts ES module exports to CommonJS-style for the sandbox
7
+ */
8
+ export declare function transformModuleCode(moduleCode: string): string;
9
+ //# sourceMappingURL=code-transforms.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-transforms.d.ts","sourceRoot":"","sources":["../../src/worker-template/code-transforms.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAuB9D"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Module transformation and export detection utilities
3
+ */
4
+ /**
5
+ * Transform module code to work in sandbox
6
+ * Converts ES module exports to CommonJS-style for the sandbox
7
+ */
8
+ export function transformModuleCode(moduleCode) {
9
+ let code = moduleCode;
10
+ // Transform: export const foo = ... -> const foo = ...; exports.foo = foo;
11
+ code = code.replace(/export\s+(const|let|var)\s+(\w+)\s*=/g, '$1 $2 = exports.$2 =');
12
+ // Transform: export function foo(...) -> function foo(...) exports.foo = foo;
13
+ // Also handles async generators: export async function* foo
14
+ code = code.replace(/export\s+(async\s+)?function(\*?)\s+(\w+)/g, '$1function$2 $3');
15
+ // Add exports for functions after their definition
16
+ const funcNames = [...moduleCode.matchAll(/export\s+(?:async\s+)?function\*?\s+(\w+)/g)];
17
+ for (const [, name] of funcNames) {
18
+ code += `\nexports.${name} = ${name};`;
19
+ }
20
+ // Transform: export class Foo -> class Foo; exports.Foo = Foo;
21
+ code = code.replace(/export\s+class\s+(\w+)/g, 'class $1');
22
+ const classNames = [...moduleCode.matchAll(/export\s+class\s+(\w+)/g)];
23
+ for (const [, name] of classNames) {
24
+ code += `\nexports.${name} = ${name};`;
25
+ }
26
+ return code;
27
+ }
28
+ //# sourceMappingURL=code-transforms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-transforms.js","sourceRoot":"","sources":["../../src/worker-template/code-transforms.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAkB;IACpD,IAAI,IAAI,GAAG,UAAU,CAAA;IAErB,2EAA2E;IAC3E,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,uCAAuC,EAAE,sBAAsB,CAAC,CAAA;IAEpF,8EAA8E;IAC9E,4DAA4D;IAC5D,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,4CAA4C,EAAE,iBAAiB,CAAC,CAAA;IACpF,mDAAmD;IACnD,MAAM,SAAS,GAAG,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,4CAA4C,CAAC,CAAC,CAAA;IACxF,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,IAAI,aAAa,IAAI,MAAM,IAAI,GAAG,CAAA;IACxC,CAAC;IAED,+DAA+D;IAC/D,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,UAAU,CAAC,CAAA;IAC1D,MAAM,UAAU,GAAG,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC,CAAA;IACtE,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,UAAU,EAAE,CAAC;QAClC,IAAI,IAAI,aAAa,IAAI,MAAM,IAAI,GAAG,CAAA;IACxC,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -1,19 +1,10 @@
1
1
  /**
2
- * Worker template for sandbox execution
2
+ * Worker scaffold and main template generation
3
3
  *
4
- * This code is stringified and sent to the worker loader.
5
- * It uses the TEST service binding (ai-tests) for assertions and test running.
6
- *
7
- * The user's code (module, tests, script) is embedded directly into
8
- * the worker source - no eval() or new Function() needed. The security
9
- * comes from running in an isolated V8 context via worker_loaders.
10
- *
11
- * Routes:
12
- * - POST /execute - Run tests and scripts, return results
13
- * - POST /rpc or WebSocket upgrade - capnweb RPC to module exports
14
- * - GET / - Return info about available exports
4
+ * This module contains the main generateWorkerCode and generateDevWorkerCode functions
5
+ * that produce the complete worker code for sandbox execution.
15
6
  */
16
- import type { SDKConfig } from './types.js';
7
+ import type { SDKConfig, FetchConfig } from '../types.js';
17
8
  /**
18
9
  * Generate worker code for production (uses RPC to ai-tests)
19
10
  */
@@ -23,6 +14,7 @@ export declare function generateWorkerCode(options: {
23
14
  script?: string | undefined;
24
15
  sdk?: SDKConfig | boolean | undefined;
25
16
  imports?: string[] | undefined;
17
+ fetch?: FetchConfig;
26
18
  }): string;
27
19
  /**
28
20
  * Generate worker code for development (embedded test framework)
@@ -36,6 +28,6 @@ export declare function generateDevWorkerCode(options: {
36
28
  script?: string | undefined;
37
29
  sdk?: SDKConfig | boolean | undefined;
38
30
  imports?: string[] | undefined;
39
- fetch?: null | undefined;
31
+ fetch?: null | FetchConfig | undefined;
40
32
  }): string;
41
- //# sourceMappingURL=worker-template.d.ts.map
33
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/worker-template/core.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAOzD;;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;IAC9B,KAAK,CAAC,EAAE,WAAW,CAAA;CACpB,GAAG,MAAM,CA0QT;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,WAAW,GAAG,SAAS,CAAA;CACvC,GAAG,MAAM,CAoPT"}