@savestate/cli 0.7.0 → 0.8.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 (89) hide show
  1. package/dist/cli/__tests__/progress.test.d.ts +5 -0
  2. package/dist/cli/__tests__/progress.test.d.ts.map +1 -0
  3. package/dist/cli/__tests__/progress.test.js +212 -0
  4. package/dist/cli/__tests__/progress.test.js.map +1 -0
  5. package/dist/cli/__tests__/signal-handler.test.d.ts +5 -0
  6. package/dist/cli/__tests__/signal-handler.test.d.ts.map +1 -0
  7. package/dist/cli/__tests__/signal-handler.test.js +99 -0
  8. package/dist/cli/__tests__/signal-handler.test.js.map +1 -0
  9. package/dist/cli/__tests__/summary.test.d.ts +5 -0
  10. package/dist/cli/__tests__/summary.test.d.ts.map +1 -0
  11. package/dist/cli/__tests__/summary.test.js +242 -0
  12. package/dist/cli/__tests__/summary.test.js.map +1 -0
  13. package/dist/cli/index.d.ts +10 -0
  14. package/dist/cli/index.d.ts.map +1 -0
  15. package/dist/cli/index.js +10 -0
  16. package/dist/cli/index.js.map +1 -0
  17. package/dist/cli/progress.d.ts +86 -0
  18. package/dist/cli/progress.d.ts.map +1 -0
  19. package/dist/cli/progress.js +205 -0
  20. package/dist/cli/progress.js.map +1 -0
  21. package/dist/cli/prompts.d.ts +49 -0
  22. package/dist/cli/prompts.d.ts.map +1 -0
  23. package/dist/cli/prompts.js +266 -0
  24. package/dist/cli/prompts.js.map +1 -0
  25. package/dist/cli/signal-handler.d.ts +63 -0
  26. package/dist/cli/signal-handler.d.ts.map +1 -0
  27. package/dist/cli/signal-handler.js +165 -0
  28. package/dist/cli/signal-handler.js.map +1 -0
  29. package/dist/cli/summary.d.ts +33 -0
  30. package/dist/cli/summary.d.ts.map +1 -0
  31. package/dist/cli/summary.js +296 -0
  32. package/dist/cli/summary.js.map +1 -0
  33. package/dist/cli.js +7 -1
  34. package/dist/cli.js.map +1 -1
  35. package/dist/commands/migrate.d.ts +18 -4
  36. package/dist/commands/migrate.d.ts.map +1 -1
  37. package/dist/commands/migrate.js +324 -163
  38. package/dist/commands/migrate.js.map +1 -1
  39. package/dist/migrate/__tests__/capabilities.test.d.ts +7 -0
  40. package/dist/migrate/__tests__/capabilities.test.d.ts.map +1 -0
  41. package/dist/migrate/__tests__/capabilities.test.js +90 -0
  42. package/dist/migrate/__tests__/capabilities.test.js.map +1 -0
  43. package/dist/migrate/__tests__/chatgpt-loader.test.d.ts +7 -0
  44. package/dist/migrate/__tests__/chatgpt-loader.test.d.ts.map +1 -0
  45. package/dist/migrate/__tests__/chatgpt-loader.test.js +889 -0
  46. package/dist/migrate/__tests__/chatgpt-loader.test.js.map +1 -0
  47. package/dist/migrate/__tests__/edge-cases.test.d.ts +7 -0
  48. package/dist/migrate/__tests__/edge-cases.test.d.ts.map +1 -0
  49. package/dist/migrate/__tests__/edge-cases.test.js +787 -0
  50. package/dist/migrate/__tests__/edge-cases.test.js.map +1 -0
  51. package/dist/migrate/__tests__/error-recovery.test.d.ts +7 -0
  52. package/dist/migrate/__tests__/error-recovery.test.d.ts.map +1 -0
  53. package/dist/migrate/__tests__/error-recovery.test.js +461 -0
  54. package/dist/migrate/__tests__/error-recovery.test.js.map +1 -0
  55. package/dist/migrate/__tests__/integration.test.d.ts +7 -0
  56. package/dist/migrate/__tests__/integration.test.d.ts.map +1 -0
  57. package/dist/migrate/__tests__/integration.test.js +536 -0
  58. package/dist/migrate/__tests__/integration.test.js.map +1 -0
  59. package/dist/migrate/__tests__/performance.test.d.ts +7 -0
  60. package/dist/migrate/__tests__/performance.test.d.ts.map +1 -0
  61. package/dist/migrate/__tests__/performance.test.js +478 -0
  62. package/dist/migrate/__tests__/performance.test.js.map +1 -0
  63. package/dist/migrate/__tests__/registry.test.d.ts +7 -0
  64. package/dist/migrate/__tests__/registry.test.d.ts.map +1 -0
  65. package/dist/migrate/__tests__/registry.test.js +167 -0
  66. package/dist/migrate/__tests__/registry.test.js.map +1 -0
  67. package/dist/migrate/compatibility.d.ts +47 -0
  68. package/dist/migrate/compatibility.d.ts.map +1 -0
  69. package/dist/migrate/compatibility.js +468 -0
  70. package/dist/migrate/compatibility.js.map +1 -0
  71. package/dist/migrate/extractors/__tests__/claude.test.d.ts +12 -0
  72. package/dist/migrate/extractors/__tests__/claude.test.d.ts.map +1 -0
  73. package/dist/migrate/extractors/__tests__/claude.test.js +789 -0
  74. package/dist/migrate/extractors/__tests__/claude.test.js.map +1 -0
  75. package/dist/migrate/extractors/claude.d.ts +69 -0
  76. package/dist/migrate/extractors/claude.d.ts.map +1 -0
  77. package/dist/migrate/extractors/claude.js +1136 -0
  78. package/dist/migrate/extractors/claude.js.map +1 -0
  79. package/dist/migrate/extractors/registry.js +3 -2
  80. package/dist/migrate/extractors/registry.js.map +1 -1
  81. package/dist/migrate/loaders/chatgpt.d.ts +72 -0
  82. package/dist/migrate/loaders/chatgpt.d.ts.map +1 -0
  83. package/dist/migrate/loaders/chatgpt.js +691 -0
  84. package/dist/migrate/loaders/chatgpt.js.map +1 -0
  85. package/dist/migrate/loaders/registry.js +3 -2
  86. package/dist/migrate/loaders/registry.js.map +1 -1
  87. package/dist/migrate/types.d.ts +2 -0
  88. package/dist/migrate/types.d.ts.map +1 -1
  89. package/package.json +2 -1
