embedoc 0.12.0 → 0.12.1
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.
- package/dist/cli.js +306 -343
- package/dist/cli.js.map +1 -1
- package/dist/generated/commands.d.ts +2 -0
- package/dist/generated/commands.d.ts.map +1 -0
- package/dist/generated/commands.js +2 -0
- package/dist/generated/commands.js.map +1 -0
- package/dist/generated/index.d.ts +6 -0
- package/dist/generated/index.d.ts.map +1 -0
- package/dist/generated/index.js +6 -0
- package/dist/generated/index.js.map +1 -0
- package/dist/generated/program.d.ts +26 -0
- package/dist/generated/program.d.ts.map +1 -0
- package/dist/generated/program.js +49 -0
- package/dist/generated/program.js.map +1 -0
- package/dist/generated/schemas.d.ts +2 -0
- package/dist/generated/schemas.d.ts.map +1 -0
- package/dist/generated/schemas.js +3 -0
- package/dist/generated/schemas.js.map +1 -0
- package/dist/generated/types.d.ts +57 -0
- package/dist/generated/types.d.ts.map +1 -0
- package/dist/generated/types.js +3 -0
- package/dist/generated/types.js.map +1 -0
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -2,23 +2,21 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* embedoc CLI
|
|
4
4
|
*/
|
|
5
|
-
import { Command } from 'commander';
|
|
6
5
|
import { readFile, writeFile, access, mkdir } from 'node:fs/promises';
|
|
7
6
|
import { resolve, relative } from 'node:path';
|
|
8
7
|
import { pathToFileURL } from 'node:url';
|
|
8
|
+
import { createRequire } from 'node:module';
|
|
9
9
|
import yaml from 'js-yaml';
|
|
10
10
|
import pc from 'picocolors';
|
|
11
11
|
import chokidar from 'chokidar';
|
|
12
12
|
import { tsImport } from 'tsx/esm/api';
|
|
13
|
+
import { createProgram } from './generated/program.js';
|
|
13
14
|
import { initializeDatasources, closeDatasources } from './datasources/index.js';
|
|
14
15
|
import { build } from './core/processor.js';
|
|
15
16
|
import { generateAll } from './core/generator.js';
|
|
16
17
|
import { DependencyGraph } from './core/dependency.js';
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
.name('embedoc')
|
|
20
|
-
.description('In-Place Document Generator')
|
|
21
|
-
.version('0.11.1');
|
|
18
|
+
const require = createRequire(import.meta.url);
|
|
19
|
+
const pkg = require('../package.json');
|
|
22
20
|
/**
|
|
23
21
|
* Load configuration file
|
|
24
22
|
*/
|
|
@@ -109,31 +107,25 @@ async function loadCustomDatasources(datasourcesDir) {
|
|
|
109
107
|
return empty;
|
|
110
108
|
}
|
|
111
109
|
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
const
|
|
131
|
-
await mkdir(dir, { recursive: true });
|
|
132
|
-
await writeFile(absPath, content, { encoding: 'utf-8' });
|
|
133
|
-
created.push(filePath);
|
|
134
|
-
};
|
|
135
|
-
// embedoc.config.yaml
|
|
136
|
-
const configContent = `version: "1.0"
|
|
110
|
+
const handlers = {
|
|
111
|
+
init: async (options) => {
|
|
112
|
+
try {
|
|
113
|
+
console.log(pc.cyan('📁 Initializing embedoc...\n'));
|
|
114
|
+
const created = [];
|
|
115
|
+
const skipped = [];
|
|
116
|
+
const writeIfNotExists = async (filePath, content) => {
|
|
117
|
+
const absPath = resolve(filePath);
|
|
118
|
+
if (!options.force && await fileExists(absPath)) {
|
|
119
|
+
skipped.push(filePath);
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
const dir = absPath.substring(0, absPath.lastIndexOf('/'));
|
|
123
|
+
await mkdir(dir, { recursive: true });
|
|
124
|
+
await writeFile(absPath, content, { encoding: 'utf-8' });
|
|
125
|
+
created.push(filePath);
|
|
126
|
+
};
|
|
127
|
+
// embedoc.config.yaml
|
|
128
|
+
const configContent = `version: "1.0"
|
|
137
129
|
|
|
138
130
|
targets:
|
|
139
131
|
- pattern: "./docs/**/*.md"
|
|
@@ -150,9 +142,9 @@ datasources: {}
|
|
|
150
142
|
# type: csv
|
|
151
143
|
# path: "./data/example.csv"
|
|
152
144
|
`;
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
145
|
+
await writeIfNotExists('embedoc.config.yaml', configContent);
|
|
146
|
+
// .embedoc/renderers/index.ts
|
|
147
|
+
const renderersIndexContent = `/**
|
|
156
148
|
* embedoc renderers
|
|
157
149
|
*
|
|
158
150
|
* Export your custom renderers here.
|
|
@@ -165,9 +157,9 @@ export const embeds = {
|
|
|
165
157
|
// my_renderer: myRenderer,
|
|
166
158
|
};
|
|
167
159
|
`;
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
160
|
+
await writeIfNotExists('.embedoc/renderers/index.ts', renderersIndexContent);
|
|
161
|
+
// .embedoc/datasources/index.ts
|
|
162
|
+
const datasourcesIndexContent = `/**
|
|
171
163
|
* embedoc custom datasources and inline format parsers
|
|
172
164
|
*
|
|
173
165
|
* datasourceTypes: register custom datasource types usable in embedoc.config.yaml
|
|
@@ -185,334 +177,305 @@ export const inlineFormats = {
|
|
|
185
177
|
// toml: (content: string) => parseToml(content),
|
|
186
178
|
};
|
|
187
179
|
`;
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
for (const [key, value] of scriptEntries) {
|
|
204
|
-
if (!(key in scripts)) {
|
|
205
|
-
scripts[key] = value;
|
|
206
|
-
scriptsUpdated = true;
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
if (scriptsUpdated) {
|
|
210
|
-
pkg['scripts'] = scripts;
|
|
211
|
-
await writeFile(pkgPath, JSON.stringify(pkg, null, 2) + '\n', { encoding: 'utf-8' });
|
|
212
|
-
console.log(pc.green(' Updated package.json scripts:'));
|
|
180
|
+
await writeIfNotExists('.embedoc/datasources/index.ts', datasourcesIndexContent);
|
|
181
|
+
// .embedoc/templates/ (create directory only via a .gitkeep)
|
|
182
|
+
await writeIfNotExists('.embedoc/templates/.gitkeep', '');
|
|
183
|
+
// Update package.json if it exists
|
|
184
|
+
const pkgPath = resolve('package.json');
|
|
185
|
+
if (await fileExists(pkgPath)) {
|
|
186
|
+
const pkgRaw = await readFile(pkgPath, { encoding: 'utf-8' });
|
|
187
|
+
const pkg = JSON.parse(pkgRaw);
|
|
188
|
+
const scripts = (pkg['scripts'] ?? {});
|
|
189
|
+
let scriptsUpdated = false;
|
|
190
|
+
const scriptEntries = [
|
|
191
|
+
['embedoc:build', 'embedoc build'],
|
|
192
|
+
['embedoc:watch', 'embedoc watch'],
|
|
193
|
+
['embedoc:generate', 'embedoc generate --all'],
|
|
194
|
+
];
|
|
213
195
|
for (const [key, value] of scriptEntries) {
|
|
214
|
-
if (!(
|
|
215
|
-
|
|
196
|
+
if (!(key in scripts)) {
|
|
197
|
+
scripts[key] = value;
|
|
198
|
+
scriptsUpdated = true;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
if (scriptsUpdated) {
|
|
202
|
+
pkg['scripts'] = scripts;
|
|
203
|
+
await writeFile(pkgPath, JSON.stringify(pkg, null, 2) + '\n', { encoding: 'utf-8' });
|
|
204
|
+
console.log(pc.green(' Updated package.json scripts:'));
|
|
205
|
+
for (const [key, value] of scriptEntries) {
|
|
206
|
+
if (!((pkgRaw.includes(`"${key}"`)))) {
|
|
207
|
+
console.log(pc.gray(` "${key}": "${value}"`));
|
|
208
|
+
}
|
|
216
209
|
}
|
|
210
|
+
console.log('');
|
|
217
211
|
}
|
|
218
|
-
console.log('');
|
|
219
212
|
}
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
213
|
+
// Summary
|
|
214
|
+
if (created.length > 0) {
|
|
215
|
+
console.log(pc.green(' Created:'));
|
|
216
|
+
for (const f of created) {
|
|
217
|
+
console.log(pc.gray(` ${f}`));
|
|
218
|
+
}
|
|
226
219
|
}
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
220
|
+
if (skipped.length > 0) {
|
|
221
|
+
console.log(pc.yellow(' Skipped (already exists):'));
|
|
222
|
+
for (const f of skipped) {
|
|
223
|
+
console.log(pc.gray(` ${f}`));
|
|
224
|
+
}
|
|
232
225
|
}
|
|
226
|
+
console.log('');
|
|
227
|
+
console.log(pc.green('✅ embedoc initialized!'));
|
|
228
|
+
console.log('');
|
|
229
|
+
console.log(' Next steps:');
|
|
230
|
+
console.log(pc.cyan(' 1. Edit embedoc.config.yaml to configure targets and datasources'));
|
|
231
|
+
console.log(pc.cyan(' 2. Add renderers in .embedoc/renderers/'));
|
|
232
|
+
console.log(pc.cyan(' 3. Run: npx embedoc build'));
|
|
233
233
|
}
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
console.log(pc.cyan(' 1. Edit embedoc.config.yaml to configure targets and datasources'));
|
|
239
|
-
console.log(pc.cyan(' 2. Add renderers in .embedoc/renderers/'));
|
|
240
|
-
console.log(pc.cyan(' 3. Run: npx embedoc build'));
|
|
241
|
-
}
|
|
242
|
-
catch (error) {
|
|
243
|
-
console.error(pc.red('❌ Init failed:'));
|
|
244
|
-
console.error(error instanceof Error ? error.message : String(error));
|
|
245
|
-
process.exit(1);
|
|
246
|
-
}
|
|
247
|
-
});
|
|
248
|
-
/**
|
|
249
|
-
* build command
|
|
250
|
-
*/
|
|
251
|
-
program
|
|
252
|
-
.command('build [files...]')
|
|
253
|
-
.description('Build documents by replacing markers with embed results')
|
|
254
|
-
.option('-c, --config <path>', 'Path to config file', 'embedoc.config.yaml')
|
|
255
|
-
.option('-d, --dry-run', 'Dry run without writing files')
|
|
256
|
-
.option('-v, --verbose', 'Verbose output')
|
|
257
|
-
.action(async (files, options) => {
|
|
258
|
-
const startTime = Date.now();
|
|
259
|
-
try {
|
|
260
|
-
console.log(pc.cyan('🔧 Loading configuration...'));
|
|
261
|
-
const config = await loadConfig(options.config);
|
|
262
|
-
const datasourcesDir = config.datasources_dir ?? '.embedoc/datasources';
|
|
263
|
-
const customModules = await loadCustomDatasources(datasourcesDir);
|
|
264
|
-
console.log(pc.cyan('📦 Initializing datasources...'));
|
|
265
|
-
const datasources = await initializeDatasources(config, customModules.datasourceTypes);
|
|
266
|
-
console.log(pc.cyan('📝 Loading renderers...'));
|
|
267
|
-
const renderersDir = resolveRenderersDir(config);
|
|
268
|
-
const embeds = await loadRenderers(renderersDir);
|
|
269
|
-
console.log(pc.cyan('🔄 Processing files...'));
|
|
270
|
-
const result = await build(config, embeds, datasources, {
|
|
271
|
-
dryRun: options.dryRun,
|
|
272
|
-
verbose: options.verbose,
|
|
273
|
-
specificFiles: files.length > 0 ? files : undefined,
|
|
274
|
-
customInlineFormats: customModules.inlineFormats,
|
|
275
|
-
});
|
|
276
|
-
// Cleanup
|
|
277
|
-
await closeDatasources(datasources);
|
|
278
|
-
// Show results
|
|
279
|
-
const duration = Date.now() - startTime;
|
|
280
|
-
console.log('');
|
|
281
|
-
console.log(pc.green('✅ Build completed!'));
|
|
282
|
-
console.log(` Files processed: ${result.totalFiles}`);
|
|
283
|
-
console.log(` Markers updated: ${result.totalMarkersUpdated}`);
|
|
284
|
-
console.log(` Success: ${result.successFiles}`);
|
|
285
|
-
if (result.failedFiles > 0) {
|
|
286
|
-
console.log(pc.red(` Failed: ${result.failedFiles}`));
|
|
287
|
-
}
|
|
288
|
-
console.log(` Duration: ${duration}ms`);
|
|
289
|
-
if (options.dryRun) {
|
|
290
|
-
console.log(pc.yellow('\n (Dry run - no files were modified)'));
|
|
234
|
+
catch (error) {
|
|
235
|
+
console.error(pc.red('❌ Init failed:'));
|
|
236
|
+
console.error(error instanceof Error ? error.message : String(error));
|
|
237
|
+
process.exit(1);
|
|
291
238
|
}
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
239
|
+
},
|
|
240
|
+
build: async (files, options) => {
|
|
241
|
+
const startTime = Date.now();
|
|
242
|
+
try {
|
|
243
|
+
console.log(pc.cyan('🔧 Loading configuration...'));
|
|
244
|
+
const config = await loadConfig(options.config ?? 'embedoc.config.yaml');
|
|
245
|
+
const datasourcesDir = config.datasources_dir ?? '.embedoc/datasources';
|
|
246
|
+
const customModules = await loadCustomDatasources(datasourcesDir);
|
|
247
|
+
console.log(pc.cyan('📦 Initializing datasources...'));
|
|
248
|
+
const datasources = await initializeDatasources(config, customModules.datasourceTypes);
|
|
249
|
+
console.log(pc.cyan('📝 Loading renderers...'));
|
|
250
|
+
const renderersDir = resolveRenderersDir(config);
|
|
251
|
+
const embeds = await loadRenderers(renderersDir);
|
|
252
|
+
console.log(pc.cyan('🔄 Processing files...'));
|
|
253
|
+
const result = await build(config, embeds, datasources, {
|
|
254
|
+
dryRun: options.dryRun,
|
|
255
|
+
verbose: options.verbose,
|
|
256
|
+
specificFiles: files.length > 0 ? files : undefined,
|
|
257
|
+
customInlineFormats: customModules.inlineFormats,
|
|
258
|
+
});
|
|
259
|
+
// Cleanup
|
|
260
|
+
await closeDatasources(datasources);
|
|
261
|
+
// Show results
|
|
262
|
+
const duration = Date.now() - startTime;
|
|
263
|
+
console.log('');
|
|
264
|
+
console.log(pc.green('✅ Build completed!'));
|
|
265
|
+
console.log(` Files processed: ${result.totalFiles}`);
|
|
266
|
+
console.log(` Markers updated: ${result.totalMarkersUpdated}`);
|
|
267
|
+
console.log(` Success: ${result.successFiles}`);
|
|
268
|
+
if (result.failedFiles > 0) {
|
|
269
|
+
console.log(pc.red(` Failed: ${result.failedFiles}`));
|
|
270
|
+
}
|
|
271
|
+
console.log(` Duration: ${duration}ms`);
|
|
272
|
+
if (options.dryRun) {
|
|
273
|
+
console.log(pc.yellow('\n (Dry run - no files were modified)'));
|
|
274
|
+
}
|
|
275
|
+
// Show error details for failures
|
|
276
|
+
for (const r of result.results) {
|
|
277
|
+
if (!r.success && r.error) {
|
|
278
|
+
console.error(pc.red(`\n Error in ${r.filePath}:`));
|
|
279
|
+
console.error(` ${r.error.message}`);
|
|
280
|
+
}
|
|
297
281
|
}
|
|
282
|
+
process.exit(result.failedFiles > 0 ? 1 : 0);
|
|
298
283
|
}
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
console.error(pc.red('❌ Build failed:'));
|
|
303
|
-
console.error(error instanceof Error ? error.message : String(error));
|
|
304
|
-
process.exit(1);
|
|
305
|
-
}
|
|
306
|
-
});
|
|
307
|
-
/**
|
|
308
|
-
* generate command
|
|
309
|
-
*/
|
|
310
|
-
program
|
|
311
|
-
.command('generate')
|
|
312
|
-
.description('Generate new files from datasource records')
|
|
313
|
-
.option('-c, --config <path>', 'Path to config file', 'embedoc.config.yaml')
|
|
314
|
-
.option('-s, --datasource <name>', 'Specific datasource to process')
|
|
315
|
-
.option('-g, --generator <name>', 'Specific generator template to use')
|
|
316
|
-
.option('-a, --all', 'Process all datasources')
|
|
317
|
-
.option('-d, --dry-run', 'Dry run without writing files')
|
|
318
|
-
.option('-v, --verbose', 'Verbose output')
|
|
319
|
-
.action(async (options) => {
|
|
320
|
-
const startTime = Date.now();
|
|
321
|
-
try {
|
|
322
|
-
if (!options.datasource && !options.all) {
|
|
323
|
-
console.error(pc.red('Error: Either --datasource or --all must be specified'));
|
|
284
|
+
catch (error) {
|
|
285
|
+
console.error(pc.red('❌ Build failed:'));
|
|
286
|
+
console.error(error instanceof Error ? error.message : String(error));
|
|
324
287
|
process.exit(1);
|
|
325
288
|
}
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
const
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
const results = await generateAll(config, datasources, {
|
|
334
|
-
dryRun: options.dryRun,
|
|
335
|
-
verbose: options.verbose,
|
|
336
|
-
datasourceName: options.datasource,
|
|
337
|
-
generatorName: options.generator,
|
|
338
|
-
});
|
|
339
|
-
// Cleanup
|
|
340
|
-
await closeDatasources(datasources);
|
|
341
|
-
// Show results
|
|
342
|
-
const duration = Date.now() - startTime;
|
|
343
|
-
const generated = results.filter((r) => r.success && !r.skipped).length;
|
|
344
|
-
const skipped = results.filter((r) => r.skipped).length;
|
|
345
|
-
const failed = results.filter((r) => !r.success).length;
|
|
346
|
-
console.log('');
|
|
347
|
-
console.log(pc.green('✅ Generation completed!'));
|
|
348
|
-
console.log(` Generated: ${generated}`);
|
|
349
|
-
console.log(` Skipped (existing): ${skipped}`);
|
|
350
|
-
if (failed > 0) {
|
|
351
|
-
console.log(pc.red(` Failed: ${failed}`));
|
|
352
|
-
}
|
|
353
|
-
console.log(` Duration: ${duration}ms`);
|
|
354
|
-
if (options.dryRun) {
|
|
355
|
-
console.log(pc.yellow('\n (Dry run - no files were created)'));
|
|
356
|
-
}
|
|
357
|
-
// Show failure details
|
|
358
|
-
for (const r of results) {
|
|
359
|
-
if (!r.success && r.error) {
|
|
360
|
-
console.error(pc.red(`\n Error for ${r.filePath}:`));
|
|
361
|
-
console.error(` ${r.error.message}`);
|
|
289
|
+
},
|
|
290
|
+
generate: async (options) => {
|
|
291
|
+
const startTime = Date.now();
|
|
292
|
+
try {
|
|
293
|
+
if (!options.datasource && !options.all) {
|
|
294
|
+
console.error(pc.red('Error: Either --datasource or --all must be specified'));
|
|
295
|
+
process.exit(1);
|
|
362
296
|
}
|
|
297
|
+
console.log(pc.cyan('🔧 Loading configuration...'));
|
|
298
|
+
const config = await loadConfig(options.config ?? 'embedoc.config.yaml');
|
|
299
|
+
const datasourcesDir = config.datasources_dir ?? '.embedoc/datasources';
|
|
300
|
+
const customModules = await loadCustomDatasources(datasourcesDir);
|
|
301
|
+
console.log(pc.cyan('📦 Initializing datasources...'));
|
|
302
|
+
const datasources = await initializeDatasources(config, customModules.datasourceTypes);
|
|
303
|
+
console.log(pc.cyan('📄 Generating files...'));
|
|
304
|
+
const results = await generateAll(config, datasources, {
|
|
305
|
+
dryRun: options.dryRun,
|
|
306
|
+
verbose: options.verbose,
|
|
307
|
+
datasourceName: options.datasource,
|
|
308
|
+
generatorName: options.generator,
|
|
309
|
+
});
|
|
310
|
+
// Cleanup
|
|
311
|
+
await closeDatasources(datasources);
|
|
312
|
+
// Show results
|
|
313
|
+
const duration = Date.now() - startTime;
|
|
314
|
+
const generated = results.filter((r) => r.success && !r.skipped).length;
|
|
315
|
+
const skipped = results.filter((r) => r.skipped).length;
|
|
316
|
+
const failed = results.filter((r) => !r.success).length;
|
|
317
|
+
console.log('');
|
|
318
|
+
console.log(pc.green('✅ Generation completed!'));
|
|
319
|
+
console.log(` Generated: ${generated}`);
|
|
320
|
+
console.log(` Skipped (existing): ${skipped}`);
|
|
321
|
+
if (failed > 0) {
|
|
322
|
+
console.log(pc.red(` Failed: ${failed}`));
|
|
323
|
+
}
|
|
324
|
+
console.log(` Duration: ${duration}ms`);
|
|
325
|
+
if (options.dryRun) {
|
|
326
|
+
console.log(pc.yellow('\n (Dry run - no files were created)'));
|
|
327
|
+
}
|
|
328
|
+
// Show failure details
|
|
329
|
+
for (const r of results) {
|
|
330
|
+
if (!r.success && r.error) {
|
|
331
|
+
console.error(pc.red(`\n Error for ${r.filePath}:`));
|
|
332
|
+
console.error(` ${r.error.message}`);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
process.exit(failed > 0 ? 1 : 0);
|
|
363
336
|
}
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
console.error(error instanceof Error ? error.message : String(error));
|
|
369
|
-
process.exit(1);
|
|
370
|
-
}
|
|
371
|
-
});
|
|
372
|
-
/**
|
|
373
|
-
* watch command
|
|
374
|
-
*/
|
|
375
|
-
program
|
|
376
|
-
.command('watch')
|
|
377
|
-
.description('Watch files and rebuild on changes')
|
|
378
|
-
.option('-c, --config <path>', 'Path to config file', 'embedoc.config.yaml')
|
|
379
|
-
.option('-v, --verbose', 'Verbose output')
|
|
380
|
-
.option('--debug-deps', 'Show dependency graph for debugging')
|
|
381
|
-
.action(async (options) => {
|
|
382
|
-
try {
|
|
383
|
-
console.log(pc.cyan('🔧 Loading configuration...'));
|
|
384
|
-
const config = await loadConfig(options.config);
|
|
385
|
-
const datasourcesDir = config.datasources_dir ?? '.embedoc/datasources';
|
|
386
|
-
const customModules = await loadCustomDatasources(datasourcesDir);
|
|
387
|
-
console.log(pc.cyan('📦 Initializing datasources...'));
|
|
388
|
-
let datasources = await initializeDatasources(config, customModules.datasourceTypes);
|
|
389
|
-
console.log(pc.cyan('📝 Loading renderers...'));
|
|
390
|
-
const renderersDir = resolve(resolveRenderersDir(config));
|
|
391
|
-
let embeds = await loadRenderers(renderersDir);
|
|
392
|
-
// Build dependency graph
|
|
393
|
-
console.log(pc.cyan('🔗 Building dependency graph...'));
|
|
394
|
-
let depGraph = new DependencyGraph(config, embeds);
|
|
395
|
-
await depGraph.build();
|
|
396
|
-
if (options.debugDeps) {
|
|
397
|
-
depGraph.dump();
|
|
398
|
-
}
|
|
399
|
-
// Collect watch targets
|
|
400
|
-
const patterns = config.targets.map((t) => t.pattern);
|
|
401
|
-
const additionalWatchPaths = depGraph.getWatchPaths();
|
|
402
|
-
console.log(pc.cyan('👀 Watching for changes...'));
|
|
403
|
-
console.log(` Document patterns: ${patterns.join(', ')}`);
|
|
404
|
-
if (additionalWatchPaths.length > 0) {
|
|
405
|
-
console.log(` Additional paths: ${additionalWatchPaths.map(p => relative(process.cwd(), p)).join(', ')}`);
|
|
337
|
+
catch (error) {
|
|
338
|
+
console.error(pc.red('❌ Generation failed:'));
|
|
339
|
+
console.error(error instanceof Error ? error.message : String(error));
|
|
340
|
+
process.exit(1);
|
|
406
341
|
}
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
let
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
renderersReloaded = true;
|
|
426
|
-
}
|
|
427
|
-
catch (error) {
|
|
428
|
-
console.error(pc.red(' Failed to reload renderers:'), error);
|
|
429
|
-
return;
|
|
430
|
-
}
|
|
431
|
-
}
|
|
342
|
+
},
|
|
343
|
+
watch: async (options) => {
|
|
344
|
+
try {
|
|
345
|
+
console.log(pc.cyan('🔧 Loading configuration...'));
|
|
346
|
+
const config = await loadConfig(options.config ?? 'embedoc.config.yaml');
|
|
347
|
+
const datasourcesDir = config.datasources_dir ?? '.embedoc/datasources';
|
|
348
|
+
const customModules = await loadCustomDatasources(datasourcesDir);
|
|
349
|
+
console.log(pc.cyan('📦 Initializing datasources...'));
|
|
350
|
+
let datasources = await initializeDatasources(config, customModules.datasourceTypes);
|
|
351
|
+
console.log(pc.cyan('📝 Loading renderers...'));
|
|
352
|
+
const renderersDir = resolve(resolveRenderersDir(config));
|
|
353
|
+
let embeds = await loadRenderers(renderersDir);
|
|
354
|
+
// Build dependency graph
|
|
355
|
+
console.log(pc.cyan('🔗 Building dependency graph...'));
|
|
356
|
+
let depGraph = new DependencyGraph(config, embeds);
|
|
357
|
+
await depGraph.build();
|
|
358
|
+
if (options.debugDeps) {
|
|
359
|
+
depGraph.dump();
|
|
432
360
|
}
|
|
433
|
-
//
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
361
|
+
// Collect watch targets
|
|
362
|
+
const patterns = config.targets.map((t) => t.pattern);
|
|
363
|
+
const additionalWatchPaths = depGraph.getWatchPaths();
|
|
364
|
+
console.log(pc.cyan('👀 Watching for changes...'));
|
|
365
|
+
console.log(` Document patterns: ${patterns.join(', ')}`);
|
|
366
|
+
if (additionalWatchPaths.length > 0) {
|
|
367
|
+
console.log(` Additional paths: ${additionalWatchPaths.map(p => relative(process.cwd(), p)).join(', ')}`);
|
|
438
368
|
}
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
369
|
+
const watcher = chokidar.watch([...patterns, ...additionalWatchPaths], {
|
|
370
|
+
ignored: ['**/node_modules/**', '**/.git/**'],
|
|
371
|
+
persistent: true,
|
|
372
|
+
ignoreInitial: true,
|
|
373
|
+
});
|
|
374
|
+
// Debounce timer
|
|
375
|
+
let debounceTimer = null;
|
|
376
|
+
const pendingChanges = new Map();
|
|
377
|
+
const processChanges = async () => {
|
|
378
|
+
const changes = new Map(pendingChanges);
|
|
379
|
+
pendingChanges.clear();
|
|
380
|
+
let renderersReloaded = false;
|
|
381
|
+
for (const [filePath] of changes) {
|
|
382
|
+
if (filePath.startsWith(renderersDir) && filePath.endsWith('.ts')) {
|
|
383
|
+
console.log(pc.yellow(`\n🔄 Renderer changed: ${relative(process.cwd(), filePath)}`));
|
|
384
|
+
console.log(pc.cyan(' Reloading renderers...'));
|
|
385
|
+
try {
|
|
386
|
+
embeds = await loadRenderers(renderersDir);
|
|
387
|
+
renderersReloaded = true;
|
|
388
|
+
}
|
|
389
|
+
catch (error) {
|
|
390
|
+
console.error(pc.red(' Failed to reload renderers:'), error);
|
|
391
|
+
return;
|
|
392
|
+
}
|
|
393
|
+
}
|
|
445
394
|
}
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
395
|
+
// Rebuild dependency graph if embeds were reloaded
|
|
396
|
+
if (renderersReloaded) {
|
|
397
|
+
console.log(pc.cyan(' Rebuilding dependency graph...'));
|
|
398
|
+
depGraph = new DependencyGraph(config, embeds);
|
|
399
|
+
await depGraph.build();
|
|
400
|
+
}
|
|
401
|
+
// Identify affected documents
|
|
402
|
+
const affectedDocs = new Set();
|
|
449
403
|
for (const [filePath] of changes) {
|
|
450
|
-
const
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
404
|
+
const affected = depGraph.getAffectedDocuments(filePath);
|
|
405
|
+
for (const doc of affected) {
|
|
406
|
+
affectedDocs.add(doc);
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
if (affectedDocs.size === 0) {
|
|
410
|
+
// Changed file might be a document itself
|
|
411
|
+
for (const [filePath] of changes) {
|
|
412
|
+
const absolutePath = resolve(filePath);
|
|
413
|
+
// Check if matches target patterns
|
|
414
|
+
for (const target of config.targets) {
|
|
415
|
+
const { glob } = await import('glob');
|
|
416
|
+
const matches = await glob(target.pattern, { absolute: true });
|
|
417
|
+
if (matches.includes(absolutePath)) {
|
|
418
|
+
affectedDocs.add(absolutePath);
|
|
419
|
+
break;
|
|
420
|
+
}
|
|
458
421
|
}
|
|
459
422
|
}
|
|
460
423
|
}
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
return;
|
|
465
|
-
}
|
|
466
|
-
console.log(pc.yellow(`\n📝 Rebuilding ${affectedDocs.size} document(s)...`));
|
|
467
|
-
for (const docPath of affectedDocs) {
|
|
468
|
-
console.log(pc.gray(` - ${relative(process.cwd(), docPath)}`));
|
|
469
|
-
}
|
|
470
|
-
try {
|
|
471
|
-
// Re-initialize datasources (especially for SQLite)
|
|
472
|
-
await closeDatasources(datasources);
|
|
473
|
-
datasources = await initializeDatasources(config, customModules.datasourceTypes);
|
|
474
|
-
const result = await build(config, embeds, datasources, {
|
|
475
|
-
verbose: options.verbose,
|
|
476
|
-
specificFiles: Array.from(affectedDocs),
|
|
477
|
-
customInlineFormats: customModules.inlineFormats,
|
|
478
|
-
});
|
|
479
|
-
if (result.totalMarkersUpdated > 0) {
|
|
480
|
-
console.log(pc.green(` ✅ Updated ${result.totalMarkersUpdated} marker(s)`));
|
|
424
|
+
if (affectedDocs.size === 0) {
|
|
425
|
+
console.log(pc.gray('\n No affected documents found'));
|
|
426
|
+
return;
|
|
481
427
|
}
|
|
482
|
-
|
|
483
|
-
|
|
428
|
+
console.log(pc.yellow(`\n📝 Rebuilding ${affectedDocs.size} document(s)...`));
|
|
429
|
+
for (const docPath of affectedDocs) {
|
|
430
|
+
console.log(pc.gray(` - ${relative(process.cwd(), docPath)}`));
|
|
484
431
|
}
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
432
|
+
try {
|
|
433
|
+
// Re-initialize datasources (especially for SQLite)
|
|
434
|
+
await closeDatasources(datasources);
|
|
435
|
+
datasources = await initializeDatasources(config, customModules.datasourceTypes);
|
|
436
|
+
const result = await build(config, embeds, datasources, {
|
|
437
|
+
verbose: options.verbose,
|
|
438
|
+
specificFiles: Array.from(affectedDocs),
|
|
439
|
+
customInlineFormats: customModules.inlineFormats,
|
|
440
|
+
});
|
|
441
|
+
if (result.totalMarkersUpdated > 0) {
|
|
442
|
+
console.log(pc.green(` ✅ Updated ${result.totalMarkersUpdated} marker(s)`));
|
|
443
|
+
}
|
|
444
|
+
else {
|
|
445
|
+
console.log(pc.gray(' No markers updated'));
|
|
446
|
+
}
|
|
447
|
+
// Update dependency graph
|
|
448
|
+
depGraph = new DependencyGraph(config, embeds);
|
|
449
|
+
await depGraph.build();
|
|
450
|
+
}
|
|
451
|
+
catch (error) {
|
|
452
|
+
console.error(pc.red(' ❌ Error:'), error);
|
|
453
|
+
}
|
|
454
|
+
};
|
|
455
|
+
// Handle file changes with debounce
|
|
456
|
+
const handleChange = (type) => (filePath) => {
|
|
457
|
+
pendingChanges.set(resolve(filePath), type);
|
|
458
|
+
if (debounceTimer) {
|
|
459
|
+
clearTimeout(debounceTimer);
|
|
460
|
+
}
|
|
461
|
+
debounceTimer = setTimeout(processChanges, 200);
|
|
462
|
+
};
|
|
463
|
+
watcher.on('change', handleChange('change'));
|
|
464
|
+
watcher.on('add', handleChange('add'));
|
|
465
|
+
// Exit on Ctrl+C
|
|
466
|
+
process.on('SIGINT', async () => {
|
|
467
|
+
console.log(pc.cyan('\n\n👋 Stopping watch...'));
|
|
468
|
+
await watcher.close();
|
|
469
|
+
await closeDatasources(datasources);
|
|
470
|
+
process.exit(0);
|
|
471
|
+
});
|
|
472
|
+
}
|
|
473
|
+
catch (error) {
|
|
474
|
+
console.error(pc.red('❌ Watch failed:'));
|
|
475
|
+
console.error(error instanceof Error ? error.message : String(error));
|
|
476
|
+
process.exit(1);
|
|
477
|
+
}
|
|
478
|
+
},
|
|
479
|
+
};
|
|
480
|
+
createProgram(handlers, pkg.version).parse();
|
|
518
481
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/generated/commands.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/generated/commands.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generated/index.ts"],"names":[],"mappings":"AACA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generated/index.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
export interface CommandHandlers {
|
|
3
|
+
init: (options: {
|
|
4
|
+
force?: boolean;
|
|
5
|
+
}, parentOpts: Record<string, unknown>) => Promise<void>;
|
|
6
|
+
build: (files: string[], options: {
|
|
7
|
+
config?: string;
|
|
8
|
+
dryRun?: boolean;
|
|
9
|
+
verbose?: boolean;
|
|
10
|
+
}, parentOpts: Record<string, unknown>) => Promise<void>;
|
|
11
|
+
generate: (options: {
|
|
12
|
+
config?: string;
|
|
13
|
+
datasource?: string;
|
|
14
|
+
generator?: string;
|
|
15
|
+
all?: boolean;
|
|
16
|
+
dryRun?: boolean;
|
|
17
|
+
verbose?: boolean;
|
|
18
|
+
}, parentOpts: Record<string, unknown>) => Promise<void>;
|
|
19
|
+
watch: (options: {
|
|
20
|
+
config?: string;
|
|
21
|
+
verbose?: boolean;
|
|
22
|
+
debugDeps?: boolean;
|
|
23
|
+
}, parentOpts: Record<string, unknown>) => Promise<void>;
|
|
24
|
+
}
|
|
25
|
+
export declare function createProgram(handlers: CommandHandlers, version: string): Command;
|
|
26
|
+
//# sourceMappingURL=program.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/generated/program.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,CAAC,OAAO,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3F,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClJ,QAAQ,EAAE,CAAC,OAAO,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5L,KAAK,EAAE,CAAC,OAAO,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACrI;AAED,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,GACd,OAAO,CAmDT"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// Auto-generated by cli-contracts. Do not edit.
|
|
2
|
+
import { Command } from "commander";
|
|
3
|
+
export function createProgram(handlers, version) {
|
|
4
|
+
const program = new Command();
|
|
5
|
+
program
|
|
6
|
+
.name("embedoc")
|
|
7
|
+
.version(version, "-V, --version")
|
|
8
|
+
.description("In-place document generator with marker-based embedding.");
|
|
9
|
+
program
|
|
10
|
+
.command("init")
|
|
11
|
+
.description("Initialize embedoc in the current project.")
|
|
12
|
+
.option("-f, --force", "Overwrite existing files.", false)
|
|
13
|
+
.action(async (opts, cmd) => {
|
|
14
|
+
await handlers.init(opts, cmd.optsWithGlobals());
|
|
15
|
+
});
|
|
16
|
+
program
|
|
17
|
+
.command("build")
|
|
18
|
+
.description("Build documents by replacing markers with rendered content.")
|
|
19
|
+
.argument("[files...]", "Specific file paths to process. If omitted, processes all targets from config.")
|
|
20
|
+
.option("-c, --config <path>", "Path to config file (YAML or JSON).", "embedoc.config.yaml")
|
|
21
|
+
.option("-d, --dry-run", "Preview changes without writing files.", false)
|
|
22
|
+
.option("-v, --verbose", "Enable verbose output.", false)
|
|
23
|
+
.action(async (files, opts, cmd) => {
|
|
24
|
+
await handlers.build(files, opts, cmd.optsWithGlobals());
|
|
25
|
+
});
|
|
26
|
+
program
|
|
27
|
+
.command("generate")
|
|
28
|
+
.description("Generate new files from datasource records using Handlebars templates.")
|
|
29
|
+
.option("-c, --config <path>", "Path to config file (YAML or JSON).", "embedoc.config.yaml")
|
|
30
|
+
.option("-s, --datasource <name>", "Specific datasource to process.")
|
|
31
|
+
.option("-g, --generator <name>", "Specific generator template to use.")
|
|
32
|
+
.option("-a, --all", "Process all datasources that have generators configured.", false)
|
|
33
|
+
.option("-d, --dry-run", "Preview generation without writing files.", false)
|
|
34
|
+
.option("-v, --verbose", "Enable verbose output.", false)
|
|
35
|
+
.action(async (opts, cmd) => {
|
|
36
|
+
await handlers.generate(opts, cmd.optsWithGlobals());
|
|
37
|
+
});
|
|
38
|
+
program
|
|
39
|
+
.command("watch")
|
|
40
|
+
.description("Watch files and rebuild on changes with dependency tracking.")
|
|
41
|
+
.option("-c, --config <path>", "Path to config file (YAML or JSON).", "embedoc.config.yaml")
|
|
42
|
+
.option("-v, --verbose", "Enable verbose rebuild output.", false)
|
|
43
|
+
.option("--debug-deps", "Print dependency graph at startup for debugging.", false)
|
|
44
|
+
.action(async (opts, cmd) => {
|
|
45
|
+
await handlers.watch(opts, cmd.optsWithGlobals());
|
|
46
|
+
});
|
|
47
|
+
return program;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=program.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/generated/program.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,MAAM,UAAU,aAAa,CAC3B,QAAyB,EACzB,OAAe;IAEf,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,OAAO;SACJ,IAAI,CAAC,SAAS,CAAC;SACf,OAAO,CAAC,OAAO,EAAE,eAAe,CAAC;SACjC,WAAW,CAAC,0DAA0D,CAAC,CAAC;IAG3E,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,4CAA4C,CAAC;SACzD,MAAM,CAAC,aAAa,EAAE,2BAA2B,EAAE,KAAK,CAAC;SACzD,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QAC1B,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,6DAA6D,CAAC;SAC1E,QAAQ,CAAC,YAAY,EAAE,gFAAgF,CAAC;SACxG,MAAM,CAAC,qBAAqB,EAAE,qCAAqC,EAAE,qBAAqB,CAAC;SAC3F,MAAM,CAAC,eAAe,EAAE,wCAAwC,EAAE,KAAK,CAAC;SACxE,MAAM,CAAC,eAAe,EAAE,wBAAwB,EAAE,KAAK,CAAC;SACxD,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QACjC,MAAM,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,wEAAwE,CAAC;SACrF,MAAM,CAAC,qBAAqB,EAAE,qCAAqC,EAAE,qBAAqB,CAAC;SAC3F,MAAM,CAAC,yBAAyB,EAAE,iCAAiC,CAAC;SACpE,MAAM,CAAC,wBAAwB,EAAE,qCAAqC,CAAC;SACvE,MAAM,CAAC,WAAW,EAAE,0DAA0D,EAAE,KAAK,CAAC;SACtF,MAAM,CAAC,eAAe,EAAE,2CAA2C,EAAE,KAAK,CAAC;SAC3E,MAAM,CAAC,eAAe,EAAE,wBAAwB,EAAE,KAAK,CAAC;SACxD,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QAC1B,MAAM,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,8DAA8D,CAAC;SAC3E,MAAM,CAAC,qBAAqB,EAAE,qCAAqC,EAAE,qBAAqB,CAAC;SAC3F,MAAM,CAAC,eAAe,EAAE,gCAAgC,EAAE,KAAK,CAAC;SAChE,MAAM,CAAC,cAAc,EAAE,kDAAkD,EAAE,KAAK,CAAC;SACjF,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;QAC1B,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEL,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/generated/schemas.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/generated/schemas.ts"],"names":[],"mappings":"AAAA,gDAAgD"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export interface InitOptions {
|
|
2
|
+
force?: boolean;
|
|
3
|
+
}
|
|
4
|
+
export type InitExitCode = 0 | 1;
|
|
5
|
+
export type InitExitResult = {
|
|
6
|
+
exitCode: 0;
|
|
7
|
+
stdout: unknown;
|
|
8
|
+
} | {
|
|
9
|
+
exitCode: 1;
|
|
10
|
+
stderr: unknown;
|
|
11
|
+
};
|
|
12
|
+
export interface BuildArgs {
|
|
13
|
+
files?: string[];
|
|
14
|
+
}
|
|
15
|
+
export interface BuildOptions {
|
|
16
|
+
config?: string;
|
|
17
|
+
dryRun?: boolean;
|
|
18
|
+
verbose?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export type BuildExitCode = 0 | 1;
|
|
21
|
+
export type BuildExitResult = {
|
|
22
|
+
exitCode: 0;
|
|
23
|
+
stdout: unknown;
|
|
24
|
+
} | {
|
|
25
|
+
exitCode: 1;
|
|
26
|
+
stderr: unknown;
|
|
27
|
+
};
|
|
28
|
+
export interface GenerateOptions {
|
|
29
|
+
config?: string;
|
|
30
|
+
datasource?: string;
|
|
31
|
+
generator?: string;
|
|
32
|
+
all?: boolean;
|
|
33
|
+
dryRun?: boolean;
|
|
34
|
+
verbose?: boolean;
|
|
35
|
+
}
|
|
36
|
+
export type GenerateExitCode = 0 | 1;
|
|
37
|
+
export type GenerateExitResult = {
|
|
38
|
+
exitCode: 0;
|
|
39
|
+
stdout: unknown;
|
|
40
|
+
} | {
|
|
41
|
+
exitCode: 1;
|
|
42
|
+
stderr: unknown;
|
|
43
|
+
};
|
|
44
|
+
export interface WatchOptions {
|
|
45
|
+
config?: string;
|
|
46
|
+
verbose?: boolean;
|
|
47
|
+
debugDeps?: boolean;
|
|
48
|
+
}
|
|
49
|
+
export type WatchExitCode = 0 | 1;
|
|
50
|
+
export type WatchExitResult = {
|
|
51
|
+
exitCode: 0;
|
|
52
|
+
stdout: unknown;
|
|
53
|
+
} | {
|
|
54
|
+
exitCode: 1;
|
|
55
|
+
stderr: unknown;
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/generated/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC;AAEjC,MAAM,MAAM,cAAc,GACxB;IAAE,QAAQ,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GAC9B;IAAE,QAAQ,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC;AAErC,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,CAAC,CAAC;AAElC,MAAM,MAAM,eAAe,GACzB;IAAE,QAAQ,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GAC9B;IAAE,QAAQ,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC;AAErC,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC;AAErC,MAAM,MAAM,kBAAkB,GAC5B;IAAE,QAAQ,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GAC9B;IAAE,QAAQ,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC;AAErC,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,CAAC,CAAC;AAElC,MAAM,MAAM,eAAe,GACzB;IAAE,QAAQ,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GAC9B;IAAE,QAAQ,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/generated/types.ts"],"names":[],"mappings":"AAAA,gDAAgD"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "embedoc",
|
|
3
|
-
"version": "0.12.
|
|
3
|
+
"version": "0.12.1",
|
|
4
4
|
"description": "In-place document generator that auto-updates marker blocks while preserving manual edits. Supports multiple datasources (SQLite, CSV, JSON, YAML, glob), programmable TypeScript embeds, and incremental builds with dependency tracking.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"workspaces": [
|