@duckcodeailabs/dql-core 0.3.1 → 0.6.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 (42) hide show
  1. package/LICENSE +123 -0
  2. package/dist/index.d.ts +1 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +1 -0
  5. package/dist/index.js.map +1 -1
  6. package/dist/lineage/builder.d.ts +43 -0
  7. package/dist/lineage/builder.d.ts.map +1 -0
  8. package/dist/lineage/builder.js +192 -0
  9. package/dist/lineage/builder.js.map +1 -0
  10. package/dist/lineage/dependency-resolver.d.ts +44 -0
  11. package/dist/lineage/dependency-resolver.d.ts.map +1 -0
  12. package/dist/lineage/dependency-resolver.js +168 -0
  13. package/dist/lineage/dependency-resolver.js.map +1 -0
  14. package/dist/lineage/domain-lineage.d.ts +96 -0
  15. package/dist/lineage/domain-lineage.d.ts.map +1 -0
  16. package/dist/lineage/domain-lineage.js +140 -0
  17. package/dist/lineage/domain-lineage.js.map +1 -0
  18. package/dist/lineage/index.d.ts +6 -0
  19. package/dist/lineage/index.d.ts.map +1 -0
  20. package/dist/lineage/index.js +7 -0
  21. package/dist/lineage/index.js.map +1 -0
  22. package/dist/lineage/lineage-graph.d.ts +97 -0
  23. package/dist/lineage/lineage-graph.d.ts.map +1 -0
  24. package/dist/lineage/lineage-graph.js +198 -0
  25. package/dist/lineage/lineage-graph.js.map +1 -0
  26. package/dist/lineage/sql-parser.d.ts +23 -0
  27. package/dist/lineage/sql-parser.d.ts.map +1 -0
  28. package/dist/lineage/sql-parser.js +110 -0
  29. package/dist/lineage/sql-parser.js.map +1 -0
  30. package/dist/semantic/index.d.ts +1 -1
  31. package/dist/semantic/index.d.ts.map +1 -1
  32. package/dist/semantic/index.js +1 -1
  33. package/dist/semantic/index.js.map +1 -1
  34. package/dist/semantic/providers/index.d.ts +1 -1
  35. package/dist/semantic/providers/index.d.ts.map +1 -1
  36. package/dist/semantic/providers/index.js +1 -1
  37. package/dist/semantic/providers/index.js.map +1 -1
  38. package/dist/semantic/providers/registry.d.ts +7 -0
  39. package/dist/semantic/providers/registry.d.ts.map +1 -1
  40. package/dist/semantic/providers/registry.js +30 -0
  41. package/dist/semantic/providers/registry.js.map +1 -1
  42. package/package.json +8 -9
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Lightweight SQL table extractor for lineage analysis.
3
+ *
4
+ * Extracts table references from SQL statements without a full AST parser.
5
+ * Handles FROM, JOIN, subqueries, and CTEs. Filters out CTE names so only
6
+ * external table dependencies are returned.
7
+ */
8
+ /**
9
+ * Extract table references from a SQL string.
10
+ *
11
+ * Identifies tables in FROM and JOIN clauses, filters out CTE definitions,
12
+ * and detects ref("block_name") calls.
13
+ */
14
+ export function extractTablesFromSql(sql) {
15
+ const ctes = extractCteNames(sql);
16
+ // Strip comments first (refs inside comments should be ignored)
17
+ const noComments = stripComments(sql);
18
+ // Strip non-ref string literals, then extract refs from the result.
19
+ // This ensures ref("block") and ref('block') are preserved, but
20
+ // 'ref("fake")' (a string literal containing ref) is stripped.
21
+ const withoutStringLiterals = stripStringLiterals(noComments);
22
+ const refs = extractRefs(withoutStringLiterals);
23
+ // For table extraction, use the fully cleaned version
24
+ const cleaned = withoutStringLiterals;
25
+ const rawTables = new Set();
26
+ // FROM <table> — handles FROM table, FROM schema.table, FROM "table"
27
+ const fromPattern = /\bFROM\s+(?:LATERAL\s+)?([a-zA-Z_][a-zA-Z0-9_.]*|"[^"]+")/gi;
28
+ for (const match of cleaned.matchAll(fromPattern)) {
29
+ addTableRef(rawTables, match[1]);
30
+ }
31
+ // JOIN <table> — all join types
32
+ const joinPattern = /\bJOIN\s+(?:LATERAL\s+)?([a-zA-Z_][a-zA-Z0-9_.]*|"[^"]+")/gi;
33
+ for (const match of cleaned.matchAll(joinPattern)) {
34
+ addTableRef(rawTables, match[1]);
35
+ }
36
+ // INTO <table> (INSERT INTO, MERGE INTO)
37
+ const intoPattern = /\bINTO\s+([a-zA-Z_][a-zA-Z0-9_.]*|"[^"]+")/gi;
38
+ for (const match of cleaned.matchAll(intoPattern)) {
39
+ addTableRef(rawTables, match[1]);
40
+ }
41
+ // Filter out CTEs, SQL keywords that might match, and DuckDB functions
42
+ const sqlKeywords = new Set([
43
+ 'select', 'where', 'group', 'order', 'having', 'limit', 'offset',
44
+ 'union', 'except', 'intersect', 'values', 'set', 'lateral',
45
+ 'unnest', 'generate_series', 'read_csv_auto', 'read_csv', 'read_parquet',
46
+ 'read_json', 'read_json_auto', 'range', 'information_schema', 'ref',
47
+ ]);
48
+ const cteNamesLower = new Set(ctes.map((c) => c.toLowerCase()));
49
+ const tables = [...rawTables].filter((t) => {
50
+ const lower = t.toLowerCase();
51
+ return !cteNamesLower.has(lower) && !sqlKeywords.has(lower);
52
+ });
53
+ return { tables, ctes, refs };
54
+ }
55
+ /** Extract CTE names from WITH ... AS (...) patterns */
56
+ function extractCteNames(sql) {
57
+ const ctes = [];
58
+ // Match WITH ... AS and recursive WITH
59
+ const withPattern = /\bWITH\s+(?:RECURSIVE\s+)?/gi;
60
+ const withMatch = withPattern.exec(sql);
61
+ if (!withMatch)
62
+ return ctes;
63
+ // From the WITH keyword, extract comma-separated CTE definitions
64
+ const afterWith = sql.slice(withMatch.index + withMatch[0].length);
65
+ const cteDefPattern = /([a-zA-Z_][a-zA-Z0-9_]*)\s+AS\s*\(/gi;
66
+ for (const match of afterWith.matchAll(cteDefPattern)) {
67
+ ctes.push(match[1]);
68
+ }
69
+ return ctes;
70
+ }
71
+ /** Extract ref("block_name") calls from SQL */
72
+ function extractRefs(sql) {
73
+ const refs = [];
74
+ const refPattern = /\bref\s*\(\s*["']([^"']+)["']\s*\)/gi;
75
+ for (const match of sql.matchAll(refPattern)) {
76
+ refs.push(match[1]);
77
+ }
78
+ return refs;
79
+ }
80
+ /** Strip comments only */
81
+ function stripComments(sql) {
82
+ return sql
83
+ .replace(/\/\*[\s\S]*?\*\//g, ' ')
84
+ .replace(/--[^\n]*/g, ' ');
85
+ }
86
+ /**
87
+ * Strip single-quoted string literals, but preserve those inside ref() calls.
88
+ * This ensures ref('block_name') works, while 'ref("fake")' is stripped.
89
+ */
90
+ function stripStringLiterals(sql) {
91
+ // First, temporarily protect ref() arguments by replacing them with placeholders
92
+ const refArgs = [];
93
+ const withPlaceholders = sql.replace(/\bref\s*\(\s*'([^']*)'\s*\)/gi, (_match, arg) => {
94
+ refArgs.push(arg);
95
+ return `ref("__REF_PLACEHOLDER_${refArgs.length - 1}__")`;
96
+ });
97
+ // Strip all remaining single-quoted strings
98
+ const stripped = withPlaceholders.replace(/'(?:[^'\\]|\\.)*'/g, "''");
99
+ // Restore ref() arguments
100
+ return stripped.replace(/ref\("__REF_PLACEHOLDER_(\d+)__"\)/g, (_match, idx) => `ref('${refArgs[parseInt(idx)]}')`);
101
+ }
102
+ /** Normalize and add a table reference */
103
+ function addTableRef(tables, ref) {
104
+ // Remove surrounding quotes
105
+ const cleaned = ref.replace(/^"|"$/g, '');
106
+ if (cleaned.length > 0) {
107
+ tables.add(cleaned);
108
+ }
109
+ }
110
+ //# sourceMappingURL=sql-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-parser.js","sourceRoot":"","sources":["../../src/lineage/sql-parser.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ export { SemanticAnalyzer, analyze } from './analyzer.js';
2
2
  export { SemanticLayer, parseMetricDefinition, parseDimensionDefinition, parseHierarchyDefinition, parseBlockCompanionDefinition, parseCubeDefinition, } from './semantic-layer.js';
