@t1mmen/srtd 0.4.1 → 0.4.3

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 (196) hide show
  1. package/README.md +1 -1
  2. package/dist/__tests__/apply.test.js.map +1 -0
  3. package/dist/__tests__/build.test.js.map +1 -0
  4. package/dist/__tests__/clear.test.js +11 -0
  5. package/dist/__tests__/clear.test.js.map +1 -0
  6. package/dist/__tests__/init.test.js +28 -0
  7. package/dist/__tests__/init.test.js.map +1 -0
  8. package/dist/__tests__/register.test.js +9 -0
  9. package/dist/__tests__/register.test.js.map +1 -0
  10. package/dist/__tests__/vitest.setup.js.map +1 -0
  11. package/dist/{src/__tests__ → __tests__}/watch.test.js +1 -6
  12. package/dist/__tests__/watch.test.js.map +1 -0
  13. package/dist/cli.js.map +1 -0
  14. package/dist/{src/commands → commands}/_app.js +1 -1
  15. package/dist/commands/_app.js.map +1 -0
  16. package/dist/commands/apply.js.map +1 -0
  17. package/dist/commands/build.js.map +1 -0
  18. package/dist/{src/commands → commands}/clear.js +2 -3
  19. package/dist/commands/clear.js.map +1 -0
  20. package/dist/commands/index.js.map +1 -0
  21. package/dist/commands/init.js.map +1 -0
  22. package/dist/commands/register.js.map +1 -0
  23. package/dist/commands/watch.js.map +1 -0
  24. package/dist/components/Branding.js.map +1 -0
  25. package/dist/components/Debug.js.map +1 -0
  26. package/dist/components/ProcessingResults.js.map +1 -0
  27. package/dist/components/Quittable.js.map +1 -0
  28. package/dist/components/TimeSince.js.map +1 -0
  29. package/dist/components/customTheme.js.map +1 -0
  30. package/dist/constants.js.map +1 -0
  31. package/dist/{src/hooks → hooks}/useDatabaseConnection.js +1 -1
  32. package/dist/hooks/useDatabaseConnection.js.map +1 -0
  33. package/dist/hooks/useTemplateManager.js.map +1 -0
  34. package/dist/hooks/useTemplateProcessor.js.map +1 -0
  35. package/dist/hooks/useTemplateState.js.map +1 -0
  36. package/dist/lib/templateManager.js.map +1 -0
  37. package/dist/{src/lib → lib}/templateManager.test.js +124 -91
  38. package/dist/lib/templateManager.test.js.map +1 -0
  39. package/dist/types.js.map +1 -0
  40. package/dist/utils/applyMigration.js.map +1 -0
  41. package/dist/utils/applyMigrations.test.js.map +1 -0
  42. package/dist/utils/calculateMD5.js.map +1 -0
  43. package/dist/utils/config.js.map +1 -0
  44. package/dist/utils/config.test.d.ts +1 -0
  45. package/dist/utils/config.test.js.map +1 -0
  46. package/dist/utils/createEmptyBuildLog.js.map +1 -0
  47. package/dist/{src/utils → utils}/databaseConnection.js +2 -2
  48. package/dist/utils/databaseConnection.js.map +1 -0
  49. package/dist/utils/databaseConnection.test.d.ts +1 -0
  50. package/dist/utils/databaseConnection.test.js.map +1 -0
  51. package/dist/utils/ensureDirectories.js.map +1 -0
  52. package/dist/utils/fileExists.js.map +1 -0
  53. package/dist/utils/getNextTimestamp.js.map +1 -0
  54. package/dist/utils/isWipTemplate.js.map +1 -0
  55. package/dist/utils/loadBuildLog.js.map +1 -0
  56. package/dist/utils/loadBuildLog.test.d.ts +1 -0
  57. package/dist/utils/loadBuildLog.test.js.map +1 -0
  58. package/dist/utils/logger.js.map +1 -0
  59. package/dist/utils/registerTemplate.js.map +1 -0
  60. package/dist/utils/safeCreate.js.map +1 -0
  61. package/dist/utils/saveBuildLog.js.map +1 -0
  62. package/dist/utils/store.js.map +1 -0
  63. package/package.json +2 -2
  64. package/dist/package.json +0 -97
  65. package/dist/src/__tests__/apply.test.js.map +0 -1
  66. package/dist/src/__tests__/build.test.js.map +0 -1
  67. package/dist/src/__tests__/vitest.setup.js.map +0 -1
  68. package/dist/src/__tests__/watch.test.js.map +0 -1
  69. package/dist/src/cli.js.map +0 -1
  70. package/dist/src/commands/_app.js.map +0 -1
  71. package/dist/src/commands/apply.js.map +0 -1
  72. package/dist/src/commands/build.js.map +0 -1
  73. package/dist/src/commands/clear.js.map +0 -1
  74. package/dist/src/commands/index.js.map +0 -1
  75. package/dist/src/commands/init.js.map +0 -1
  76. package/dist/src/commands/register.js.map +0 -1
  77. package/dist/src/commands/watch.js.map +0 -1
  78. package/dist/src/components/Branding.js.map +0 -1
  79. package/dist/src/components/Debug.js.map +0 -1
  80. package/dist/src/components/ProcessingResults.js.map +0 -1
  81. package/dist/src/components/Quittable.js.map +0 -1
  82. package/dist/src/components/TimeSince.js.map +0 -1
  83. package/dist/src/components/customTheme.js.map +0 -1
  84. package/dist/src/constants.js.map +0 -1
  85. package/dist/src/hooks/useDatabaseConnection.js.map +0 -1
  86. package/dist/src/hooks/useTemplateManager.js.map +0 -1
  87. package/dist/src/hooks/useTemplateProcessor.js.map +0 -1
  88. package/dist/src/hooks/useTemplateState.js.map +0 -1
  89. package/dist/src/lib/templateManager.js.map +0 -1
  90. package/dist/src/lib/templateManager.test.js.map +0 -1
  91. package/dist/src/types.js.map +0 -1
  92. package/dist/src/utils/applyMigration.js.map +0 -1
  93. package/dist/src/utils/applyMigrations.test.js.map +0 -1
  94. package/dist/src/utils/calculateMD5.js.map +0 -1
  95. package/dist/src/utils/config.js.map +0 -1
  96. package/dist/src/utils/config.test.js.map +0 -1
  97. package/dist/src/utils/createEmptyBuildLog.js.map +0 -1
  98. package/dist/src/utils/databaseConnection.js.map +0 -1
  99. package/dist/src/utils/databaseConnection.test.js.map +0 -1
  100. package/dist/src/utils/ensureDirectories.js.map +0 -1
  101. package/dist/src/utils/fileExists.js.map +0 -1
  102. package/dist/src/utils/getNextTimestamp.js.map +0 -1
  103. package/dist/src/utils/isWipTemplate.js.map +0 -1
  104. package/dist/src/utils/loadBuildLog.js.map +0 -1
  105. package/dist/src/utils/loadBuildLog.test.js.map +0 -1
  106. package/dist/src/utils/logger.js.map +0 -1
  107. package/dist/src/utils/registerTemplate.js.map +0 -1
  108. package/dist/src/utils/safeCreate.js.map +0 -1
  109. package/dist/src/utils/saveBuildLog.js.map +0 -1
  110. package/dist/src/utils/store.js.map +0 -1
  111. /package/dist/{src/__tests__ → __tests__}/apply.test.d.ts +0 -0
  112. /package/dist/{src/__tests__ → __tests__}/apply.test.js +0 -0
  113. /package/dist/{src/__tests__ → __tests__}/build.test.d.ts +0 -0
  114. /package/dist/{src/__tests__ → __tests__}/build.test.js +0 -0
  115. /package/dist/{src/__tests__/watch.test.d.ts → __tests__/clear.test.d.ts} +0 -0
  116. /package/dist/{src/lib/templateManager.test.d.ts → __tests__/init.test.d.ts} +0 -0
  117. /package/dist/{src/utils/applyMigrations.test.d.ts → __tests__/register.test.d.ts} +0 -0
  118. /package/dist/{src/__tests__ → __tests__}/vitest.setup.d.ts +0 -0
  119. /package/dist/{src/__tests__ → __tests__}/vitest.setup.js +0 -0
  120. /package/dist/{src/utils/config.test.d.ts → __tests__/watch.test.d.ts} +0 -0
  121. /package/dist/{src/cli.d.ts → cli.d.ts} +0 -0
  122. /package/dist/{src/cli.js → cli.js} +0 -0
  123. /package/dist/{src/commands → commands}/_app.d.ts +0 -0
  124. /package/dist/{src/commands → commands}/apply.d.ts +0 -0
  125. /package/dist/{src/commands → commands}/apply.js +0 -0
  126. /package/dist/{src/commands → commands}/build.d.ts +0 -0
  127. /package/dist/{src/commands → commands}/build.js +0 -0
  128. /package/dist/{src/commands → commands}/clear.d.ts +0 -0
  129. /package/dist/{src/commands → commands}/index.d.ts +0 -0
  130. /package/dist/{src/commands → commands}/index.js +0 -0
  131. /package/dist/{src/commands → commands}/init.d.ts +0 -0
  132. /package/dist/{src/commands → commands}/init.js +0 -0
  133. /package/dist/{src/commands → commands}/register.d.ts +0 -0
  134. /package/dist/{src/commands → commands}/register.js +0 -0
  135. /package/dist/{src/commands → commands}/watch.d.ts +0 -0
  136. /package/dist/{src/commands → commands}/watch.js +0 -0
  137. /package/dist/{src/components → components}/Branding.d.ts +0 -0
  138. /package/dist/{src/components → components}/Branding.js +0 -0
  139. /package/dist/{src/components → components}/Debug.d.ts +0 -0
  140. /package/dist/{src/components → components}/Debug.js +0 -0
  141. /package/dist/{src/components → components}/ProcessingResults.d.ts +0 -0
  142. /package/dist/{src/components → components}/ProcessingResults.js +0 -0
  143. /package/dist/{src/components → components}/Quittable.d.ts +0 -0
  144. /package/dist/{src/components → components}/Quittable.js +0 -0
  145. /package/dist/{src/components → components}/TimeSince.d.ts +0 -0
  146. /package/dist/{src/components → components}/TimeSince.js +0 -0
  147. /package/dist/{src/components → components}/customTheme.d.ts +0 -0
  148. /package/dist/{src/components → components}/customTheme.js +0 -0
  149. /package/dist/{src/constants.d.ts → constants.d.ts} +0 -0
  150. /package/dist/{src/constants.js → constants.js} +0 -0
  151. /package/dist/{src/hooks → hooks}/useDatabaseConnection.d.ts +0 -0
  152. /package/dist/{src/hooks → hooks}/useTemplateManager.d.ts +0 -0
  153. /package/dist/{src/hooks → hooks}/useTemplateManager.js +0 -0
  154. /package/dist/{src/hooks → hooks}/useTemplateProcessor.d.ts +0 -0
  155. /package/dist/{src/hooks → hooks}/useTemplateProcessor.js +0 -0
  156. /package/dist/{src/hooks → hooks}/useTemplateState.d.ts +0 -0
  157. /package/dist/{src/hooks → hooks}/useTemplateState.js +0 -0
  158. /package/dist/{src/lib → lib}/templateManager.d.ts +0 -0
  159. /package/dist/{src/lib → lib}/templateManager.js +0 -0
  160. /package/dist/{src/utils/databaseConnection.test.d.ts → lib/templateManager.test.d.ts} +0 -0
  161. /package/dist/{src/types.d.ts → types.d.ts} +0 -0
  162. /package/dist/{src/types.js → types.js} +0 -0
  163. /package/dist/{src/utils → utils}/applyMigration.d.ts +0 -0
  164. /package/dist/{src/utils → utils}/applyMigration.js +0 -0
  165. /package/dist/{src/utils/loadBuildLog.test.d.ts → utils/applyMigrations.test.d.ts} +0 -0
  166. /package/dist/{src/utils → utils}/applyMigrations.test.js +0 -0
  167. /package/dist/{src/utils → utils}/calculateMD5.d.ts +0 -0
  168. /package/dist/{src/utils → utils}/calculateMD5.js +0 -0
  169. /package/dist/{src/utils → utils}/config.d.ts +0 -0
  170. /package/dist/{src/utils → utils}/config.js +0 -0
  171. /package/dist/{src/utils → utils}/config.test.js +0 -0
  172. /package/dist/{src/utils → utils}/createEmptyBuildLog.d.ts +0 -0
  173. /package/dist/{src/utils → utils}/createEmptyBuildLog.js +0 -0
  174. /package/dist/{src/utils → utils}/databaseConnection.d.ts +0 -0
  175. /package/dist/{src/utils → utils}/databaseConnection.test.js +0 -0
  176. /package/dist/{src/utils → utils}/ensureDirectories.d.ts +0 -0
  177. /package/dist/{src/utils → utils}/ensureDirectories.js +0 -0
  178. /package/dist/{src/utils → utils}/fileExists.d.ts +0 -0
  179. /package/dist/{src/utils → utils}/fileExists.js +0 -0
  180. /package/dist/{src/utils → utils}/getNextTimestamp.d.ts +0 -0
  181. /package/dist/{src/utils → utils}/getNextTimestamp.js +0 -0
  182. /package/dist/{src/utils → utils}/isWipTemplate.d.ts +0 -0
  183. /package/dist/{src/utils → utils}/isWipTemplate.js +0 -0
  184. /package/dist/{src/utils → utils}/loadBuildLog.d.ts +0 -0
  185. /package/dist/{src/utils → utils}/loadBuildLog.js +0 -0
  186. /package/dist/{src/utils → utils}/loadBuildLog.test.js +0 -0
  187. /package/dist/{src/utils → utils}/logger.d.ts +0 -0
  188. /package/dist/{src/utils → utils}/logger.js +0 -0
  189. /package/dist/{src/utils → utils}/registerTemplate.d.ts +0 -0
  190. /package/dist/{src/utils → utils}/registerTemplate.js +0 -0
  191. /package/dist/{src/utils → utils}/safeCreate.d.ts +0 -0
  192. /package/dist/{src/utils → utils}/safeCreate.js +0 -0
  193. /package/dist/{src/utils → utils}/saveBuildLog.d.ts +0 -0
  194. /package/dist/{src/utils → utils}/saveBuildLog.js +0 -0
  195. /package/dist/{src/utils → utils}/store.d.ts +0 -0
  196. /package/dist/{src/utils → utils}/store.js +0 -0
