@kronor/dtv 4.0.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/README.md +6 -0
  2. package/bin/dtv.js +24 -0
  3. package/dist/assets/{index-BktfNqU5.js → index-BCuRRUo9.js} +215 -128
  4. package/dist/cli/dtv.js +512 -0
  5. package/dist/cli/dtv.js.map +1 -0
  6. package/dist/cli/typegen/schemaToTs.js +163 -0
  7. package/dist/cli/typegen/schemaToTs.js.map +1 -0
  8. package/dist/index.es.js +7930 -7750
  9. package/dist/index.html +1 -1
  10. package/dist/types/App.d.ts.map +1 -1
  11. package/dist/types/cli/dtv.d.ts +2 -0
  12. package/dist/types/cli/dtv.d.ts.map +1 -0
  13. package/dist/types/cli/typegen/schemaToTs.d.ts +13 -0
  14. package/dist/types/cli/typegen/schemaToTs.d.ts.map +1 -0
  15. package/dist/types/components/ActionButtons.d.ts +2 -1
  16. package/dist/types/components/ActionButtons.d.ts.map +1 -1
  17. package/dist/types/dsl/columns.d.ts +50 -23
  18. package/dist/types/dsl/columns.d.ts.map +1 -1
  19. package/dist/types/dsl/internal/queryForRow.d.ts +42 -0
  20. package/dist/types/dsl/internal/queryForRow.d.ts.map +1 -0
  21. package/dist/types/framework/actions.d.ts +13 -0
  22. package/dist/types/framework/actions.d.ts.map +1 -1
  23. package/dist/types/framework/column-definition.d.ts +205 -24
  24. package/dist/types/framework/column-definition.d.ts.map +1 -1
  25. package/dist/types/framework/hasura.d.ts +2 -2
  26. package/dist/types/framework/hasura.d.ts.map +1 -1
  27. package/dist/types/framework/native-runtime/index.d.ts +2 -2
  28. package/dist/types/framework/typelevel.d.ts +6 -0
  29. package/dist/types/framework/typelevel.d.ts.map +1 -0
  30. package/dist/types/lib/index.d.ts +2 -0
  31. package/dist/types/lib/index.d.ts.map +1 -1
  32. package/dist/types/typegen/index.d.ts +27 -0
  33. package/dist/types/typegen/index.d.ts.map +1 -0
  34. package/docs/typegen.md +86 -0
  35. package/package.json +18 -5