3
3
  export type { MetricDefinition, DimensionDefinition, HierarchyDefinition, BlockCompanionDefinition, HierarchyLevelDefinition, HierarchyDrillPathDefinition, HierarchyRollupType, SemanticLayerConfig, JoinDefinition, TimeDimensionDefinition, CubeDefinition, ComposeQueryOptions, ComposeQueryResult, } from './semantic-layer.js';
4
4
  export { loadSemanticLayerFromDir, loadSemanticLayerFromConfig, } from './yaml-loader.js';
5
- export { resolveSemanticLayer, resolveSemanticLayerWithDiagnostics, pullCachedRepo, resolveRepoSource } from './providers/index.js';
5
+ export { resolveSemanticLayer, resolveSemanticLayerWithDiagnostics, resolveSemanticLayerAsync, pullCachedRepo, resolveRepoSource } from './providers/index.js';
6
6
  export type { SemanticLayerProviderConfig, SemanticLayerResult, RepoResolveResult } from './providers/index.js';
7
7
  export { SnowflakeSemanticProvider } from './providers/index.js';
8
8
  export type { SnowflakeQueryExecutor, SnowflakeQueryResult } from './providers/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/semantic/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,wBAAwB,EACxB,wBAAwB,EACxB,6BAA6B,EAC7B,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,EACxB,4BAA4B,EAC5B,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,uBAAuB,EACvB,cAAc,EACd,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,wBAAwB,EACxB,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,oBAAoB,EAAE,mCAAmC,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACpI,YAAY,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAChH,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,YAAY,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACzF,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAClE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/semantic/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,wBAAwB,EACxB,wBAAwB,EACxB,6BAA6B,EAC7B,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,EACxB,4BAA4B,EAC5B,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,uBAAuB,EACvB,cAAc,EACd,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,wBAAwB,EACxB,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,oBAAoB,EAAE,mCAAmC,EAAE,yBAAyB,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC/J,YAAY,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAChH,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,YAAY,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACzF,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAClE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  export { SemanticAnalyzer, analyze } from './analyzer.js';