@@ -0,0 +1,478 @@
1
+ /**
2
+ * Performance Tests for Migration Wizard
3
+ *
4
+ * Tests memory usage, progress responsiveness, and large dataset handling.
5
+ */
6
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
7
+ import { existsSync } from 'node:fs';
8
+ import { rm, mkdir } from 'node:fs/promises';
9
+ import { join } from 'node:path';
10
+ import { tmpdir } from 'node:os';
11
+ import { MigrationOrchestrator } from '../orchestrator.js';
12
+ import { registerMockPlugins } from '../testing/index.js';
13
+ import { ChatGPTToClaudeTransformer } from '../transformers/chatgpt-to-claude.js';
14
+ import { registerTransformer } from '../transformers/registry.js';
15
+ describe('Performance Tests', () => {
16
+ let testWorkDir;
17
+ beforeEach(async () => {
18
+ testWorkDir = join(tmpdir(), `savestate-perf-${Date.now()}-${Math.random().toString(36).slice(2)}`);
19
+ await mkdir(testWorkDir, { recursive: true });
20
+ });
21
+ afterEach(async () => {
22
+ if (existsSync(testWorkDir)) {
23
+ await rm(testWorkDir, { recursive: true, force: true });
24
+ }
25
+ });
26
+ describe('Memory Usage Bounds', () => {
27
+ it('should handle large conversation dataset without memory explosion', async () => {
28
+ // Create a bundle with 2000 conversations
29
+ const conversations = Array.from({ length: 2000 }, (_, i) => ({
30
+ id: `conv_${i}`,
31
+ title: `Conversation ${i}: ${generateRandomTitle()}`,
32
+ messageCount: Math.floor(Math.random() * 100) + 10,
33
+ createdAt: new Date(Date.now() - i * 86400000).toISOString(),
34
+ updatedAt: new Date(Date.now() - i * 43200000).toISOString(),
35
+ keyPoints: i % 5 === 0
36
+ ? [`Key point ${i}-1`, `Key point ${i}-2`, `Key point ${i}-3`]
37
+ : undefined,
38
+ }));
39
+ const largeBundle = {
40
+ version: '1.0',
41
+ id: 'bundle_large_memory_test',
42
+ source: {
43
+ platform: 'chatgpt',
44
+ extractedAt: new Date().toISOString(),
45
+ extractorVersion: '1.0.0',
46
+ },
47
+ contents: {
48
+ conversations: {
49
+ path: 'conversations/',
50
+ count: 2000,
51
+ messageCount: conversations.reduce((sum, c) => sum + c.messageCount, 0),
52
+ summaries: conversations,
53
+ },
54
+ },
55
+ metadata: {
56
+ totalItems: 2000,
57
+ itemCounts: {
58
+ instructions: 0,
59
+ memories: 0,
60
+ conversations: 2000,
61
+ files: 0,
62
+ customBots: 0,
63
+ },
64
+ warnings: [],
65
+ errors: [],
66
+ },
67
+ };
68
+ registerMockPlugins({
69
+ extractors: { chatgpt: { customBundle: largeBundle } },
70
+ });
71
+ registerTransformer('chatgpt', 'claude', () => new ChatGPTToClaudeTransformer());
72
+ // Get initial memory usage
73
+ const initialMemory = process.memoryUsage().heapUsed;
74
+ const orchestrator = new MigrationOrchestrator('chatgpt', 'claude', {
75
+ workDir: join(testWorkDir, 'migration-large-memory'),
76
+ });
77
+ const result = await orchestrator.run();
78
+ // Get final memory usage
79
+ const finalMemory = process.memoryUsage().heapUsed;
80
+ const memoryIncrease = finalMemory - initialMemory;
81
+ expect(result.success).toBe(true);
82
+ // Memory increase should be reasonable (< 200MB for 2000 conversations)
83
+ // This is a rough bound - actual implementation should be much lower
84
+ expect(memoryIncrease).toBeLessThan(200 * 1024 * 1024);
85
+ });
86
+ it('should handle large memory dataset efficiently', async () => {
87
+ // Create 1000 memory entries with varying content sizes
88
+ const memories = Array.from({ length: 1000 }, (_, i) => ({
89
+ id: `mem_${i}`,
90
+ content: generateVariableContent(100 + (i % 500)),
91
+ createdAt: new Date(Date.now() - i * 3600000).toISOString(),
92
+ category: ['preferences', 'facts', 'context', 'decisions', 'insights'][i % 5],
93
+ source: 'chatgpt',
94
+ }));
95
+ const bundle = {
96
+ version: '1.0',
97
+ id: 'bundle_large_memories',
98
+ source: {
99
+ platform: 'chatgpt',
100
+ extractedAt: new Date().toISOString(),
101
+ extractorVersion: '1.0.0',
102
+ },
103
+ contents: {
104
+ memories: { entries: memories, count: 1000 },
105
+ },
106
+ metadata: {
107
+ totalItems: 1000,
108
+ itemCounts: {
109
+ instructions: 0,
110
+ memories: 1000,
111
+ conversations: 0,
112
+ files: 0,
113
+ customBots: 0,
114
+ },
115
+ warnings: [],
116
+ errors: [],
117
+ },
118
+ };
119
+ registerMockPlugins({
120
+ extractors: { chatgpt: { customBundle: bundle } },
121
+ });
122
+ registerTransformer('chatgpt', 'claude', () => new ChatGPTToClaudeTransformer());
123
+ const initialMemory = process.memoryUsage().heapUsed;
124
+ const orchestrator = new MigrationOrchestrator('chatgpt', 'claude', {
125
+ workDir: join(testWorkDir, 'migration-large-memories'),
126
+ });
127
+ const result = await orchestrator.run();
128
+ const finalMemory = process.memoryUsage().heapUsed;
129
+ expect(result.success).toBe(true);
130
+ // Memory increase should be bounded
131
+ const memoryIncreaseMB = (finalMemory - initialMemory) / (1024 * 1024);
132
+ expect(memoryIncreaseMB).toBeLessThan(100);
133
+ });
134
+ });
135
+ describe('Progress Update Responsiveness', () => {
136
+ it('should emit progress updates at regular intervals', async () => {
137
+ // Use mocks with delays to simulate real processing
138
+ registerMockPlugins({
139
+ extractors: { chatgpt: { delayMs: 500 } },
140
+ transformers: { 'chatgpt->claude': { delayMs: 500 } },
141
+ loaders: { claude: { delayMs: 500 } },
142
+ });
143
+ const progressEvents = [];
144
+ const progressTimestamps = [];
145
+ const orchestrator = new MigrationOrchestrator('chatgpt', 'claude', {
146
+ workDir: join(testWorkDir, 'migration-progress-timing'),
147
+ });
148
+ orchestrator.on((event) => {
149
+ if (event.type === 'progress') {
150
+ progressEvents.push(event);
151
+ progressTimestamps.push(Date.now());
152
+ }
153
+ });
154
+ const startTime = Date.now();
155
+ await orchestrator.run();
156
+ const endTime = Date.now();
157
+ // Should have multiple progress events
158
+ expect(progressEvents.length).toBeGreaterThan(10);
159
+ // Check intervals between progress updates
160
+ if (progressTimestamps.length > 1) {
161
+ const intervals = [];
162
+ for (let i = 1; i < progressTimestamps.length; i++) {
163
+ intervals.push(progressTimestamps[i] - progressTimestamps[i - 1]);
164
+ }
165
+ // Average interval should be reasonable (< 500ms for responsive UI)
166
+ const avgInterval = intervals.reduce((a, b) => a + b, 0) / intervals.length;
167
+ expect(avgInterval).toBeLessThan(500);
168
+ }
169
+ });
170
+ it('should provide progress updates throughout all phases', async () => {
171
+ registerMockPlugins({
172
+ extractors: { chatgpt: { delayMs: 300 } },
173
+ transformers: { 'chatgpt->claude': { delayMs: 300 } },
174
+ loaders: { claude: { delayMs: 300 } },
175
+ });
176
+ const phaseProgress = new Map();
177
+ const orchestrator = new MigrationOrchestrator('chatgpt', 'claude', {
178
+ workDir: join(testWorkDir, 'migration-phase-progress'),
179
+ });
180
+ let currentPhase = 'pending';
181
+ orchestrator.on((event) => {
182
+ if (event.type === 'phase:start' && event.phase) {
183
+ currentPhase = event.phase;
184
+ phaseProgress.set(currentPhase, []);
185
+ }
186
+ if (event.type === 'progress' && event.progress !== undefined) {
187
+ const progress = phaseProgress.get(currentPhase) || [];
188
+ progress.push(event.progress);
189
+ phaseProgress.set(currentPhase, progress);
190
+ }
191
+ });
192
+ await orchestrator.run();
193
+ // Each phase should have progress updates
194
+ expect(phaseProgress.has('extracting')).toBe(true);
195
+ expect(phaseProgress.has('transforming')).toBe(true);
196
+ expect(phaseProgress.has('loading')).toBe(true);
197
+ // Progress should increase within each phase
198
+ for (const [phase, progressValues] of phaseProgress) {
199
+ if (progressValues.length > 1) {
200
+ for (let i = 1; i < progressValues.length; i++) {
201
+ expect(progressValues[i]).toBeGreaterThanOrEqual(progressValues[i - 1]);
202
+ }
203
+ }
204
+ }
205
+ });
206
+ it('should not block on progress callbacks', async () => {
207
+ registerMockPlugins({
208
+ extractors: { chatgpt: { delayMs: 100 } },
209
+ transformers: { 'chatgpt->claude': { delayMs: 100 } },
210
+ loaders: { claude: { delayMs: 100 } },
211
+ });
212
+ let slowCallbackCount = 0;
213
+ const orchestrator = new MigrationOrchestrator('chatgpt', 'claude', {
214
+ workDir: join(testWorkDir, 'migration-slow-callback'),
215
+ });
216
+ orchestrator.on(async (event) => {
217
+ if (event.type === 'progress') {
218
+ // Simulate slow callback (shouldn't block migration)
219
+ await new Promise((r) => setTimeout(r, 50));
220
+ slowCallbackCount++;
221
+ }
222
+ });
223
+ const startTime = Date.now();
224
+ const result = await orchestrator.run();
225
+ const duration = Date.now() - startTime;
226
+ expect(result.success).toBe(true);
227
+ expect(slowCallbackCount).toBeGreaterThan(0);
228
+ // Total duration should not be significantly increased by slow callbacks
229
+ // If callbacks blocked, duration would be >> 300ms + (50ms * slowCallbackCount)
230
+ // With non-blocking, it should be closer to 300ms + small overhead
231
+ expect(duration).toBeLessThan(2000);
232
+ });
233
+ });
234
+ describe('Large File Handling', () => {
235
+ it('should handle many small files efficiently', async () => {
236
+ // Create 100 small files
237
+ const files = Array.from({ length: 100 }, (_, i) => ({
238
+ id: `file_${i}`,
239
+ filename: `document_${i}.${['txt', 'md', 'json', 'yaml'][i % 4]}`,
240
+ mimeType: ['text/plain', 'text/markdown', 'application/json', 'text/yaml'][i % 4],
241
+ size: Math.floor(Math.random() * 50000) + 1000,
242
+ path: `files/document_${i}.txt`,
243
+ }));
244
+ const bundle = {
245
+ version: '1.0',
246
+ id: 'bundle_many_files',
247
+ source: {
248
+ platform: 'chatgpt',
249
+ extractedAt: new Date().toISOString(),
250
+ extractorVersion: '1.0.0',
251
+ },
252
+ contents: {
253
+ files: {
254
+ files,
255
+ count: 100,
256
+ totalSize: files.reduce((sum, f) => sum + f.size, 0),
257
+ },
258
+ },
259
+ metadata: {
260
+ totalItems: 100,
261
+ itemCounts: {
262
+ instructions: 0,
263
+ memories: 0,
264
+ conversations: 0,
265
+ files: 100,
266
+ customBots: 0,
267
+ },
268
+ warnings: [],
269
+ errors: [],
270
+ },
271
+ };
272
+ registerMockPlugins({
273
+ extractors: { chatgpt: { customBundle: bundle } },
274
+ });
275
+ registerTransformer('chatgpt', 'claude', () => new ChatGPTToClaudeTransformer());
276
+ const startTime = Date.now();
277
+ const orchestrator = new MigrationOrchestrator('chatgpt', 'claude', {
278
+ workDir: join(testWorkDir, 'migration-many-files'),
279
+ });
280
+ const result = await orchestrator.run();
281
+ const duration = Date.now() - startTime;
282
+ expect(result.success).toBe(true);
283
+ expect(result.loaded.files).toBe(100);
284
+ // Should complete in reasonable time (< 5 seconds for mock processing)
285
+ expect(duration).toBeLessThan(5000);
286
+ });
287
+ });
288
+ describe('Concurrent Migrations', () => {
289
+ it('should support multiple concurrent migrations', async () => {
290
+ registerMockPlugins({
291
+ extractors: { chatgpt: { delayMs: 100 } },
292
+ transformers: { 'chatgpt->claude': { delayMs: 100 } },
293
+ loaders: { claude: { delayMs: 100 } },
294
+ });
295
+ // Start multiple migrations concurrently
296
+ const migrations = await Promise.all([
297
+ (async () => {
298
+ const o = new MigrationOrchestrator('chatgpt', 'claude', {
299
+ workDir: join(testWorkDir, 'migration-concurrent-1'),
300
+ });
301
+ return o.run();
302
+ })(),
303
+ (async () => {
304
+ const o = new MigrationOrchestrator('chatgpt', 'claude', {
305
+ workDir: join(testWorkDir, 'migration-concurrent-2'),
306
+ });
307
+ return o.run();
308
+ })(),
309
+ (async () => {
310
+ const o = new MigrationOrchestrator('chatgpt', 'claude', {
311
+ workDir: join(testWorkDir, 'migration-concurrent-3'),
312
+ });
313
+ return o.run();
314
+ })(),
315
+ ]);
316
+ // All should succeed
317
+ expect(migrations.every((r) => r.success)).toBe(true);
318
+ });
319
+ it('should maintain isolation between concurrent migrations', async () => {
320
+ const customBundle1 = {
321
+ version: '1.0',
322
+ id: 'bundle_1',
323
+ source: {
324
+ platform: 'chatgpt',
325
+ extractedAt: new Date().toISOString(),
326
+ accountId: 'user_1',
327
+ extractorVersion: '1.0.0',
328
+ },
329
+ contents: {
330
+ instructions: { content: 'Instructions for user 1', length: 25 },
331
+ },
332
+ metadata: {
333
+ totalItems: 1,
334
+ itemCounts: {
335
+ instructions: 1,
336
+ memories: 0,
337
+ conversations: 0,
338
+ files: 0,
339
+ customBots: 0,
340
+ },
341
+ warnings: [],
342
+ errors: [],
343
+ },
344
+ };
345
+ const customBundle2 = {
346
+ version: '1.0',
347
+ id: 'bundle_2',
348
+ source: {
349
+ platform: 'chatgpt',
350
+ extractedAt: new Date().toISOString(),
351
+ accountId: 'user_2',
352
+ extractorVersion: '1.0.0',
353
+ },
354
+ contents: {
355
+ instructions: { content: 'Instructions for user 2', length: 25 },
356
+ },
357
+ metadata: {
358
+ totalItems: 1,
359
+ itemCounts: {
360
+ instructions: 1,
361
+ memories: 0,
362
+ conversations: 0,
363
+ files: 0,
364
+ customBots: 0,
365
+ },
366
+ warnings: [],
367
+ errors: [],
368
+ },
369
+ };
370
+ // Start migrations with different bundles
371
+ const orchestrator1 = new MigrationOrchestrator('chatgpt', 'claude', {
372
+ workDir: join(testWorkDir, 'migration-isolated-1'),
373
+ });
374
+ registerMockPlugins({
375
+ extractors: { chatgpt: { customBundle: customBundle1 } },
376
+ });
377
+ const result1 = await orchestrator1.run();
378
+ const orchestrator2 = new MigrationOrchestrator('chatgpt', 'claude', {
379
+ workDir: join(testWorkDir, 'migration-isolated-2'),
380
+ });
381
+ registerMockPlugins({
382
+ extractors: { chatgpt: { customBundle: customBundle2 } },
383
+ });
384
+ const result2 = await orchestrator2.run();
385
+ expect(result1.success).toBe(true);
386
+ expect(result2.success).toBe(true);
387
+ // Bundles should remain distinct
388
+ const bundle1 = orchestrator1.getBundle();
389
+ const bundle2 = orchestrator2.getBundle();
390
+ expect(bundle1?.id).not.toBe(bundle2?.id);
391
+ });
392
+ });
393
+ describe('Transformation Performance', () => {
394
+ it('should transform instructions efficiently even when long', async () => {
395
+ // Create very long instructions (100KB)
396
+ const longInstructions = Array.from({ length: 1000 }, (_, i) => `Instruction block ${i}: This is a detailed instruction about topic ${i}. `.repeat(3)).join('\n\n');
397
+ const bundle = {
398
+ version: '1.0',
399
+ id: 'bundle_long_transform',
400
+ source: {
401
+ platform: 'chatgpt',
402
+ extractedAt: new Date().toISOString(),
403
+ extractorVersion: '1.0.0',
404
+ },
405
+ contents: {
406
+ instructions: {
407
+ content: longInstructions,
408
+ length: longInstructions.length,
409
+ },
410
+ },
411
+ metadata: {
412
+ totalItems: 1,
413
+ itemCounts: {
414
+ instructions: 1,
415
+ memories: 0,
416
+ conversations: 0,
417
+ files: 0,
418
+ customBots: 0,
419
+ },
420
+ warnings: [],
421
+ errors: [],
422
+ },
423
+ };
424
+ registerMockPlugins({
425
+ extractors: { chatgpt: { customBundle: bundle } },
426
+ });
427
+ registerTransformer('chatgpt', 'claude', () => new ChatGPTToClaudeTransformer());
428
+ const startTime = Date.now();
429
+ const orchestrator = new MigrationOrchestrator('chatgpt', 'claude', {
430
+ workDir: join(testWorkDir, 'migration-transform-perf'),
431
+ });
432
+ const result = await orchestrator.run();
433
+ const transformTime = Date.now() - startTime;
434
+ expect(result.success).toBe(true);
435
+ // Transformation of 100KB should complete quickly (< 2 seconds)
436
+ expect(transformTime).toBeLessThan(2000);
437
+ });
438
+ });
439
+ });
440
+ // ─── Helper Functions ──────────────────────────────────────────
441
+ function generateRandomTitle() {
442
+ const topics = [
443
+ 'Code Review',
444
+ 'Bug Fix',
445
+ 'Feature Discussion',
446
+ 'Architecture',
447
+ 'Testing Strategy',
448
+ 'Performance Optimization',
449
+ 'Security Review',
450
+ 'API Design',
451
+ 'Database Schema',
452
+ 'Deployment Planning',
453
+ ];
454
+ const actions = [
455
+ 'Discussion',
456
+ 'Analysis',
457
+ 'Planning',
458
+ 'Review',
459
+ 'Implementation',
460
+ 'Debugging',
461
+ 'Refactoring',
462
+ ];
463
+ return `${topics[Math.floor(Math.random() * topics.length)]} ${actions[Math.floor(Math.random() * actions.length)]}`;
464
+ }
465
+ function generateVariableContent(length) {
466
+ const words = [
467
+ 'user', 'prefers', 'typescript', 'react', 'node', 'python', 'docker',
468
+ 'kubernetes', 'aws', 'gcp', 'azure', 'mongodb', 'postgresql', 'redis',
469
+ 'graphql', 'rest', 'api', 'frontend', 'backend', 'fullstack', 'devops',
470
+ 'ci', 'cd', 'testing', 'unit', 'integration', 'e2e', 'performance',
471
+ ];
472
+ let content = '';
473
+ while (content.length < length) {
474
+ content += words[Math.floor(Math.random() * words.length)] + ' ';
475
+ }
476
+ return content.substring(0, length);
477
+ }
478
+ //# sourceMappingURL=performance.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"performance.test.js","sourceRoot":"","sources":["../../../src/migrate/__tests__/performance.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Registry Tests
3
+ *
4
+ * Tests for extractor, transformer, and loader registries.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=registry.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.test.d.ts","sourceRoot":"","sources":["../../../src/migrate/__tests__/registry.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}