ai-evaluate 2.1.8 → 2.2.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.
Files changed (61) hide show
  1. package/dist/evaluate.d.ts.map +1 -1
  2. package/dist/evaluate.js.map +1 -1
  3. package/dist/index.d.ts +1 -1
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/miniflare-pool.d.ts.map +1 -1
  6. package/dist/miniflare-pool.js.map +1 -1
  7. package/dist/node.d.ts.map +1 -1
  8. package/dist/node.js.map +1 -1
  9. package/dist/static/index.d.ts +111 -0
  10. package/dist/static/index.d.ts.map +1 -0
  11. package/dist/static/index.js +347 -0
  12. package/dist/static/index.js.map +1 -0
  13. package/dist/type-guards.d.ts.map +1 -1
  14. package/dist/type-guards.js.map +1 -1
  15. package/dist/worker-template/core.d.ts.map +1 -1
  16. package/dist/worker-template/core.js +1 -1
  17. package/dist/worker-template/core.js.map +1 -1
  18. package/package.json +17 -4
  19. package/public/capnweb.mjs +220 -0
  20. package/public/index.mjs +426 -0
  21. package/public/scaffold.mjs +198 -0
  22. package/.turbo/turbo-build.log +0 -4
  23. package/.turbo/turbo-test.log +0 -54
  24. package/.turbo/turbo-typecheck.log +0 -4
  25. package/CHANGELOG.md +0 -48
  26. package/example/package.json +0 -20
  27. package/example/src/index.ts +0 -221
  28. package/example/wrangler.jsonc +0 -25
  29. package/src/capnweb-bundle.ts +0 -2596
  30. package/src/evaluate.ts +0 -329
  31. package/src/index.ts +0 -23
  32. package/src/miniflare-pool.ts +0 -395
  33. package/src/node.ts +0 -245
  34. package/src/repl.ts +0 -228
  35. package/src/shared.ts +0 -186
  36. package/src/type-guards.ts +0 -323
  37. package/src/types.ts +0 -196
  38. package/src/validation.ts +0 -120
  39. package/src/worker-template/code-transforms.ts +0 -32
  40. package/src/worker-template/core.ts +0 -557
  41. package/src/worker-template/helpers.ts +0 -90
  42. package/src/worker-template/index.ts +0 -23
  43. package/src/worker-template/sdk-generator.ts +0 -2515
  44. package/src/worker-template/test-generator.ts +0 -358
  45. package/test/evaluate-extended.test.js +0 -429
  46. package/test/evaluate-extended.test.ts +0 -469
  47. package/test/evaluate.test.js +0 -235
  48. package/test/evaluate.test.ts +0 -253
  49. package/test/index.test.js +0 -77
  50. package/test/index.test.ts +0 -95
  51. package/test/miniflare-pool.test.ts +0 -246
  52. package/test/node.test.ts +0 -467
  53. package/test/security.test.ts +0 -1009
  54. package/test/shared.test.ts +0 -105
  55. package/test/type-guards.test.ts +0 -303
  56. package/test/validation.test.ts +0 -240
  57. package/test/worker-template.test.js +0 -365
  58. package/test/worker-template.test.ts +0 -432
  59. package/tsconfig.json +0 -22
  60. package/vitest.config.js +0 -21
  61. package/vitest.config.ts +0 -28