2
2
  export { SemanticLayer, parseMetricDefinition, parseDimensionDefinition, parseHierarchyDefinition, parseBlockCompanionDefinition, parseCubeDefinition, } from './semantic-layer.js';
3
3
  export { loadSemanticLayerFromDir, loadSemanticLayerFromConfig, } from './yaml-loader.js';
4
- export { resolveSemanticLayer, resolveSemanticLayerWithDiagnostics, pullCachedRepo, resolveRepoSource } from './providers/index.js';
4
+ export { resolveSemanticLayer, resolveSemanticLayerWithDiagnostics, resolveSemanticLayerAsync, pullCachedRepo, resolveRepoSource } from './providers/index.js';
5
5
  export { SnowflakeSemanticProvider } from './providers/index.js';
6
6
  export { getDialect, listDialectDrivers } from './sql-dialect.js';
7
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/semantic/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,wBAAwB,EACxB,wBAAwB,EACxB,6BAA6B,EAC7B,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAgB7B,OAAO,EACL,wBAAwB,EACxB,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,oBAAoB,EAAE,mCAAmC,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEpI,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/semantic/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,wBAAwB,EACxB,wBAAwB,EACxB,6BAA6B,EAC7B,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAgB7B,OAAO,EACL,wBAAwB,EACxB,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,oBAAoB,EAAE,mCAAmC,EAAE,yBAAyB,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE/J,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,4 +1,4 @@
1
- export { resolveSemanticLayer, resolveSemanticLayerWithDiagnostics } from './registry.js';
1
+ export { resolveSemanticLayer, resolveSemanticLayerWithDiagnostics, resolveSemanticLayerAsync } from './registry.js';
2
2
  export type { SemanticLayerResult } from './registry.js';
