ai-evaluate 2.1.8 → 2.3.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 (74) hide show
  1. package/README.md +16 -0
  2. package/dist/evaluate.d.ts.map +1 -1
  3. package/dist/evaluate.js +10 -10
  4. package/dist/evaluate.js.map +1 -1
  5. package/dist/index.d.ts +1 -1
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/miniflare-pool.d.ts.map +1 -1
  8. package/dist/miniflare-pool.js +1 -1
  9. package/dist/miniflare-pool.js.map +1 -1
  10. package/dist/node.d.ts.map +1 -1
  11. package/dist/node.js.map +1 -1
  12. package/dist/repl.js +6 -6
  13. package/dist/repl.js.map +1 -1
  14. package/dist/shared.d.ts.map +1 -1
  15. package/dist/shared.js +5 -2
  16. package/dist/shared.js.map +1 -1
  17. package/dist/static/index.d.ts +111 -0
  18. package/dist/static/index.d.ts.map +1 -0
  19. package/dist/static/index.js +347 -0
  20. package/dist/static/index.js.map +1 -0
  21. package/dist/type-guards.d.ts.map +1 -1
  22. package/dist/type-guards.js +64 -62
  23. package/dist/type-guards.js.map +1 -1
  24. package/dist/worker-template/core.d.ts.map +1 -1
  25. package/dist/worker-template/core.js +1 -1
  26. package/dist/worker-template/core.js.map +1 -1
  27. package/package.json +19 -6
  28. package/public/capnweb.mjs +220 -0
  29. package/public/index.mjs +426 -0
  30. package/public/scaffold.mjs +198 -0
  31. package/.turbo/turbo-build.log +0 -4
  32. package/.turbo/turbo-test.log +0 -54
  33. package/.turbo/turbo-typecheck.log +0 -4
  34. package/CHANGELOG.md +0 -48
  35. package/dist/worker-template.d.ts +0 -41
  36. package/dist/worker-template.d.ts.map +0 -1
  37. package/dist/worker-template.js +0 -3748
  38. package/dist/worker-template.js.map +0 -1
  39. package/example/package.json +0 -20
  40. package/example/src/index.ts +0 -221
  41. package/example/wrangler.jsonc +0 -25
  42. package/src/capnweb-bundle.ts +0 -2596
  43. package/src/evaluate.ts +0 -329
  44. package/src/index.ts +0 -23
  45. package/src/miniflare-pool.ts +0 -395
  46. package/src/node.ts +0 -245
  47. package/src/repl.ts +0 -228
  48. package/src/shared.ts +0 -186
  49. package/src/type-guards.ts +0 -323
  50. package/src/types.ts +0 -196
  51. package/src/validation.ts +0 -120
  52. package/src/worker-template/code-transforms.ts +0 -32
  53. package/src/worker-template/core.ts +0 -557
  54. package/src/worker-template/helpers.ts +0 -90
  55. package/src/worker-template/index.ts +0 -23
  56. package/src/worker-template/sdk-generator.ts +0 -2515
  57. package/src/worker-template/test-generator.ts +0 -358
  58. package/test/evaluate-extended.test.js +0 -429
  59. package/test/evaluate-extended.test.ts +0 -469
  60. package/test/evaluate.test.js +0 -235
  61. package/test/evaluate.test.ts +0 -253
  62. package/test/index.test.js +0 -77
  63. package/test/index.test.ts +0 -95
  64. package/test/miniflare-pool.test.ts +0 -246
  65. package/test/node.test.ts +0 -467
  66. package/test/security.test.ts +0 -1009
  67. package/test/shared.test.ts +0 -105
  68. package/test/type-guards.test.ts +0 -303
  69. package/test/validation.test.ts +0 -240
  70. package/test/worker-template.test.js +0 -365
  71. package/test/worker-template.test.ts +0 -432
  72. package/tsconfig.json +0 -22
  73. package/vitest.config.js +0 -21
  74. 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
- });