@@ -0,0 +1,512 @@
1
+ import { Command } from 'commander';
2
+ import { pathToFileURL } from 'node:url';
3
+ import * as path from 'node:path';
4
+ import * as fs from 'node:fs/promises';
5
+ import fg from 'fast-glob';
6
+ import ts from 'typescript';
7
+ import { getIntrospectionQuery, buildClientSchema } from 'graphql';
8
+ import { collectReachableTypes, renderTsFromSchema, unwrapCollectionElementType } from './typegen/schemaToTs.js';
9
+ function isRecord(value) {
10
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
11
+ }
12
+ function assertString(value, context) {
13
+ if (typeof value !== 'string' || value.length === 0) {
14
+ throw new Error(`${context} must be a non-empty string`);
15
+ }
16
+ }
17
+ function toPascalCase(input) {
18
+ return input
19
+ .replace(/[^a-zA-Z0-9]+/g, ' ')
20
+ .trim()
21
+ .split(' ')
22
+ .filter(Boolean)
23
+ .map(part => part.charAt(0).toUpperCase() + part.slice(1))
24
+ .join('');
25
+ }
26
+ async function loadConfig(configPath) {
27
+ const abs = path.isAbsolute(configPath) ? configPath : path.resolve(process.cwd(), configPath);
28
+ const cfg = await (async () => {
29
+ const ext = path.extname(abs).toLowerCase();
30
+ const url = pathToFileURL(abs).href;
31
+ if (ext === '.ts' || ext === '.tsx') {
32
+ // Load TS config in a way that works in both CJS and ESM projects.
33
+ // We transpile the config file to ESM and import the emitted JS.
34
+ // This avoids requiring the consuming repo to be `type: module`.
35
+ const sourceText = await fs.readFile(abs, 'utf8');
36
+ // Under `module: NodeNext`, TS decides ESM vs CJS based on file extension
37
+ // and nearest package.json `type`. We want the config to always be treated
38
+ // as ESM so it can be imported reliably from any project.
39
+ const transpileFileName = abs.replace(/\.(tsx?)$/i, '.mts');
40
+ const transpiled = ts.transpileModule(sourceText, {
41
+ compilerOptions: {
42
+ target: ts.ScriptTarget.ES2022,
43
+ module: ts.ModuleKind.NodeNext,
44
+ moduleResolution: ts.ModuleResolutionKind.NodeNext,
45
+ jsx: ts.JsxEmit.Preserve,
46
+ esModuleInterop: true,
47
+ sourceMap: false
48
+ },
49
+ fileName: transpileFileName,
50
+ reportDiagnostics: true
51
+ });
52
+ if (transpiled.diagnostics?.length) {
53
+ const errors = transpiled.diagnostics.filter(d => d.category === ts.DiagnosticCategory.Error);
54
+ if (errors.length) {
55
+ const msg = errors
56
+ .map(d => ts.flattenDiagnosticMessageText(d.messageText, '\n'))
57
+ .join('\n');
58
+ throw new Error(`Failed to transpile ${abs}:\n${msg}`);
59
+ }
60
+ }
61
+ const tmpFile = path.join(path.dirname(abs), `.${path.basename(abs)}.dtv-tmp.${Date.now()}.mjs`);
62
+ await fs.writeFile(tmpFile, transpiled.outputText, 'utf8');
63
+ try {
64
+ const tmpUrl = pathToFileURL(tmpFile).href;
65
+ const mod = await import(`${tmpUrl}?t=${Date.now()}`);
66
+ return (mod.default ?? mod.config ?? mod);
67
+ }
68
+ finally {
69
+ await fs.unlink(tmpFile).catch(() => undefined);
70
+ }
71
+ }
72
+ // JS/MJS/CJS (or any Node-supported module) can be imported directly.
73
+ // Cache-bust import to allow repeated runs.
74
+ const mod = await import(`${url}?t=${Date.now()}`);
75
+ return (mod.default ?? mod.config ?? mod);
76
+ })();
77
+ if (!isRecord(cfg)) {
78
+ throw new Error('Config must export a plain object (default export recommended)');
79
+ }
80
+ if (!isRecord(cfg.schema))
81
+ throw new Error('Config.schema is required');
82
+ assertString(cfg.schema.endpoint, 'Config.schema.endpoint');
83
+ if (cfg.schema.headers !== undefined && !isRecord(cfg.schema.headers)) {
84
+ throw new Error('Config.schema.headers must be an object when provided');
85
+ }
86
+ if (!isRecord(cfg.scan))
87
+ throw new Error('Config.scan is required');
88
+ if (!Array.isArray(cfg.scan.include) || cfg.scan.include.length === 0) {
89
+ throw new Error('Config.scan.include must be a non-empty array of glob patterns');
90
+ }
91
+ if (cfg.scan.exclude !== undefined && !Array.isArray(cfg.scan.exclude)) {
92
+ throw new Error('Config.scan.exclude must be an array when provided');
93
+ }
94
+ if (cfg.scan.dtvImport !== undefined)
95
+ assertString(cfg.scan.dtvImport, 'Config.scan.dtvImport');
96
+ if (!isRecord(cfg.output))
97
+ throw new Error('Config.output is required');
98
+ assertString(cfg.output.fileNamePattern, 'Config.output.fileNamePattern');
99
+ if (cfg.output.fileNamePattern.includes('/') || cfg.output.fileNamePattern.includes('\\')) {
100
+ throw new Error('Config.output.fileNamePattern must be a file name (no path separators)');
101
+ }
102
+ if (cfg.scalars !== undefined && !isRecord(cfg.scalars)) {
103
+ throw new Error('Config.scalars must be an object when provided');
104
+ }
105
+ if (cfg.debug !== undefined) {
106
+ if (!isRecord(cfg.debug))
107
+ throw new Error('Config.debug must be an object when provided');
108
+ if (cfg.debug.includeGraphqlTypeComments !== undefined && typeof cfg.debug.includeGraphqlTypeComments !== 'boolean') {
109
+ throw new Error('Config.debug.includeGraphqlTypeComments must be a boolean when provided');
110
+ }
111
+ }
112
+ return cfg;
113
+ }
114
+ async function fetchSchema(endpoint, headers) {
115
+ const query = getIntrospectionQuery({
116
+ descriptions: true
117
+ });
118
+ const res = await fetch(endpoint, {
119
+ method: 'POST',
120
+ headers: {
121
+ 'content-type': 'application/json',
122
+ ...headers
123
+ },
124
+ body: JSON.stringify({ query })
125
+ });
126
+ if (!res.ok) {
127
+ const text = await res.text().catch(() => '');
128
+ throw new Error(`Introspection request failed (${res.status} ${res.statusText}): ${text}`);
129
+ }
130
+ const json = await res.json();
131
+ if (json.errors && Array.isArray(json.errors) && json.errors.length) {
132
+ throw new Error(`Introspection returned errors: ${JSON.stringify(json.errors, null, 2)}`);
133
+ }
134
+ if (!json.data) {
135
+ throw new Error('Introspection response missing data');
136
+ }
137
+ return buildClientSchema(json.data);
138
+ }
139
+ function findViewsInFile(sourceText, fileName, dtvImport) {
140
+ const sourceFile = ts.createSourceFile(fileName, sourceText, ts.ScriptTarget.Latest, true);
141
+ const unwrapParens = (expr) => {
142
+ let cur = expr;
143
+ while (ts.isParenthesizedExpression(cur)) {
144
+ cur = cur.expression;
145
+ }
146
+ return cur;
147
+ };
148
+ const getDslReceivers = () => {
149
+ const dslIdentifiers = new Set();
150
+ const dtvNamespaces = new Set();
151
+ for (const stmt of sourceFile.statements) {
152
+ if (ts.isImportDeclaration(stmt)) {
153
+ if (!ts.isStringLiteral(stmt.moduleSpecifier))
154
+ continue;
155
+ if (stmt.moduleSpecifier.text !== dtvImport)
156
+ continue;
157
+ const clause = stmt.importClause;
158
+ if (!clause)
159
+ continue;
160
+ // `import dtv from '...'`
161
+ if (clause.name) {
162
+ dtvNamespaces.add(clause.name.text);
163
+ }
164
+ const nb = clause.namedBindings;
165
+ if (!nb)
166
+ continue;
167
+ // `import * as dtv from '...'`
168
+ if (ts.isNamespaceImport(nb)) {
169
+ dtvNamespaces.add(nb.name.text);
170
+ continue;
171
+ }
172
+ // `import { DSL as X } from '...'`
173
+ if (ts.isNamedImports(nb)) {
174
+ for (const el of nb.elements) {
175
+ const imported = (el.propertyName ?? el.name).text;
176
+ const local = el.name.text;
177
+ if (imported === 'DSL') {
178
+ dslIdentifiers.add(local);
179
+ }
180
+ }
181
+ continue;
182
+ }
183
+ }
184
+ if (ts.isImportEqualsDeclaration(stmt)) {
185
+ const mr = stmt.moduleReference;
186
+ if (!ts.isExternalModuleReference(mr))
187
+ continue;
188
+ const expr = mr.expression;
189
+ if (!expr || !ts.isStringLiteral(expr))
190
+ continue;
191
+ if (expr.text !== dtvImport)
192
+ continue;
193
+ dtvNamespaces.add(stmt.name.text);
194
+ continue;
195
+ }
196
+ if (ts.isVariableStatement(stmt)) {
197
+ for (const decl of stmt.declarationList.declarations) {
198
+ if (!decl.initializer)
199
+ continue;
200
+ const init = unwrapParens(decl.initializer);
201
+ if (!ts.isCallExpression(init))
202
+ continue;
203
+ if (!ts.isIdentifier(init.expression) || init.expression.text !== 'require')
204
+ continue;
205
+ const arg0 = init.arguments[0];
206
+ if (!arg0 || !ts.isStringLiteral(arg0) || arg0.text !== dtvImport)
207
+ continue;
208
+ if (ts.isIdentifier(decl.name)) {
209
+ dtvNamespaces.add(decl.name.text);
210
+ continue;
211
+ }
212
+ if (ts.isObjectBindingPattern(decl.name)) {
213
+ for (const el of decl.name.elements) {
214
+ const imported = (el.propertyName ?? el.name);
215
+ if (ts.isIdentifier(imported) && imported.text === 'DSL') {
216
+ if (ts.isIdentifier(el.name)) {
217
+ dslIdentifiers.add(el.name.text);
218
+ }
219
+ }
220
+ }
221
+ }
222
+ }
223
+ }
224
+ }
225
+ return { dslIdentifiers, dtvNamespaces };
226
+ };
227
+ const receivers = getDslReceivers();
228
+ if (receivers.dslIdentifiers.size === 0 && receivers.dtvNamespaces.size === 0)
229
+ return [];
230
+ const views = [];
231
+ const tryGetStringProp = (obj, propName) => {
232
+ for (const p of obj.properties) {
233
+ if (!ts.isPropertyAssignment(p))
234
+ continue;
235
+ const name = p.name;
236
+ const key = ts.isIdentifier(name)
237
+ ? name.text
238
+ : ts.isStringLiteral(name)
239
+ ? name.text
240
+ : null;
241
+ if (key !== propName)
242
+ continue;
243
+ if (ts.isStringLiteral(p.initializer))
244
+ return p.initializer.text;
245
+ if (ts.isNoSubstitutionTemplateLiteral(p.initializer))
246
+ return p.initializer.text;
247
+ return null;
248
+ }
249
+ return null;
250
+ };
251
+ const visit = (node) => {
252
+ if (ts.isCallExpression(node)) {
253
+ const expr = node.expression;
254
+ if (ts.isPropertyAccessExpression(expr)) {
255
+ const receiver = unwrapParens(expr.expression);
256
+ const method = expr.name.text;
257
+ const isDslReceiver = (() => {
258
+ if (ts.isIdentifier(receiver) && receivers.dslIdentifiers.has(receiver.text))
259
+ return true;
260
+ if (ts.isPropertyAccessExpression(receiver)) {
261
+ const maybeNs = unwrapParens(receiver.expression);
262
+ if (receiver.name.text !== 'DSL')
263
+ return false;
264
+ return ts.isIdentifier(maybeNs) && receivers.dtvNamespaces.has(maybeNs.text);
265
+ }
266
+ return false;
267
+ })();
268
+ if (method === 'view' && isDslReceiver) {
269
+ const firstArg = node.arguments[0];
270
+ if (firstArg && ts.isObjectLiteralExpression(firstArg)) {
271
+ const viewId = tryGetStringProp(firstArg, 'id');
272
+ const collectionName = tryGetStringProp(firstArg, 'collectionName');
273
+ if (viewId && collectionName) {
274
+ views.push({
275
+ viewId,
276
+ collectionName,
277
+ sourceFile: fileName
278
+ });
279
+ }
280
+ }
281
+ }
282
+ }
283
+ }
284
+ ts.forEachChild(node, visit);
285
+ };
286
+ visit(sourceFile);
287
+ return views;
288
+ }
289
+ async function scanViews(config) {
290
+ const dtvImport = config.scan.dtvImport ?? '@kronor/dtv';
291
+ const files = await fg(config.scan.include, {
292
+ ignore: config.scan.exclude ?? [],
293
+ absolute: true,
294
+ onlyFiles: true
295
+ });
296
+ const results = [];
297
+ for (const f of files) {
298
+ if (!f.endsWith('.ts') && !f.endsWith('.tsx'))
299
+ continue;
300
+ const text = await fs.readFile(f, 'utf8');
301
+ results.push(...findViewsInFile(text, f, dtvImport));
302
+ }
303
+ // Validate that each view id is unique across the scanned project.
304
+ const byId = new Map();
305
+ for (const v of results) {
306
+ const list = byId.get(v.viewId);
307
+ if (list)
308
+ list.push(v);
309
+ else
310
+ byId.set(v.viewId, [v]);
311
+ }
312
+ const duplicates = [];
313
+ for (const [viewId, views] of byId.entries()) {
314
+ if (views.length > 1)
315
+ duplicates.push({ viewId, views });
316
+ }
317
+ if (duplicates.length) {
318
+ const lines = [];
319
+ lines.push('Duplicate DTV view ids found (each view `id` must be unique):');
320
+ for (const d of duplicates.sort((a, b) => a.viewId.localeCompare(b.viewId))) {
321
+ lines.push(`- ${d.viewId}`);
322
+ for (const v of d.views) {
323
+ lines.push(` - ${path.resolve(v.sourceFile)}`);
324
+ }
325
+ }
326
+ throw new Error(lines.join('\n'));
327
+ }
328
+ return results;
329
+ }
330
+ async function writeFileEnsuringDir(filePath, content) {
331
+ await fs.mkdir(path.dirname(filePath), { recursive: true });
332
+ await fs.writeFile(filePath, content, 'utf8');
333
+ }
334
+ async function fileExists(filePath) {
335
+ try {
336
+ await fs.stat(filePath);
337
+ return true;
338
+ }
339
+ catch {
340
+ return false;
341
+ }
342
+ }
343
+ function renderDefaultConfigTs(options) {
344
+ const stringifyArray = (items) => {
345
+ const outerIndent = ' ';
346
+ const innerIndent = ' ';
347
+ return `[
348
+ ${items.map(v => `${innerIndent}${JSON.stringify(v)}`).join(',\n')}
349
+ ${outerIndent}]`;
350
+ };
351
+ return [
352
+ "import type { DtvTypegenConfig } from '@kronor/dtv/typegen';",
353
+ '',
354
+ 'const config: DtvTypegenConfig = {',
355
+ ' schema: {',
356
+ ` endpoint: ${JSON.stringify(options.endpoint)},`,
357
+ ' headers: {',
358
+ ' // Example header-based auth:',
359
+ ' // Authorization: `Bearer ${process.env.HASURA_TOKEN}`,',
360
+ '',
361
+ ' // Hasura admin secret:',
362
+ " // 'x-hasura-admin-secret': process.env.HASURA_ADMIN_SECRET ?? '',",
363
+ ' }',
364
+ ' },',
365
+ '',
366
+ ' scan: {',
367
+ ' // Scan TS/TSX files for `DSL.view({ ... })` calls (supports aliased/namespaced imports too)',
368
+ ` include: ${stringifyArray(options.include)},`,
369
+ ` exclude: ${stringifyArray(options.exclude)},`,
370
+ '',
371
+ ' // Override if you re-export DTV under a different specifier.',
372
+ ` dtvImport: ${JSON.stringify(options.dtvImport)}`,
373
+ ' },',
374
+ '',
375
+ ' output: {',
376
+ ' // File name written next to each view module that calls DSL.view(...)',
377
+ ` fileNamePattern: ${JSON.stringify(options.fileNamePattern)}`,
378
+ ' },',
379
+ '',
380
+ ' scalars: {',
381
+ " // DateTime: 'string'",
382
+ ' }',
383
+ '',
384
+ ' debug: {',
385
+ ' // When true, include original GraphQL type refs as comments',
386
+ ' includeGraphqlTypeComments: false',
387
+ ' }',
388
+ '};',
389
+ '',
390
+ 'export default config;',
391
+ ''
392
+ ].join('\n');
393
+ }
394
+ async function runInitConfig(outPath, force, overrides) {
395
+ const absOut = path.isAbsolute(outPath) ? outPath : path.resolve(process.cwd(), outPath);
396
+ if (!force && await fileExists(absOut)) {
397
+ throw new Error(`Refusing to overwrite existing file: ${absOut} (use --force to overwrite)`);
398
+ }
399
+ const content = renderDefaultConfigTs({
400
+ endpoint: overrides?.endpoint ?? 'https://my-hasura.example.com/v1/graphql',
401
+ fileNamePattern: overrides?.fileNamePattern ?? 'dtv.generated.{viewId}.ts',
402
+ include: ['src/**/*.{ts,tsx}'],
403
+ exclude: ['**/*.test.*', '**/node_modules/**'],
404
+ dtvImport: overrides?.dtvImport ?? '@kronor/dtv'
405
+ });
406
+ await writeFileEnsuringDir(absOut, content);
407
+ console.log(`Wrote ${absOut}`);
408
+ }
409
+ function applyFileNamePattern(pattern, view) {
410
+ return pattern
411
+ .replace(/\{viewId\}/g, view.viewId)
412
+ .replace(/\{collectionName\}/g, view.collectionName);
413
+ }
414
+ async function runTypegen(configPath) {
415
+ const config = await loadConfig(configPath);
416
+ const views = await scanViews(config);
417
+ if (views.length === 0) {
418
+ throw new Error('No views found. Ensure Config.scan.include matches files that import DSL from your configured DTV specifier and call DSL.view({ ... }).');
419
+ }
420
+ const schema = await fetchSchema(config.schema.endpoint, config.schema.headers ?? {});
421
+ const queryType = schema.getQueryType();
422
+ if (!queryType)
423
+ throw new Error('Schema has no Query type');
424
+ const queryFields = queryType.getFields();
425
+ // Resolve view -> row type
426
+ const viewRows = views.map(v => {
427
+ const f = queryFields[v.collectionName];
428
+ if (!f) {
429
+ const sample = Object.keys(queryFields).slice(0, 25);
430
+ throw new Error(`View "${v.viewId}" references collectionName "${v.collectionName}" but it was not found on Query. `
431
+ + `Sample Query fields: ${sample.join(', ')}${sample.length === 25 ? ', ...' : ''}`);
432
+ }
433
+ const rowNamed = unwrapCollectionElementType(f.type);
434
+ return {
435
+ ...v,
436
+ rowTypeName: rowNamed.name
437
+ };
438
+ });
439
+ const outputFiles = new Set();
440
+ for (const v of viewRows) {
441
+ const root = schema.getType(v.rowTypeName);
442
+ if (!root || Array.isArray(root)) {
443
+ throw new Error(`Could not resolve row type "${v.rowTypeName}" in schema for view "${v.viewId}"`);
444
+ }
445
+ const reachable = collectReachableTypes(schema, [root]);
446
+ const viewTypeName = `${toPascalCase(v.viewId)}Row`;
447
+ const fileName = applyFileNamePattern(config.output.fileNamePattern, v);
448
+ if (!fileName.endsWith('.ts')) {
449
+ throw new Error(`Config.output.fileNamePattern must produce a .ts file name. Got: ${fileName}`);
450
+ }
451
+ const outFile = path.join(path.dirname(v.sourceFile), fileName);
452
+ if (outputFiles.has(outFile)) {
453
+ throw new Error(`Multiple views would write the same output file: ${outFile}`);
454
+ }
455
+ outputFiles.add(outFile);
456
+ const content = [
457
+ renderTsFromSchema(reachable, {
458
+ scalars: config.scalars,
459
+ includeGraphqlTypeComments: config.debug?.includeGraphqlTypeComments === true,
460
+ exportTypes: false
461
+ }).trimEnd(),
462
+ '',
463
+ `export type ${viewTypeName} = ${v.rowTypeName};`,
464
+ ''
465
+ ].join('\n');
466
+ await writeFileEnsuringDir(outFile, content);
467
+ }
468
+ console.log(`Generated types for ${viewRows.length} view(s).`);
469
+ }
470
+ const program = new Command();
471
+ program
472
+ .name('dtv')
473
+ .description('DTV CLI')
474
+ .version('0.0.0');
475
+ program
476
+ .command('typegen')
477
+ .description('Generate TypeScript types from a Hasura GraphQL schema')
478
+ .option('-c, --config <path>', 'Path to dtv.config.ts', 'dtv.config.ts')
479
+ .action(async (opts) => {
480
+ try {
481
+ await runTypegen(opts.config);
482
+ }
483
+ catch (e) {
484
+ const msg = e instanceof Error ? e.message : String(e);
485
+ console.error(msg);
486
+ process.exitCode = 1;
487
+ }
488
+ });
489
+ program
490
+ .command('init')
491
+ .description('Generate a dtv.config.ts template in the current project')
492
+ .option('-o, --out <path>', 'Output config file path', 'dtv.config.ts')
493
+ .option('--force', 'Overwrite if the file already exists', false)
494
+ .option('--endpoint <url>', 'Hasura GraphQL endpoint to prefill', 'https://my-hasura.example.com/v1/graphql')
495
+ .option('--file-pattern <pattern>', 'Output file name pattern written next to each view module', 'dtv.generated.{viewId}.ts')
496
+ .option('--dtv-import <specifier>', 'Module specifier used by views to import DSL', '@kronor/dtv')
497
+ .action(async (opts) => {
498
+ try {
499
+ await runInitConfig(opts.out, opts.force, {
500
+ endpoint: opts.endpoint,
501
+ fileNamePattern: opts.filePattern,
502
+ dtvImport: opts.dtvImport
503
+ });
504
+ }
505
+ catch (e) {
506
+ const msg = e instanceof Error ? e.message : String(e);
507
+ console.error(msg);
508
+ process.exitCode = 1;
509
+ }
510
+ });
511
+ program.parse(process.argv);
512
+ //# sourceMappingURL=dtv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dtv.js","sourceRoot":"","sources":["../../src/cli/dtv.ts"],"names":[],"mappings":"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"}