@@ -61,13 +61,16 @@ import { ensureDirectories } from '../utils/ensureDirectories.js';
61
61
  import { TemplateManager } from './templateManager.js';
62
62
  describe('TemplateManager', () => {
63
63
  const testContext = {
64
- timestamp: Date.now(),
64
+ testId: 0,
65
65
  testDir: '',
66
66
  testFunctionName: '',
67
+ templateCounter: 0,
67
68
  };
68
69
  beforeEach(async () => {
69
- testContext.testDir = join(tmpdir(), `srtd-test-${testContext.timestamp}`);
70
- testContext.testFunctionName = `${TEST_FN_PREFIX}${testContext.timestamp}`;
70
+ testContext.testId = Math.floor(Math.random() * 1000000);
71
+ testContext.testDir = join(tmpdir(), `srtd-test`);
72
+ testContext.testFunctionName = `${TEST_FN_PREFIX}`;
73
+ testContext.templateCounter = 0;
71
74
  await ensureDirectories(testContext.testDir);
72
75
  const client = await connect();
73
76
  try {
@@ -99,36 +102,47 @@ describe('TemplateManager', () => {
99
102
  await fs.rm(testContext.testDir, { recursive: true, force: true });
100
103
  disconnect();
101
104
  });
105
+ // Helper to generate unique template names
106
+ const getNextTemplateName = (prefix = 'template') => {
107
+ testContext.templateCounter++;
108
+ return `${prefix}_${testContext.testId}_${testContext.templateCounter}`;
109
+ };
102
110
  const createTemplate = async (name, content, dir) => {
103
111
  const fullPath = dir
104
112
  ? join(testContext.testDir, 'test-templates', dir, name)
105
113
  : join(testContext.testDir, 'test-templates', name);
106
- await fs.mkdir(path.dirname(fullPath), { recursive: true });
107
- await fs.writeFile(fullPath, content);
108
- return fullPath;
114
+ try {
115
+ await fs.mkdir(path.dirname(fullPath), { recursive: true });
116
+ await fs.writeFile(fullPath, content);
117
+ return fullPath;
118
+ }
119
+ catch (error) {
120
+ console.error('Error creating template:', error);
121
+ throw error;
122
+ }
109
123
  };
110
- const createTemplateWithFunc = async (name, funcSuffix = '', dir) => {
124
+ const createTemplateWithFunc = async (prefix, funcSuffix = '', dir) => {
125
+ const name = `${getNextTemplateName(prefix)}.sql`;
111
126
  const funcName = `${testContext.testFunctionName}${funcSuffix}`;
112
127
  const content = `CREATE OR REPLACE FUNCTION ${funcName}() RETURNS void AS $$ BEGIN NULL; END; $$ LANGUAGE plpgsql;`;
113
128
  return createTemplate(name, content, dir);
114
129
  };
115
130
  it('should create migration file when template changes', async () => {
116
- await createTemplateWithFunc(`test-${testContext.timestamp}.sql`);
131
+ await createTemplateWithFunc('basic', '_file_change');
117
132
  const manager = await TemplateManager.create(testContext.testDir);
118
133
  await manager.processTemplates({ generateFiles: true });
119
134
  const migrations = await fs.readdir(join(testContext.testDir, 'test-migrations'));
120
- const relevantMigrations = migrations.filter(m => m.includes(`test-${testContext.timestamp}`));
121
- expect(relevantMigrations).toHaveLength(1);
135
+ expect(migrations.length).toBe(1);
122
136
  });
123
137
  it('should not allow building WIP templates', async () => {
124
- await createTemplateWithFunc(`test-${testContext.timestamp}.wip.sql`);
138
+ await createTemplateWithFunc('file.wip', '_wip_wont_build');
125
139
  const manager = await TemplateManager.create(testContext.testDir);
126
140
  await manager.processTemplates({ generateFiles: true });
127
141
  const migrations = await fs.readdir(join(testContext.testDir, 'test-migrations'));
128
- expect(migrations.filter(m => m.includes(`test-${testContext.timestamp}`))).toHaveLength(0);
142
+ expect(migrations.filter(m => m.includes(`wip`))).toHaveLength(0);
129
143
  });
130
144
  it('should maintain separate build and local logs', async () => {
131
- const templatePath = join(testContext.testDir, 'test-templates', `test-${testContext.timestamp}.sql`);
145
+ const templatePath = join(testContext.testDir, 'test-templates', `template_${testContext.testId}_1.sql`);
132
146
  const templateContent = `CREATE FUNCTION ${testContext.testFunctionName}() RETURNS void AS $$ BEGIN NULL; END; $$ LANGUAGE plpgsql;`;
133
147
  await fs.writeFile(templatePath, templateContent);
134
148
  const manager = await TemplateManager.create(testContext.testDir);
@@ -143,7 +157,7 @@ describe('TemplateManager', () => {
143
157
  expect(localLog.templates[relPath].lastAppliedHash).toBeDefined();
144
158
  });
145
159
  it('should track template state correctly', async () => {
146
- const templatePath = join(testContext.testDir, 'test-templates', `test-${testContext.timestamp}.sql`);
160
+ const templatePath = join(testContext.testDir, 'test-templates', `template_${testContext.testId}_1.sql`);
147
161
  const templateContent = `CREATE FUNCTION ${testContext.testFunctionName}() RETURNS void AS $$ BEGIN NULL; END; $$ LANGUAGE plpgsql;`;
148
162
  await fs.writeFile(templatePath, templateContent);
149
163
  const manager = await TemplateManager.create(testContext.testDir);
@@ -163,7 +177,7 @@ describe('TemplateManager', () => {
163
177
  expect(status.buildState.lastAppliedDate).toBeDefined();
164
178
  });
165
179
  it('should handle rapid template changes', async () => {
166
- const templatePath = join(testContext.testDir, 'test-templates', `test-${testContext.timestamp}.sql`);
180
+ const templatePath = join(testContext.testDir, 'test-templates', `template_${testContext.testId}_1.sql`);
167
181
  const baseContent = `CREATE OR REPLACE FUNCTION ${testContext.testFunctionName}() RETURNS void AS $$ BEGIN NULL; END; $$ LANGUAGE plpgsql;`;
168
182
  await fs.writeFile(templatePath, baseContent);
169
183
  const manager = await TemplateManager.create(testContext.testDir);
@@ -184,7 +198,7 @@ describe('TemplateManager', () => {
184
198
  expect(new Set(changes).size).toBe(changes.length); // All changes should be unique
185
199
  }, 10000);
186
200
  it('should apply WIP templates directly to database', async () => {
187
- const templatePath = join(testContext.testDir, 'test-templates', `test-${testContext.timestamp}.wip.sql`);
201
+ const templatePath = join(testContext.testDir, 'test-templates', `template_${testContext.testId}_1.wip.sql`);
188
202
  const templateContent = `CREATE FUNCTION ${testContext.testFunctionName}() RETURNS void AS $$ BEGIN NULL; END; $$ LANGUAGE plpgsql;`;
189
203
  await fs.writeFile(templatePath, templateContent);
190
204
  const manager = await TemplateManager.create(testContext.testDir);
@@ -202,32 +216,32 @@ describe('TemplateManager', () => {
202
216
  }
203
217
  });
204
218
  it('should handle sequential template operations', async () => {
205
- const templates = await Promise.all([...Array(5)].map(async (_, i) => {
206
- await new Promise(resolve => setTimeout(resolve, 5));
207
- return createTemplateWithFunc(`sequencetest-${i}-${testContext.timestamp}.sql`, `_sequence_test_${i}`);
208
- }));
219
+ await Promise.all([...Array(5)].map((_, i) => createTemplateWithFunc(`sequencetest_${i}`, `_sequence_test_${i}`)));
209
220
  const manager = await TemplateManager.create(testContext.testDir);
210
- // Apply templates one by one
211
- for (const _templatePath of templates) {
221
+ const client = await connect();
222
+ try {
223
+ // Start transaction for isolation
224
+ await client.query('BEGIN');
212
225
  const result = await manager.processTemplates({ apply: true });
213
226
  expect(result.errors).toHaveLength(0);
227
+ // Verify final state
228
+ const allFunctions = await client.query(`SELECT proname FROM pg_proc WHERE proname LIKE $1`, [
229
+ `${testContext.testFunctionName}_sequence_test_%`,
230
+ ]);
231
+ expect(allFunctions.rows).toHaveLength(5);
214
232
  }
215
- await new Promise(resolve => setTimeout(resolve, 100));
216
- const client = await connect();
217
- try {
218
- for (let i = 0; i < 5; i++) {
219
- const res = await client.query(`SELECT proname FROM pg_proc WHERE proname = $1`, [
220
- `${testContext.testFunctionName}_sequence_test_${i}`,
221
- ]);
222
- expect(res.rows).toHaveLength(1);
223
- }
233
+ catch (error) {
234
+ console.error('Test failed:', error);
235
+ throw error;
224
236
  }
225
237
  finally {
238
+ // Cleanup
239
+ await client.query('ROLLBACK');
226
240
  client.release();
227
241
  }
228
242
  });
229
243
  it('should generate unique timestamps for multiple templates', async () => {
230
- const templates = await Promise.all([...Array(10)].map((_, i) => createTemplateWithFunc(`timestamptest-${i}-${testContext.timestamp}.sql`, `_${i}`)));
244
+ const templates = await Promise.all([...Array(10)].map((_, i) => createTemplateWithFunc(`timestamptest_${i}`, `_unique_timestamps_${i}`)));
231
245
  const manager = await TemplateManager.create(testContext.testDir);
232
246
  await manager.processTemplates({ generateFiles: true });
233
247
  const migrations = await fs.readdir(join(testContext.testDir, 'test-migrations'));
@@ -237,8 +251,8 @@ describe('TemplateManager', () => {
237
251
  expect(timestamps).toEqual([...timestamps].sort());
238
252
  });
239
253
  it('should handle mix of working and broken templates', async () => {
240
- await createTemplateWithFunc(`a-test-good-${testContext.timestamp}.sql`, '_good');
241
- await createTemplate(`a-test-bad-${testContext.timestamp}.sql`, 'INVALID SQL SYNTAX;');
254
+ await createTemplateWithFunc(`a-test-good`, '_good_and_broken_mix');
255
+ await createTemplate(`a-test-bad.sql`, 'INVALID SQL SYNTAX;');
242
256
  const manager = await TemplateManager.create(testContext.testDir);
243
257
  const result = await manager.processTemplates({ apply: true });
244
258
  expect(result.errors).toHaveLength(1);
@@ -246,7 +260,7 @@ describe('TemplateManager', () => {
246
260
  const client = await connect();
247
261
  try {
248
262
  const res = await client.query(`SELECT COUNT(*) FROM pg_proc WHERE proname = $1`, [
249
- `${testContext.testFunctionName}_good`,
263
+ `${testContext.testFunctionName}_good_and_broken_mix`,
250
264
  ]);
251
265
  expect(Number.parseInt(res.rows[0].count)).toBe(1);
252
266
  }
@@ -256,18 +270,23 @@ describe('TemplateManager', () => {
256
270
  });
257
271
  it('should handle database errors gracefully', async () => {
258
272
  const manager = await TemplateManager.create(testContext.testDir);
259
- await createTemplate(`test-error-${testContext.timestamp}.sql`, 'SELECT 1/0;'); // Division by zero error
273
+ await createTemplate(`test-error.sql`, 'SELECT 1/0;'); // Division by zero error
260
274
  const result = await manager.processTemplates({ apply: true });
261
275
  expect(result.errors).toHaveLength(1);
262
276
  expect(result.errors[0]?.error).toMatch(/division by zero/i);
263
277
  });
264
278
  it('should handle file system errors', async () => {
265
- const errorPath = join(testContext.testDir, 'test-templates', `test-error-${testContext.timestamp}.sql`);
279
+ const errorPath = join(testContext.testDir, 'test-templates', `test-error.sql`);
266
280
  try {
267
- await createTemplate(`test-error-${testContext.timestamp}.sql`, 'SELECT 1;');
281
+ await createTemplate(`test-error.sql`, 'SELECT 1;');
268
282
  await fs.chmod(errorPath, 0o000);
269
283
  const manager = await TemplateManager.create(testContext.testDir);
270
- await manager.processTemplates({ generateFiles: true });
284
+ try {
285
+ await manager.processTemplates({ generateFiles: true });
286
+ }
287
+ catch (error) {
288
+ expect(error).toBeDefined();
289
+ }
271
290
  // Cleanup for afterEach
272
291
  await fs.chmod(errorPath, 0o644);
273
292
  }
@@ -284,7 +303,7 @@ describe('TemplateManager', () => {
284
303
  });
285
304
  it('should handle large batches of templates', async () => {
286
305
  // Create 50 templates
287
- await Promise.all([...Array(50)].map((_, i) => createTemplateWithFunc(`test-${i}-${testContext.timestamp}.sql`, `_${i}`)));
306
+ await Promise.all([...Array(50)].map((_, i) => createTemplateWithFunc(`test_${i}`, `_large_batch_${i}`)));
288
307
  const manager = await TemplateManager.create(testContext.testDir);
289
308
  const result = await manager.processTemplates({ generateFiles: true });
290
309
  expect(result.errors).toHaveLength(0);
@@ -292,8 +311,9 @@ describe('TemplateManager', () => {
292
311
  expect(migrations.length).toBe(50);
293
312
  });
294
313
  it('should handle templates with complex SQL', async () => {
314
+ const testFunctionName = `${testContext.testFunctionName}_complex`;
295
315
  const complexSQL = `
296
- CREATE OR REPLACE FUNCTION ${testContext.testFunctionName}(
316
+ CREATE OR REPLACE FUNCTION ${testFunctionName}(
297
317
  param1 integer DEFAULT 100,
298
318
  OUT result1 integer,
299
319
  OUT result2 text
@@ -317,7 +337,7 @@ describe('TemplateManager', () => {
317
337
  END;
318
338
  $$ LANGUAGE plpgsql;
319
339
  `;
320
- await createTemplate(`test-complex-${testContext.timestamp}.sql`, complexSQL);
340
+ await createTemplate(`test-complex.sql`, complexSQL);
321
341
  const manager = await TemplateManager.create(testContext.testDir);
322
342
  const result = await manager.processTemplates({ apply: true });
323
343
  expect(result.errors).toHaveLength(0);
@@ -327,7 +347,7 @@ describe('TemplateManager', () => {
327
347
  SELECT proname, pronargs, prorettype::regtype::text as return_type
328
348
  FROM pg_proc
329
349
  WHERE proname = $1
330
- `, [testContext.testFunctionName]);
350
+ `, [testFunctionName]);
331
351
  expect(res.rows).toHaveLength(1);
332
352
  expect(res.rows[0].return_type).toBe('record');
333
353
  }
@@ -336,7 +356,7 @@ describe('TemplateManager', () => {
336
356
  }
337
357
  });
338
358
  it('should maintain template state across manager instances', async () => {
339
- const template = await createTemplateWithFunc(`test-${testContext.timestamp}.sql`);
359
+ const template = await createTemplateWithFunc(`test`, 'maintain_state');
340
360
  // First manager instance
341
361
  const manager1 = await TemplateManager.create(testContext.testDir);
342
362
  await manager1.processTemplates({ generateFiles: true });
@@ -353,10 +373,10 @@ describe('TemplateManager', () => {
353
373
  });
354
374
  const watcher = await manager.watch();
355
375
  // Add new template after watch started
356
- await createTemplateWithFunc(`test-new-${testContext.timestamp}.sql`);
376
+ await createTemplateWithFunc('new', '_watch_addition');
357
377
  await new Promise(resolve => setTimeout(resolve, 150));
358
378
  watcher.close();
359
- expect(changes).toContain(`test-new-${testContext.timestamp}`);
379
+ expect(changes).toContain(`new_${testContext.testId}_1`);
360
380
  });
361
381
  it('should handle templates in deep subdirectories', async () => {
362
382
  // Create nested directory structure
@@ -364,7 +384,7 @@ describe('TemplateManager', () => {
364
384
  const templatePaths = [];
365
385
  for (let i = 1; i <= depth; i++) {
366
386
  const dir = [...Array(i)].map((_, idx) => `level${idx + 1}`).join('/');
367
- const templatePath = await createTemplateWithFunc(`depth-test-${i}-${testContext.timestamp}.sql`, `_depth_${i}`, dir);
387
+ const templatePath = await createTemplateWithFunc(`depth-test_${i}`, `_depth_${i}`, dir);
368
388
  templatePaths.push(templatePath);
369
389
  }
370
390
  const manager = await TemplateManager.create(testContext.testDir);
@@ -378,7 +398,7 @@ describe('TemplateManager', () => {
378
398
  expect(changes.length).toBe(depth);
379
399
  // Verify each template was detected
380
400
  for (let i = 1; i <= depth; i++) {
381
- expect(changes).toContain(`depth-test-${i}-${testContext.timestamp}`);
401
+ expect(changes).toContain(`depth-test_${i}_${testContext.testId}_${i}`);
382
402
  }
383
403
  });
384
404
  it('should only watch SQL files', async () => {
@@ -392,45 +412,52 @@ describe('TemplateManager', () => {
392
412
  // Create various file types
393
413
  await fs.writeFile(join(testContext.testDir, 'test-templates/test.txt'), 'not sql');
394
414
  await fs.writeFile(join(testContext.testDir, 'test-templates/test.md'), 'not sql');
395
- await createTemplateWithFunc(`test-sql-${testContext.timestamp}.sql`);
415
+ await createTemplateWithFunc(`sql`, '_watch_sql_only');
396
416
  await new Promise(resolve => setTimeout(resolve, 500));
397
417
  watcher.close();
398
418
  expect(changes).toHaveLength(1);
399
- expect(changes[0]).toBe(`test-sql-${testContext.timestamp}`);
419
+ expect(changes[0]).toBe(`sql_${testContext.testId}_1`);
400
420
  });
401
421
  it('should handle multiple template changes simultaneously', async () => {
422
+ const client = await connect();
402
423
  const manager = await TemplateManager.create(testContext.testDir);
403
424
  const changes = new Set();
404
425
  const count = 5;
426
+ const watcher = await manager.watch();
427
+ await new Promise(resolve => setTimeout(resolve, 100));
405
428
  manager.on('templateChanged', template => {
406
429
  changes.add(template.name);
407
430
  });
408
- const watcher = await manager.watch();
409
- await new Promise(resolve => setTimeout(resolve, 100));
410
431
  // Create multiple templates simultaneously
411
- await Promise.all([
412
- createTemplateWithFunc(`rapid_test-1-${testContext.timestamp}.sql`, '_batch_changes_1'),
413
- createTemplateWithFunc(`rapid_test-2-${testContext.timestamp}.sql`, '_batch_changes_2'),
414
- createTemplateWithFunc(`rapid_test-3-${testContext.timestamp}.sql`, '_batch_changes_3'),
415
- createTemplateWithFunc(`rapid_test-4-${testContext.timestamp}.sql`, '_batch_changes_4', 'deep'),
416
- createTemplateWithFunc(`rapid_test-5-${testContext.timestamp}.sql`, '_batch_changes_5', 'deep/nested'),
417
- ]);
432
+ try {
433
+ await createTemplateWithFunc(`rapid_test_1`, '_batch_changes_1');
434
+ await createTemplateWithFunc(`rapid_test_2`, '_batch_changes_2');
435
+ await createTemplateWithFunc(`rapid_test_3`, '_batch_changes_3');
436
+ await createTemplateWithFunc(`rapid_test_4`, '_batch_changes_4', 'deep');
437
+ await createTemplateWithFunc(`rapid_test_5`, '_batch_changes_5', 'deep/nested');
438
+ }
439
+ catch (error) {
440
+ console.error('Error creating templates:', error);
441
+ throw error;
442
+ }
418
443
  // Give enough time for all changes to be detected
419
444
  await new Promise(resolve => setTimeout(resolve, count * 100 * 1.1));
420
445
  watcher.close();
421
446
  expect(changes.size).toBe(count); // Should detect all 5 templates
422
447
  for (let i = 1; i <= count; i++) {
423
- expect(changes.has(`rapid_test-${i}-${testContext.timestamp}`)).toBe(true);
448
+ expect(changes.has(`rapid_test_${i}_${testContext.testId}_${i}`)).toBe(true);
424
449
  }
425
450
  // Verify all templates were processed
426
- const client = await connect();
451
+ await new Promise(resolve => setTimeout(resolve, 50));
427
452
  try {
428
- for (let i = 1; i <= count; i++) {
429
- const res = await client.query(`SELECT proname FROM pg_proc WHERE proname = $1`, [
430
- `${testContext.testFunctionName}_batch_changes_${i}`,
431
- ]);
432
- expect(res.rows).toHaveLength(1);
433
- }
453
+ const res = await client.query(`SELECT proname FROM pg_proc WHERE proname LIKE $1`, [
454
+ `${testContext.testFunctionName}_batch_changes_%`,
455
+ ]);
456
+ // expect(res).toBe('');
457
+ expect(res.rows).toHaveLength(count);
458
+ }
459
+ catch (error) {
460
+ console.error('Error querying functions:', error);
434
461
  }
435
462
  finally {
436
463
  client.release();
@@ -470,7 +497,7 @@ describe('TemplateManager', () => {
470
497
  });
471
498
  const watcher = await manager.watch();
472
499
  // Create all templates
473
- await Promise.all(Array.from({ length: TEMPLATE_COUNT }, (_, i) => createTemplateWithFunc(`bulk_created_template_${i + 1}.sql`, `_bulk_${i + 1}`)));
500
+ await Promise.all(Array.from({ length: TEMPLATE_COUNT }, (_, i) => createTemplateWithFunc(`bulk_${i + 1}`, `_bulk_${i + 1}`)));
474
501
  await processingComplete;
475
502
  watcher.close();
476
503
  expect(processed.size + failed.size).toBe(TEMPLATE_COUNT);
@@ -485,15 +512,15 @@ describe('TemplateManager', () => {
485
512
  });
486
513
  await manager.watch();
487
514
  // Create template before disposal
488
- await createTemplateWithFunc(`test-before-dispose-${testContext.timestamp}.sql`);
515
+ await createTemplateWithFunc(`before-dispose`, 'before_dispose');
489
516
  await new Promise(resolve => setTimeout(resolve, 100));
490
517
  // Dispose and verify cleanup
491
518
  manager[Symbol.dispose]();
492
519
  // Try creating template after disposal
493
- await createTemplateWithFunc(`test-after-dispose-${testContext.timestamp}.sql`);
520
+ await createTemplateWithFunc(`after-dispose`, 'after_dispose');
494
521
  await new Promise(resolve => setTimeout(resolve, 100));
495
522
  expect(changes).toHaveLength(1);
496
- expect(changes[0]).toBe(`test-before-dispose-${testContext.timestamp}`);
523
+ expect(changes[0]).toBe(`before-dispose_${testContext.testId}_1`);
497
524
  });
498
525
  it('should auto-cleanup with using statement', async () => {
499
526
  const changes = [];
@@ -505,7 +532,7 @@ describe('TemplateManager', () => {
505
532
  changes.push(template.name);
506
533
  });
507
534
  await manager.watch();
508
- await createTemplateWithFunc(`test-during-scope-${testContext.timestamp}.sql`);
535
+ await createTemplateWithFunc(`during-scope`, 'during_scope');
509
536
  await new Promise(resolve => setTimeout(resolve, 100));
510
537
  }
511
538
  catch (e_1) {
@@ -517,13 +544,13 @@ describe('TemplateManager', () => {
517
544
  }
518
545
  })();
519
546
  // After scope exit, create another template
520
- await createTemplateWithFunc(`test-after-scope-${testContext.timestamp}.sql`);
547
+ await createTemplateWithFunc(`after-scope`, 'after_scope');
521
548
  await new Promise(resolve => setTimeout(resolve, 100));
522
549
  expect(changes).toHaveLength(1);
523
- expect(changes[0]).toBe(`test-during-scope-${testContext.timestamp}`);
550
+ expect(changes[0]).toBe(`during-scope_${testContext.testId}_1`);
524
551
  });
525
552
  it('should not process unchanged templates', async () => {
526
- const templatePath = await createTemplateWithFunc(`test-unchanged-${testContext.timestamp}.sql`);
553
+ const templatePath = await createTemplateWithFunc(`initial_will_remain_unchanged`, 'unchanged_tmpl');
527
554
  const manager = await TemplateManager.create(testContext.testDir);
528
555
  await manager.watch();
529
556
  // First processing
@@ -544,8 +571,8 @@ describe('TemplateManager', () => {
544
571
  });
545
572
  it('should only process modified templates in batch', async () => {
546
573
  // Create two templates
547
- const template1 = await createTemplateWithFunc(`modified_tmpl_1-${testContext.timestamp}.sql`, 'mod_1');
548
- await createTemplateWithFunc(`modified_tmpl_2-${testContext.timestamp}.sql`, 'mod_2');
574
+ const template1 = await createTemplateWithFunc(`modified_tmpl_1`, 'mod_1');
575
+ await createTemplateWithFunc(`modified_tmpl_2`, 'mod_2');
549
576
  const manager = await TemplateManager.create(testContext.testDir);
550
577
  // First processing of both
551
578
  await manager.processTemplates({ apply: true });
@@ -554,14 +581,20 @@ describe('TemplateManager', () => {
554
581
  changes.push(template.name);
555
582
  });
556
583
  // Modify only template1
557
- await fs.writeFile(template1, `${await fs.readFile(template1, 'utf-8')}\n-- Modified`);
584
+ try {
585
+ await fs.writeFile(template1, `${await fs.readFile(template1, 'utf-8')}\n-- Modified`);
586
+ }
587
+ catch (error) {
588
+ console.error('Test: Error modifying template:', error);
589
+ throw error;
590
+ }
558
591
  // Process both templates again
559
592
  await manager.processTemplates({ apply: true });
560
593
  expect(changes).toHaveLength(1);
561
- expect(changes[0]).toBe(`modified_tmpl_1-${testContext.timestamp}`);
594
+ expect(changes[0]).toBe(`modified_tmpl_1_${testContext.testId}_1`);
562
595
  });
563
596
  it('should correctly update local buildlog on apply', async () => {
564
- const templatePath = await createTemplateWithFunc(`test-buildlog-${testContext.timestamp}.sql`);
597
+ const templatePath = await createTemplateWithFunc(`buildlog`, '_buildlog');
565
598
  const manager = await TemplateManager.create(testContext.testDir);
566
599
  const localBuildlogPath = join(testContext.testDir, '.buildlog-test.local.json');
567
600
  // Initial apply
@@ -586,7 +619,7 @@ describe('TemplateManager', () => {
586
619
  expect(newHash).not.toBe(initialHash);
587
620
  });
588
621
  it('should skip apply if template hash matches local buildlog', async () => {
589
- const templatePath = await createTemplateWithFunc(`test-skip-${testContext.timestamp}.sql`);
622
+ const templatePath = await createTemplateWithFunc(`skip`, '_skip_apply');
590
623
  const manager = await TemplateManager.create(testContext.testDir);
591
624
  const localBuildlogPath = join(testContext.testDir, '.buildlog-test.local.json');
592
625
  // Initial apply
@@ -607,8 +640,8 @@ describe('TemplateManager', () => {
607
640
  it('should not reapply unchanged templates in watch mode', async () => {
608
641
  // Create multiple templates
609
642
  const templates = await Promise.all([
610
- createTemplateWithFunc(`watch-stable-1-${testContext.timestamp}.sql`, '_watch_1'),
611
- createTemplateWithFunc(`watch-stable-2-${testContext.timestamp}.sql`, '_watch_2'),
643
+ createTemplateWithFunc(`watch-stable_1`, '_watch_1'),
644
+ createTemplateWithFunc(`watch-stable_2`, '_watch_2'),
612
645
  ]);
613
646
  const manager = await TemplateManager.create(testContext.testDir);
614
647
  const applied = [];
@@ -648,7 +681,7 @@ describe('TemplateManager', () => {
648
681
  });
649
682
  it('should process unapplied templates on startup', async () => {
650
683
  // Create template but don't process it
651
- await createTemplateWithFunc(`startup-test-${testContext.timestamp}.sql`);
684
+ await createTemplateWithFunc(`startup-test`, '_startup_test');
652
685
  // Create a new manager instance
653
686
  const manager = await TemplateManager.create(testContext.testDir);
654
687
  const changes = [];
@@ -660,11 +693,11 @@ describe('TemplateManager', () => {
660
693
  await new Promise(resolve => setTimeout(resolve, 100));
661
694
  expect(changes).toHaveLength(1);
662
695
  expect(applied).toHaveLength(1);
663
- expect(changes[0]).toBe(`startup-test-${testContext.timestamp}`);
664
- expect(applied[0]).toBe(`startup-test-${testContext.timestamp}`);
696
+ expect(changes[0]).toBe(`startup-test_${testContext.testId}_1`);
697
+ expect(applied[0]).toBe(`startup-test_${testContext.testId}_1`);
665
698
  });
666
699
  it('should handle error state transitions correctly', async () => {
667
- const templatePath = await createTemplateWithFunc(`error-state-${testContext.timestamp}.sql`, '_error_test');
700
+ const templatePath = await createTemplateWithFunc(`error-state`, '_error_test');
668
701
  const manager = await TemplateManager.create(testContext.testDir);
669
702
  const states = [];
670
703
  manager.on('templateChanged', () => states.push({ type: 'changed' }));
@@ -688,7 +721,7 @@ describe('TemplateManager', () => {
688
721
  ]);
689
722
  });
690
723
  it('should maintain correct state through manager restarts', async () => {
691
- const templatePath = await createTemplateWithFunc(`restart-test-${testContext.timestamp}.sql`);
724
+ const templatePath = await createTemplateWithFunc(`restart-test`, 'restart_test');
692
725
  // First manager instance
693
726
  const manager1 = await TemplateManager.create(testContext.testDir);
694
727
  await manager1.processTemplates({ apply: true });
@@ -708,11 +741,11 @@ describe('TemplateManager', () => {
708
741
  // Verify state was maintained and change was detected
709
742
  const status2 = await manager2.getTemplateStatus(templatePath);
710
743
  expect(status2.buildState.lastAppliedHash).not.toBe(initialHash);
711
- expect(changes).toContain(`restart-test-${testContext.timestamp}`);
712
- expect(applied).toContain(`restart-test-${testContext.timestamp}`);
744
+ expect(changes).toContain(`restart-test_${testContext.testId}_1`);
745
+ expect(applied).toContain(`restart-test_${testContext.testId}_1`);
713
746
  });
714
747
  it('should properly format and propagate error messages', async () => {
715
- const templatePath = await createTemplateWithFunc(`error-format-${testContext.timestamp}.sql`);
748
+ const templatePath = await createTemplateWithFunc(`error-format`, 'error_format');
716
749
  const manager = await TemplateManager.create(testContext.testDir);
717
750
  const errors = [];
718
751
  manager.on('templateError', err => errors.push(err));
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templateManager.test.js","sourceRoot":"","sources":["../../src/lib/templateManager.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applyMigration.js","sourceRoot":"","sources":["../../src/utils/applyMigration.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAe,EACf,YAAoB,EACpB,MAAM,GAAG,KAAK;IAEd,MAAM,MAAM,GAAG,MAAM,OAAO,EAAE,CAAC;IAC/B,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACzF,MAAM,MAAM,CAAC,KAAK,CAAC,gCAAgC,OAAO,WAAW,CAAC,CAAC;QACvE,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5B,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC7B,IAAI,CAAC,MAAM;YAAE,MAAM,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM;YAAE,MAAM,CAAC,KAAK,CAAC,wBAAwB,YAAY,KAAK,KAAK,EAAE,CAAC,CAAC;QAC5E,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YAC7D,YAAY;SACb,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;AACH,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applyMigrations.test.js","sourceRoot":"","sources":["../../src/utils/applyMigrations.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calculateMD5.js","sourceRoot":"","sources":["../../src/utils/calculateMD5.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAe;IAChD,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.test.js","sourceRoot":"","sources":["../../src/utils/config.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createEmptyBuildLog.js","sourceRoot":"","sources":["../../src/utils/createEmptyBuildLog.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,QAAgB;IACxD,MAAM,OAAO,GAAG;QACd,OAAO,EAAE,KAAK;QACd,aAAa,EAAE,EAAE;QACjB,SAAS,EAAE,EAAE;KACK,CAAC;IACrB,OAAO,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC"}