@@ -1,429 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { evaluate, createEvaluator } from '../src/index.js';
3
- describe('evaluate - extended tests', () => {
4
- describe('edge cases', () => {
5
- it('handles empty options', async () => {
6
- const result = await evaluate({});
7
- expect(result.success).toBe(true);
8
- expect(result.logs).toEqual([]);
9
- });
10
- it('handles undefined return', async () => {
11
- const result = await evaluate({
12
- script: 'const x = 1;'
13
- });
14
- expect(result.success).toBe(true);
15
- expect(result.value).toBeUndefined();
16
- });
17
- it('handles null return', async () => {
18
- const result = await evaluate({
19
- script: 'return null;'
20
- });
21
- expect(result.success).toBe(true);
22
- expect(result.value).toBeNull();
23
- });
24
- it('handles complex object return', async () => {
25
- const result = await evaluate({
26
- script: 'return { nested: { value: [1, 2, { a: 3 }] } };'
27
- });
28
- expect(result.success).toBe(true);
29
- expect(result.value).toEqual({ nested: { value: [1, 2, { a: 3 }] } });
30
- });
31
- it('handles array return', async () => {
32
- const result = await evaluate({
33
- script: 'return [1, "two", true, null];'
34
- });
35
- expect(result.success).toBe(true);
36
- expect(result.value).toEqual([1, 'two', true, null]);
37
- });
38
- });
39
- describe('module errors', () => {
40
- it('fails on module syntax errors', async () => {
41
- const result = await evaluate({
42
- module: 'exports.foo = {;'
43
- });
44
- // Syntax errors cause the entire worker to fail to parse
45
- expect(result.success).toBe(false);
46
- expect(result.error).toBeDefined();
47
- });
48
- it('captures module runtime errors', async () => {
49
- const result = await evaluate({
50
- module: 'throw new Error("module error");'
51
- });
52
- expect(result.logs.some(l => l.message.includes('Module error'))).toBe(true);
53
- });
54
- });
55
- describe('console methods', () => {
56
- it('captures console.info', async () => {
57
- const result = await evaluate({
58
- script: 'console.info("info message"); return true;'
59
- });
60
- expect(result.logs).toContainEqual(expect.objectContaining({
61
- level: 'info',
62
- message: 'info message'
63
- }));
64
- });
65
- it('captures console.debug', async () => {
66
- const result = await evaluate({
67
- script: 'console.debug("debug message"); return true;'
68
- });
69
- expect(result.logs).toContainEqual(expect.objectContaining({
70
- level: 'debug',
71
- message: 'debug message'
72
- }));
73
- });
74
- it('stringifies objects in console output', async () => {
75
- const result = await evaluate({
76
- script: 'console.log({ a: 1 }); return true;'
77
- });
78
- expect(result.logs[0].message).toBe('{"a":1}');
79
- });
80
- it('joins multiple console arguments', async () => {
81
- const result = await evaluate({
82
- script: 'console.log("a", "b", "c"); return true;'
83
- });
84
- expect(result.logs[0].message).toBe('a b c');
85
- });
86
- });
87
- describe('async scripts', () => {
88
- it('handles Promise return values', async () => {
89
- const result = await evaluate({
90
- script: `
91
- return Promise.resolve(42).then(v => v * 2);
92
- `
93
- });
94
- expect(result.success).toBe(true);
95
- expect(result.value).toBe(84);
96
- });
97
- it('handles Promise rejection in script', async () => {
98
- const result = await evaluate({
99
- script: 'return Promise.reject(new Error("async error"));'
100
- });
101
- expect(result.success).toBe(false);
102
- expect(result.error).toContain('async error');
103
- });
104
- it('handles async IIFE', async () => {
105
- const result = await evaluate({
106
- script: `
107
- return (async () => {
108
- const value = await Promise.resolve(42);
109
- return value * 2;
110
- })();
111
- `
112
- });
113
- expect(result.success).toBe(true);
114
- expect(result.value).toBe(84);
115
- });
116
- });
117
- describe('test framework - additional matchers', () => {
118
- it('toBeTruthy', async () => {
119
- const result = await evaluate({
120
- tests: `
121
- it('truthy values', () => {
122
- expect(1).toBeTruthy();
123
- expect("a").toBeTruthy();
124
- expect({}).toBeTruthy();
125
- expect([]).toBeTruthy();
126
- });
127
- `
128
- });
129
- expect(result.success).toBe(true);
130
- });
131
- it('toBeFalsy', async () => {
132
- const result = await evaluate({
133
- tests: `
134
- it('falsy values', () => {
135
- expect(0).toBeFalsy();
136
- expect("").toBeFalsy();
137
- expect(null).toBeFalsy();
138
- expect(undefined).toBeFalsy();
139
- });
140
- `
141
- });
142
- expect(result.success).toBe(true);
143
- });
144
- it('toBeNull', async () => {
145
- const result = await evaluate({
146
- tests: `
147
- it('null check', () => {
148
- expect(null).toBeNull();
149
- });
150
- `
151
- });
152
- expect(result.success).toBe(true);
153
- });
154
- it('toBeUndefined', async () => {
155
- const result = await evaluate({
156
- tests: `
157
- it('undefined check', () => {
158
- expect(undefined).toBeUndefined();
159
- });
160
- `
161
- });
162
- expect(result.success).toBe(true);
163
- });
164
- it('toBeDefined', async () => {
165
- const result = await evaluate({
166
- tests: `
167
- it('defined check', () => {
168
- expect(0).toBeDefined();
169
- expect("").toBeDefined();
170
- expect(null).toBeDefined();
171
- });
172
- `
173
- });
174
- expect(result.success).toBe(true);
175
- });
176
- it('toBeNaN', async () => {
177
- const result = await evaluate({
178
- tests: `
179
- it('NaN check', () => {
180
- expect(NaN).toBeNaN();
181
- });
182
- `
183
- });
184
- expect(result.success).toBe(true);
185
- });
186
- it('toContainEqual', async () => {
187
- const result = await evaluate({
188
- tests: `
189
- it('containEqual check', () => {
190
- expect([{ a: 1 }, { b: 2 }]).toContainEqual({ a: 1 });
191
- });
192
- `
193
- });
194
- expect(result.success).toBe(true);
195
- });
196
- it('toStrictEqual', async () => {
197
- const result = await evaluate({
198
- tests: `
199
- it('strict equal check', () => {
200
- expect({ a: 1, b: 2 }).toStrictEqual({ a: 1, b: 2 });
201
- });
202
- `
203
- });
204
- expect(result.success).toBe(true);
205
- });
206
- it('toBeGreaterThan', async () => {
207
- const result = await evaluate({
208
- tests: `
209
- it('greater than check', () => {
210
- expect(10).toBeGreaterThan(5);
211
- });
212
- `
213
- });
214
- expect(result.success).toBe(true);
215
- });
216
- it('toBeLessThan', async () => {
217
- const result = await evaluate({
218
- tests: `
219
- it('less than check', () => {
220
- expect(5).toBeLessThan(10);
221
- });
222
- `
223
- });
224
- expect(result.success).toBe(true);
225
- });
226
- it('toBeGreaterThanOrEqual', async () => {
227
- const result = await evaluate({
228
- tests: `
229
- it('greater or equal check', () => {
230
- expect(10).toBeGreaterThanOrEqual(10);
231
- expect(10).toBeGreaterThanOrEqual(5);
232
- });
233
- `
234
- });
235
- expect(result.success).toBe(true);
236
- });
237
- it('toBeLessThanOrEqual', async () => {
238
- const result = await evaluate({
239
- tests: `
240
- it('less or equal check', () => {
241
- expect(10).toBeLessThanOrEqual(10);
242
- expect(5).toBeLessThanOrEqual(10);
243
- });
244
- `
245
- });
246
- expect(result.success).toBe(true);
247
- });
248
- it('toMatch with string', async () => {
249
- const result = await evaluate({
250
- tests: `
251
- it('match check', () => {
252
- expect("hello world").toMatch("world");
253
- expect("hello world").toMatch(/world/);
254
- });
255
- `
256
- });
257
- expect(result.success).toBe(true);
258
- });
259
- it('toBeInstanceOf', async () => {
260
- const result = await evaluate({
261
- tests: `
262
- it('instanceof check', () => {
263
- expect(new Error()).toBeInstanceOf(Error);
264
- expect([]).toBeInstanceOf(Array);
265
- });
266
- `
267
- });
268
- expect(result.success).toBe(true);
269
- });
270
- it('toBeTypeOf', async () => {
271
- const result = await evaluate({
272
- tests: `
273
- it('typeof check', () => {
274
- expect("hello").toBeTypeOf("string");
275
- expect(42).toBeTypeOf("number");
276
- expect(true).toBeTypeOf("boolean");
277
- expect({}).toBeTypeOf("object");
278
- expect(() => {}).toBeTypeOf("function");
279
- });
280
- `
281
- });
282
- expect(result.success).toBe(true);
283
- });
284
- });
285
- describe('test framework - hooks', () => {
286
- it('afterEach', async () => {
287
- const result = await evaluate({
288
- tests: `
289
- let cleanupCount = 0;
290
- afterEach(() => {
291
- cleanupCount++;
292
- });
293
- it('first', () => {
294
- expect(cleanupCount).toBe(0);
295
- });
296
- it('second', () => {
297
- expect(cleanupCount).toBe(1);
298
- });
299
- `
300
- });
301
- expect(result.success).toBe(true);
302
- expect(result.testResults?.passed).toBe(2);
303
- });
304
- it('nested describes with hooks', async () => {
305
- const result = await evaluate({
306
- tests: `
307
- let outer = 0;
308
- let inner = 0;
309
- describe('outer', () => {
310
- beforeEach(() => { outer++; });
311
- it('outer test', () => {
312
- expect(outer).toBe(1);
313
- expect(inner).toBe(0);
314
- });
315
- describe('inner', () => {
316
- beforeEach(() => { inner++; });
317
- it('inner test', () => {
318
- expect(outer).toBe(2);
319
- expect(inner).toBe(1);
320
- });
321
- });
322
- });
323
- `
324
- });
325
- expect(result.success).toBe(true);
326
- expect(result.testResults?.passed).toBe(2);
327
- });
328
- });
329
- describe('test framework - only', () => {
330
- it('runs only marked tests', async () => {
331
- const result = await evaluate({
332
- tests: `
333
- it('should not run', () => {
334
- expect(1).toBe(2); // would fail
335
- });
336
- it.only('should run', () => {
337
- expect(1).toBe(1);
338
- });
339
- `
340
- });
341
- expect(result.success).toBe(true);
342
- expect(result.testResults?.total).toBe(1);
343
- });
344
- it('test.only works', async () => {
345
- const result = await evaluate({
346
- tests: `
347
- test('should not run', () => {
348
- expect(1).toBe(2);
349
- });
350
- test.only('should run', () => {
351
- expect(1).toBe(1);
352
- });
353
- `
354
- });
355
- expect(result.success).toBe(true);
356
- expect(result.testResults?.total).toBe(1);
357
- });
358
- });
359
- describe('test framework - resolves/rejects', () => {
360
- it('resolves matcher', async () => {
361
- const result = await evaluate({
362
- tests: `
363
- it('resolves', async () => {
364
- await expect(Promise.resolve(42)).resolves.toBe(42);
365
- });
366
- `
367
- });
368
- expect(result.success).toBe(true);
369
- });
370
- it('rejects matcher', async () => {
371
- const result = await evaluate({
372
- tests: `
373
- it('rejects', async () => {
374
- await expect(Promise.reject(new Error('fail'))).rejects.toBeInstanceOf(Error);
375
- });
376
- `
377
- });
378
- expect(result.success).toBe(true);
379
- });
380
- });
381
- describe('test framework - error messages', () => {
382
- it('provides descriptive error for toBe failure', async () => {
383
- const result = await evaluate({
384
- tests: `
385
- it('fails', () => {
386
- expect(1).toBe(2);
387
- });
388
- `
389
- });
390
- expect(result.success).toBe(false);
391
- expect(result.testResults?.tests[0].error).toContain('Expected');
392
- expect(result.testResults?.tests[0].error).toContain('2');
393
- });
394
- it('provides descriptive error for toEqual failure', async () => {
395
- const result = await evaluate({
396
- tests: `
397
- it('fails', () => {
398
- expect({ a: 1 }).toEqual({ a: 2 });
399
- });
400
- `
401
- });
402
- expect(result.success).toBe(false);
403
- expect(result.testResults?.tests[0].error).toBeDefined();
404
- });
405
- it('provides descriptive error for toContain failure', async () => {
406
- const result = await evaluate({
407
- tests: `
408
- it('fails', () => {
409
- expect([1, 2, 3]).toContain(4);
410
- });
411
- `
412
- });
413
- expect(result.success).toBe(false);
414
- expect(result.testResults?.tests[0].error).toContain('contain');
415
- });
416
- });
417
- });
418
- describe('createEvaluator', () => {
419
- it('returns a function', () => {
420
- const evaluator = createEvaluator({});
421
- expect(typeof evaluator).toBe('function');
422
- });
423
- it('returned function works like evaluate', async () => {
424
- const evaluator = createEvaluator({});
425
- const result = await evaluator({ script: 'return 42;' });
426
- expect(result.success).toBe(true);
427
- expect(result.value).toBe(42);
428
- });
429
- });