@t1mmen/srtd 0.2.2 → 0.4.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 (52) hide show
  1. package/README.md +170 -146
  2. package/dist/__tests__/vitest.setup.js +41 -25
  3. package/dist/__tests__/vitest.setup.js.map +1 -1
  4. package/dist/__tests__/watch.test.js +0 -1
  5. package/dist/__tests__/watch.test.js.map +1 -1
  6. package/dist/cli.js +3 -0
  7. package/dist/cli.js.map +1 -1
  8. package/dist/commands/_app.js +31 -3
  9. package/dist/commands/_app.js.map +1 -1
  10. package/dist/commands/apply.d.ts +13 -1
  11. package/dist/commands/apply.js +19 -6
  12. package/dist/commands/apply.js.map +1 -1
  13. package/dist/commands/build.d.ts +13 -1
  14. package/dist/commands/build.js +14 -4
  15. package/dist/commands/build.js.map +1 -1
  16. package/dist/commands/clear.d.ts +2 -0
  17. package/dist/commands/clear.js +45 -0
  18. package/dist/commands/clear.js.map +1 -0
  19. package/dist/commands/index.js +25 -10
  20. package/dist/commands/index.js.map +1 -1
  21. package/dist/commands/register.js +9 -6
  22. package/dist/commands/register.js.map +1 -1
  23. package/dist/commands/watch.js +121 -117
  24. package/dist/commands/watch.js.map +1 -1
  25. package/dist/components/Branding.js +5 -4
  26. package/dist/components/Branding.js.map +1 -1
  27. package/dist/components/Quittable.d.ts +6 -0
  28. package/dist/components/Quittable.js +36 -0
  29. package/dist/components/Quittable.js.map +1 -0
  30. package/dist/hooks/useDatabaseConnection.d.ts +7 -0
  31. package/dist/hooks/useDatabaseConnection.js +68 -0
  32. package/dist/hooks/useDatabaseConnection.js.map +1 -0
  33. package/dist/hooks/useTemplateManager.d.ts +22 -0
  34. package/dist/hooks/useTemplateManager.js +124 -0
  35. package/dist/hooks/useTemplateManager.js.map +1 -0
  36. package/dist/lib/templateManager.d.ts +12 -5
  37. package/dist/lib/templateManager.js +166 -60
  38. package/dist/lib/templateManager.js.map +1 -1
  39. package/dist/lib/templateManager.test.js +452 -15
  40. package/dist/lib/templateManager.test.js.map +1 -1
  41. package/dist/types.d.ts +2 -1
  42. package/dist/utils/config.d.ts +2 -0
  43. package/dist/utils/config.js +27 -40
  44. package/dist/utils/config.js.map +1 -1
  45. package/dist/utils/databaseConnection.d.ts +5 -1
  46. package/dist/utils/databaseConnection.js +40 -9
  47. package/dist/utils/databaseConnection.js.map +1 -1
  48. package/dist/utils/logger.d.ts +1 -0
  49. package/package.json +12 -7
  50. package/dist/commands/help.d.ts +0 -1
  51. package/dist/commands/help.js +0 -2
  52. package/dist/commands/help.js.map +0 -1
@@ -1,8 +1,61 @@
1
+ var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {
2
+ if (value !== null && value !== void 0) {
3
+ if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
4
+ var dispose, inner;
5
+ if (async) {
6
+ if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
7
+ dispose = value[Symbol.asyncDispose];
8
+ }
9
+ if (dispose === void 0) {
10
+ if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
11
+ dispose = value[Symbol.dispose];
12
+ if (async) inner = dispose;
13
+ }
14
+ if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
15
+ if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
16
+ env.stack.push({ value: value, dispose: dispose, async: async });
17
+ }
18
+ else if (async) {
19
+ env.stack.push({ async: true });
20
+ }
21
+ return value;
22
+ };
23
+ var __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {
24
+ return function (env) {
25
+ function fail(e) {
26
+ env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
27
+ env.hasError = true;
28
+ }
29
+ var r, s = 0;
30
+ function next() {
31
+ while (r = env.stack.pop()) {
32
+ try {
33
+ if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
34
+ if (r.dispose) {
35
+ var result = r.dispose.call(r.value);
36
+ if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
37
+ }
38
+ else s |= 1;
39
+ }
40
+ catch (e) {
41
+ fail(e);
42
+ }
43
+ }
44
+ if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
45
+ if (env.hasError) throw env.error;
46
+ }
47
+ return next();
48
+ };
49
+ })(typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
50
+ var e = new Error(message);
51
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
52
+ });
1
53
  import fs from 'node:fs/promises';
