@kronor/dtv 5.0.0 → 5.1.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.
- package/dist/assets/{index-BCuRRUo9.js → index-JkFoTAyM.js} +1 -1
- package/dist/cli/commands/init.js +106 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/typegen.js +26 -0
- package/dist/cli/commands/typegen.js.map +1 -0
- package/dist/cli/config/loadConfig.js +101 -0
- package/dist/cli/config/loadConfig.js.map +1 -0
- package/dist/cli/config/types.js +2 -0
- package/dist/cli/config/types.js.map +1 -0
- package/dist/cli/dtv.js +4 -504
- package/dist/cli/dtv.js.map +1 -1
- package/dist/cli/typegen/runTypegen.js +638 -0
- package/dist/cli/typegen/runTypegen.js.map +1 -0
- package/dist/cli/typegen/schemaToTs.js +5 -1
- package/dist/cli/typegen/schemaToTs.js.map +1 -1
- package/dist/index.es.js +5 -4
- package/dist/index.html +1 -1
- package/dist/types/cli/commands/init.d.ts +3 -0
- package/dist/types/cli/commands/init.d.ts.map +1 -0
- package/dist/types/cli/commands/typegen.d.ts +3 -0
- package/dist/types/cli/commands/typegen.d.ts.map +1 -0
- package/dist/types/cli/config/loadConfig.d.ts +3 -0
- package/dist/types/cli/config/loadConfig.d.ts.map +1 -0
- package/dist/types/cli/config/types.d.ts +34 -0
- package/dist/types/cli/config/types.d.ts.map +1 -0
- package/dist/types/cli/typegen/runTypegen.d.ts +9 -0
- package/dist/types/cli/typegen/runTypegen.d.ts.map +1 -0
- package/dist/types/cli/typegen/schemaToTs.d.ts.map +1 -1
- package/dist/types/dsl/filterExpr.d.ts +130 -46
- package/dist/types/dsl/filterExpr.d.ts.map +1 -1
- package/dist/types/dsl/filters.d.ts +72 -2
- package/dist/types/dsl/filters.d.ts.map +1 -1
- package/docs/typegen.md +4 -0
- package/package.json +1 -1
package/dist/cli/dtv.js
CHANGED
|
@@ -1,512 +1,12 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
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
|
-
}
|
|
2
|
+
import { registerTypegenCommand } from './commands/typegen.js';
|
|
3
|
+
import { registerInitCommand } from './commands/init.js';
|
|
470
4
|
const program = new Command();
|
|
471
5
|
program
|
|
472
6
|
.name('dtv')
|
|
473
7
|
.description('DTV CLI')
|
|
474
8
|
.version('0.0.0');
|
|
475
|
-
program
|
|
476
|
-
|
|
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
|
-
});
|
|
9
|
+
registerTypegenCommand(program);
|
|
10
|
+
registerInitCommand(program);
|
|
511
11
|
program.parse(process.argv);
|
|
512
12
|
//# sourceMappingURL=dtv.js.map
|
package/dist/cli/dtv.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dtv.js","sourceRoot":"","sources":["../../src/cli/dtv.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dtv.js","sourceRoot":"","sources":["../../src/cli/dtv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9B,OAAO;KACF,IAAI,CAAC,KAAK,CAAC;KACX,WAAW,CAAC,SAAS,CAAC;KACtB,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAE7B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
|