3
3
  export type { SemanticLayerProviderConfig, SemanticLayerProvider } from './provider.js';
4
4
  export { resolveRepoSource, pullCachedRepo } from './repo-resolver.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/semantic/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,mCAAmC,EAAE,MAAM,eAAe,CAAC;AAC1F,YAAY,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACzD,YAAY,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACvE,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,YAAY,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/semantic/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,mCAAmC,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AACrH,YAAY,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACzD,YAAY,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACvE,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,YAAY,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -1,4 +1,4 @@
1
- export { resolveSemanticLayer, resolveSemanticLayerWithDiagnostics } from './registry.js';
1
+ export { resolveSemanticLayer, resolveSemanticLayerWithDiagnostics, resolveSemanticLayerAsync } from './registry.js';
2
2
  export { resolveRepoSource, pullCachedRepo } from './repo-resolver.js';
3
3
  export { SnowflakeSemanticProvider } from './snowflake-provider.js';
4
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/semantic/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,mCAAmC,EAAE,MAAM,eAAe,CAAC;AAG1F,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/semantic/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,mCAAmC,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAGrH,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import type { SemanticLayer } from '../semantic-layer.js';
6
6
  import type { SemanticLayerProviderConfig } from './provider.js';
7
+ import { type SnowflakeQueryExecutor } from './snowflake-provider.js';
7
8
  export interface SemanticLayerResult {
8
9
  layer: SemanticLayer | undefined;
9
10
  errors: string[];
@@ -21,4 +22,10 @@ export interface SemanticLayerResult {
21
22
  */
22
23
  export declare function resolveSemanticLayer(config: SemanticLayerProviderConfig | undefined, projectRoot: string): SemanticLayer | undefined;
23
24
  export declare function resolveSemanticLayerWithDiagnostics(config: SemanticLayerProviderConfig | undefined, projectRoot: string): SemanticLayerResult;
25
+ /**
26
+ * Async variant of resolveSemanticLayerWithDiagnostics.
27
+ * Required for the Snowflake provider which needs a live query executor.
28
+ * All other providers fall back to the sync path.
29
+ */
30
+ export declare function resolveSemanticLayerAsync(config: SemanticLayerProviderConfig | undefined, projectRoot: string, executeQuery?: SnowflakeQueryExecutor): Promise<SemanticLayerResult>;
24
31
  //# sourceMappingURL=registry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/semantic/providers/registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAMjE,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,aAAa,GAAG,SAAS,CAAC;IACjC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,2BAA2B,GAAG,SAAS,EAC/C,WAAW,EAAE,MAAM,GAClB,aAAa,GAAG,SAAS,CAE3B;AAED,wBAAgB,mCAAmC,CACjD,MAAM,EAAE,2BAA2B,GAAG,SAAS,EAC/C,WAAW,EAAE,MAAM,GAClB,mBAAmB,CAMrB"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/semantic/providers/registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAIjE,OAAO,EAA6B,KAAK,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAGjG,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,aAAa,GAAG,SAAS,CAAC;IACjC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,2BAA2B,GAAG,SAAS,EAC/C,WAAW,EAAE,MAAM,GAClB,aAAa,GAAG,SAAS,CAE3B;AAED,wBAAgB,mCAAmC,CACjD,MAAM,EAAE,2BAA2B,GAAG,SAAS,EAC/C,WAAW,EAAE,MAAM,GAClB,mBAAmB,CAMrB;AAED;;;;GAIG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,2BAA2B,GAAG,SAAS,EAC/C,WAAW,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,sBAAsB,GACpC,OAAO,CAAC,mBAAmB,CAAC,CAsB9B"}
@@ -7,6 +7,7 @@ import { join } from 'node:path';
7
7
  import { DqlProvider } from './dql-provider.js';
8
8
  import { DbtProvider } from './dbt-provider.js';
9
9
  import { CubejsProvider } from './cubejs-provider.js';
10
+ import { SnowflakeSemanticProvider } from './snowflake-provider.js';
10
11
  import { resolveRepoSource } from './repo-resolver.js';
11
12
  /**
12
13
  * Resolve the semantic layer from config, or auto-detect if no config is given.
@@ -27,6 +28,35 @@ export function resolveSemanticLayerWithDiagnostics(config, projectRoot) {
27
28
  }
28
29
  return autoDetect(projectRoot);
29
30
  }
31
+ /**
32
+ * Async variant of resolveSemanticLayerWithDiagnostics.
33
+ * Required for the Snowflake provider which needs a live query executor.
34
+ * All other providers fall back to the sync path.
35
+ */
36
+ export async function resolveSemanticLayerAsync(config, projectRoot, executeQuery) {
37
+ if (config?.provider === 'snowflake') {
38
+ if (!executeQuery) {
39
+ return { layer: undefined, errors: ['Snowflake provider requires a live query executor. Ensure the connection is initialised before calling resolveSemanticLayerAsync.'] };
40
+ }
41
+ try {
42
+ let effectiveRoot = projectRoot;
43
+ let effectiveConfig = config;
44
+ if (config.source && config.source !== 'local' && config.repoUrl) {
45
+ const resolved = resolveRepoSource(config, projectRoot);
46
+ effectiveRoot = resolved.localPath;
47
+ effectiveConfig = { ...config, projectPath: undefined };
48
+ }
49
+ const provider = new SnowflakeSemanticProvider(executeQuery);
50
+ const layer = await provider.loadAsync(effectiveConfig, effectiveRoot);
51
+ return { layer, errors: [] };
52
+ }
53
+ catch (error) {
54
+ const msg = error instanceof Error ? error.message : String(error);
55
+ return { layer: undefined, errors: [`Failed to load snowflake semantic layer: ${msg}`] };
56
+ }
57
+ }
58
+ return resolveSemanticLayerWithDiagnostics(config, projectRoot);
59
+ }
30
60
  function autoDetect(projectRoot) {
31
61
  // 1. DQL native semantic-layer/ directory
32
62
  const nativeDir = join(projectRoot, 'semantic-layer');
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/semantic/providers/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/semantic/providers/registry.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@duckcodeailabs/dql-core",
3
- "version": "0.3.1",
3
+ "version": "0.6.0",
4
4
  "description": "DQL language core: lexer, parser, AST, semantic analysis",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -12,13 +12,6 @@
12
12
  "import": "./dist/index.js"
13
13
  }
14
14
  },
15
- "scripts": {
16
- "build": "rm -rf dist tsconfig.tsbuildinfo && tsc",
17
- "test": "vitest run",
18
- "test:watch": "vitest",
19
- "clean": "rm -rf dist tsconfig.tsbuildinfo",
20
- "prepublishOnly": "pnpm run build"
21
- },
22
15
  "files": [
23
16
  "dist"
24
17
  ],
@@ -50,5 +43,11 @@
50
43
  },
51
44
  "dependencies": {
52
45
  "js-yaml": "^4.1.1"
46
+ },
47
+ "scripts": {
48
+ "build": "rm -rf dist tsconfig.tsbuildinfo && tsc",
49
+ "test": "vitest run",
50
+ "test:watch": "vitest",
51
+ "clean": "rm -rf dist tsconfig.tsbuildinfo"
53
52
  }
54
- }
53
+ }