2
54
  import { tmpdir } from 'node:os';
3
- import { join, relative } from 'node:path';
55
+ import { default as path, join, relative } from 'node:path';
4
56
  import { afterEach, beforeEach, describe, expect, it } from 'vitest';
5
57
  import { TEST_FN_PREFIX } from '../__tests__/vitest.setup.js';
58
+ import { calculateMD5 } from '../utils/calculateMD5.js';
6
59
  import { connect, disconnect } from '../utils/databaseConnection.js';
7
60
  import { ensureDirectories } from '../utils/ensureDirectories.js';
8
61
  import { TemplateManager } from './templateManager.js';
@@ -46,15 +99,18 @@ describe('TemplateManager', () => {
46
99
  await fs.rm(testContext.testDir, { recursive: true, force: true });
47
100
  disconnect();
48
101
  });
49
- const createTemplate = async (name, content) => {
50
- const path = join(testContext.testDir, 'test-templates', name);
51
- await fs.writeFile(path, content);
52
- return path;
102
+ const createTemplate = async (name, content, dir) => {
103
+ const fullPath = dir
104
+ ? join(testContext.testDir, 'test-templates', dir, name)
105
+ : join(testContext.testDir, 'test-templates', name);
106
+ await fs.mkdir(path.dirname(fullPath), { recursive: true });
107
+ await fs.writeFile(fullPath, content);
108
+ return fullPath;
53
109
  };
54
- const createTemplateWithFunc = async (name, funcSuffix = '') => {
110
+ const createTemplateWithFunc = async (name, funcSuffix = '', dir) => {
55
111
  const funcName = `${testContext.testFunctionName}${funcSuffix}`;
56
- const content = `CREATE FUNCTION ${funcName}() RETURNS void AS $$ BEGIN NULL; END; $$ LANGUAGE plpgsql;`;
57
- return createTemplate(name, content);
112
+ const content = `CREATE OR REPLACE FUNCTION ${funcName}() RETURNS void AS $$ BEGIN NULL; END; $$ LANGUAGE plpgsql;`;
113
+ return createTemplate(name, content, dir);
58
114
  };
59
115
  it('should create migration file when template changes', async () => {
60
116
  await createTemplateWithFunc(`test-${testContext.timestamp}.sql`);
@@ -108,7 +164,7 @@ describe('TemplateManager', () => {
108
164
  });
109
165
  it('should handle rapid template changes', async () => {
110
166
  const templatePath = join(testContext.testDir, 'test-templates', `test-${testContext.timestamp}.sql`);
111
- const baseContent = `CREATE FUNCTION ${testContext.testFunctionName}() RETURNS void AS $$ BEGIN NULL; END; $$ LANGUAGE plpgsql;`;
167
+ const baseContent = `CREATE OR REPLACE FUNCTION ${testContext.testFunctionName}() RETURNS void AS $$ BEGIN NULL; END; $$ LANGUAGE plpgsql;`;
112
168
  await fs.writeFile(templatePath, baseContent);
113
169
  const manager = await TemplateManager.create(testContext.testDir);
114
170
  const changes = [];
@@ -120,7 +176,7 @@ describe('TemplateManager', () => {
120
176
  // Make rapid changes
121
177
  for (let i = 0; i < 5; i++) {
122
178
  await fs.writeFile(templatePath, `${baseContent}\n-- Change ${i}`);
123
- await new Promise(resolve => setTimeout(resolve, 50));
179
+ await new Promise(resolve => setTimeout(resolve, 51));
124
180
  }
125
181
  await new Promise(resolve => setTimeout(resolve, 500));
126
182
  watcher.close();
@@ -146,18 +202,19 @@ describe('TemplateManager', () => {
146
202
  }
147
203
  });
148
204
  it('should handle sequential template operations', async () => {
149
- const templates = await Promise.all([...Array(5)].map((_, i) => createTemplateWithFunc(`test-${i}-${testContext.timestamp}.sql`, `_${i}`)));
205
+ const templates = await Promise.all([...Array(5)].map((_, i) => createTemplateWithFunc(`sequencetest-${i}-${testContext.timestamp}.sql`, `_sequence_test_${i}`)));
150
206
  const manager = await TemplateManager.create(testContext.testDir);
151
207
  // Apply templates one by one
152
208
  for (const _templatePath of templates) {
153
209
  const result = await manager.processTemplates({ apply: true });
154
210
  expect(result.errors).toHaveLength(0);
155
211
  }
212
+ await new Promise(resolve => setTimeout(resolve, 100));
156
213
  const client = await connect();
157
214
  try {
158
215
  for (let i = 0; i < 5; i++) {
159
216
  const res = await client.query(`SELECT proname FROM pg_proc WHERE proname = $1`, [
160
- `${testContext.testFunctionName}_${i}`,
217
+ `${testContext.testFunctionName}_sequence_test_${i}`,
161
218
  ]);
162
219
  expect(res.rows).toHaveLength(1);
163
220
  }
@@ -167,7 +224,7 @@ describe('TemplateManager', () => {
167
224
  }
168
225
  });
169
226
  it('should generate unique timestamps for multiple templates', async () => {
170
- const templates = await Promise.all([...Array(10)].map((_, i) => createTemplateWithFunc(`test-${i}-${testContext.timestamp}.sql`, `_${i}`)));
227
+ const templates = await Promise.all([...Array(10)].map((_, i) => createTemplateWithFunc(`timestamptest-${i}-${testContext.timestamp}.sql`, `_${i}`)));
171
228
  const manager = await TemplateManager.create(testContext.testDir);
172
229
  await manager.processTemplates({ generateFiles: true });
173
230
  const migrations = await fs.readdir(join(testContext.testDir, 'test-migrations'));
@@ -177,8 +234,8 @@ describe('TemplateManager', () => {
177
234
  expect(timestamps).toEqual([...timestamps].sort());
178
235
  });
179
236
  it('should handle mix of working and broken templates', async () => {
180
- await createTemplateWithFunc(`test-good-${testContext.timestamp}.sql`, '_good');
181
- await createTemplate(`test-bad-${testContext.timestamp}.sql`, 'INVALID SQL SYNTAX;');
237
+ await createTemplateWithFunc(`a-test-good-${testContext.timestamp}.sql`, '_good');
238
+ await createTemplate(`a-test-bad-${testContext.timestamp}.sql`, 'INVALID SQL SYNTAX;');
182
239
  const manager = await TemplateManager.create(testContext.testDir);
183
240
  const result = await manager.processTemplates({ apply: true });
184
241
  expect(result.errors).toHaveLength(1);
@@ -285,5 +342,385 @@ describe('TemplateManager', () => {
285
342
  const status = await manager2.getTemplateStatus(template);
286
343
  expect(status.buildState.lastBuildHash).toBeDefined();
287
344
  });
345
+ it('should handle template additions in watch mode', async () => {
346
+ const manager = await TemplateManager.create(testContext.testDir);
347
+ const changes = [];
348
+ manager.on('templateChanged', template => {
349
+ changes.push(template.name);
350
+ });
351
+ const watcher = await manager.watch();
352
+ // Add new template after watch started
353
+ await createTemplateWithFunc(`test-new-${testContext.timestamp}.sql`);
354
+ await new Promise(resolve => setTimeout(resolve, 150));
355
+ watcher.close();
356
+ expect(changes).toContain(`test-new-${testContext.timestamp}`);
357
+ });
358
+ it('should handle templates in deep subdirectories', async () => {
359
+ // Create nested directory structure
360
+ const depth = 5;
361
+ const templatePaths = [];
362
+ for (let i = 1; i <= depth; i++) {
363
+ const dir = [...Array(i)].map((_, idx) => `level${idx + 1}`).join('/');
364
+ const templatePath = await createTemplateWithFunc(`depth-test-${i}-${testContext.timestamp}.sql`, `_depth_${i}`, dir);
365
+ templatePaths.push(templatePath);
366
+ }
367
+ const manager = await TemplateManager.create(testContext.testDir);
368
+ const changes = [];
369
+ manager.on('templateChanged', template => {
370
+ changes.push(template.name);
371
+ });
372
+ const watcher = await manager.watch();
373
+ await new Promise(resolve => setTimeout(resolve, depth * 100 * 1.1));
374
+ watcher.close();
375
+ expect(changes.length).toBe(depth);
376
+ // Verify each template was detected
377
+ for (let i = 1; i <= depth; i++) {
378
+ expect(changes).toContain(`depth-test-${i}-${testContext.timestamp}`);
379
+ }
380
+ });
381
+ it('should only watch SQL files', async () => {
382
+ const manager = await TemplateManager.create(testContext.testDir);
383
+ const changes = [];
384
+ manager.on('templateChanged', template => {
385
+ changes.push(template.name);
386
+ });
387
+ const watcher = await manager.watch();
388
+ await new Promise(resolve => setTimeout(resolve, 100));
389
+ // Create various file types
390
+ await fs.writeFile(join(testContext.testDir, 'test-templates/test.txt'), 'not sql');
391
+ await fs.writeFile(join(testContext.testDir, 'test-templates/test.md'), 'not sql');
392
+ await createTemplateWithFunc(`test-sql-${testContext.timestamp}.sql`);
393
+ await new Promise(resolve => setTimeout(resolve, 500));
394
+ watcher.close();
395
+ expect(changes).toHaveLength(1);
396
+ expect(changes[0]).toBe(`test-sql-${testContext.timestamp}`);
397
+ });
398
+ it('should handle multiple template changes simultaneously', async () => {
399
+ const manager = await TemplateManager.create(testContext.testDir);
400
+ const changes = new Set();
401
+ const count = 5;
402
+ manager.on('templateChanged', template => {
403
+ changes.add(template.name);
404
+ });
405
+ const watcher = await manager.watch();
406
+ await new Promise(resolve => setTimeout(resolve, 100));
407
+ // Create multiple templates simultaneously
408
+ await Promise.all([
409
+ createTemplateWithFunc(`rapid_test-1-${testContext.timestamp}.sql`, '_batch_changes_1'),
410
+ createTemplateWithFunc(`rapid_test-2-${testContext.timestamp}.sql`, '_batch_changes_2'),
411
+ createTemplateWithFunc(`rapid_test-3-${testContext.timestamp}.sql`, '_batch_changes_3'),
412
+ createTemplateWithFunc(`rapid_test-4-${testContext.timestamp}.sql`, '_batch_changes_4', 'deep'),
413
+ createTemplateWithFunc(`rapid_test-5-${testContext.timestamp}.sql`, '_batch_changes_5', 'deep/nested'),
414
+ ]);
415
+ // Give enough time for all changes to be detected
416
+ await new Promise(resolve => setTimeout(resolve, count * 100 * 1.1));
417
+ watcher.close();
418
+ expect(changes.size).toBe(count); // Should detect all 5 templates
419
+ for (let i = 1; i <= count; i++) {
420
+ expect(changes.has(`rapid_test-${i}-${testContext.timestamp}`)).toBe(true);
421
+ }
422
+ // Verify all templates were processed
423
+ const client = await connect();
424
+ try {
425
+ for (let i = 1; i <= count; i++) {
426
+ const res = await client.query(`SELECT proname FROM pg_proc WHERE proname = $1`, [
427
+ `${testContext.testFunctionName}_batch_changes_${i}`,
428
+ ]);
429
+ expect(res.rows).toHaveLength(1);
430
+ }
431
+ }
432
+ finally {
433
+ client.release();
434
+ }
435
+ }, 15000);
436
+ it('should handle rapid bulk template creation realistically', async () => {
437
+ const TEMPLATE_COUNT = 50;
438
+ const manager = await TemplateManager.create(testContext.testDir);
439
+ const processed = new Set();
440
+ const failed = new Set();
441
+ const inProgress = new Set();
442
+ const events = [];
443
+ let resolveProcessing;
444
+ const processingComplete = new Promise(resolve => {
445
+ resolveProcessing = resolve;
446
+ });
447
+ manager.on('templateChanged', ({ name }) => {
448
+ events.push({ event: 'changed', template: name, time: Date.now() });
449
+ inProgress.add(name);
450
+ });
451
+ manager.on('templateApplied', ({ name }) => {
452
+ events.push({ event: 'applied', template: name, time: Date.now() });
453
+ processed.add(name);
454
+ inProgress.delete(name);
455
+ if (processed.size + failed.size === TEMPLATE_COUNT) {
456
+ resolveProcessing();
457
+ }
458
+ });
459
+ manager.on('templateError', ({ template: { name }, error }) => {
460
+ events.push({ event: 'error', template: name, time: Date.now() });
461
+ failed.add(name);
462
+ inProgress.delete(name);
463
+ console.error('Template error:', { name, error });
464
+ if (processed.size + failed.size === TEMPLATE_COUNT) {
465
+ resolveProcessing();
466
+ }
467
+ });
468
+ const watcher = await manager.watch();
469
+ // Create all templates
470
+ await Promise.all(Array.from({ length: TEMPLATE_COUNT }, (_, i) => createTemplateWithFunc(`bulk_created_template_${i + 1}.sql`, `_bulk_${i + 1}`)));
471
+ await processingComplete;
472
+ watcher.close();
473
+ expect(processed.size + failed.size).toBe(TEMPLATE_COUNT);
474
+ expect(inProgress.size).toBe(0);
475
+ expect(failed.size).toBe(0);
476
+ });
477
+ it('should cleanup resources when disposed', async () => {
478
+ const manager = await TemplateManager.create(testContext.testDir);
479
+ const changes = [];
480
+ manager.on('templateChanged', template => {
481
+ changes.push(template.name);
482
+ });
483
+ await manager.watch();
484
+ // Create template before disposal
485
+ await createTemplateWithFunc(`test-before-dispose-${testContext.timestamp}.sql`);
486
+ await new Promise(resolve => setTimeout(resolve, 100));
487
+ // Dispose and verify cleanup
488
+ manager[Symbol.dispose]();
489
+ // Try creating template after disposal
490
+ await createTemplateWithFunc(`test-after-dispose-${testContext.timestamp}.sql`);
491
+ await new Promise(resolve => setTimeout(resolve, 100));
492
+ expect(changes).toHaveLength(1);
493
+ expect(changes[0]).toBe(`test-before-dispose-${testContext.timestamp}`);
494
+ });
495
+ it('should auto-cleanup with using statement', async () => {
496
+ const changes = [];
497
+ await (async () => {
498
+ const env_1 = { stack: [], error: void 0, hasError: false };
499
+ try {
500
+ const manager = __addDisposableResource(env_1, await TemplateManager.create(testContext.testDir), false);
501
+ manager.on('templateChanged', template => {
502
+ changes.push(template.name);
503
+ });
504
+ await manager.watch();
505
+ await createTemplateWithFunc(`test-during-scope-${testContext.timestamp}.sql`);
506
+ await new Promise(resolve => setTimeout(resolve, 100));
507
+ }
508
+ catch (e_1) {
509
+ env_1.error = e_1;
510
+ env_1.hasError = true;
511
+ }
512
+ finally {
513
+ __disposeResources(env_1);
514
+ }
515
+ })();
516
+ // After scope exit, create another template
517
+ await createTemplateWithFunc(`test-after-scope-${testContext.timestamp}.sql`);
518
+ await new Promise(resolve => setTimeout(resolve, 100));
519
+ expect(changes).toHaveLength(1);
520
+ expect(changes[0]).toBe(`test-during-scope-${testContext.timestamp}`);
521
+ });
522
+ it('should not process unchanged templates', async () => {
523
+ const templatePath = await createTemplateWithFunc(`test-unchanged-${testContext.timestamp}.sql`);
524
+ const manager = await TemplateManager.create(testContext.testDir);
525
+ await manager.watch();
526
+ // First processing
527
+ await manager.processTemplates({ apply: true });
528
+ // Get the status after first processing
529
+ const statusAfterFirstRun = await manager.getTemplateStatus(templatePath);
530
+ const changes = [];
531
+ manager.on('templateChanged', template => {
532
+ changes.push(template.name);
533
+ });
534
+ // Process again without changes
535
+ await manager.processTemplates({ apply: true });
536
+ // Get status after second run
537
+ const statusAfterSecondRun = await manager.getTemplateStatus(templatePath);
538
+ expect(changes).toHaveLength(0);
539
+ expect(statusAfterSecondRun.buildState.lastBuildHash).toBe(statusAfterFirstRun.buildState.lastBuildHash);
540
+ expect(statusAfterSecondRun.buildState.lastAppliedHash).toBe(statusAfterFirstRun.buildState.lastAppliedHash);
541
+ });
542
+ it('should only process modified templates in batch', async () => {
543
+ // Create two templates
544
+ const template1 = await createTemplateWithFunc(`modified_tmpl_1-${testContext.timestamp}.sql`, 'mod_1');
545
+ await createTemplateWithFunc(`modified_tmpl_2-${testContext.timestamp}.sql`, 'mod_2');
546
+ const manager = await TemplateManager.create(testContext.testDir);
547
+ // First processing of both
548
+ await manager.processTemplates({ apply: true });
549
+ const changes = [];
550
+ manager.on('templateChanged', template => {
551
+ changes.push(template.name);
552
+ });
553
+ // Modify only template1
554
+ await fs.writeFile(template1, `${await fs.readFile(template1, 'utf-8')}\n-- Modified`);
555
+ // Process both templates again
556
+ await manager.processTemplates({ apply: true });
557
+ expect(changes).toHaveLength(1);
558
+ expect(changes[0]).toBe(`modified_tmpl_1-${testContext.timestamp}`);
559
+ });
560
+ it('should correctly update local buildlog on apply', async () => {
561
+ const templatePath = await createTemplateWithFunc(`test-buildlog-${testContext.timestamp}.sql`);
562
+ const manager = await TemplateManager.create(testContext.testDir);
563
+ const localBuildlogPath = join(testContext.testDir, '.buildlog-test.local.json');
564
+ // Initial apply
565
+ await manager.processTemplates({ apply: true });
566
+ const initialLog = JSON.parse(await fs.readFile(localBuildlogPath, 'utf-8'));
567
+ const relPath = relative(testContext.testDir, templatePath);
568
+ const initialHash = initialLog.templates[relPath].lastAppliedHash;
569
+ const initialContent = await fs.readFile(templatePath, 'utf-8');
570
+ expect(initialHash).toBeDefined();
571
+ // Modify template
572
+ await fs.writeFile(templatePath, `${initialContent}\n-- Modified`);
573
+ await new Promise(resolve => setTimeout(resolve, 100));
574
+ const changedContent = await fs.readFile(templatePath, 'utf-8');
575
+ // Second apply
576
+ await manager.processTemplates({ apply: true });
577
+ await new Promise(resolve => setTimeout(resolve, 100));
578
+ const updatedLog = JSON.parse(await fs.readFile(localBuildlogPath, 'utf-8'));
579
+ const newHash = updatedLog.templates[relPath].lastAppliedHash;
580
+ const manualMd5 = await calculateMD5(changedContent);
581
+ expect(newHash).toBeDefined();
582
+ expect(newHash).toBe(manualMd5);
583
+ expect(newHash).not.toBe(initialHash);
584
+ });
585
+ it('should skip apply if template hash matches local buildlog', async () => {
586
+ const templatePath = await createTemplateWithFunc(`test-skip-${testContext.timestamp}.sql`);
587
+ const manager = await TemplateManager.create(testContext.testDir);
588
+ const localBuildlogPath = join(testContext.testDir, '.buildlog-test.local.json');
589
+ // Initial apply
590
+ await manager.processTemplates({ apply: true });
591
+ const initialLog = JSON.parse(await fs.readFile(localBuildlogPath, 'utf-8'));
592
+ const relPath = relative(testContext.testDir, templatePath);
593
+ const initialHash = initialLog.templates[relPath].lastAppliedHash;
594
+ const initialDate = initialLog.templates[relPath].lastAppliedDate;
595
+ // Wait a bit to ensure timestamp would be different
596
+ await new Promise(resolve => setTimeout(resolve, 100));
597
+ // Apply again without changes
598
+ await manager.processTemplates({ apply: true });
599
+ const updatedLog = JSON.parse(await fs.readFile(localBuildlogPath, 'utf-8'));
600
+ // Hash and date should remain exactly the same since no changes were made
601
+ expect(updatedLog.templates[relPath].lastAppliedHash).toBe(initialHash);
602
+ expect(updatedLog.templates[relPath].lastAppliedDate).toBe(initialDate);
603
+ });
604
+ it('should not reapply unchanged templates in watch mode', async () => {
605
+ // Create multiple templates
606
+ const templates = await Promise.all([
607
+ createTemplateWithFunc(`watch-stable-1-${testContext.timestamp}.sql`, '_watch_1'),
608
+ createTemplateWithFunc(`watch-stable-2-${testContext.timestamp}.sql`, '_watch_2'),
609
+ ]);
610
+ const manager = await TemplateManager.create(testContext.testDir);
611
+ const applied = [];
612
+ const changed = [];
613
+ manager.on('templateChanged', template => {
614
+ changed.push(template.name);
615
+ });
616
+ manager.on('templateApplied', template => {
617
+ applied.push(template.name);
618
+ });
619
+ // First watch session
620
+ const watcher1 = await manager.watch();
621
+ await new Promise(resolve => setTimeout(resolve, 100));
622
+ await watcher1.close();
623
+ // Record initial state
624
+ const initialApplied = [...applied];
625
+ const initialChanged = [...changed];
626
+ applied.length = 0;
627
+ changed.length = 0;
628
+ // Second watch session without any changes
629
+ const watcher2 = await manager.watch();
630
+ await new Promise(resolve => setTimeout(resolve, 100));
631
+ await watcher2.close();
632
+ expect(initialApplied).toHaveLength(2); // First run should apply both
633
+ expect(initialChanged).toHaveLength(2); // First run should detect both
634
+ expect(applied).toHaveLength(0); // Second run should apply none
635
+ expect(changed).toHaveLength(0); // Second run should detect none
636
+ // Verify the buildlog state
637
+ const localBuildlogPath = join(testContext.testDir, '.buildlog-test.local.json');
638
+ const buildLog = JSON.parse(await fs.readFile(localBuildlogPath, 'utf-8'));
639
+ for (const templatePath of templates) {
640
+ const relPath = relative(testContext.testDir, templatePath);
641
+ const content = await fs.readFile(templatePath, 'utf-8');
642
+ const hash = await calculateMD5(content);
643
+ expect(buildLog.templates[relPath].lastAppliedHash).toBe(hash);
644
+ }
645
+ });
646
+ it('should process unapplied templates on startup', async () => {
647
+ // Create template but don't process it
648
+ await createTemplateWithFunc(`startup-test-${testContext.timestamp}.sql`);
649
+ // Create a new manager instance
650
+ const manager = await TemplateManager.create(testContext.testDir);
651
+ const changes = [];
652
+ const applied = [];
653
+ manager.on('templateChanged', t => changes.push(t.name));
654
+ manager.on('templateApplied', t => applied.push(t.name));
655
+ // Start watching - this should process the template
656
+ await manager.watch();
657
+ await new Promise(resolve => setTimeout(resolve, 100));
658
+ expect(changes).toHaveLength(1);
659
+ expect(applied).toHaveLength(1);
660
+ expect(changes[0]).toBe(`startup-test-${testContext.timestamp}`);
661
+ expect(applied[0]).toBe(`startup-test-${testContext.timestamp}`);
662
+ });
663
+ it('should handle error state transitions correctly', async () => {
664
+ const templatePath = await createTemplateWithFunc(`error-state-${testContext.timestamp}.sql`, '_error_test');
665
+ const manager = await TemplateManager.create(testContext.testDir);
666
+ const states = [];
667
+ manager.on('templateChanged', () => states.push({ type: 'changed' }));
668
+ manager.on('templateApplied', () => states.push({ type: 'applied' }));
669
+ manager.on('templateError', ({ error }) => states.push({ type: 'error', error: String(error) }));
670
+ // First apply should succeed
671
+ await manager.processTemplates({ apply: true });
672
+ // Modify template to be invalid
673
+ await fs.writeFile(templatePath, 'INVALID SQL;');
674
+ await manager.processTemplates({ apply: true });
675
+ // Fix template with valid SQL
676
+ await fs.writeFile(templatePath, `CREATE OR REPLACE FUNCTION ${testContext.testFunctionName}() RETURNS void AS $$ BEGIN NULL; END; $$ LANGUAGE plpgsql;`);
677
+ await manager.processTemplates({ apply: true });
678
+ expect(states).toEqual([
679
+ { type: 'changed' },
680
+ { type: 'applied' },
681
+ { type: 'changed' },
682
+ { type: 'error', error: expect.stringMatching(/syntax error/) },
683
+ { type: 'changed' },
684
+ { type: 'applied' },
685
+ ]);
686
+ });
687
+ it('should maintain correct state through manager restarts', async () => {
688
+ const templatePath = await createTemplateWithFunc(`restart-test-${testContext.timestamp}.sql`);
689
+ // First manager instance
690
+ const manager1 = await TemplateManager.create(testContext.testDir);
691
+ await manager1.processTemplates({ apply: true });
692
+ // Get initial state
693
+ const status1 = await manager1.getTemplateStatus(templatePath);
694
+ const initialHash = status1.buildState.lastAppliedHash;
695
+ // Modify template
696
+ await fs.writeFile(templatePath, `${await fs.readFile(templatePath, 'utf-8')}\n-- Modified`);
697
+ // Create new manager instance
698
+ const manager2 = await TemplateManager.create(testContext.testDir);
699
+ const changes = [];
700
+ const applied = [];
701
+ manager2.on('templateChanged', t => changes.push(t.name));
702
+ manager2.on('templateApplied', t => applied.push(t.name));
703
+ await manager2.watch();
704
+ await new Promise(resolve => setTimeout(resolve, 100));
705
+ // Verify state was maintained and change was detected
706
+ const status2 = await manager2.getTemplateStatus(templatePath);
707
+ expect(status2.buildState.lastAppliedHash).not.toBe(initialHash);
708
+ expect(changes).toContain(`restart-test-${testContext.timestamp}`);
709
+ expect(applied).toContain(`restart-test-${testContext.timestamp}`);
710
+ });
711
+ it('should properly format and propagate error messages', async () => {
712
+ const templatePath = await createTemplateWithFunc(`error-format-${testContext.timestamp}.sql`);
713
+ const manager = await TemplateManager.create(testContext.testDir);
714
+ const errors = [];
715
+ manager.on('templateError', err => errors.push(err));
716
+ // Create invalid SQL
717
+ await fs.writeFile(templatePath, 'SELECT * FROM nonexistent_table;');
718
+ await manager.processTemplates({ apply: true });
719
+ expect(errors).toHaveLength(1);
720
+ const error = errors[0]?.error;
721
+ expect(typeof error).toBe('string');
722
+ expect(error).not.toMatch(/\[object Object\]/);
723
+ expect(error).toMatch(/relation.*does not exist/i);
724
+ });
288
725
  });
289
726
  //# sourceMappingURL=templateManager.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"templateManager.test.js","sourceRoot":"","sources":["../../src/lib/templateManager.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"templateManager.test.js","sourceRoot":"","sources":["../../src/lib/templateManager.test.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -27,11 +27,12 @@ export interface CLIConfig {
27
27
  footer: string;
28
28
  templateDir: string;
29
29
  migrationDir: string;
30
+ migrationPrefix?: string;
30
31
  buildLog: string;
31
32
  localBuildLog: string;
32
33
  pgConnection: string;
33
34
  }
34
- export interface CLIResult {
35
+ export interface ProcessedTemplateResult {
35
36
  errors: MigrationError[];
36
37
  applied: string[];
37
38
  }