@kardoe/quickback 0.4.4 → 0.5.2

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.
@@ -6,20 +6,73 @@
6
6
  *
7
7
  * Uses combined mode: defineTable() in *.ts files (schema + config together)
8
8
  */
9
- import { existsSync, readdirSync, readFileSync, statSync } from 'fs';
9
+ import { promises as fs } from 'fs';
10
10
  import { join, basename, dirname } from 'path';
11
+ import { createHash } from 'crypto';
11
12
  import { build } from 'esbuild';
12
- import { tmpdir } from 'os';
13
13
  import { fileURLToPath } from 'url';
14
+ import { pathExists, runWithLimit } from './async-utils.js';
14
15
  // Get the directory of this file for resolving stubs
15
16
  const __filename = fileURLToPath(import.meta.url);
16
17
  const __dirname = dirname(__filename);
17
18
  const stubsPath = join(__dirname, 'compiler-stubs.js');
19
+ const READ_CONCURRENCY = 8;
20
+ let tsModulePromise = null;
21
+ async function getTypescript() {
22
+ if (!tsModulePromise) {
23
+ tsModulePromise = import('typescript').catch(() => null);
24
+ }
25
+ return tsModulePromise;
26
+ }
27
+ async function parseTableDefinitions(source) {
28
+ try {
29
+ const ts = await getTypescript();
30
+ if (!ts)
31
+ throw new Error('typescript not available');
32
+ const sourceFile = ts.createSourceFile('feature.ts', source, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
33
+ const tableNames = [];
34
+ let hasResourceConfig = false;
35
+ const isTableCallee = (expr) => {
36
+ if (ts.isIdentifier(expr)) {
37
+ return expr.text === 'pgTable' || expr.text === 'sqliteTable';
38
+ }
39
+ if (ts.isPropertyAccessExpression(expr)) {
40
+ return expr.name.text === 'pgTable' || expr.name.text === 'sqliteTable';
41
+ }
42
+ return false;
43
+ };
44
+ const visit = (node) => {
45
+ if (ts.isExportAssignment(node)) {
46
+ const expr = node.expression;
47
+ if (ts.isCallExpression(expr) && ts.isIdentifier(expr.expression) && expr.expression.text === 'defineTable') {
48
+ hasResourceConfig = true;
49
+ }
50
+ }
51
+ if (ts.isVariableStatement(node) && node.modifiers?.some(m => m.kind === ts.SyntaxKind.ExportKeyword)) {
52
+ for (const decl of node.declarationList.declarations) {
53
+ if (ts.isIdentifier(decl.name) && decl.initializer && ts.isCallExpression(decl.initializer)) {
54
+ if (isTableCallee(decl.initializer.expression)) {
55
+ tableNames.push(decl.name.text);
56
+ }
57
+ }
58
+ }
59
+ }
60
+ ts.forEachChild(node, visit);
61
+ };
62
+ visit(sourceFile);
63
+ return { tableNames, hasResourceConfig };
64
+ }
65
+ catch {
66
+ const tableMatch = source.match(/export const (\w+)\s*=\s*(?:pg|sqlite)Table/);
67
+ const hasResourceConfig = /export default defineTable/.test(source);
68
+ return { tableNames: tableMatch ? [tableMatch[1]] : [], hasResourceConfig };
69
+ }
70
+ }
18
71
  /**
19
72
  * Load quickback.config.ts from disk
20
73
  */
21
74
  export async function loadConfig(configPath) {
22
- if (!existsSync(configPath)) {
75
+ if (!(await pathExists(configPath))) {
23
76
  throw new Error(`Config file not found: ${configPath}`);
24
77
  }
25
78
  const config = await loadTypeScriptFile(configPath);
@@ -44,28 +97,26 @@ export async function loadConfig(configPath) {
44
97
  template: configData.template,
45
98
  providers: configData.providers,
46
99
  build: configData.build,
100
+ features: configData.features,
47
101
  };
48
102
  }
49
103
  /**
50
104
  * Load all features from definitions/features/
51
105
  */
52
106
  export async function loadFeatures(featuresDir) {
53
- if (!existsSync(featuresDir)) {
107
+ if (!(await pathExists(featuresDir))) {
54
108
  return [];
55
109
  }
56
- const features = [];
57
- const featureDirs = readdirSync(featuresDir).filter((f) => {
58
- const fullPath = join(featuresDir, f);
59
- return statSync(fullPath).isDirectory();
110
+ const entries = await fs.readdir(featuresDir, { withFileTypes: true });
111
+ const featureDirs = entries
112
+ .filter((d) => d.isDirectory())
113
+ .map((d) => d.name);
114
+ const results = new Array(featureDirs.length);
115
+ await runWithLimit(featureDirs.map((name, index) => ({ name, index })), READ_CONCURRENCY, async ({ name, index }) => {
116
+ const featureDir = join(featuresDir, name);
117
+ results[index] = await loadFeature(name, featureDir);
60
118
  });
61
- for (const featureName of featureDirs) {
62
- const featureDir = join(featuresDir, featureName);
63
- const feature = await loadFeature(featureName, featureDir);
64
- if (feature) {
65
- features.push(feature);
66
- }
67
- }
68
- return features;
119
+ return results.filter((f) => Boolean(f));
69
120
  }
70
121
  /**
71
122
  * Load a single feature from its directory
@@ -79,29 +130,33 @@ async function loadFeature(name, dir) {
79
130
  const actionsPath = join(dir, 'actions.ts');
80
131
  // Load actions source if exists
81
132
  let actionsSource;
82
- if (existsSync(actionsPath)) {
83
- actionsSource = readFileSync(actionsPath, 'utf-8');
133
+ if (await pathExists(actionsPath)) {
134
+ actionsSource = await fs.readFile(actionsPath, 'utf-8');
84
135
  }
85
136
  // Load handler files if handlers/ or actions/ directory exists
86
137
  let handlerFiles;
87
138
  // Check handlers/ directory
88
139
  const handlersDir = join(dir, 'handlers');
89
- if (existsSync(handlersDir) && statSync(handlersDir).isDirectory()) {
90
- handlerFiles = handlerFiles || {};
91
- const handlers = readdirSync(handlersDir).filter((f) => f.endsWith('.ts'));
92
- for (const handler of handlers) {
93
- const handlerPath = join(handlersDir, handler);
94
- handlerFiles[`handlers/${handler}`] = readFileSync(handlerPath, 'utf-8');
140
+ if (await pathExists(handlersDir)) {
141
+ const handlerEntries = await fs.readdir(handlersDir, { withFileTypes: true });
142
+ const tsHandlers = handlerEntries.filter((e) => e.isFile() && e.name.endsWith('.ts'));
143
+ if (tsHandlers.length > 0) {
144
+ handlerFiles = handlerFiles || {};
145
+ await runWithLimit(tsHandlers, READ_CONCURRENCY, async (entry) => {
146
+ handlerFiles[`handlers/${entry.name}`] = await fs.readFile(join(handlersDir, entry.name), 'utf-8');
147
+ });
95
148
  }
96
149
  }
97
150
  // Check actions/ directory (alternative convention)
98
151
  const actionsDir = join(dir, 'actions');
99
- if (existsSync(actionsDir) && statSync(actionsDir).isDirectory()) {
100
- handlerFiles = handlerFiles || {};
101
- const actionHandlers = readdirSync(actionsDir).filter((f) => f.endsWith('.ts'));
102
- for (const handler of actionHandlers) {
103
- const handlerPath = join(actionsDir, handler);
104
- handlerFiles[`actions/${handler}`] = readFileSync(handlerPath, 'utf-8');
152
+ if (await pathExists(actionsDir)) {
153
+ const actionEntries = await fs.readdir(actionsDir, { withFileTypes: true });
154
+ const tsActions = actionEntries.filter((e) => e.isFile() && e.name.endsWith('.ts'));
155
+ if (tsActions.length > 0) {
156
+ handlerFiles = handlerFiles || {};
157
+ await runWithLimit(tsActions, READ_CONCURRENCY, async (entry) => {
158
+ handlerFiles[`actions/${entry.name}`] = await fs.readFile(join(actionsDir, entry.name), 'utf-8');
159
+ });
105
160
  }
106
161
  }
107
162
  // Load combined mode - scan for table files with defineTable()
@@ -111,28 +166,23 @@ async function loadFeature(name, dir) {
111
166
  * Load feature in combined mode (defineTable in *.ts files)
112
167
  */
113
168
  async function loadFeatureCombined(name, dir, actionsSource, handlerFiles) {
114
- const tables = [];
115
- // Scan for table files (*.ts except actions.ts)
116
- const files = readdirSync(dir).filter((f) => f.endsWith('.ts') && f !== 'actions.ts');
117
- for (const file of files) {
169
+ const entries = await fs.readdir(dir, { withFileTypes: true });
170
+ const files = entries.filter((e) => e.isFile() && e.name.endsWith('.ts') && e.name !== 'actions.ts');
171
+ // Use index-based results to preserve deterministic file ordering
172
+ const results = new Array(files.length);
173
+ await runWithLimit(files.map((entry, index) => ({ entry, index })), READ_CONCURRENCY, async ({ entry, index }) => {
174
+ const file = entry.name;
118
175
  const filePath = join(dir, file);
119
- // Skip directories
120
- if (statSync(filePath).isDirectory())
121
- continue;
122
- const source = readFileSync(filePath, 'utf-8');
123
- // Check for table export (pgTable or sqliteTable)
124
- const tableMatch = source.match(/export const (\w+)\s*=\s*(?:pg|sqlite)Table/);
125
- if (!tableMatch)
126
- continue;
127
- // Check for resource config (default export with defineTable)
128
- const hasResourceConfig = /export default defineTable/.test(source);
129
- tables.push({
176
+ const source = await fs.readFile(filePath, 'utf-8');
177
+ const { tableNames, hasResourceConfig } = await parseTableDefinitions(source);
178
+ results[index] = tableNames.map((tableName) => ({
130
179
  fileName: file,
131
- tableName: tableMatch[1],
180
+ tableName,
132
181
  source,
133
182
  hasResourceConfig,
134
- });
135
- }
183
+ }));
184
+ });
185
+ const tables = results.filter(Boolean).flat();
136
186
  if (tables.length === 0) {
137
187
  console.warn(`Feature ${name} has no schema.ts or table definitions, skipping`);
138
188
  return null;
@@ -154,14 +204,29 @@ async function loadFeatureCombined(name, dir, actionsSource, handlerFiles) {
154
204
  };
155
205
  }
156
206
  /**
157
- * Load and evaluate a TypeScript file
207
+ * Get or create the cache directory for compiled config files.
208
+ */
209
+ async function getCacheDir() {
210
+ const cacheDir = join(process.cwd(), 'node_modules', '.cache', 'quickback');
211
+ if (!(await pathExists(cacheDir))) {
212
+ await fs.mkdir(cacheDir, { recursive: true });
213
+ }
214
+ return cacheDir;
215
+ }
216
+ /**
217
+ * Load and evaluate a TypeScript file.
218
+ * Caches the esbuild output keyed by source content hash to skip
219
+ * recompilation when the config hasn't changed (~500-800ms savings).
158
220
  */
159
221
  async function loadTypeScriptFile(filePath) {
160
- const outfile = join(tmpdir(), `quickback-${Date.now()}-${basename(filePath)}.mjs`);
161
- try {
222
+ const source = await fs.readFile(filePath, 'utf-8');
223
+ const hash = createHash('sha256').update(source).digest('hex').slice(0, 16);
224
+ const cacheDir = await getCacheDir();
225
+ const cachedFile = join(cacheDir, `${basename(filePath, '.ts')}-${hash}.mjs`);
226
+ if (!(await pathExists(cachedFile))) {
162
227
  await build({
163
228
  entryPoints: [filePath],
164
- outfile,
229
+ outfile: cachedFile,
165
230
  bundle: true,
166
231
  format: 'esm',
167
232
  platform: 'node',
@@ -176,31 +241,20 @@ async function loadTypeScriptFile(filePath) {
176
241
  },
177
242
  logLevel: 'silent',
178
243
  });
179
- // Dynamic import the built file
180
- const module = await import(outfile);
181
- return module;
182
- }
183
- finally {
184
- // Cleanup temp file
185
- try {
186
- const { unlinkSync } = await import('fs');
187
- unlinkSync(outfile);
188
- }
189
- catch {
190
- // Ignore cleanup errors
191
- }
192
244
  }
245
+ const module = await import(cachedFile);
246
+ return module;
193
247
  }
194
248
  /**
195
249
  * Find the config file path
196
250
  */
197
- export function findConfigPath(startDir = process.cwd()) {
251
+ export async function findConfigPath(startDir = process.cwd()) {
198
252
  const candidates = [
199
253
  join(startDir, 'quickback.config.ts'),
200
254
  join(startDir, 'quickback', 'quickback.config.ts'),
201
255
  ];
202
256
  for (const candidate of candidates) {
203
- if (existsSync(candidate)) {
257
+ if (await pathExists(candidate)) {
204
258
  return candidate;
205
259
  }
206
260
  }
@@ -209,14 +263,15 @@ export function findConfigPath(startDir = process.cwd()) {
209
263
  /**
210
264
  * Find the features directory
211
265
  */
212
- export function findFeaturesDir(startDir = process.cwd()) {
266
+ export async function findFeaturesDir(startDir = process.cwd()) {
213
267
  const candidates = [
214
- join(startDir, 'quickback', 'features'), // New: quickback/features/
268
+ join(startDir, 'quickback', 'features'), // From project root: quickback/features/
269
+ join(startDir, 'features'), // From quickback dir: features/
215
270
  join(startDir, 'definitions', 'features'), // Legacy: definitions/features/
216
271
  join(startDir, 'quickback', 'definitions', 'features'), // Legacy nested
217
272
  ];
218
273
  for (const candidate of candidates) {
219
- if (existsSync(candidate)) {
274
+ if (await pathExists(candidate)) {
220
275
  return candidate;
221
276
  }
222
277
  }
@@ -225,14 +280,14 @@ export function findFeaturesDir(startDir = process.cwd()) {
225
280
  /**
226
281
  * Find the services directory
227
282
  */
228
- export function findServicesDir(startDir = process.cwd()) {
283
+ export async function findServicesDir(startDir = process.cwd()) {
229
284
  const candidates = [
230
285
  join(startDir, 'quickback', 'services'), // New: quickback/services/
231
286
  join(startDir, 'definitions', 'services'), // Legacy: definitions/services/
232
287
  join(startDir, 'quickback', 'definitions', 'services'), // Legacy nested
233
288
  ];
234
289
  for (const candidate of candidates) {
235
- if (existsSync(candidate)) {
290
+ if (await pathExists(candidate)) {
236
291
  return candidate;
237
292
  }
238
293
  }
@@ -245,17 +300,17 @@ export async function loadServices(servicesDir) {
245
300
  const services = {};
246
301
  // Load queue handlers from services/queues/
247
302
  const queuesDir = join(servicesDir, 'queues');
248
- if (existsSync(queuesDir) && statSync(queuesDir).isDirectory()) {
303
+ if (await pathExists(queuesDir)) {
249
304
  services.queues = await loadQueueHandlers(queuesDir);
250
305
  }
251
306
  // Load realtime definitions from services/realtime/
252
307
  const realtimeDir = join(servicesDir, 'realtime');
253
- if (existsSync(realtimeDir) && statSync(realtimeDir).isDirectory()) {
308
+ if (await pathExists(realtimeDir)) {
254
309
  services.realtime = await loadRealtimeDefinitions(realtimeDir);
255
310
  }
256
311
  // Load embedding definitions from services/embeddings/
257
312
  const embeddingsDir = join(servicesDir, 'embeddings');
258
- if (existsSync(embeddingsDir) && statSync(embeddingsDir).isDirectory()) {
313
+ if (await pathExists(embeddingsDir)) {
259
314
  services.embeddings = await loadEmbeddingDefinitions(embeddingsDir);
260
315
  }
261
316
  return services;
@@ -265,22 +320,22 @@ export async function loadServices(servicesDir) {
265
320
  */
266
321
  async function loadQueueHandlers(queuesDir) {
267
322
  const handlers = [];
268
- const files = readdirSync(queuesDir).filter((f) => f.endsWith('.ts') && !f.startsWith('_'));
269
- for (const file of files) {
323
+ const entries = await fs.readdir(queuesDir, { withFileTypes: true });
324
+ const files = entries
325
+ .filter((e) => e.isFile() && e.name.endsWith('.ts') && !e.name.startsWith('_'))
326
+ .map((e) => e.name);
327
+ await runWithLimit(files, READ_CONCURRENCY, async (file) => {
270
328
  const filePath = join(queuesDir, file);
271
- // Skip directories
272
- if (statSync(filePath).isDirectory())
273
- continue;
274
- const source = readFileSync(filePath, 'utf-8');
329
+ const source = await fs.readFile(filePath, 'utf-8');
275
330
  // Check for defineQueue
276
331
  if (!source.includes('defineQueue'))
277
- continue;
332
+ return;
278
333
  // Extract name and messageType from source
279
334
  const nameMatch = source.match(/name\s*:\s*['"]([^'"]+)['"]/);
280
335
  const messageTypeMatch = source.match(/messageType\s*:\s*['"]([^'"]+)['"]/);
281
336
  if (!nameMatch || !messageTypeMatch) {
282
337
  console.warn(`Queue handler ${file} missing required name or messageType, skipping`);
283
- continue;
338
+ return;
284
339
  }
285
340
  handlers.push({
286
341
  fileName: file,
@@ -288,7 +343,7 @@ async function loadQueueHandlers(queuesDir) {
288
343
  messageType: messageTypeMatch[1],
289
344
  source,
290
345
  });
291
- }
346
+ });
292
347
  return handlers;
293
348
  }
294
349
  /**
@@ -296,16 +351,16 @@ async function loadQueueHandlers(queuesDir) {
296
351
  */
297
352
  async function loadRealtimeDefinitions(realtimeDir) {
298
353
  const definitions = [];
299
- const files = readdirSync(realtimeDir).filter((f) => f.endsWith('.ts') && !f.startsWith('_'));
300
- for (const file of files) {
354
+ const entries = await fs.readdir(realtimeDir, { withFileTypes: true });
355
+ const files = entries
356
+ .filter((e) => e.isFile() && e.name.endsWith('.ts') && !e.name.startsWith('_'))
357
+ .map((e) => e.name);
358
+ await runWithLimit(files, READ_CONCURRENCY, async (file) => {
301
359
  const filePath = join(realtimeDir, file);
302
- // Skip directories
303
- if (statSync(filePath).isDirectory())
304
- continue;
305
- const source = readFileSync(filePath, 'utf-8');
360
+ const source = await fs.readFile(filePath, 'utf-8');
306
361
  // Check for defineRealtime
307
362
  if (!source.includes('defineRealtime'))
308
- continue;
363
+ return;
309
364
  // Extract name from source
310
365
  const nameMatch = source.match(/name\s*:\s*['"]([^'"]+)['"]/);
311
366
  // Extract events array
@@ -318,7 +373,7 @@ async function loadRealtimeDefinitions(realtimeDir) {
318
373
  }
319
374
  if (!nameMatch || events.length === 0) {
320
375
  console.warn(`Realtime definition ${file} missing required name or events, skipping`);
321
- continue;
376
+ return;
322
377
  }
323
378
  definitions.push({
324
379
  fileName: file,
@@ -326,7 +381,7 @@ async function loadRealtimeDefinitions(realtimeDir) {
326
381
  events,
327
382
  source,
328
383
  });
329
- }
384
+ });
330
385
  return definitions;
331
386
  }
332
387
  /**
@@ -334,23 +389,23 @@ async function loadRealtimeDefinitions(realtimeDir) {
334
389
  */
335
390
  async function loadEmbeddingDefinitions(embeddingsDir) {
336
391
  const definitions = [];
337
- const files = readdirSync(embeddingsDir).filter((f) => f.endsWith('.ts') && !f.startsWith('_'));
338
- for (const file of files) {
392
+ const entries = await fs.readdir(embeddingsDir, { withFileTypes: true });
393
+ const files = entries
394
+ .filter((e) => e.isFile() && e.name.endsWith('.ts') && !e.name.startsWith('_'))
395
+ .map((e) => e.name);
396
+ await runWithLimit(files, READ_CONCURRENCY, async (file) => {
339
397
  const filePath = join(embeddingsDir, file);
340
- // Skip directories
341
- if (statSync(filePath).isDirectory())
342
- continue;
343
- const sourceCode = readFileSync(filePath, 'utf-8');
398
+ const sourceCode = await fs.readFile(filePath, 'utf-8');
344
399
  // Check for defineEmbedding
345
400
  if (!sourceCode.includes('defineEmbedding'))
346
- continue;
401
+ return;
347
402
  // Extract name from source
348
403
  const nameMatch = sourceCode.match(/name\s*:\s*['"]([^'"]+)['"]/);
349
404
  // Extract source table from source
350
405
  const sourceMatch = sourceCode.match(/source\s*:\s*['"]([^'"]+)['"]/);
351
406
  if (!nameMatch || !sourceMatch) {
352
407
  console.warn(`Embedding definition ${file} missing required name or source, skipping`);
353
- continue;
408
+ return;
354
409
  }
355
410
  definitions.push({
356
411
  fileName: file,
@@ -358,14 +413,14 @@ async function loadEmbeddingDefinitions(embeddingsDir) {
358
413
  source: sourceMatch[1],
359
414
  sourceCode,
360
415
  });
361
- }
416
+ });
362
417
  return definitions;
363
418
  }
364
419
  /**
365
420
  * Load existing drizzle migration state (meta files and journal)
366
421
  * This allows the compiler to generate incremental migrations (ALTER vs CREATE)
367
422
  */
368
- export function loadDrizzleMeta(projectRoot) {
423
+ export async function loadDrizzleMeta(projectRoot) {
369
424
  const metaFiles = {};
370
425
  // Check for features drizzle meta (dual database mode)
371
426
  const featuresMeta = join(projectRoot, 'drizzle', 'features', 'meta');
@@ -373,11 +428,11 @@ export function loadDrizzleMeta(projectRoot) {
373
428
  // Determine which meta dir exists and its relative path for the compiler
374
429
  let metaDir = null;
375
430
  let relativePath = '';
376
- if (existsSync(featuresMeta)) {
431
+ if (await pathExists(featuresMeta)) {
377
432
  metaDir = featuresMeta;
378
433
  relativePath = 'drizzle/features/meta';
379
434
  }
380
- else if (existsSync(legacyMeta)) {
435
+ else if (await pathExists(legacyMeta)) {
381
436
  metaDir = legacyMeta;
382
437
  relativePath = 'drizzle/meta';
383
438
  }
@@ -385,13 +440,11 @@ export function loadDrizzleMeta(projectRoot) {
385
440
  return undefined;
386
441
  }
387
442
  try {
388
- const files = readdirSync(metaDir);
389
- for (const file of files) {
390
- if (file.endsWith('.json')) {
391
- const filePath = join(metaDir, file);
392
- metaFiles[`${relativePath}/${file}`] = readFileSync(filePath, 'utf-8');
393
- }
394
- }
443
+ const files = await fs.readdir(metaDir);
444
+ await runWithLimit(files.filter((file) => file.endsWith('.json')), READ_CONCURRENCY, async (file) => {
445
+ const filePath = join(metaDir, file);
446
+ metaFiles[`${relativePath}/${file}`] = await fs.readFile(filePath, 'utf-8');
447
+ });
395
448
  return Object.keys(metaFiles).length > 0 ? metaFiles : undefined;
396
449
  }
397
450
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"file-loader.js","sourceRoot":"","sources":["../../src/lib/file-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-loader.js","sourceRoot":"","sources":["../../src/lib/file-loader.ts"],"names":[],"mappings":"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"}
@@ -9,14 +9,11 @@ export interface GeneratedFile {
9
9
  type?: string;
10
10
  feature?: string;
11
11
  }
12
- /**
13
- * Clean and recreate output directory (used for testing only)
14
- */
15
- export declare function cleanOutputDir(dir: string): void;
12
+ export declare function cleanOutputDir(dir: string): Promise<void>;
16
13
  /**
17
14
  * Write generated files to disk (overwrites all)
18
15
  */
19
- export declare function writeFiles(outputDir: string, files: GeneratedFile[]): void;
16
+ export declare function writeFiles(outputDir: string, files: GeneratedFile[]): Promise<void>;
20
17
  /**
21
18
  * Write generated files with smart merge strategy
22
19
  *
@@ -25,9 +22,9 @@ export declare function writeFiles(outputDir: string, files: GeneratedFile[]): v
25
22
  * - package.json: Merge dependencies
26
23
  * - Config files: Overwrite
27
24
  */
28
- export declare function writeFilesWithMerge(outputDir: string, files: GeneratedFile[]): void;
25
+ export declare function writeFilesWithMerge(outputDir: string, files: GeneratedFile[]): Promise<void>;
29
26
  /**
30
27
  * Write a single file
31
28
  */
32
- export declare function writeFile(filePath: string, content: string): void;
29
+ export declare function writeFile(filePath: string, content: string): Promise<void>;
33
30
  //# sourceMappingURL=file-writer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-writer.d.ts","sourceRoot":"","sources":["../../src/lib/file-writer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAKhD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,IAAI,CAa1E;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,IAAI,CA+BnF;AAqCD;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAQjE"}
1
+ {"version":3,"file":"file-writer.d.ts","sourceRoot":"","sources":["../../src/lib/file-writer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAOD,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAK/D;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAWzF;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BlG;AAmDD;;GAEG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKhF"}