@duckcodeailabs/dql-core 0.6.0 → 0.7.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/index.d.ts CHANGED
@@ -5,4 +5,5 @@ export * from './semantic/index.js';
5
5
  export * from './errors/index.js';
6
6
  export * from './formatter/index.js';
7
7
  export * from './lineage/index.js';
8
+ export * from './manifest/index.js';
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC"}
package/dist/index.js CHANGED
@@ -7,4 +7,5 @@ export * from './semantic/index.js';
7
7
  export * from './errors/index.js';
8
8
  export * from './formatter/index.js';
9
9
  export * from './lineage/index.js';
10
+ export * from './manifest/index.js';
10
11
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,wCAAwC;AAExC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,wCAAwC;AAExC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sql-parser.d.ts","sourceRoot":"","sources":["../../src/lineage/sql-parser.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,cAAc;IAC7B,kDAAkD;IAClD,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,sCAAsC;IACtC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,mCAAmC;IACnC,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAmDhE"}
1
+ {"version":3,"file":"sql-parser.d.ts","sourceRoot":"","sources":["../../src/lineage/sql-parser.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,cAAc;IAC7B,kDAAkD;IAClD,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,sCAAsC;IACtC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,mCAAmC;IACnC,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CA4DhE"}
@@ -15,6 +15,9 @@ export function extractTablesFromSql(sql) {
15
15
  const ctes = extractCteNames(sql);
16
16
  // Strip comments first (refs inside comments should be ignored)
17
17
  const noComments = stripComments(sql);
18
+ // Extract DuckDB reader functions BEFORE stripping string literals
19
+ // (because the file path is inside quotes that would be stripped)
20
+ const readerTables = extractReaderFunctions(noComments);
18
21
  // Strip non-ref string literals, then extract refs from the result.
19
22
  // This ensures ref("block") and ref('block') are preserved, but
20
23
  // 'ref("fake")' (a string literal containing ref) is stripped.
@@ -38,6 +41,10 @@ export function extractTablesFromSql(sql) {
38
41
  for (const match of cleaned.matchAll(intoPattern)) {
39
42
  addTableRef(rawTables, match[1]);
40
43
  }
44
+ // Add DuckDB reader function references (extracted before string stripping)
45
+ for (const rt of readerTables) {
46
+ rawTables.add(rt);
47
+ }
41
48
  // Filter out CTEs, SQL keywords that might match, and DuckDB functions
42
49
  const sqlKeywords = new Set([
43
50
  'select', 'where', 'group', 'order', 'having', 'limit', 'offset',
@@ -68,6 +75,15 @@ function extractCteNames(sql) {
68
75
  }
69
76
  return ctes;
70
77
  }
78
+ /** Extract DuckDB reader function calls (e.g., read_csv_auto('./data/file.csv')) */
79
+ function extractReaderFunctions(sql) {
80
+ const results = [];
81
+ const pattern = /\b(read_csv_auto|read_csv|read_parquet|read_json|read_json_auto)\s*\(\s*['"]([^'"]+)['"]\s*(?:,\s*[^)]*?)?\)/gi;
82
+ for (const match of sql.matchAll(pattern)) {
83
+ results.push(`${match[1]}('${match[2]}')`);
84
+ }
85
+ return results;
86
+ }
71
87
  /** Extract ref("block_name") calls from SQL */
72
88
  function extractRefs(sql) {
73
89
  const refs = [];
@@ -1 +1 @@
1
- {"version":3,"file":"sql-parser.js","sourceRoot":"","sources":["../../src/lineage/sql-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sql-parser.js","sourceRoot":"","sources":["../../src/lineage/sql-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Manifest Builder — scans a DQL project and produces a DQLManifest.
3
+ *
4
+ * This is the core compilation step: discovers all blocks, notebooks,
5
+ * semantic layer definitions, extracts dependencies, builds lineage,
6
+ * and optionally imports dbt manifest data.
7
+ */
8
+ import type { DQLManifest } from './types.js';
9
+ export interface ManifestBuildOptions {
10
+ /** Project root directory (must contain dql.config.json) */
11
+ projectRoot: string;
12
+ /** DQL CLI version string */
13
+ dqlVersion?: string;
14
+ /** Path to dbt manifest.json for import */
15
+ dbtManifestPath?: string;
16
+ /** Additional directories to scan for .dql files */
17
+ extraBlockDirs?: string[];
18
+ /** Additional directories to scan for .dqlnb files */
19
+ extraNotebookDirs?: string[];
20
+ }
21
+ export declare function buildManifest(options: ManifestBuildOptions): DQLManifest;
22
+ //# sourceMappingURL=builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/manifest/builder.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,OAAO,KAAK,EACV,WAAW,EASZ,MAAM,YAAY,CAAC;AAIpB,MAAM,WAAW,oBAAoB;IACnC,4DAA4D;IAC5D,WAAW,EAAE,MAAM,CAAC;IACpB,6BAA6B;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oDAAoD;IACpD,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,sDAAsD;IACtD,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,WAAW,CAmDxE"}
@@ -0,0 +1,538 @@
1
+ /**
2
+ * Manifest Builder — scans a DQL project and produces a DQLManifest.
3
+ *
4
+ * This is the core compilation step: discovers all blocks, notebooks,
5
+ * semantic layer definitions, extracts dependencies, builds lineage,
6
+ * and optionally imports dbt manifest data.
7
+ */
8
+ import { readdirSync, readFileSync, existsSync } from 'node:fs';
9
+ import { join, extname, relative } from 'node:path';
10
+ import { Parser } from '../parser/index.js';
11
+ import { extractTablesFromSql } from '../lineage/sql-parser.js';
12
+ import { buildLineageGraph } from '../lineage/builder.js';
13
+ import { detectDomainFlows, getDomainTrustOverview } from '../lineage/domain-lineage.js';
14
+ import { loadSemanticLayerFromDir } from '../semantic/index.js';
15
+ export function buildManifest(options) {
16
+ const { projectRoot, dqlVersion = '0.6.0' } = options;
17
+ // Load project config
18
+ const config = loadProjectConfig(projectRoot);
19
+ const projectName = config.project ?? 'dql-project';
20
+ // Scan blocks
21
+ const blockDirs = ['blocks', 'dashboards', 'workbooks', ...(options.extraBlockDirs ?? [])];
22
+ const blocks = scanBlocks(projectRoot, blockDirs);
23
+ // Scan notebooks
24
+ const notebookDirs = ['notebooks', 'blocks', 'dashboards', 'workbooks', ...(options.extraNotebookDirs ?? [])];
25
+ const notebooks = scanNotebooks(projectRoot, notebookDirs);
26
+ // Extract blocks declared inside notebook DQL cells
27
+ const notebookBlocks = extractNotebookBlocks(notebooks, projectRoot);
28
+ for (const [name, block] of Object.entries(notebookBlocks)) {
29
+ if (!blocks[name])
30
+ blocks[name] = block;
31
+ }
32
+ // Load semantic layer
33
+ const semanticDir = resolveSemanticPath(projectRoot, config);
34
+ const { metrics, dimensions } = loadSemanticDefinitions(projectRoot, semanticDir);
35
+ // Collect all source tables
36
+ const sources = collectSources(blocks, notebooks, metrics, dimensions);
37
+ // Import dbt manifest if provided
38
+ let dbtImport;
39
+ if (options.dbtManifestPath) {
40
+ dbtImport = importDbtManifest(options.dbtManifestPath, sources);
41
+ }
42
+ // Build lineage
43
+ const lineage = buildManifestLineage(blocks, metrics, dimensions);
44
+ return {
45
+ manifestVersion: 1,
46
+ dqlVersion,
47
+ generatedAt: new Date().toISOString(),
48
+ project: projectName,
49
+ projectRoot,
50
+ blocks,
51
+ notebooks,
52
+ metrics,
53
+ dimensions,
54
+ sources,
55
+ lineage,
56
+ dbtImport,
57
+ };
58
+ }
59
+ function loadProjectConfig(projectRoot) {
60
+ const configPath = join(projectRoot, 'dql.config.json');
61
+ if (!existsSync(configPath))
62
+ return {};
63
+ try {
64
+ return JSON.parse(readFileSync(configPath, 'utf-8'));
65
+ }
66
+ catch {
67
+ return {};
68
+ }
69
+ }
70
+ function resolveSemanticPath(projectRoot, config) {
71
+ const customPath = config.semanticLayer?.path;
72
+ if (customPath)
73
+ return join(projectRoot, customPath);
74
+ return join(projectRoot, 'semantic-layer');
75
+ }
76
+ // ---- Recursive File Scanner ----
77
+ function scanFilesRecursive(dir, extensions) {
78
+ const results = [];
79
+ if (!existsSync(dir))
80
+ return results;
81
+ const entries = readdirSync(dir, { withFileTypes: true });
82
+ for (const entry of entries) {
83
+ const fullPath = join(dir, entry.name);
84
+ if (entry.isDirectory()) {
85
+ // Skip hidden dirs and node_modules
86
+ if (entry.name.startsWith('.') || entry.name === 'node_modules')
87
+ continue;
88
+ results.push(...scanFilesRecursive(fullPath, extensions));
89
+ }
90
+ else if (entry.isFile() && extensions.includes(extname(entry.name))) {
91
+ results.push(fullPath);
92
+ }
93
+ }
94
+ return results;
95
+ }
96
+ // ---- Block Scanning ----
97
+ function scanBlocks(projectRoot, dirs) {
98
+ const blocks = {};
99
+ for (const dir of dirs) {
100
+ const dirPath = join(projectRoot, dir);
101
+ const files = scanFilesRecursive(dirPath, ['.dql']);
102
+ for (const filePath of files) {
103
+ try {
104
+ const source = readFileSync(filePath, 'utf-8');
105
+ const relPath = relative(projectRoot, filePath);
106
+ const parser = new Parser(source, relPath);
107
+ const ast = parser.parse();
108
+ for (const stmt of ast.statements) {
109
+ const block = stmt;
110
+ if (block.kind !== 'BlockDecl')
111
+ continue;
112
+ const sql = block.query?.rawSQL ?? '';
113
+ const parseResult = extractTablesFromSql(sql);
114
+ const domain = extractProp(block, 'domain');
115
+ const owner = extractProp(block, 'owner');
116
+ const description = extractProp(block, 'description');
117
+ const tags = extractTags(block);
118
+ const tests = extractTests(block);
119
+ blocks[block.name] = {
120
+ name: block.name,
121
+ filePath: relPath,
122
+ domain,
123
+ owner,
124
+ status: extractProp(block, 'status'),
125
+ blockType: block.blockType,
126
+ sql,
127
+ rawTableRefs: parseResult.tables,
128
+ tableDependencies: parseResult.tables.map(normalizeTableName),
129
+ refDependencies: parseResult.refs,
130
+ allDependencies: [
131
+ ...parseResult.refs,
132
+ ...parseResult.tables.map(normalizeTableName),
133
+ ],
134
+ chartType: extractVisualizationChart(block),
135
+ metricRef: block.metricRef,
136
+ tests,
137
+ tags,
138
+ description,
139
+ };
140
+ }
141
+ }
142
+ catch {
143
+ // Skip unparseable files
144
+ }
145
+ }
146
+ }
147
+ return blocks;
148
+ }
149
+ // ---- Notebook Scanning ----
150
+ function scanNotebooks(projectRoot, dirs) {
151
+ const notebooks = {};
152
+ const seen = new Set();
153
+ for (const dir of dirs) {
154
+ const dirPath = join(projectRoot, dir);
155
+ const files = scanFilesRecursive(dirPath, ['.dqlnb']);
156
+ for (const filePath of files) {
157
+ if (seen.has(filePath))
158
+ continue;
159
+ seen.add(filePath);
160
+ try {
161
+ const raw = readFileSync(filePath, 'utf-8');
162
+ const relPath = relative(projectRoot, filePath);
163
+ const doc = JSON.parse(raw);
164
+ if (doc.version !== 1 || !Array.isArray(doc.cells))
165
+ continue;
166
+ const cells = [];
167
+ for (const cell of doc.cells) {
168
+ const type = cell.type;
169
+ if (type !== 'sql' && type !== 'dql')
170
+ continue;
171
+ const source = cell.source ?? cell.content ?? '';
172
+ if (!source.trim())
173
+ continue;
174
+ let sqlToAnalyze = source;
175
+ let blockName;
176
+ // For DQL cells, try to extract the block's SQL
177
+ if (type === 'dql') {
178
+ try {
179
+ const parser = new Parser(source, `${relPath}:${cell.id}`);
180
+ const ast = parser.parse();
181
+ for (const stmt of ast.statements) {
182
+ if (stmt.kind === 'BlockDecl') {
183
+ blockName = stmt.name;
184
+ sqlToAnalyze = stmt.query?.rawSQL ?? source;
185
+ break;
186
+ }
187
+ }
188
+ }
189
+ catch {
190
+ // Fall back to analyzing the raw source as SQL
191
+ }
192
+ }
193
+ const parseResult = extractTablesFromSql(sqlToAnalyze);
194
+ // Find if any chart cell references this cell
195
+ const chartCell = doc.cells.find((c) => c.type === 'chart' && c.config?.sourceCellId === cell.id);
196
+ cells.push({
197
+ id: cell.id ?? `cell-${cells.length}`,
198
+ type,
199
+ title: cell.title ?? cell.name,
200
+ source,
201
+ tableDependencies: parseResult.tables.map(normalizeTableName),
202
+ refDependencies: parseResult.refs,
203
+ blockName,
204
+ chartType: chartCell?.config?.chart,
205
+ });
206
+ }
207
+ if (cells.length > 0) {
208
+ notebooks[relPath] = {
209
+ title: doc.metadata?.title ?? doc.title ?? relPath,
210
+ filePath: relPath,
211
+ cells,
212
+ };
213
+ }
214
+ }
215
+ catch {
216
+ // Skip invalid notebooks
217
+ }
218
+ }
219
+ }
220
+ return notebooks;
221
+ }
222
+ /** Extract blocks declared inside notebook DQL cells into the blocks map. */
223
+ function extractNotebookBlocks(notebooks, projectRoot) {
224
+ const blocks = {};
225
+ for (const [nbPath, nb] of Object.entries(notebooks)) {
226
+ for (const cell of nb.cells) {
227
+ if (cell.type !== 'dql' || !cell.blockName)
228
+ continue;
229
+ // Only add if not already found as a standalone block file
230
+ if (!blocks[cell.blockName]) {
231
+ const parseResult = extractTablesFromSql(cell.source);
232
+ blocks[cell.blockName] = {
233
+ name: cell.blockName,
234
+ filePath: `${nbPath}#${cell.id}`,
235
+ sql: cell.source,
236
+ rawTableRefs: parseResult.tables,
237
+ tableDependencies: parseResult.tables.map(normalizeTableName),
238
+ refDependencies: parseResult.refs,
239
+ allDependencies: [...parseResult.refs, ...parseResult.tables.map(normalizeTableName)],
240
+ tests: [],
241
+ };
242
+ }
243
+ }
244
+ }
245
+ return blocks;
246
+ }
247
+ // ---- Semantic Layer ----
248
+ function loadSemanticDefinitions(projectRoot, semanticDir) {
249
+ const metrics = {};
250
+ const dimensions = {};
251
+ if (!existsSync(semanticDir))
252
+ return { metrics, dimensions };
253
+ try {
254
+ const layer = loadSemanticLayerFromDir(semanticDir);
255
+ for (const m of layer.listMetrics()) {
256
+ metrics[m.name] = {
257
+ name: m.name,
258
+ type: m.type,
259
+ table: m.table,
260
+ domain: m.domain,
261
+ description: m.description,
262
+ sql: m.sql,
263
+ };
264
+ }
265
+ for (const d of layer.listDimensions()) {
266
+ dimensions[d.name] = {
267
+ name: d.name,
268
+ table: d.table,
269
+ type: d.type,
270
+ description: d.description,
271
+ };
272
+ }
273
+ // Try to find file paths for metrics and dimensions
274
+ const metricFiles = scanFilesRecursive(join(semanticDir, 'metrics'), ['.yaml', '.yml']);
275
+ for (const f of metricFiles) {
276
+ try {
277
+ const content = JSON.parse(JSON.stringify(
278
+ // Simple YAML-like parse for name field
279
+ Object.fromEntries(readFileSync(f, 'utf-8')
280
+ .split('\n')
281
+ .filter((l) => l.includes(':') && !l.startsWith('#'))
282
+ .map((l) => {
283
+ const [k, ...v] = l.split(':');
284
+ return [k.trim(), v.join(':').trim()];
285
+ }))));
286
+ if (content.name && metrics[content.name]) {
287
+ metrics[content.name].filePath = relative(projectRoot, f);
288
+ }
289
+ }
290
+ catch { /* skip */ }
291
+ }
292
+ }
293
+ catch {
294
+ // Non-fatal — semantic layer may not exist or be misconfigured
295
+ }
296
+ return { metrics, dimensions };
297
+ }
298
+ // ---- Source Collection ----
299
+ function collectSources(blocks, notebooks, metrics, dimensions) {
300
+ const sources = {};
301
+ function ensureSource(name, origin, rawRef) {
302
+ if (!sources[name]) {
303
+ sources[name] = { name, origin, rawRef, referencedBy: [] };
304
+ }
305
+ return sources[name];
306
+ }
307
+ // From blocks
308
+ for (const block of Object.values(blocks)) {
309
+ for (let i = 0; i < block.tableDependencies.length; i++) {
310
+ const tableName = block.tableDependencies[i];
311
+ // Skip if it's actually a ref to another block
312
+ if (blocks[tableName])
313
+ continue;
314
+ const source = ensureSource(tableName, 'sql', block.rawTableRefs[i]);
315
+ source.referencedBy.push(`block:${block.name}`);
316
+ }
317
+ }
318
+ // From notebooks
319
+ for (const nb of Object.values(notebooks)) {
320
+ for (const cell of nb.cells) {
321
+ for (const tableName of cell.tableDependencies) {
322
+ if (blocks[tableName])
323
+ continue;
324
+ const source = ensureSource(tableName, 'sql');
325
+ source.referencedBy.push(`notebook:${nb.filePath}#${cell.id}`);
326
+ }
327
+ }
328
+ }
329
+ // From semantic layer
330
+ for (const metric of Object.values(metrics)) {
331
+ const source = ensureSource(metric.table, 'semantic');
332
+ if (!source.referencedBy.includes(`metric:${metric.name}`)) {
333
+ source.referencedBy.push(`metric:${metric.name}`);
334
+ }
335
+ }
336
+ for (const dim of Object.values(dimensions)) {
337
+ const source = ensureSource(dim.table, 'semantic');
338
+ if (!source.referencedBy.includes(`dimension:${dim.name}`)) {
339
+ source.referencedBy.push(`dimension:${dim.name}`);
340
+ }
341
+ }
342
+ return sources;
343
+ }
344
+ // ---- dbt Manifest Import ----
345
+ function importDbtManifest(manifestPath, sources) {
346
+ const raw = readFileSync(manifestPath, 'utf-8');
347
+ const manifest = JSON.parse(raw);
348
+ let modelsImported = 0;
349
+ let sourcesImported = 0;
350
+ const projectName = manifest.metadata?.project_name;
351
+ // Import models as source tables
352
+ const nodes = manifest.nodes ?? {};
353
+ for (const [uniqueId, node] of Object.entries(nodes)) {
354
+ if (node.resource_type !== 'model')
355
+ continue;
356
+ const tableName = node.alias ?? node.name;
357
+ if (!tableName)
358
+ continue;
359
+ // Create or update source entry
360
+ if (!sources[tableName]) {
361
+ sources[tableName] = {
362
+ name: tableName,
363
+ origin: 'dbt',
364
+ referencedBy: [],
365
+ };
366
+ sourcesImported++;
367
+ }
368
+ sources[tableName].dbtModel = {
369
+ uniqueId,
370
+ database: node.database,
371
+ schema: node.schema,
372
+ materializedAs: node.config?.materialized,
373
+ description: node.description,
374
+ columns: node.columns
375
+ ? Object.fromEntries(Object.entries(node.columns).map(([k, v]) => [
376
+ k,
377
+ { name: v.name, description: v.description, type: v.data_type },
378
+ ]))
379
+ : undefined,
380
+ };
381
+ if (sources[tableName].origin === 'sql') {
382
+ sources[tableName].origin = 'dbt';
383
+ }
384
+ modelsImported++;
385
+ }
386
+ // Import dbt sources
387
+ const dbtSources = manifest.sources ?? {};
388
+ for (const [uniqueId, src] of Object.entries(dbtSources)) {
389
+ const tableName = src.identifier ?? src.name;
390
+ if (!tableName)
391
+ continue;
392
+ if (!sources[tableName]) {
393
+ sources[tableName] = {
394
+ name: tableName,
395
+ origin: 'dbt',
396
+ referencedBy: [],
397
+ };
398
+ }
399
+ sources[tableName].dbtModel = {
400
+ uniqueId,
401
+ database: src.database,
402
+ schema: src.schema,
403
+ description: src.description,
404
+ };
405
+ sourcesImported++;
406
+ }
407
+ return {
408
+ manifestPath,
409
+ projectName,
410
+ modelsImported,
411
+ sourcesImported,
412
+ importedAt: new Date().toISOString(),
413
+ };
414
+ }
415
+ // ---- Lineage Builder ----
416
+ function buildManifestLineage(blocks, metrics, dimensions) {
417
+ // Convert to lineage builder input format
418
+ const lineageBlocks = Object.values(blocks).map((b) => ({
419
+ name: b.name,
420
+ sql: b.sql,
421
+ domain: b.domain,
422
+ owner: b.owner,
423
+ status: b.status,
424
+ blockType: b.blockType,
425
+ metricRef: b.metricRef,
426
+ chartType: b.chartType,
427
+ }));
428
+ const lineageMetrics = Object.values(metrics).map((m) => ({
429
+ name: m.name,
430
+ table: m.table,
431
+ domain: m.domain ?? '',
432
+ type: m.type,
433
+ }));
434
+ const lineageDimensions = Object.values(dimensions).map((d) => ({
435
+ name: d.name,
436
+ table: d.table,
437
+ }));
438
+ const graph = buildLineageGraph(lineageBlocks, lineageMetrics, lineageDimensions);
439
+ // Serialize to manifest format
440
+ const graphJson = graph.toJSON();
441
+ const domains = graph.getDomains();
442
+ const flows = detectDomainFlows(graph);
443
+ const domainTrust = {};
444
+ for (const domain of domains) {
445
+ const overview = getDomainTrustOverview(graph, domain);
446
+ domainTrust[domain] = {
447
+ total: overview.totalBlocks,
448
+ certified: overview.certified,
449
+ score: overview.trustScore,
450
+ };
451
+ }
452
+ return {
453
+ nodes: graphJson.nodes.map((n) => ({
454
+ id: n.id,
455
+ type: n.type,
456
+ name: n.name,
457
+ domain: n.domain,
458
+ owner: n.owner,
459
+ status: n.status,
460
+ filePath: blocks[n.name]?.filePath,
461
+ })),
462
+ edges: graphJson.edges.map((e) => ({
463
+ source: e.source,
464
+ target: e.target,
465
+ type: e.type,
466
+ sourceDomain: e.sourceDomain,
467
+ targetDomain: e.targetDomain,
468
+ })),
469
+ domains,
470
+ crossDomainFlows: flows.map((f) => ({
471
+ from: f.from,
472
+ to: f.to,
473
+ edgeCount: f.edges.length,
474
+ })),
475
+ domainTrust,
476
+ };
477
+ }
478
+ // ---- AST Helpers ----
479
+ function extractProp(block, propName) {
480
+ if (block[propName] !== undefined && block[propName] !== null) {
481
+ return String(block[propName]);
482
+ }
483
+ if (!block.properties)
484
+ return undefined;
485
+ for (const prop of block.properties) {
486
+ if (prop.key === propName && prop.value?.kind === 'Literal') {
487
+ return String(prop.value.value);
488
+ }
489
+ }
490
+ return undefined;
491
+ }
492
+ function extractVisualizationChart(block) {
493
+ if (!block.visualization)
494
+ return undefined;
495
+ for (const prop of block.visualization.properties ?? []) {
496
+ if (prop.key === 'chart' && prop.value?.kind === 'Literal') {
497
+ return String(prop.value.value);
498
+ }
499
+ }
500
+ return undefined;
501
+ }
502
+ function extractTags(block) {
503
+ if (Array.isArray(block.tags))
504
+ return block.tags;
505
+ if (!block.properties)
506
+ return undefined;
507
+ for (const prop of block.properties) {
508
+ if (prop.key === 'tags' && prop.value?.kind === 'ArrayLiteral') {
509
+ return prop.value.elements
510
+ ?.map((e) => (e.kind === 'Literal' ? String(e.value) : null))
511
+ .filter(Boolean);
512
+ }
513
+ }
514
+ return undefined;
515
+ }
516
+ function extractTests(block) {
517
+ if (!block.tests?.assertions)
518
+ return [];
519
+ return block.tests.assertions.map((a) => {
520
+ if (typeof a === 'string')
521
+ return a;
522
+ return `${a.field ?? ''} ${a.operator ?? ''} ${a.expected ?? ''}`.trim();
523
+ });
524
+ }
525
+ /**
526
+ * Normalize DuckDB reader function calls to plain table names.
527
+ * e.g., "read_csv_auto('./data/revenue.csv')" → "revenue"
528
+ */
529
+ function normalizeTableName(name) {
530
+ const readerMatch = name.match(/^(?:read_csv_auto|read_csv|read_parquet|read_json|read_json_auto)\s*\(\s*['"]([^'"]+)['"]\s*\)$/i);
531
+ if (readerMatch) {
532
+ const path = readerMatch[1];
533
+ const filename = path.split('/').pop() ?? path;
534
+ return filename.replace(/\.(csv|parquet|json)$/i, '');
535
+ }
536
+ return name;
537
+ }
538
+ //# sourceMappingURL=builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/manifest/builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { buildManifest, type ManifestBuildOptions } from './builder.js';
2
+ export type { DQLManifest, ManifestBlock, ManifestNotebook, ManifestNotebookCell, ManifestMetric, ManifestDimension, ManifestSource, ManifestLineage, ManifestLineageNode, ManifestLineageEdge, ManifestDbtImport, } from './types.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/manifest/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAExE,YAAY,EACV,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,oBAAoB,EACpB,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,3 @@
1
+ // Manifest — DQL project compilation artifact
2
+ export { buildManifest } from './builder.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/manifest/index.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAE9C,OAAO,EAAE,aAAa,EAA6B,MAAM,cAAc,CAAC"}
@@ -0,0 +1,168 @@
1
+ /**
2
+ * DQL Manifest — the compiled project artifact.
3
+ *
4
+ * Similar to dbt's manifest.json, this is the single source of truth
5
+ * for a DQL project's structure, dependencies, and lineage.
6
+ * Generated by `dql compile`, consumed by `dql lineage`, notebook panel,
7
+ * and external tools (DataHub, Atlan, etc.).
8
+ */
9
+ export interface DQLManifest {
10
+ /** Manifest schema version */
11
+ manifestVersion: 1;
12
+ /** DQL CLI version that generated this manifest */
13
+ dqlVersion: string;
14
+ /** ISO 8601 timestamp */
15
+ generatedAt: string;
16
+ /** Project name from dql.config.json */
17
+ project: string;
18
+ /** Absolute path to project root */
19
+ projectRoot: string;
20
+ /** All blocks discovered in the project */
21
+ blocks: Record<string, ManifestBlock>;
22
+ /** All notebook SQL/DQL cells */
23
+ notebooks: Record<string, ManifestNotebook>;
24
+ /** Semantic layer definitions */
25
+ metrics: Record<string, ManifestMetric>;
26
+ dimensions: Record<string, ManifestDimension>;
27
+ /** External source tables (from SQL extraction + dbt import) */
28
+ sources: Record<string, ManifestSource>;
29
+ /** Pre-computed lineage graph */
30
+ lineage: ManifestLineage;
31
+ /** dbt manifest import metadata (if --dbt-manifest was used) */
32
+ dbtImport?: ManifestDbtImport;
33
+ }
34
+ export interface ManifestBlock {
35
+ name: string;
36
+ /** Relative path from project root */
37
+ filePath: string;
38
+ domain?: string;
39
+ owner?: string;
40
+ status?: string;
41
+ blockType?: string;
42
+ /** Raw SQL from the block's query */
43
+ sql: string;
44
+ /** Tables extracted from SQL (before normalization) */
45
+ rawTableRefs: string[];
46
+ /** Normalized table dependencies */
47
+ tableDependencies: string[];
48
+ /** Block dependencies via ref() */
49
+ refDependencies: string[];
50
+ /** All upstream dependencies (tables + refs combined) */
51
+ allDependencies: string[];
52
+ /** Visualization chart type */
53
+ chartType?: string;
54
+ /** Metric reference for semantic blocks */
55
+ metricRef?: string;
56
+ /** Test assertions defined in the block */
57
+ tests: string[];
58
+ /** Tags from block metadata */
59
+ tags?: string[];
60
+ description?: string;
61
+ }
62
+ export interface ManifestNotebook {
63
+ /** Notebook title */
64
+ title: string;
65
+ /** Relative path from project root */
66
+ filePath: string;
67
+ /** SQL/DQL cells with lineage-relevant content */
68
+ cells: ManifestNotebookCell[];
69
+ }
70
+ export interface ManifestNotebookCell {
71
+ id: string;
72
+ type: 'sql' | 'dql';
73
+ title?: string;
74
+ /** Raw SQL/DQL source */
75
+ source: string;
76
+ /** Tables extracted from SQL */
77
+ tableDependencies: string[];
78
+ /** ref() dependencies */
79
+ refDependencies: string[];
80
+ /** Block name (for DQL cells that declare a block) */
81
+ blockName?: string;
82
+ /** Chart config (if a chart cell references this cell) */
83
+ chartType?: string;
84
+ }
85
+ export interface ManifestMetric {
86
+ name: string;
87
+ type: string;
88
+ table: string;
89
+ domain?: string;
90
+ description?: string;
91
+ sql?: string;
92
+ /** Relative path to the YAML file */
93
+ filePath?: string;
94
+ }
95
+ export interface ManifestDimension {
96
+ name: string;
97
+ table: string;
98
+ type?: string;
99
+ description?: string;
100
+ filePath?: string;
101
+ }
102
+ export interface ManifestSource {
103
+ /** Normalized table name */
104
+ name: string;
105
+ /** Raw reference as found in SQL (e.g., "read_csv_auto('./data/file.csv')") */
106
+ rawRef?: string;
107
+ /** Origin: 'sql' = extracted from SQL, 'semantic' = from YAML, 'dbt' = from dbt manifest */
108
+ origin: 'sql' | 'semantic' | 'dbt';
109
+ /** Which blocks/cells reference this source */
110
+ referencedBy: string[];
111
+ /** dbt model metadata (if imported from dbt manifest) */
112
+ dbtModel?: {
113
+ uniqueId: string;
114
+ database?: string;
115
+ schema?: string;
116
+ materializedAs?: string;
117
+ description?: string;
118
+ columns?: Record<string, {
119
+ name: string;
120
+ description?: string;
121
+ type?: string;
122
+ }>;
123
+ };
124
+ }
125
+ export interface ManifestLineage {
126
+ nodes: ManifestLineageNode[];
127
+ edges: ManifestLineageEdge[];
128
+ domains: string[];
129
+ crossDomainFlows: Array<{
130
+ from: string;
131
+ to: string;
132
+ edgeCount: number;
133
+ }>;
134
+ domainTrust: Record<string, {
135
+ total: number;
136
+ certified: number;
137
+ score: number;
138
+ }>;
139
+ }
140
+ export interface ManifestLineageNode {
141
+ id: string;
142
+ type: string;
143
+ name: string;
144
+ domain?: string;
145
+ owner?: string;
146
+ status?: string;
147
+ filePath?: string;
148
+ }
149
+ export interface ManifestLineageEdge {
150
+ source: string;
151
+ target: string;
152
+ type: string;
153
+ sourceDomain?: string;
154
+ targetDomain?: string;
155
+ }
156
+ export interface ManifestDbtImport {
157
+ /** Path to the dbt manifest.json that was imported */
158
+ manifestPath: string;
159
+ /** dbt project name */
160
+ projectName?: string;
161
+ /** Number of models imported */
162
+ modelsImported: number;
163
+ /** Number of sources imported */
164
+ sourcesImported: number;
165
+ /** Timestamp of import */
166
+ importedAt: string;
167
+ }
168
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/manifest/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * DQL Manifest — the compiled project artifact.
3
+ *
4
+ * Similar to dbt's manifest.json, this is the single source of truth
5
+ * for a DQL project's structure, dependencies, and lineage.
6
+ * Generated by `dql compile`, consumed by `dql lineage`, notebook panel,
7
+ * and external tools (DataHub, Atlan, etc.).
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/manifest/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@duckcodeailabs/dql-core",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "description": "DQL language core: lexer, parser, AST, semantic analysis",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",